@trigger.dev/core 4.5.12 → 4.5.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/dist/commonjs/v3/apiClient/runStream.d.ts +3 -0
  2. package/dist/commonjs/v3/apiClient/runStream.js +1 -0
  3. package/dist/commonjs/v3/apiClient/runStream.js.map +1 -1
  4. package/dist/commonjs/v3/apiClient/runStream.test.js +1 -0
  5. package/dist/commonjs/v3/apiClient/runStream.test.js.map +1 -1
  6. package/dist/commonjs/v3/isomorphic/friendlyId.d.ts +64 -1
  7. package/dist/commonjs/v3/isomorphic/friendlyId.js +179 -12
  8. package/dist/commonjs/v3/isomorphic/friendlyId.js.map +1 -1
  9. package/dist/commonjs/v3/isomorphic/friendlyId.test.js +283 -1
  10. package/dist/commonjs/v3/isomorphic/friendlyId.test.js.map +1 -1
  11. package/dist/commonjs/v3/isomorphic/index.d.ts +1 -0
  12. package/dist/commonjs/v3/isomorphic/index.js +1 -0
  13. package/dist/commonjs/v3/isomorphic/index.js.map +1 -1
  14. package/dist/commonjs/v3/isomorphic/runOpsResidency.d.ts +21 -7
  15. package/dist/commonjs/v3/isomorphic/runOpsResidency.js +23 -7
  16. package/dist/commonjs/v3/isomorphic/runOpsResidency.js.map +1 -1
  17. package/dist/commonjs/v3/isomorphic/runOpsResidency.test.js +85 -2
  18. package/dist/commonjs/v3/isomorphic/runOpsResidency.test.js.map +1 -1
  19. package/dist/commonjs/v3/isomorphic/waitpointMint.d.ts +9 -0
  20. package/dist/commonjs/v3/isomorphic/waitpointMint.js +22 -0
  21. package/dist/commonjs/v3/isomorphic/waitpointMint.js.map +1 -0
  22. package/dist/commonjs/v3/isomorphic/waitpointMint.test.d.ts +1 -0
  23. package/dist/commonjs/v3/isomorphic/waitpointMint.test.js +97 -0
  24. package/dist/commonjs/v3/isomorphic/waitpointMint.test.js.map +1 -0
  25. package/dist/commonjs/v3/runEngineWorker/workload/schemas.d.ts +54 -54
  26. package/dist/commonjs/v3/schemas/api.d.ts +45 -3
  27. package/dist/commonjs/v3/schemas/api.js +18 -5
  28. package/dist/commonjs/v3/schemas/api.js.map +1 -1
  29. package/dist/commonjs/v3/session-streams-api.d.ts +1 -0
  30. package/dist/commonjs/v3/session-streams-api.js +1 -0
  31. package/dist/commonjs/v3/session-streams-api.js.map +1 -1
  32. package/dist/commonjs/v3/sessionStreams/index.d.ts +9 -1
  33. package/dist/commonjs/v3/sessionStreams/index.js +38 -0
  34. package/dist/commonjs/v3/sessionStreams/index.js.map +1 -1
  35. package/dist/commonjs/v3/sessionStreams/manager.d.ts +27 -2
  36. package/dist/commonjs/v3/sessionStreams/manager.js +202 -108
  37. package/dist/commonjs/v3/sessionStreams/manager.js.map +1 -1
  38. package/dist/commonjs/v3/sessionStreams/manager.test.js +253 -0
  39. package/dist/commonjs/v3/sessionStreams/manager.test.js.map +1 -1
  40. package/dist/commonjs/v3/sessionStreams/noopManager.d.ts +9 -1
  41. package/dist/commonjs/v3/sessionStreams/noopManager.js +18 -0
  42. package/dist/commonjs/v3/sessionStreams/noopManager.js.map +1 -1
  43. package/dist/commonjs/v3/sessionStreams/router.d.ts +241 -0
  44. package/dist/commonjs/v3/sessionStreams/router.js +402 -0
  45. package/dist/commonjs/v3/sessionStreams/router.js.map +1 -0
  46. package/dist/commonjs/v3/sessionStreams/router.test.d.ts +1 -0
  47. package/dist/commonjs/v3/sessionStreams/router.test.js +463 -0
  48. package/dist/commonjs/v3/sessionStreams/router.test.js.map +1 -0
  49. package/dist/commonjs/v3/sessionStreams/types.d.ts +42 -6
  50. package/dist/commonjs/v3/sessionStreams/wireProtocol.d.ts +11 -0
  51. package/dist/commonjs/v3/sessionStreams/wireProtocol.js +12 -1
  52. package/dist/commonjs/v3/sessionStreams/wireProtocol.js.map +1 -1
  53. package/dist/commonjs/v3/test/mock-task-context.d.ts +4 -1
  54. package/dist/commonjs/v3/test/mock-task-context.js +2 -2
  55. package/dist/commonjs/v3/test/mock-task-context.js.map +1 -1
  56. package/dist/commonjs/v3/test/session-waitpoint-backend.js +17 -3
  57. package/dist/commonjs/v3/test/session-waitpoint-backend.js.map +1 -1
  58. package/dist/commonjs/v3/test/test-session-stream-manager.d.ts +13 -2
  59. package/dist/commonjs/v3/test/test-session-stream-manager.js +173 -67
  60. package/dist/commonjs/v3/test/test-session-stream-manager.js.map +1 -1
  61. package/dist/commonjs/v3/utils/globals.js +5 -1
  62. package/dist/commonjs/v3/utils/globals.js.map +1 -1
  63. package/dist/commonjs/version.js +1 -1
  64. package/dist/esm/v3/apiClient/runStream.d.ts +3 -0
  65. package/dist/esm/v3/apiClient/runStream.js +1 -0
  66. package/dist/esm/v3/apiClient/runStream.js.map +1 -1
  67. package/dist/esm/v3/apiClient/runStream.test.js +1 -0
  68. package/dist/esm/v3/apiClient/runStream.test.js.map +1 -1
  69. package/dist/esm/v3/isomorphic/friendlyId.d.ts +64 -1
  70. package/dist/esm/v3/isomorphic/friendlyId.js +170 -11
  71. package/dist/esm/v3/isomorphic/friendlyId.js.map +1 -1
  72. package/dist/esm/v3/isomorphic/friendlyId.test.js +284 -2
  73. package/dist/esm/v3/isomorphic/friendlyId.test.js.map +1 -1
  74. package/dist/esm/v3/isomorphic/index.d.ts +1 -0
  75. package/dist/esm/v3/isomorphic/index.js +1 -0
  76. package/dist/esm/v3/isomorphic/index.js.map +1 -1
  77. package/dist/esm/v3/isomorphic/runOpsResidency.d.ts +21 -7
  78. package/dist/esm/v3/isomorphic/runOpsResidency.js +23 -8
  79. package/dist/esm/v3/isomorphic/runOpsResidency.js.map +1 -1
  80. package/dist/esm/v3/isomorphic/runOpsResidency.test.js +87 -4
  81. package/dist/esm/v3/isomorphic/runOpsResidency.test.js.map +1 -1
  82. package/dist/esm/v3/isomorphic/waitpointMint.d.ts +9 -0
  83. package/dist/esm/v3/isomorphic/waitpointMint.js +18 -0
  84. package/dist/esm/v3/isomorphic/waitpointMint.js.map +1 -0
  85. package/dist/esm/v3/isomorphic/waitpointMint.test.d.ts +1 -0
  86. package/dist/esm/v3/isomorphic/waitpointMint.test.js +95 -0
  87. package/dist/esm/v3/isomorphic/waitpointMint.test.js.map +1 -0
  88. package/dist/esm/v3/runEngineWorker/workload/schemas.d.ts +54 -54
  89. package/dist/esm/v3/schemas/api.d.ts +45 -3
  90. package/dist/esm/v3/schemas/api.js +15 -2
  91. package/dist/esm/v3/schemas/api.js.map +1 -1
  92. package/dist/esm/v3/session-streams-api.d.ts +1 -0
  93. package/dist/esm/v3/session-streams-api.js +1 -0
  94. package/dist/esm/v3/session-streams-api.js.map +1 -1
  95. package/dist/esm/v3/sessionStreams/index.d.ts +9 -1
  96. package/dist/esm/v3/sessionStreams/index.js +38 -0
  97. package/dist/esm/v3/sessionStreams/index.js.map +1 -1
  98. package/dist/esm/v3/sessionStreams/manager.d.ts +27 -2
  99. package/dist/esm/v3/sessionStreams/manager.js +202 -108
  100. package/dist/esm/v3/sessionStreams/manager.js.map +1 -1
  101. package/dist/esm/v3/sessionStreams/manager.test.js +253 -0
  102. package/dist/esm/v3/sessionStreams/manager.test.js.map +1 -1
  103. package/dist/esm/v3/sessionStreams/noopManager.d.ts +9 -1
  104. package/dist/esm/v3/sessionStreams/noopManager.js +18 -0
  105. package/dist/esm/v3/sessionStreams/noopManager.js.map +1 -1
  106. package/dist/esm/v3/sessionStreams/router.d.ts +241 -0
  107. package/dist/esm/v3/sessionStreams/router.js +398 -0
  108. package/dist/esm/v3/sessionStreams/router.js.map +1 -0
  109. package/dist/esm/v3/sessionStreams/router.test.d.ts +1 -0
  110. package/dist/esm/v3/sessionStreams/router.test.js +461 -0
  111. package/dist/esm/v3/sessionStreams/router.test.js.map +1 -0
  112. package/dist/esm/v3/sessionStreams/types.d.ts +42 -6
  113. package/dist/esm/v3/sessionStreams/wireProtocol.d.ts +11 -0
  114. package/dist/esm/v3/sessionStreams/wireProtocol.js +11 -0
  115. package/dist/esm/v3/sessionStreams/wireProtocol.js.map +1 -1
  116. package/dist/esm/v3/test/mock-task-context.d.ts +4 -1
  117. package/dist/esm/v3/test/mock-task-context.js +2 -2
  118. package/dist/esm/v3/test/mock-task-context.js.map +1 -1
  119. package/dist/esm/v3/test/session-waitpoint-backend.js +17 -3
  120. package/dist/esm/v3/test/session-waitpoint-backend.js.map +1 -1
  121. package/dist/esm/v3/test/test-session-stream-manager.d.ts +13 -2
  122. package/dist/esm/v3/test/test-session-stream-manager.js +173 -67
  123. package/dist/esm/v3/test/test-session-stream-manager.js.map +1 -1
  124. package/dist/esm/v3/utils/globals.js +5 -1
  125. package/dist/esm/v3/utils/globals.js.map +1 -1
  126. package/dist/esm/version.js +1 -1
  127. package/package.json +1 -1
@@ -1,5 +1,7 @@
1
1
  import { afterEach, describe, expect, it, vi } from "vitest";
2
- import { RunId, WaitpointId, SnapshotId, QueueId, WebhookDeliveryId, RUN_OPS_ID_LENGTH, RUN_OPS_ID_REGION_INDEX, RUN_OPS_ID_VERSION, RUN_OPS_ID_VERSION_INDEX, base32hexDecode, base32hexEncode, generateRunOpsId, parseRunId, } from "./friendlyId.js";
2
+ import { RunId, WaitpointId, SnapshotId, QueueId, WebhookDeliveryId, RUN_OPS_ID_LENGTH, RUN_OPS_ID_REGION_INDEX, RUN_OPS_ID_SHARD_INDEX, RUN_OPS_ID_VERSION, RUN_OPS_ID_VERSION_2, RUN_OPS_ID_VERSION_INDEX, WAITPOINT_ID_TYPE_INDEX, WAITPOINT_ID_VERSION, base32hexDecode, base32hexEncode, deriveWaitpointIdFromAnchor, generateFriendlyId, generateRunOpsId, generateRunOpsIdV2, generateWaitpointId, isValidShardChar, parseRunId, parseRunOpsIdBody, parseRunOpsIdV2Body, parseWaitpointId, } from "./friendlyId.js";
3
+ /** Every legal gen-2 shard char: the full DNS-safe lowercase range. */
4
+ const SHARD_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789".split("");
3
5
  const CUID_LEN = 25;
4
6
  describe("RunId + WaitpointId mint cuid by default; run-ops v1 via generateRunOpsId", () => {
5
7
  it("default: run + waitpoint mint cuid (25) and round-trip", () => {
@@ -141,7 +143,8 @@ describe("parseRunId — version-char discrimination (not length)", () => {
141
143
  });
142
144
  it("falls back to legacy on a malformed v1 (bad alphabet / wrong version char)", () => {
143
145
  expect(parseRunId(`run_${"A".repeat(25)}1`).format).toBe("legacy"); // uppercase core
144
- expect(parseRunId(`run_${"a".repeat(25)}2`).format).toBe("legacy"); // wrong version
146
+ expect(parseRunId(`run_${"a".repeat(25)}9`).format).toBe("legacy"); // unallocated version
147
+ expect(parseRunId(`run_${"a".repeat(25)}2`).format).toBe("b32hexV2"); // "2" is now gen-2
145
148
  expect(parseRunId(`run_${"a".repeat(24)}-1`).format).toBe("legacy"); // region char not [a-z0-9]
146
149
  expect(parseRunId(`run_${"a".repeat(27)}`).format).toBe("legacy"); // old 27-char shape
147
150
  });
@@ -210,4 +213,283 @@ describe("WebhookDeliveryId (time-encoded)", () => {
210
213
  expect(WebhookDeliveryId.parseTimestamp(`whd_${"0".repeat(24)}9`)).toBeUndefined();
211
214
  });
212
215
  });
216
+ describe("generateRunOpsIdV2 — gen-2 id spec (shard char at 24, version '2' at 25)", () => {
217
+ afterEach(() => vi.useRealTimers());
218
+ it("emits <24-char base32hex core><shard char><version '2'> — 26 chars total", () => {
219
+ const id = generateRunOpsIdV2("a");
220
+ expect(id.length).toBe(RUN_OPS_ID_LENGTH);
221
+ expect(id).toMatch(/^[0-9a-v]{24}[a-z0-9]2$/);
222
+ expect(id[RUN_OPS_ID_VERSION_INDEX]).toBe(RUN_OPS_ID_VERSION_2);
223
+ expect(id[RUN_OPS_ID_SHARD_INDEX]).toBe("a");
224
+ });
225
+ it("round-trips every legal shard char [a-z0-9] through parseRunOpsIdV2Body", () => {
226
+ for (const c of SHARD_CHARS) {
227
+ const id = generateRunOpsIdV2(c);
228
+ const parsed = parseRunOpsIdV2Body(id);
229
+ expect(parsed).toBeDefined();
230
+ expect(parsed?.shard).toBe(c);
231
+ expect(parsed?.version).toBe(RUN_OPS_ID_VERSION_2);
232
+ // the core survives the round-trip: its bytes re-encode to the id's first 24 chars
233
+ expect(base32hexEncode(base32hexDecode(id.slice(0, 24)))).toBe(id.slice(0, 24));
234
+ }
235
+ });
236
+ it("throws on a shard char outside [a-z0-9] (fail loud, never mint an unroutable id)", () => {
237
+ for (const bad of ["", "-", "_", "A", "ab", " ", "/"]) {
238
+ expect(() => generateRunOpsIdV2(bad)).toThrow(/shard/i);
239
+ }
240
+ });
241
+ it("only ever uses lowercase [a-z0-9] and NEVER '-' (DNS-1123 / pod-name invariant)", () => {
242
+ for (let i = 0; i < 5_000; i++) {
243
+ const id = generateRunOpsIdV2(SHARD_CHARS[i % SHARD_CHARS.length]);
244
+ expect(id).toMatch(/^[a-z0-9]+$/);
245
+ expect(id).not.toContain("-");
246
+ }
247
+ });
248
+ it("sorts lexicographically in creation order at ms resolution, like gen-1", () => {
249
+ vi.useFakeTimers();
250
+ const t = new Date("2026-07-04T12:00:00.000Z").getTime();
251
+ vi.setSystemTime(t);
252
+ const a = generateRunOpsIdV2("a");
253
+ vi.setSystemTime(t + 1000);
254
+ const b = generateRunOpsIdV2("a");
255
+ vi.setSystemTime(t + 3);
256
+ const c = generateRunOpsIdV2("a");
257
+ expect([b, c, a].sort()).toEqual([a, c, b]);
258
+ });
259
+ it("decode recovers the exact ms timestamp", () => {
260
+ vi.useFakeTimers();
261
+ const t = new Date("2026-07-04T12:34:56.789Z");
262
+ vi.setSystemTime(t);
263
+ expect(parseRunOpsIdV2Body(generateRunOpsIdV2("e"))?.timestamp.getTime()).toBe(t.getTime());
264
+ });
265
+ it("is unique across many mints in the same ms (72 bits of CSPRNG)", () => {
266
+ vi.useFakeTimers();
267
+ vi.setSystemTime(new Date("2026-07-04T00:00:00.000Z"));
268
+ const n = 2_000;
269
+ expect(new Set(Array.from({ length: n }, () => generateRunOpsIdV2("a"))).size).toBe(n);
270
+ });
271
+ });
272
+ describe("parseRunOpsIdV2Body — the mirror of the v1 shape check", () => {
273
+ it("rejects a body that is not exactly 26 chars", () => {
274
+ const core = "a".repeat(24);
275
+ expect(parseRunOpsIdV2Body("")).toBeUndefined();
276
+ expect(parseRunOpsIdV2Body(`${core}2`)).toBeUndefined(); // 25
277
+ expect(parseRunOpsIdV2Body(`${core}ee2`)).toBeUndefined(); // 27
278
+ expect(parseRunOpsIdV2Body("a".repeat(40))).toBeUndefined();
279
+ });
280
+ it("rejects a body without '2' at index 25", () => {
281
+ const core = "a".repeat(24);
282
+ for (const version of ["1", "0", "3", "z", "-"]) {
283
+ expect(parseRunOpsIdV2Body(`${core}e${version}`)).toBeUndefined();
284
+ }
285
+ });
286
+ it("rejects a body whose 24-char core is not base32hex", () => {
287
+ for (const badCore of ["w".repeat(24), "z".repeat(24), "A".repeat(24), `${"a".repeat(23)}-`]) {
288
+ expect(parseRunOpsIdV2Body(`${badCore}e2`)).toBeUndefined();
289
+ }
290
+ });
291
+ it("rejects a body whose char at index 24 is outside [a-z0-9]", () => {
292
+ const core = "a".repeat(24);
293
+ for (const badShard of ["-", "_", "A", ".", " "]) {
294
+ expect(parseRunOpsIdV2Body(`${core}${badShard}2`)).toBeUndefined();
295
+ }
296
+ });
297
+ it("never throws, for any input string", () => {
298
+ for (const input of ["", "x", "-".repeat(26), " ".repeat(26), "\u{1F642}".repeat(26)]) {
299
+ expect(() => parseRunOpsIdV2Body(input)).not.toThrow();
300
+ }
301
+ });
302
+ });
303
+ describe("gen-1 and gen-2 parsers reject each other (the disjointness foundation)", () => {
304
+ it("parseRunOpsIdBody rejects every gen-2 id", () => {
305
+ for (const c of SHARD_CHARS) {
306
+ expect(parseRunOpsIdBody(generateRunOpsIdV2(c))).toBeUndefined();
307
+ }
308
+ });
309
+ it("parseRunOpsIdV2Body rejects every gen-1 v1 id", () => {
310
+ for (const region of [undefined, "us-east-1", "us-west-2", "eu-central-1"]) {
311
+ expect(parseRunOpsIdV2Body(generateRunOpsId(region))).toBeUndefined();
312
+ }
313
+ });
314
+ it("generateRunOpsId still mints v1 ids — the gen-1 generator is unchanged", () => {
315
+ const id = generateRunOpsId("us-east-1");
316
+ expect(id).toMatch(/^[0-9a-v]{24}[a-z0-9]1$/);
317
+ expect(id[RUN_OPS_ID_VERSION_INDEX]).toBe(RUN_OPS_ID_VERSION);
318
+ expect(parseRunOpsIdBody(id)?.region).toBe("e");
319
+ });
320
+ it("the shard index and the region index are the same position", () => {
321
+ expect(RUN_OPS_ID_SHARD_INDEX).toBe(RUN_OPS_ID_REGION_INDEX);
322
+ });
323
+ });
324
+ describe("parseRunId — v2 arm", () => {
325
+ it("parses a gen-2 friendly id as partitioned with its shard + version", () => {
326
+ const parsed = parseRunId(`run_${generateRunOpsIdV2("e")}`);
327
+ expect(parsed).toMatchObject({
328
+ format: "b32hexV2",
329
+ table: "partitioned",
330
+ shard: "e",
331
+ version: "2",
332
+ });
333
+ });
334
+ it("still parses a gen-1 v1 friendly id as b32hex — the v1 arm is unchanged", () => {
335
+ expect(parseRunId(`run_${generateRunOpsId("us-west-2")}`)).toMatchObject({
336
+ format: "b32hex",
337
+ table: "partitioned",
338
+ region: "w",
339
+ version: "1",
340
+ });
341
+ });
342
+ it("classifies a gen-2 body without the run_ prefix, and under a wrong prefix, legacy", () => {
343
+ expect(parseRunId(generateRunOpsIdV2("a")).format).toBe("legacy");
344
+ expect(parseRunId(`waitpoint_${generateRunOpsIdV2("a")}`).format).toBe("legacy");
345
+ });
346
+ });
347
+ describe("isValidShardChar", () => {
348
+ it("accepts a single [a-z0-9] char", () => {
349
+ expect(isValidShardChar("a")).toBe(true);
350
+ expect(isValidShardChar("0")).toBe(true);
351
+ expect(isValidShardChar("w")).toBe(true);
352
+ });
353
+ it("rejects multi-char, empty, uppercase, and punctuation", () => {
354
+ expect(isValidShardChar("")).toBe(false);
355
+ expect(isValidShardChar("ab")).toBe(false);
356
+ expect(isValidShardChar("A")).toBe(false);
357
+ expect(isValidShardChar("-")).toBe(false);
358
+ expect(isValidShardChar("legacy")).toBe(false);
359
+ });
360
+ });
361
+ describe("waitpoint ids: run-ops format with version char w", () => {
362
+ it("mints a 26-char body per type, with the type char at index 24 and version w at 25", () => {
363
+ const cases = [
364
+ ["RUN", "r"],
365
+ ["BATCH", "b"],
366
+ ["DATETIME", "d"],
367
+ ["MANUAL", "m"],
368
+ ];
369
+ for (const [type, typeChar] of cases) {
370
+ const body = generateWaitpointId(type);
371
+ expect(body.length).toBe(RUN_OPS_ID_LENGTH);
372
+ expect(body[WAITPOINT_ID_TYPE_INDEX]).toBe(typeChar);
373
+ expect(body[RUN_OPS_ID_VERSION_INDEX]).toBe(WAITPOINT_ID_VERSION);
374
+ }
375
+ });
376
+ it("round-trips every type char through parseWaitpointId", () => {
377
+ for (const type of ["RUN", "BATCH", "DATETIME", "MANUAL"]) {
378
+ const parsed = parseWaitpointId(generateWaitpointId(type));
379
+ expect(parsed.format).toBe("b32hexW");
380
+ if (parsed.format !== "b32hexW")
381
+ throw new Error("unreachable");
382
+ expect(parsed.type).toBe(type);
383
+ }
384
+ });
385
+ it("classifies both the prefixed and the bare form identically", () => {
386
+ const body = generateWaitpointId("MANUAL");
387
+ const bare = parseWaitpointId(body);
388
+ const prefixed = parseWaitpointId(`waitpoint_${body}`);
389
+ expect(bare).toEqual(prefixed);
390
+ expect(bare).toEqual({ format: "b32hexW", type: "MANUAL", timestamp: expect.any(Date) });
391
+ });
392
+ it("recovers the mint timestamp from the core", () => {
393
+ vi.useFakeTimers();
394
+ try {
395
+ vi.setSystemTime(new Date("2026-08-21T12:00:00.000Z"));
396
+ const parsed = parseWaitpointId(generateWaitpointId("DATETIME"));
397
+ if (parsed.format !== "b32hexW")
398
+ throw new Error("unreachable");
399
+ expect(parsed.timestamp.toISOString()).toBe("2026-08-21T12:00:00.000Z");
400
+ }
401
+ finally {
402
+ vi.useRealTimers();
403
+ }
404
+ });
405
+ it("classifies every legacy shape as legacy", () => {
406
+ const legacy = [
407
+ WaitpointId.generate().id,
408
+ WaitpointId.generate().friendlyId,
409
+ generateFriendlyId("waitpoint"),
410
+ "",
411
+ "waitpoint_",
412
+ "a".repeat(27),
413
+ "a".repeat(26),
414
+ ];
415
+ for (const id of legacy) {
416
+ expect(parseWaitpointId(id).format).toBe("legacy");
417
+ }
418
+ });
419
+ it("rejects a 26-char body whose version is w but whose type char is not r/b/d/m", () => {
420
+ const body = generateWaitpointId("RUN");
421
+ const bad = `${body.slice(0, WAITPOINT_ID_TYPE_INDEX)}x${WAITPOINT_ID_VERSION}`;
422
+ expect(parseWaitpointId(bad).format).toBe("legacy");
423
+ });
424
+ it("rejects a body whose core is outside the base32hex alphabet", () => {
425
+ const body = generateWaitpointId("RUN");
426
+ // "w" is outside [0-9a-v], so the core no longer decodes.
427
+ expect(parseWaitpointId(`w${body.slice(1)}`).format).toBe("legacy");
428
+ });
429
+ it("never parses a run id as a waitpoint id, or the reverse", () => {
430
+ expect(parseWaitpointId(generateRunOpsId()).format).toBe("legacy");
431
+ expect(parseWaitpointId(generateRunOpsIdV2("7")).format).toBe("legacy");
432
+ expect(parseRunId(`run_${generateWaitpointId("RUN")}`).format).toBe("legacy");
433
+ });
434
+ it("rejects a well-formed waitpoint body wearing a foreign prefix", () => {
435
+ const body = `${"0".repeat(24)}rw`; // valid core + RUN type char + version w
436
+ expect(parseWaitpointId(`run_${body}`).format).toBe("legacy");
437
+ expect(parseWaitpointId(`batch_${body}`).format).toBe("legacy");
438
+ expect(parseWaitpointId(`waitpoint_${body}`)).toEqual({
439
+ format: "b32hexW",
440
+ type: "RUN",
441
+ timestamp: expect.any(Date),
442
+ });
443
+ expect(parseWaitpointId(body).format).toBe("b32hexW");
444
+ });
445
+ it("handles a bare body that happens to contain an underscore sanely (never throws, never misclassifies)", () => {
446
+ const body = generateWaitpointId("BATCH");
447
+ const withUnderscore = `_${body.slice(1)}`;
448
+ expect(() => parseWaitpointId(withUnderscore)).not.toThrow();
449
+ // "_" is outside the base32hex alphabet, so this can never be a real waitpoint id.
450
+ expect(parseWaitpointId(withUnderscore).format).toBe("legacy");
451
+ });
452
+ });
453
+ describe("deriveWaitpointIdFromAnchor", () => {
454
+ it("is deterministic: the same anchor and type always give the same id", () => {
455
+ const anchor = `run_${generateRunOpsId("us-east-1")}`;
456
+ const first = deriveWaitpointIdFromAnchor(anchor, "RUN");
457
+ expect(first).toBeDefined();
458
+ expect(first).toBe(deriveWaitpointIdFromAnchor(anchor, "RUN"));
459
+ });
460
+ it("shares the anchor's 24-char core and replaces the region and version chars", () => {
461
+ const anchorBody = generateRunOpsId("us-east-1");
462
+ const derived = deriveWaitpointIdFromAnchor(`run_${anchorBody}`, "RUN");
463
+ expect(derived).toBeDefined();
464
+ expect(derived.slice(0, WAITPOINT_ID_TYPE_INDEX)).toBe(anchorBody.slice(0, WAITPOINT_ID_TYPE_INDEX));
465
+ expect(derived[WAITPOINT_ID_TYPE_INDEX]).toBe("r");
466
+ expect(derived[RUN_OPS_ID_VERSION_INDEX]).toBe(WAITPOINT_ID_VERSION);
467
+ });
468
+ it("accepts a bare anchor body as well as a prefixed one", () => {
469
+ const anchorBody = generateRunOpsId();
470
+ expect(deriveWaitpointIdFromAnchor(anchorBody, "RUN")).toBe(deriveWaitpointIdFromAnchor(`run_${anchorBody}`, "RUN"));
471
+ });
472
+ it("accepts a gen-2 anchor", () => {
473
+ const derived = deriveWaitpointIdFromAnchor(`run_${generateRunOpsIdV2("7")}`, "RUN");
474
+ expect(derived).toBeDefined();
475
+ expect(parseWaitpointId(derived).format).toBe("b32hexW");
476
+ });
477
+ it("derives a BATCH id from a run-ops format batch anchor", () => {
478
+ const derived = deriveWaitpointIdFromAnchor(`batch_${generateRunOpsId()}`, "BATCH");
479
+ expect(derived).toBeDefined();
480
+ const parsed = parseWaitpointId(derived);
481
+ if (parsed.format !== "b32hexW")
482
+ throw new Error("unreachable");
483
+ expect(parsed.type).toBe("BATCH");
484
+ });
485
+ it("returns undefined for a legacy anchor, so the caller falls back to a legacy mint", () => {
486
+ expect(deriveWaitpointIdFromAnchor(RunId.generate().friendlyId, "RUN")).toBeUndefined();
487
+ expect(deriveWaitpointIdFromAnchor("run_", "RUN")).toBeUndefined();
488
+ expect(deriveWaitpointIdFromAnchor("", "RUN")).toBeUndefined();
489
+ });
490
+ it("gives a different id per type from one anchor", () => {
491
+ const anchor = `run_${generateRunOpsId()}`;
492
+ expect(deriveWaitpointIdFromAnchor(anchor, "RUN")).not.toBe(deriveWaitpointIdFromAnchor(anchor, "BATCH"));
493
+ });
494
+ });
213
495
  //# sourceMappingURL=friendlyId.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"friendlyId.test.js","sourceRoot":"","sources":["../../../../src/v3/isomorphic/friendlyId.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"friendlyId.test.js","sourceRoot":"","sources":["../../../../src/v3/isomorphic/friendlyId.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export * from "./friendlyId.js";
2
2
  export * from "./runOpsResidency.js";
3
+ export * from "./waitpointMint.js";
3
4
  export * from "./duration.js";
4
5
  export * from "./maxDuration.js";
5
6
  export * from "./queueName.js";
@@ -1,5 +1,6 @@
1
1
  export * from "./friendlyId.js";
2
2
  export * from "./runOpsResidency.js";
3
+ export * from "./waitpointMint.js";
3
4
  export * from "./duration.js";
4
5
  export * from "./maxDuration.js";
5
6
  export * from "./queueName.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v3/isomorphic/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v3/isomorphic/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC"}
@@ -1,5 +1,10 @@
1
- /** The two run-ops stores a run/waitpoint can reside in. */
1
+ /**
2
+ * The two store FAMILIES a run/waitpoint can reside in. "NEW" is the dedicated
3
+ * family: one store under gen-1, one per shard under gen-2. Use
4
+ * {@link resolveShard} when the specific store matters.
5
+ */
2
6
  export type Residency = "LEGACY" | "NEW";
7
+ export type ShardKey = "legacy" | "new" | string;
3
8
  /**
4
9
  * Underlying id lineage. "runOpsId" is the label for the NEW-store mint path
5
10
  * — a base32hex run-ops v1 id (see friendlyId.ts). It is the value persisted in
@@ -20,12 +25,21 @@ export declare class UnclassifiableRunId extends Error {
20
25
  constructor(value: string);
21
26
  }
22
27
  /**
23
- * Returns the id lineage by the version-char rule: a well-formed run-ops v1
24
- * body (26 chars, version "1" at index 25, base32hex alphabet) is "runOpsId"
25
- * (NEW store); everything else — including malformed v1 shapes — is "cuid"
26
- * (legacy). Total: never throws. Transition: pre-cutover 27-char base62 ids (the old
27
- * NEW-mint format) now classify LEGACY, so ship this with the base32hex generator only once
28
- * any 27-char NEW-resident runs are drained/disposable no live run is misrouted mid-cutover.
28
+ * Resolve the store that owns an id. A gen-2 body names its own shard; a gen-1
29
+ * v1 body resolves to the single dedicated store; everything else is legacy.
30
+ *
31
+ * The version char at index 25 is one character, so the v1 and gen-2 shape
32
+ * checks are mutually exclusive by construction a gen-1 id can never resolve
33
+ * to a shard, and a gen-2 id can never resolve to "new". Total: never throws.
34
+ */
35
+ export declare function resolveShard(id: string): ShardKey;
36
+ /**
37
+ * Returns the id lineage by the version-char rule: a well-formed run-ops v1 body
38
+ * (version "1") or gen-2 body (version "2") is "runOpsId"; everything else —
39
+ * including malformed shapes of either — is "cuid" (legacy). Total: never throws.
40
+ * Transition: pre-cutover 27-char base62 ids (the old NEW-mint format) classify
41
+ * LEGACY, so ship this with the base32hex generator only once any 27-char
42
+ * NEW-resident runs are drained/disposable — no live run is misrouted mid-cutover.
29
43
  */
30
44
  export declare function classifyKind(id: string): ResidencyKind;
31
45
  /** Classification is total now; kept for API compatibility. */
@@ -1,4 +1,4 @@
1
- import { isRunOpsIdBody } from "./friendlyId.js";
1
+ import { isRunOpsIdBodyShape, runOpsIdV2ShardShape } from "./friendlyId.js";
2
2
  /** @bugsnag/cuid emits 25-char ids (legacy mint path, flag OFF). */
3
3
  export const CUID_LENGTH = 25;
4
4
  /**
@@ -27,15 +27,30 @@ function internalForm(id) {
27
27
  return underscore === -1 ? id : id.slice(underscore + 1);
28
28
  }
29
29
  /**
30
- * Returns the id lineage by the version-char rule: a well-formed run-ops v1
31
- * body (26 chars, version "1" at index 25, base32hex alphabet) is "runOpsId"
32
- * (NEW store); everything else — including malformed v1 shapes — is "cuid"
33
- * (legacy). Total: never throws. Transition: pre-cutover 27-char base62 ids (the old
34
- * NEW-mint format) now classify LEGACY, so ship this with the base32hex generator only once
35
- * any 27-char NEW-resident runs are drained/disposable no live run is misrouted mid-cutover.
30
+ * Resolve the store that owns an id. A gen-2 body names its own shard; a gen-1
31
+ * v1 body resolves to the single dedicated store; everything else is legacy.
32
+ *
33
+ * The version char at index 25 is one character, so the v1 and gen-2 shape
34
+ * checks are mutually exclusive by construction a gen-1 id can never resolve
35
+ * to a shard, and a gen-2 id can never resolve to "new". Total: never throws.
36
+ */
37
+ export function resolveShard(id) {
38
+ const body = internalForm(id);
39
+ const shard = runOpsIdV2ShardShape(body);
40
+ if (shard !== undefined)
41
+ return shard;
42
+ return isRunOpsIdBodyShape(body) ? "new" : "legacy";
43
+ }
44
+ /**
45
+ * Returns the id lineage by the version-char rule: a well-formed run-ops v1 body
46
+ * (version "1") or gen-2 body (version "2") is "runOpsId"; everything else —
47
+ * including malformed shapes of either — is "cuid" (legacy). Total: never throws.
48
+ * Transition: pre-cutover 27-char base62 ids (the old NEW-mint format) classify
49
+ * LEGACY, so ship this with the base32hex generator only once any 27-char
50
+ * NEW-resident runs are drained/disposable — no live run is misrouted mid-cutover.
36
51
  */
37
52
  export function classifyKind(id) {
38
- return isRunOpsIdBody(internalForm(id)) ? "runOpsId" : "cuid";
53
+ return resolveShard(id) === "legacy" ? "cuid" : "runOpsId";
39
54
  }
40
55
  /** Classification is total now; kept for API compatibility. */
41
56
  export function isClassifiable(_id) {
@@ -1 +1 @@
1
- {"version":3,"file":"runOpsResidency.js","sourceRoot":"","sources":["../../../../src/v3/isomorphic/runOpsResidency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAajD,oEAAoE;AACpE,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAE9B;;;;GAIG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACnC,KAAK,CAAS;IACd,WAAW,CAAS;IAC7B,YAAY,KAAa;QACvB,KAAK,CAAC,oCAAoC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5F,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;IAClC,CAAC;CACF;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAC,EAAU;IAC9B,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,OAAO,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,OAAO,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;AAChE,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,OAAO,YAAY,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC5D,CAAC;AAED,gEAAgE;AAChE,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC"}
1
+ {"version":3,"file":"runOpsResidency.js","sourceRoot":"","sources":["../../../../src/v3/isomorphic/runOpsResidency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAsB5E,oEAAoE;AACpE,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAE9B;;;;GAIG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACnC,KAAK,CAAS;IACd,WAAW,CAAS;IAC7B,YAAY,KAAa;QACvB,KAAK,CAAC,oCAAoC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5F,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;IAClC,CAAC;CACF;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAC,EAAU;IAC9B,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,OAAO,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;IAE9B,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAEtC,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,OAAO,YAAY,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;AAC7D,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,OAAO,YAAY,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC5D,CAAC;AAED,gEAAgE;AAChE,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC"}
@@ -1,7 +1,9 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { RunId, WaitpointId, BatchId, SnapshotId, generateRunOpsId } from "./friendlyId.js";
3
- import { ownerEngine, classifyResidency, classifyKind, isClassifiable } from "./runOpsResidency.js";
2
+ import { RunId, WaitpointId, BatchId, SnapshotId, generateRunOpsId, generateRunOpsIdV2, } from "./friendlyId.js";
3
+ import { ownerEngine, classifyResidency, classifyKind, isClassifiable, resolveShard, } from "./runOpsResidency.js";
4
4
  const SAMPLES = 50_000; // property-scale; CI-fast. (Bump locally toward "millions" for deeper coverage.)
5
+ /** Every legal gen-2 shard char: the full DNS-safe lowercase range. */
6
+ const SHARD_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789".split("");
5
7
  describe("ownerEngine — residency classifier (version char at fixed position, not length)", () => {
6
8
  it("cuid ids (default mint) classify LEGACY, friendly + internal", () => {
7
9
  for (const util of [RunId, WaitpointId]) {
@@ -23,10 +25,11 @@ describe("ownerEngine — residency classifier (version char at fixed position,
23
25
  expect(classifyKind(id)).toBe("runOpsId");
24
26
  }
25
27
  });
26
- it("discriminates on the version char, not length: 26+'1' → NEW, 26+'2' → LEGACY", () => {
28
+ it("discriminates on the version char, not length: 26+'1' → NEW, 26+'2' → NEW (gen-2)", () => {
27
29
  const v1 = "a".repeat(24) + "e1";
28
30
  expect(ownerEngine(v1)).toBe("NEW");
29
- expect(ownerEngine("a".repeat(24) + "e2")).toBe("LEGACY");
31
+ expect(ownerEngine("a".repeat(24) + "e2")).toBe("NEW"); // gen-2: shard "e"
32
+ expect(ownerEngine("a".repeat(24) + "e9")).toBe("LEGACY"); // unallocated version char
30
33
  expect(ownerEngine("a".repeat(26))).toBe("LEGACY"); // 26 chars but no version marker
31
34
  });
32
35
  it("malformed v1 shapes fall back to LEGACY (never throw)", () => {
@@ -53,4 +56,84 @@ describe("ownerEngine — residency classifier (version char at fixed position,
53
56
  expect(ownerEngine(SnapshotId.generate().id)).toBe("LEGACY");
54
57
  });
55
58
  });
59
+ describe("resolveShard — the gen-2 refinement inside the dedicated family", () => {
60
+ it("returns the shard char for every legal gen-2 shard key, friendly + internal", () => {
61
+ for (const c of SHARD_CHARS) {
62
+ const id = generateRunOpsIdV2(c);
63
+ expect(resolveShard(id)).toBe(c);
64
+ expect(resolveShard(RunId.toFriendlyId(id))).toBe(c);
65
+ expect(resolveShard(WaitpointId.toFriendlyId(id))).toBe(c);
66
+ expect(resolveShard(BatchId.toFriendlyId(id))).toBe(c);
67
+ }
68
+ });
69
+ it("returns 'new' for a gen-1 v1 body, friendly + internal", () => {
70
+ for (const region of [undefined, "us-east-1", "us-west-2", "eu-central-1"]) {
71
+ const id = generateRunOpsId(region);
72
+ expect(resolveShard(id)).toBe("new");
73
+ expect(resolveShard(RunId.toFriendlyId(id))).toBe("new");
74
+ }
75
+ });
76
+ it("returns 'legacy' for a cuid, a nanoid, a pre-cutover base62 id and malformed input", () => {
77
+ expect(resolveShard(RunId.generate().id)).toBe("legacy"); // cuid, 25
78
+ expect(resolveShard(RunId.generate().friendlyId)).toBe("legacy");
79
+ expect(resolveShard("123456789abcdefghijkm")).toBe("legacy"); // nanoid, 21
80
+ expect(resolveShard("b".repeat(27))).toBe("legacy"); // pre-cutover base62, 27
81
+ for (const bad of [
82
+ "",
83
+ "x".repeat(24) + "01", // 'x' outside base32hex
84
+ "x".repeat(24) + "02", // 'x' outside base32hex, gen-2 version
85
+ "A".repeat(25) + "1", // uppercase
86
+ "A".repeat(25) + "2", // uppercase, gen-2 version
87
+ "a".repeat(24) + "-1", // hyphen positional char
88
+ "a".repeat(24) + "-2", // hyphen positional char, gen-2 version
89
+ "a".repeat(26), // 26 chars, no version marker
90
+ "a".repeat(24) + "e9", // unallocated version char
91
+ "x".repeat(40),
92
+ ]) {
93
+ expect(resolveShard(bad)).toBe("legacy");
94
+ }
95
+ });
96
+ it("never throws, for any input string", () => {
97
+ for (const input of ["", "x", "-".repeat(26), " ".repeat(26), "\u{1F642}".repeat(26)]) {
98
+ expect(() => resolveShard(input)).not.toThrow();
99
+ }
100
+ });
101
+ it("the reserved keys are multi-char, so no single-char shard key can collide", () => {
102
+ for (const reserved of ["legacy", "new"]) {
103
+ expect(reserved.length).toBeGreaterThan(1);
104
+ expect(SHARD_CHARS).not.toContain(reserved);
105
+ }
106
+ });
107
+ });
108
+ describe("gen-2 ids classify NEW — the dedicated family widens in meaning only", () => {
109
+ it("a gen-2 id is NEW / runOpsId across id-shape co-located entities", () => {
110
+ for (const util of [RunId, WaitpointId, BatchId]) {
111
+ const id = generateRunOpsIdV2("a");
112
+ const friendlyId = util.toFriendlyId(id);
113
+ expect(ownerEngine(id)).toBe("NEW");
114
+ expect(ownerEngine(friendlyId)).toBe("NEW");
115
+ expect(classifyResidency(id)).toBe("NEW");
116
+ expect(classifyKind(id)).toBe("runOpsId");
117
+ expect(isClassifiable(id)).toBe(true);
118
+ }
119
+ });
120
+ it("26+'2' is now a gen-2 shard route, not LEGACY (the one deliberate flip)", () => {
121
+ const genTwo = "a".repeat(24) + "e2";
122
+ expect(ownerEngine(genTwo)).toBe("NEW");
123
+ expect(resolveShard(genTwo)).toBe("e");
124
+ });
125
+ it("three-way disjointness: cuid, gen-1 v1 and gen-2 never cross-classify", () => {
126
+ for (let i = 0; i < SAMPLES; i++) {
127
+ const cuid = RunId.generate().id;
128
+ const v1 = generateRunOpsId();
129
+ const v2 = generateRunOpsIdV2(SHARD_CHARS[i % SHARD_CHARS.length]);
130
+ expect(ownerEngine(cuid)).toBe("LEGACY");
131
+ expect(resolveShard(cuid)).toBe("legacy");
132
+ expect(ownerEngine(v1)).toBe("NEW");
133
+ expect(resolveShard(v1)).toBe("new");
134
+ expect(ownerEngine(v2)).toBe("NEW");
135
+ expect(resolveShard(v2)).toBe(SHARD_CHARS[i % SHARD_CHARS.length]);
136
+ }
137
+ });
138
+ });
56
139
  //# sourceMappingURL=runOpsResidency.test.js.map