From 437b4778f46540764134233a3048b0d88e11f8ed Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 8 Oct 2026 17:34:33 +0000 Subject: [PATCH] test(spec): the first root-level test file group's titles state each cited decision in words instead of a tracker number (stage 28) Stage 28 of the runtime-strings burn-down, class (e): 18 of the 20 test files directly in packages/spec/src from assembled-package-body.test.ts through inline-grid-column-carriers.test.ts carried 61 tracker ids in test titles. Each title now states what its record decided, in words, or drops the number where the title already says it. Text only: no assertion, identifier, test count or code comment changes. Claude-Session: https://claude.ai/code/session_01DhTqaEHqPVSVnAkjG3jywn Co-authored-by: Claude --- packages/spec/src/assembled-package-body.test.ts | 8 ++++---- .../compose-key-dispositions-export.pin.test.ts | 10 +++++----- ...compose-stacks-action-collision-shape.test.ts | 6 +++--- .../spec/src/compose-stacks-action-echo.test.ts | 8 ++++---- .../compose-stacks-action-key-collision.test.ts | 4 ++-- .../compose-stacks-collection-pipe-arm.test.ts | 10 +++++----- .../compose-stacks-concat-shape-refusal.test.ts | 2 +- .../spec/src/compose-stacks-i18n-merge.test.ts | 4 ++-- .../spec/src/compose-stacks-key-loss.test.ts | 16 ++++++++-------- .../src/compose-stacks-manifest-preserve.test.ts | 14 +++++++------- ...mpose-stacks-merge-collection-refusal.test.ts | 2 +- .../compose-stacks-objects-shape-refusal.test.ts | 2 +- .../src/compose-stacks-refusal-envelopes.test.ts | 2 +- .../src/cron-typed-positions-retirement.test.ts | 10 +++++----- ...tack-non-strict-actions-shape-refusal.test.ts | 6 +++--- ...tack-non-strict-objects-shape-refusal.test.ts | 2 +- packages/spec/src/eager-entry-import.test.ts | 2 +- .../spec/src/inline-grid-column-carriers.test.ts | 14 +++++++------- 18 files changed, 61 insertions(+), 61 deletions(-) diff --git a/packages/spec/src/assembled-package-body.test.ts b/packages/spec/src/assembled-package-body.test.ts index a73d04a22fc..c1006365461 100644 --- a/packages/spec/src/assembled-package-body.test.ts +++ b/packages/spec/src/assembled-package-body.test.ts @@ -122,7 +122,7 @@ const ordersStack = () => defineStack({ manifest: ordersManifest, objects: [orde // ─── 1. The key set is derived ────────────────────────────────────── -describe('#14242 B — the assembled body carries the stack schema\'s collections, derived', () => { +describe('the assembled body, declared apart from the authoring manifest, carries the stack schema\'s collections, derived', () => { it('lacks exactly the artifact-envelope keys, and nothing else', () => { const stackKeys = shapeKeys(ObjectStackDefinitionSchema); const bodyKeys = shapeKeys(AssembledPackageBodySchema); @@ -156,7 +156,7 @@ describe('#14242 B — the assembled body carries the stack schema\'s collection // ─── 2. Each stage refuses the other's spelling ───────────────────── -describe('#14242 B — two stages, two declarations, neither tolerant of the other', () => { +describe('two stages, two declarations, neither tolerant of the other', () => { const assembledBody = { ...coreManifest, objects: [accountObject] }; const globBody = { ...coreManifest, objects: ['./src/objects/*.object.ts'] }; @@ -165,7 +165,7 @@ describe('#14242 B — two stages, two declarations, neither tolerant of the oth expect(verdict.success).toBe(true); }); - it('the AUTHORING entry still refuses that same body — the mismatch #14242 measured', () => { + it('the AUTHORING entry still refuses that same body — the mismatch that is the reason two declarations exist', () => { // Kept as a live measurement rather than prose: it is the reason two // declarations exist, and a widened authoring schema (road C) would turn // this green without anyone noticing the stages had merged. @@ -281,7 +281,7 @@ describe("ADR-0130 D4 — `manifest: 'preserve'` assembles each input stack", () // ─── 4. `plugins` / `devPlugins` are envelope keys (#15219) ────────── -describe('#15219 A — `plugins` / `devPlugins` are envelope keys: top level only, never inside `packages[]`', () => { +describe('`plugins` / `devPlugins` are envelope keys: top level only, never inside `packages[]`', () => { /** What a host hands to `kernel.use()` — a live instance, not metadata. */ const livePlugin = { name: 'plugin.example', init: () => undefined }; diff --git a/packages/spec/src/compose-key-dispositions-export.pin.test.ts b/packages/spec/src/compose-key-dispositions-export.pin.test.ts index 8fecd7fa59a..db12139084e 100644 --- a/packages/spec/src/compose-key-dispositions-export.pin.test.ts +++ b/packages/spec/src/compose-key-dispositions-export.pin.test.ts @@ -98,7 +98,7 @@ afterEach(() => { // ─── 1. Key-set parity with the schema, both directions ───────────── -describe('#14877 pin 1 — the exported key set equals the schema\'s declared top-level key set', () => { +describe('compose-key dispositions export, pin 1 — the exported key set equals the schema\'s declared top-level key set', () => { it('COMPOSE_KEY_DISPOSITIONS names every key the schema declares, and no other', () => { const schemaKeys = schemaTopLevelKeys(); // Non-vacuity: the schema really is the 40+-key envelope, not an empty shape agreeing with anything. @@ -135,7 +135,7 @@ describe('#14877 pin 1 — the exported key set equals the schema\'s declared to // ─── 2. Frozen ────────────────────────────────────────────────────── -describe('#14877 pin 2 — the view is frozen', () => { +describe('compose-key dispositions export, pin 2 — the view is frozen', () => { it('COMPOSE_KEY_DISPOSITIONS is frozen and refuses assignment to an existing key', () => { expect(Object.isFrozen(COMPOSE_KEY_DISPOSITIONS)).toBe(true); const mutable = COMPOSE_KEY_DISPOSITIONS as unknown as Record; @@ -163,7 +163,7 @@ describe('#14877 pin 2 — the view is frozen', () => { // ─── 3. Every value is a declared disposition ─────────────────────── -describe('#14877 pin 3 — every value is one of the declared dispositions', () => { +describe('compose-key dispositions export, pin 3 — every value is one of the declared dispositions', () => { it('no key carries a disposition outside the ComposeDisposition vocabulary', () => { const vocabulary = new Set(Object.keys(DECLARED_DISPOSITIONS)); for (const [key, disposition] of Object.entries(COMPOSE_KEY_DISPOSITIONS)) { @@ -189,7 +189,7 @@ describe('#14877 pin 3 — every value is one of the declared dispositions', () // ─── 4. The dispositions are the composer's rules ─────────────────── -describe('#14877 pin 4 — each disposition is what composeStacks actually does', () => { +describe('compose-key dispositions export, pin 4 — each disposition is what composeStacks actually does', () => { it("every 'concat' key concatenates in stack order — the export's concat subset IS the composer's", () => { const concatKeys = keysWith('concat'); // Non-vacuity: the concat family is the bulk of the table. @@ -264,7 +264,7 @@ describe('#14877 pin 4 — each disposition is what composeStacks actually does' // ─── 5. Derived, and reaching the surface as the same objects ─────── -describe('#14877 pin 5 — STACK_DEFINITION_KEYS is derived, and both symbols reach the package surface', () => { +describe('compose-key dispositions export, pin 5 — STACK_DEFINITION_KEYS is derived, and both symbols reach the package surface', () => { it('STACK_DEFINITION_KEYS is Object.keys of the table — same members, same order, no second literal', () => { expect([...STACK_DEFINITION_KEYS]).toEqual(Object.keys(COMPOSE_KEY_DISPOSITIONS)); }); diff --git a/packages/spec/src/compose-stacks-action-collision-shape.test.ts b/packages/spec/src/compose-stacks-action-collision-shape.test.ts index a79ed5466d5..40a91acedb5 100644 --- a/packages/spec/src/compose-stacks-action-collision-shape.test.ts +++ b/packages/spec/src/compose-stacks-action-collision-shape.test.ts @@ -101,7 +101,7 @@ const topEntries: Array<{ label: string; value: unknown }> = [ { label: 'an array', value: [] }, ]; -describe('#19816 — a non-object top-level `actions` entry is refused with the envelope, not a TypeError', () => { +describe('a non-object top-level `actions` entry is refused with the envelope, not a TypeError', () => { for (const row of topEntries) { it(`entry ${row.label} is refused at ['actions', 1]`, () => { const refused = refusal(() => compose([valid(), withTop([row.value])])); @@ -123,7 +123,7 @@ describe('#19816 — a non-object top-level `actions` entry is refused with the }); }); -describe("#19816 — a malformed object's own `actions` is refused with the envelope, not a TypeError", () => { +describe("a malformed object's own `actions` is refused with the envelope, not a TypeError", () => { const nonArrays: Array<{ label: string; value: unknown }> = [ { label: 'a number', value: 5 }, { label: 'a string', value: 'abc' }, @@ -165,7 +165,7 @@ describe("#19816 — a malformed object's own `actions` is refused with the enve }); }); -describe('#19816 — the controls: well-formed stacks compose, and a real collision is still refused', () => { +describe('the controls: well-formed stacks compose, and a real collision is still refused', () => { it('a valid pair composes, every action carried', () => { const composed = compose([valid(), withTop([act('b_home')])]); expect(composed.actions?.map((a) => a.name)).toEqual(['a_home', 'b_home']); diff --git a/packages/spec/src/compose-stacks-action-echo.test.ts b/packages/spec/src/compose-stacks-action-echo.test.ts index 59d72401072..618198af58e 100644 --- a/packages/spec/src/compose-stacks-action-echo.test.ts +++ b/packages/spec/src/compose-stacks-action-echo.test.ts @@ -85,7 +85,7 @@ const boundA = () => const boundB = () => defineStack({ manifest: mf('com.example.b'), objects: [obj('b_item')], actions: [act('dup_y', { objectName: 'b_item' })] }); -describe('composeStacks - a bound standalone action appears once in the composed object (#14847)', () => { +describe('composeStacks - a bound standalone action appears once in the composed object', () => { it("carries each input's own bound action once under the default strategy, and the standalone once at the top", () => { const a = boundA(); const b = boundB(); @@ -137,7 +137,7 @@ describe('composeStacks - a bound standalone action appears once in the composed expect(keysOf(out).embedded).toEqual({ shared: ['emb3/EMB', 'b3/BOUND', 'b1/BOUND', 'b2/BOUND'] }); }); - it("with three stacks under objectConflict: 'merge', the composition is refused at the object merge — each built object carries a different `actions` array (#14848)", () => { + it("with three stacks under objectConflict: 'merge', the composition is refused at the object merge — each built object carries a different `actions` array", () => { // s1's `shared` carries [emb1, b1/BOUND], s2's [emb2, b2/BOUND]: two // declarations `'merge'` used to resolve by replacement, dropping `emb1`. let msg: string | null = null; @@ -173,7 +173,7 @@ describe('composeStacks - a bound standalone action appears once in the composed }); describe('composeStacks - what the identity skip does NOT fold', () => { - it("refuses a hand-written twin — the same action authored standalone AND on its object — through #14686's rule, unchanged", () => { + it("refuses a hand-written twin — the same action authored standalone AND on its object — through defineStack's scope-qualified action-key refusal, unchanged", () => { const msg = refusal(() => defineStack({ manifest: mf('com.example.t'), @@ -221,7 +221,7 @@ describe('composeStacks - round trip through defineStack', () => { expect(keysOf(defineStack(out))).toEqual(keysOf(out)); }); - it("with bound actions, is refused exactly as far as a lone built input is — 'declared twice' by #14686's landed pin, never '3 times'", () => { + it("with bound actions, is refused exactly as far as a lone built input is — 'declared twice' by defineStack's scope-qualified action-key refusal, never '3 times'", () => { const a = boundA(); const LINE = " ✗ Action key 'a_item:dup_x' is declared twice: stack.actions[0] (objectName 'a_item') and " + diff --git a/packages/spec/src/compose-stacks-action-key-collision.test.ts b/packages/spec/src/compose-stacks-action-key-collision.test.ts index e10b6ba2bef..57067cd8374 100644 --- a/packages/spec/src/compose-stacks-action-key-collision.test.ts +++ b/packages/spec/src/compose-stacks-action-key-collision.test.ts @@ -219,7 +219,7 @@ describe('composeStacks - object-scoped keys across stacks, judged on what the c ['embedding stack last', () => [boundToSharedB(), embeddedA()], "'com.example.b' (stack #0)", "'com.example.a' (stack #1)"], ['embedding stack first', () => [embeddedA(), boundToSharedB()], "'com.example.a' (stack #0)", "'com.example.b' (stack #1)"], ] as const)( - "under 'merge' the same pair is refused one step earlier, at the object merge: both objects declare a DIFFERENT `actions` (%s) — #14848, not a collision", + "under 'merge' the same pair is refused one step earlier, at the object merge: both objects declare a DIFFERENT `actions` (%s) — the 'merge' collection refusal, not an action-key collision", (_order, stacks, holder, later) => { // B's built object carries its bound copy (`dup_m/BOUND`), A's carries // the embedded declaration (`dup_m/EMB`): two different arrays on one @@ -259,7 +259,7 @@ describe('composeStacks - object-scoped keys across stacks, judged on what the c expect((out.objects ?? []).find((o) => o.name === 'shared')?.actions?.[0]?.label).toBe('Dup E (b)'); }); - it("refuses the same pair under 'merge' — two different `actions` arrays on one object are no longer resolved by replacement (#14848; formerly the P3 acceptance pin)", () => { + it("refuses the same pair under 'merge' — two different `actions` arrays on one object are no longer resolved by replacement (formerly the P3 acceptance pin)", () => { const msg = refusal(() => composeStacks([embedA(), embedB()], { objectConflict: 'merge' })); expect(msg).toContain( "composeStacks conflict: object 'shared' is defined in multiple stacks and its 'actions' is declared " + diff --git a/packages/spec/src/compose-stacks-collection-pipe-arm.test.ts b/packages/spec/src/compose-stacks-collection-pipe-arm.test.ts index 5ea1bb66e0a..a46dc9b3538 100644 --- a/packages/spec/src/compose-stacks-collection-pipe-arm.test.ts +++ b/packages/spec/src/compose-stacks-collection-pipe-arm.test.ts @@ -189,7 +189,7 @@ const composedShared = (left: Record, right: Record refusal(() => composedShared({ [key]: left }, { [key]: right })); -describe('#19150 — the probe keys are the shapes this pin is about (anti-vacuity)', () => { +describe('the probe keys are the shapes this pin is about (anti-vacuity)', () => { it('the preprocess probe is a pipe whose IN is a transform and whose OUT is the array', () => { const def = defOf(defOf(probe(NAMES.preprocess))?.innerType); expect(def?.type).toBe('pipe'); @@ -208,7 +208,7 @@ describe('#19150 — the probe keys are the shapes this pin is about (anti-vacui }); }); -describe('#19150 BRIGHT CONTROL — the pre-fix reading of the preprocess probe', () => { +describe('BRIGHT CONTROL — the preprocess probe as read before the `pipe` arm took the authored side', () => { it('reading IN alone answers "not a collection" — the silent direction', () => { expect(inOnlyWalk(probe(NAMES.preprocess))).toBe(false); }); @@ -230,7 +230,7 @@ describe('#19150 BRIGHT CONTROL — the pre-fix reading of the preprocess probe' }); }); -describe('#19150 MAIN — the preprocess-wrapped collection key is IN the refusal set', () => { +describe('MAIN — the preprocess-wrapped collection key is IN the refusal set', () => { it('refuses two differing declarations, naming the object, the key and both stacks', () => { const msg = refuse(NAMES.preprocess, ['a'], ['b']); expect(msg).toContain( @@ -264,7 +264,7 @@ describe('#19150 MAIN — the preprocess-wrapped collection key is IN the refusa }); }); -describe('#19150 DARK CONTROL — keys whose verdict must not move', () => { +describe('DARK CONTROL — keys whose verdict must not move', () => { it('a genuine `.pipe()` authored as a scalar composes by later-wins, and is NOT refused', () => { expect(refuse(NAMES.pipeScalar, 'a', 'b')).toBeNull(); expect(composedShared({ [NAMES.pipeScalar]: 'a' }, { [NAMES.pipeScalar]: 'b' })?.[NAMES.pipeScalar]).toBe('b'); @@ -287,7 +287,7 @@ describe('#19150 DARK CONTROL — keys whose verdict must not move', () => { }); }); -describe("#19150 TODAY-INVARIANCE — the fix moves no key on today's ObjectSchema", () => { +describe("TODAY-INVARIANCE — the fix moves no key on today's ObjectSchema", () => { const realShape = async (): Promise> => { const actual = await vi.importActual('./data/object.zod'); return shapeOf(actual.ObjectSchema); diff --git a/packages/spec/src/compose-stacks-concat-shape-refusal.test.ts b/packages/spec/src/compose-stacks-concat-shape-refusal.test.ts index 3063991b598..86351dc21a9 100644 --- a/packages/spec/src/compose-stacks-concat-shape-refusal.test.ts +++ b/packages/spec/src/compose-stacks-concat-shape-refusal.test.ts @@ -72,7 +72,7 @@ afterEach(() => { vi.restoreAllMocks(); }); -describe('#19784 — composeStacks refuses a non-array concatenated collection', () => { +describe('composeStacks refuses a non-array concatenated collection', () => { it('covers every concat key the composer declares (the table is the census, not a transcription)', () => { expect(CONCAT_KEYS).toContain('permissions'); expect(CONCAT_KEYS).toContain('data'); diff --git a/packages/spec/src/compose-stacks-i18n-merge.test.ts b/packages/spec/src/compose-stacks-i18n-merge.test.ts index 87d38bc046b..8bf19dff8d9 100644 --- a/packages/spec/src/compose-stacks-i18n-merge.test.ts +++ b/packages/spec/src/compose-stacks-i18n-merge.test.ts @@ -63,7 +63,7 @@ afterEach(() => { // ─── Conflicts — the behaviour #5051 changed ──────────────────────── -describe('#5051 — conflicting `i18n` declarations are a composition error', () => { +describe('conflicting `i18n` declarations are a composition error', () => { it('throws instead of letting the later stack win (the issue\'s own repro)', () => { const a = raw({ manifest: manifestA, i18n: { defaultLocale: 'en' } }); const b = raw({ manifest: manifestB, i18n: { defaultLocale: 'zh-CN' } }); @@ -172,7 +172,7 @@ describe('#5051 — conflicting `i18n` declarations are a composition error', () // ─── Pass-through — CONTROL (green before and after #5051) ────────── -describe('#5051 control — an `i18n` nobody disagrees about still composes', () => { +describe('control — an `i18n` nobody disagrees about still composes', () => { it('keeps the only declaration, from either position', () => { const withI18n = { manifest: manifestA, i18n: { defaultLocale: 'en', supportedLocales: ['en'] } }; const without = { manifest: manifestB }; diff --git a/packages/spec/src/compose-stacks-key-loss.test.ts b/packages/spec/src/compose-stacks-key-loss.test.ts index 1142e451c55..e99eb7e27a8 100644 --- a/packages/spec/src/compose-stacks-key-loss.test.ts +++ b/packages/spec/src/compose-stacks-key-loss.test.ts @@ -50,7 +50,7 @@ afterEach(() => { // ─── Rule 1 — same value passes through ───────────────────────────── -describe('#5005 rule 1 — non-array top-level keys survive composition', () => { +describe('composition rule 1 — non-array top-level keys survive composition', () => { it('keeps `api` when only one stack declares it (the issue\'s own repro)', () => { const a = raw({ manifest: manifestA, api: { enforceProjectMembership: true } }); const b = raw({ manifest: manifestB }); @@ -61,7 +61,7 @@ describe('#5005 rule 1 — non-array top-level keys survive composition', () => expect(composeStacks([b, a]).api).toEqual({ enforceProjectMembership: true }); }); - it('keeps `server` when only one stack declares it (#4910 rate limiting)', () => { + it('keeps `server` (the inbound rate limiting config) when only one stack declares it', () => { const a = raw({ manifest: manifestA, server: { security: { rateLimit: { enabled: true, maxRequests: 5 } } }, @@ -101,7 +101,7 @@ describe('#5005 rule 1 — non-array top-level keys survive composition', () => // ─── Rule 2 — conflict is an error with a prescription ────────────── -describe('#5005 rule 2 — conflicting values throw a prescriptive error', () => { +describe('composition rule 2 — conflicting values throw a prescriptive error', () => { it('throws naming the key, both source stacks and the fix', () => { const a = raw({ manifest: manifestA, api: { enforceProjectMembership: true } }); const b = raw({ manifest: manifestB, api: { enforceProjectMembership: false } }); @@ -157,7 +157,7 @@ describe('#5005 rule 2 — conflicting values throw a prescriptive error', () => // ─── Rule 3 — unhandled keys warn ─────────────────────────────────── -describe('#5005 rule 3 — a key with no declared rule warns', () => { +describe('composition rule 3 — a key with no declared rule warns', () => { it('warns once, names the key and carries the declare-a-rule prescription', () => { // A key the schema does not declare: reaches composeStacks only via // `strict: false`, which is exactly how a NEW key looks before someone @@ -188,7 +188,7 @@ describe('#5005 rule 3 — a key with no declared rule warns', () => { expect(warnSpy.mock.calls.map((c) => String(c[0])).some((w) => w.includes("'futureList'"))).toBe(true); }); - it('refuses — never skips — a collection key that holds a non-array value (#19784)', () => { + it('refuses — never skips — a collection key that holds a non-array value', () => { // Skipping it (the #5005 warn-and-drop) composed an artifact that silently // lacked stack B's views; the full per-key census lives in // `compose-stacks-concat-shape-refusal.test.ts`. @@ -217,7 +217,7 @@ describe('#5005 rule 3 — a key with no declared rule warns', () => { // ─── Control — array keys keep today's concat semantics ───────────── -describe('#5005 control — array keys still concatenate', () => { +describe('control — array keys still concatenate', () => { it('concatenates in stack order, unchanged', () => { const a = raw({ manifest: manifestA, @@ -294,7 +294,7 @@ describe('#5005 control — array keys still concatenate', () => { // ─── Control — the pre-existing bespoke strategies are untouched ──── -describe('#5005 control — manifest / objects strategies unchanged', () => { +describe('control — manifest / objects strategies unchanged', () => { it('manifest still follows the `manifest` option', () => { const a = raw({ manifest: manifestA }); const b = raw({ manifest: manifestB }); @@ -319,7 +319,7 @@ describe('#5005 control — manifest / objects strategies unchanged', () => { // ─── Structural pin — every declared key has a rule ───────────────── -describe('#5005 structural pin — the schema and the composer cannot drift', () => { +describe('structural pin — the schema and the composer cannot drift', () => { /** * The disposition table is typed `Record< keyof ObjectStackDefinition, … >`, * so a key added to the schema without a composition rule is already a diff --git a/packages/spec/src/compose-stacks-manifest-preserve.test.ts b/packages/spec/src/compose-stacks-manifest-preserve.test.ts index a13fe3ca2d4..ecf3248529c 100644 --- a/packages/spec/src/compose-stacks-manifest-preserve.test.ts +++ b/packages/spec/src/compose-stacks-manifest-preserve.test.ts @@ -305,7 +305,7 @@ describe("ADR-0130 row 3 — `manifest: 'preserve'` keeps all N identities", () expect(idsOf(composed)).toEqual(['com.example.crm', 'com.example.crm.cpq']); }); - it('does not warn about an undeclared composition rule (#5005 rule 3)', () => { + it('does not warn about an undeclared composition rule', () => { composeStacks([raw({ manifest: crmManifest }), raw({ manifest: cpqManifest })], { manifest: 'preserve', }); @@ -360,7 +360,7 @@ describe("ADR-0130 row 3 — `manifest: 'preserve'` keeps all N identities", () return norm(fromBodies) === norm(flattened); }; - it('#14512 — a multi-package artifact carries its collections ONCE, in the package bodies', () => { + it('a multi-package artifact carries its collections ONCE, in the package bodies', () => { const stacks = [withObjects(crmManifest, 'crm_account'), withObjects(cpqManifest, 'cpq_quote')]; const preserved = composeStacks(stacks, { manifest: 'preserve' }); @@ -381,7 +381,7 @@ describe("ADR-0130 row 3 — `manifest: 'preserve'` keeps all N identities", () }); it.each(['merge', 'override'] as const)( - "#14512 — keeps the flattened copy when `objectConflict: '%s'` RECONCILED two packages' object", + "keeps the flattened copy when `objectConflict: '%s'` RECONCILED two packages' object", (strategy) => { // ⭐ The case the first shape of this block could not see. Both packages // declare `crm_account`; composition reconciles them into ONE object and @@ -409,7 +409,7 @@ describe("ADR-0130 row 3 — `manifest: 'preserve'` keeps all N identities", () }, ); - it('#14512 — keeps the flattened copy when a package binds an action onto a SIBLING package\'s object', () => { + it('keeps the flattened copy when a package binds an action onto a SIBLING package\'s object', () => { // The second way the two halves diverge without any name colliding: // `mergeActionsIntoObjects` binds a standalone action onto the object it // names, including an object another package owns. The composed object @@ -438,7 +438,7 @@ describe("ADR-0130 row 3 — `manifest: 'preserve'` keeps all N identities", () expect(((ownerBody?.objects as Array<{ actions?: unknown[] }>)?.[0].actions ?? [])).toEqual([]); }); - it('#14512 — keeps the flattened copy when an input has NO manifest to own its collections', () => { + it('keeps the flattened copy when an input has NO manifest to own its collections', () => { // `preservePackageEntries` contributes a body only for a stack that has a // manifest, and `manifest` is optional on the stack schema. Stripping here // would not remove a copy, it would delete the only one — so the emitter @@ -450,7 +450,7 @@ describe("ADR-0130 row 3 — `manifest: 'preserve'` keeps all N identities", () expect(idsOf(preserved)).toEqual(['com.example.crm']); }); - it('#14512 — keeps the flattened copy when a `packages`-carrying input declares collections of its own', () => { + it('keeps the flattened copy when a `packages`-carrying input declares collections of its own', () => { // Such a stack contributes its ENTRIES untouched (re-assembling one would // fold the composition's collections onto a package that does not own // them), so its own collections are attributed to no body either. @@ -464,7 +464,7 @@ describe("ADR-0130 row 3 — `manifest: 'preserve'` keeps all N identities", () expect(idsOf(preserved)).toEqual(['com.example.crm', 'com.example.crm.cpq', 'com.example.crm.billing']); }); - it('#14512 — a ONE-package artifact keeps today\'s shape (ADR-0130 D7)', () => { + it('a ONE-package artifact keeps today\'s shape (ADR-0130 D7)', () => { // D7 stated as a condition rather than trusted: an artifact that reaches a // single package entry by any route stays flattened, so the single-package // shape every customer has on disk is byte-identical to before. diff --git a/packages/spec/src/compose-stacks-merge-collection-refusal.test.ts b/packages/spec/src/compose-stacks-merge-collection-refusal.test.ts index 8a56e608483..3aedf52bfe9 100644 --- a/packages/spec/src/compose-stacks-merge-collection-refusal.test.ts +++ b/packages/spec/src/compose-stacks-merge-collection-refusal.test.ts @@ -285,7 +285,7 @@ describe('the refusal set is derived from ObjectSchema.shape — pinned in both expect(derived).toEqual([...COLLECTION_KEYS_IN_SHAPE_ORDER]); }); - it('the config-object literal list equals the shape walk, in shape order (#16075)', () => { + it('the config-object literal list equals the shape walk, in shape order', () => { expect(derivedConfigObjects).toEqual([...CONFIG_OBJECT_KEYS_IN_SHAPE_ORDER]); }); diff --git a/packages/spec/src/compose-stacks-objects-shape-refusal.test.ts b/packages/spec/src/compose-stacks-objects-shape-refusal.test.ts index 3f6b1167ece..2b647a6fe41 100644 --- a/packages/spec/src/compose-stacks-objects-shape-refusal.test.ts +++ b/packages/spec/src/compose-stacks-objects-shape-refusal.test.ts @@ -97,7 +97,7 @@ const rows: Array<{ label: string; build: () => ObjectStackDefinition }> = [ { label: 'a hand-built stack whose `objects` is false', build: () => handBuilt({ manifest: mf('com.example.b'), objects: false }) }, ]; -describe('#18239 — composeStacks refuses a non-array `objects` with an ADR-0112 envelope', () => { +describe('composeStacks refuses a non-array `objects` with an ADR-0112 envelope', () => { for (const row of rows) { describe(row.label, () => { it('is refused with code STACK_SCHEMA_INVALID and status 422 — never a bare TypeError, never a skip', () => { diff --git a/packages/spec/src/compose-stacks-refusal-envelopes.test.ts b/packages/spec/src/compose-stacks-refusal-envelopes.test.ts index 12b5371faae..7cc7f4511c5 100644 --- a/packages/spec/src/compose-stacks-refusal-envelopes.test.ts +++ b/packages/spec/src/compose-stacks-refusal-envelopes.test.ts @@ -202,7 +202,7 @@ const rows: Array<{ }, ]; -describe('#16348 — every composeStacks conflict refusal carries an ADR-0112 envelope', () => { +describe('every composeStacks conflict refusal carries an ADR-0112 envelope', () => { for (const row of rows) { describe(row.site, () => { it(`refuses with code ${row.code} and status 422`, () => { diff --git a/packages/spec/src/cron-typed-positions-retirement.test.ts b/packages/spec/src/cron-typed-positions-retirement.test.ts index 03957935089..2858e2c8075 100644 --- a/packages/spec/src/cron-typed-positions-retirement.test.ts +++ b/packages/spec/src/cron-typed-positions-retirement.test.ts @@ -208,7 +208,7 @@ function readAt(doc: unknown, keyPath: (string | number)[]): { block: Record, leaf: String(keyPath[keyPath.length - 1]) }; } -describe('[#16320] the three surviving cron-typed positions no longer exist on their schemas', () => { +describe('the three surviving cron-typed positions no longer exist on their schemas', () => { for (const site of SITES) { it(`\`${site.qualified}\` is gone — an authored value is accepted and STRIPPED, never materialized`, () => { const parsed = site.schema.safeParse(site.authored); @@ -261,7 +261,7 @@ describe('[#16320] the three surviving cron-typed positions no longer exist on t }); }); -describe('[#16320] the one manifest-reachable position — what an upgrading stack actually gets', () => { +describe('the one manifest-reachable position — what an upgrading stack actually gets', () => { // ⚠️ REWRITTEN IN PROTOCOL 18, and the direction of every assertion here // INVERTED. These pins used to record the 直接删 consequence — the key // accepted and silently stripped from `syncConfig`. The connector's @@ -295,7 +295,7 @@ describe('[#16320] the one manifest-reachable position — what an upgrading sta }); }); -describe('[#16320] the tsc channel: the deleted keys are not in their input types', () => { +describe('the tsc channel: the deleted keys are not in their input types', () => { it('fails tsc at every authoring site', () => { const connector: Connector = { ...CONNECTOR_WELL_FORMED, @@ -343,8 +343,8 @@ describe('[#16320] the tsc channel: the deleted keys are not in their input type }); }); -describe('[#16320] 直接删 — the ADR-0087 surfaces carry NOTHING for these seven', () => { - it('[#17158] the four positions that left with their defs are covered at DEF grain, not key grain', () => { +describe('直接删 — the ADR-0087 surfaces carry NOTHING for these seven', () => { + it('the four positions that left with their defs (the export-job family, `ScheduleState`, the connector `DataSyncConfig`) are covered at DEF grain, not key grain', () => { const retiredDefs18 = new Set(RETIRED_DEFS_BY_MAJOR[18] ?? []); for (const gone of LEFT_WITH_THEIR_DEFS) { expect(retiredDefs18.has(gone.def), `${gone.def} must be a RETIRED_DEFS_BY_MAJOR[18] entry`).toBe(true); diff --git a/packages/spec/src/define-stack-non-strict-actions-shape-refusal.test.ts b/packages/spec/src/define-stack-non-strict-actions-shape-refusal.test.ts index 48f7d24593d..aa94996aed0 100644 --- a/packages/spec/src/define-stack-non-strict-actions-shape-refusal.test.ts +++ b/packages/spec/src/define-stack-non-strict-actions-shape-refusal.test.ts @@ -78,7 +78,7 @@ const nonArrays: Array<{ label: string; value: unknown }> = [ { label: 'false', value: false }, ]; -describe('#19799 — defineStack strict: false refuses a malformed top-level `actions` with an ADR-0112 envelope', () => { +describe('defineStack strict: false refuses a malformed top-level `actions` with an ADR-0112 envelope', () => { for (const row of nonArrays) { it(`top-level \`actions\` as ${row.label} is refused at ['actions'] — never a bare TypeError`, () => { const refused = refusal(() => nonStrict({ objects: [obj('b_item')], actions: row.value })); @@ -98,7 +98,7 @@ describe('#19799 — defineStack strict: false refuses a malformed top-level `ac }); }); -describe("#19799 — defineStack strict: false refuses a malformed object's own `actions` with the same envelope", () => { +describe("defineStack strict: false refuses a malformed object's own `actions` with the same envelope", () => { for (const row of nonArrays) { it(`an object's \`actions\` as ${row.label} is refused at ['objects', i, 'actions']`, () => { const refused = refusal(() => nonStrict({ objects: [obj('b_other'), obj('b_item', { actions: row.value })] })); @@ -135,7 +135,7 @@ describe("#19799 — defineStack strict: false refuses a malformed object's own }); }); -describe('#19799 — the controls: well-formed `actions` are accepted, merged and ordered', () => { +describe('the controls: well-formed `actions` are accepted, merged and ordered', () => { it('arrays of action objects at both sites: the bound action is merged and every group is sorted by `order`', () => { const stack = nonStrict({ objects: [obj('b_item', { actions: [embedded] })], diff --git a/packages/spec/src/define-stack-non-strict-objects-shape-refusal.test.ts b/packages/spec/src/define-stack-non-strict-objects-shape-refusal.test.ts index a8be070c6ed..f39bfc34837 100644 --- a/packages/spec/src/define-stack-non-strict-objects-shape-refusal.test.ts +++ b/packages/spec/src/define-stack-non-strict-objects-shape-refusal.test.ts @@ -68,7 +68,7 @@ const rows: Array<{ label: string; objects: unknown }> = [ { label: 'false', objects: false }, ]; -describe('#19785 — defineStack strict: false refuses a non-array `objects` with an ADR-0112 envelope', () => { +describe('defineStack strict: false refuses a non-array `objects` with an ADR-0112 envelope', () => { for (const row of rows) { it(`\`objects\` as ${row.label} is refused with code STACK_SCHEMA_INVALID and status 422, the issue at ['objects']`, () => { const refused = refusal(() => nonStrict({ objects: row.objects, actions: [bound] })); diff --git a/packages/spec/src/eager-entry-import.test.ts b/packages/spec/src/eager-entry-import.test.ts index 9e2b7b0fb5a..605d248fe16 100644 --- a/packages/spec/src/eager-entry-import.test.ts +++ b/packages/spec/src/eager-entry-import.test.ts @@ -115,7 +115,7 @@ const MODE_PROBES: Record = { const ENTRIES = publishedSourceEntries(); -describe('#19930 — every published entry imports first under OS_EAGER_SCHEMAS=1', () => { +describe('every published entry imports first under OS_EAGER_SCHEMAS=1', () => { it('maps every published module subpath to a source entry that exists', () => { // A subpath this cannot map would drop out of the loop below silently. expect(ENTRIES.map((e) => e.subpath)).toEqual(expect.arrayContaining(['.', './data', './api'])); diff --git a/packages/spec/src/inline-grid-column-carriers.test.ts b/packages/spec/src/inline-grid-column-carriers.test.ts index 4c506cad903..81ec2e238b4 100644 --- a/packages/spec/src/inline-grid-column-carriers.test.ts +++ b/packages/spec/src/inline-grid-column-carriers.test.ts @@ -142,7 +142,7 @@ function expectHydratedCurrencyRefusal(stack: unknown, location: string): void { expect(finding).toContain(COLUMN_FIRST_SENTENCE); } -describe('#20901 — the form-view carrier references the column contract', () => { +describe('the form-view carrier references the column contract', () => { it('its column element IS InlineGridColumnSchema — one contract, not a copy', () => { const subforms = (FormViewSchema.shape as unknown as Record } } }>).subforms; const columnElement = subforms.unwrap().element.shape.columns.unwrap().element; @@ -196,7 +196,7 @@ describe('#20901 — the form-view carrier references the column contract', () = }); }); -describe('#20901 — defineStack judges an identity-only column by the type it renders as', () => { +describe('defineStack judges an identity-only column by the type it renders as', () => { it('refuses the card\'s identity-only column over a currency child field on the form view\'s `form`', () => { expectHydratedCurrencyRefusal( stackWithSubformColumns([{ name: 'quantity' }, IDENTITY_ONLY_WITH_SCALE]), @@ -303,7 +303,7 @@ const stackWithProbeField = (fieldType: string, column: Record) return { manifest, objects: [PARENT, { ...child, fields: { ...child.fields, probe: { type: fieldType } } }] }; }; -describe('#20901 — every type-conditional column rule has its row in the hydrated-type table', () => { +describe('every type-conditional column rule has its row in the hydrated-type table', () => { it('the probe reaches every column key, and finds the rule the tree holds today', () => { const { rules, unprobed } = typeConditionalRules(); expect(unprobed, 'column keys no probe value satisfies — add a value to PROBE_VALUES').toEqual([]); @@ -337,7 +337,7 @@ describe('#20901 — every type-conditional column rule has its row in the hydra // The `field` → `name` respelling reaches the form-view carrier (ADR-0087 D2). // --------------------------------------------------------------------------- -describe('#20901 — the `field` → `name` respelling is a chain step on the form-view carrier', () => { +describe('the `field` → `name` respelling is a chain step on the form-view carrier', () => { const ID = 'form-view-subform-columns-canonicalized'; const conversion = () => ALL_CONVERSIONS.find((c) => c.id === ID); const form = (columns: unknown[]) => ({ ...FORM_BASE, subforms: [{ childObject: 'crm_invoice_line', columns }] }); @@ -477,7 +477,7 @@ const stackWithMasterDetailColumns = (columns: unknown[], position: PagePosition return { manifest, objects: [PARENT, childObject()], pages: [page] }; }; -describe('#20928 — the master-detail block\'s detail entry is strict, and its columns are the column contract', () => { +describe('the master-detail block\'s detail entry is strict, and its columns are the column contract', () => { it('its column element IS InlineGridColumnSchema — one contract, not a copy', () => { type Unwrapped = { unwrap(): { element: { shape: Record } } }; const details = (MASTER_DETAIL_PROPS.shape as unknown as Record).details; @@ -552,7 +552,7 @@ describe('#20928 — the master-detail block\'s detail entry is strict, and its }); }); -describe('#20928 — defineStack judges an identity-only detail column by the type it renders as', () => { +describe('defineStack judges an identity-only detail column by the type it renders as', () => { it('refuses the card\'s identity-only column over a currency child field, on a page region', () => { expectHydratedCurrencyRefusal( stackWithMasterDetailColumns([{ name: 'quantity' }, IDENTITY_ONLY_WITH_SCALE]), @@ -645,7 +645,7 @@ const parseLineItems = (props: unknown): Result => LINE_ITEMS_PROPS.safeParse(pr const parseLineItemColumns = (columns: unknown[]): Result => parseLineItems({ childObject: 'crm_invoice_line', relationshipField: 'invoice', columns }); -describe('#21142 — the line-items block is strict, and its columns are the column contract', () => { +describe('the line-items block is strict, and its columns are the column contract', () => { it('its column element IS InlineGridColumnSchema — one contract, not a copy', () => { const shape = (LINE_ITEMS_PROPS as unknown as { shape: Record }).shape; expect(shape.columns.element).toBe(InlineGridColumnSchema);