diff --git a/packages/spec/src/shared/alias-integrity.test.ts b/packages/spec/src/shared/alias-integrity.test.ts index af087ddeaac..5231fc1e858 100644 --- a/packages/spec/src/shared/alias-integrity.test.ts +++ b/packages/spec/src/shared/alias-integrity.test.ts @@ -513,7 +513,7 @@ describe('alias integrity — coverage', () => { expect(unreached, 'these alias tables are not reachable from any module export, so nothing judges them').toEqual([]); }); - it('NOTHING in packages/spec calls `strictUnknownKeyError` directly any more (#5593)', () => { + it('NOTHING in packages/spec calls `strictUnknownKeyError` directly any more', () => { // This was a shrink-only ratchet at 44 — the pre-helper wiring, which hands // the factory a hand-transcribed `knownKeys` array instead of a shape. // #5593 migrated the last of them, so it is a hard ZERO and the assertion @@ -767,7 +767,7 @@ describe('alias integrity — every table is a true claim about its schema', () expect(broken.sort()).toEqual([]); }); - it('no two alias keys in one table collapse onto the same probe (#5481)', () => { + it('no two alias keys in one table collapse onto the same probe', () => { // The table is indexed by `aliasProbe(key)`, so a colliding pair does not // produce two entries — it produces one, decided by source order, with the // earlier key gone before any author can reach it. Judged with the REAL @@ -809,7 +809,7 @@ describe('alias integrity — every table is a true claim about its schema', () expect([...PROSE_ALIAS_TARGETS].filter((x) => !used.has(x)).sort()).toEqual([]); }); - it('no guidance SET member is itself a declared key, and no two entries claim one key (#6619)', () => { + it('no guidance SET member is itself a declared key, and no two entries claim one key', () => { // The set-keyed guidance form arrived with #6619's fold of the three // hand-written `$ZodErrorMap`s — maps that, being hand-rolled, no registry // saw and nothing judged (#6416's blind spot). Folding them in is only @@ -849,7 +849,7 @@ describe('alias integrity — every table is a true claim about its schema', () expect(broken.sort()).toEqual([]); }); - it('every pattern-keyed set carries examples that really match it and are really rejected (#6619)', () => { + it('every pattern-keyed set carries examples that really match it and are really rejected', () => { // A pattern is an OPEN family, so the dead-entry question cannot be asked // of its membership the way it is of a list — the visibility pattern // deliberately also matches the canonical `visibleWhen`, which the shape @@ -880,7 +880,7 @@ describe('alias integrity — every table is a true claim about its schema', () expect(broken.sort()).toEqual([]); }); - it('no alias row is dead on arrival because a guidanceSet in the same table already consumes it (#7889)', () => { + it('no alias row is dead on arrival because a guidanceSet in the same table already consumes it', () => { // The live-table verdict. If this ever turns red on a real schema, the fix // is at the authoring site (drop the row, or fold the key into the set's // prescription) — never here, and never a change to the predicate that @@ -904,7 +904,7 @@ describe('alias integrity — every table is a true claim about its schema', () ).toBeGreaterThan(0); }); - it('the guidanceSet-reachability check can actually go red — a planted dead row, no live schema touched (#7889)', () => { + it('the guidanceSet-reachability check can actually go red — a planted dead row, no live schema touched', () => { // Self-test, per the triage ruling: prove the gate can fail before trusting // that it passing on the live table means anything. Entirely synthetic — // `unreachableAliasRows` only reads `options.aliases` / `options.guidanceSets`, @@ -914,7 +914,7 @@ describe('alias integrity — every table is a true claim about its schema', () const planted: StrictObjectDeclaration[] = [{ options: { surface: 'synthetic reachability probe', - history: 'n/a — planted for #7889 self-test', + history: 'n/a — planted for the reachability self-test', aliases: { visibleIf: 'visibleWhen' }, guidanceSets: [{ name: 'SYNTHETIC_VIS_PATTERN', @@ -936,7 +936,7 @@ describe('alias integrity — every table is a true claim about its schema', () const reachable: StrictObjectDeclaration[] = [{ options: { surface: 'synthetic reachability probe (no set)', - history: 'n/a — planted for #7889 self-test', + history: 'n/a — planted for the reachability self-test', aliases: { visibleIf: 'visibleWhen' }, }, shape: emptyShape, @@ -949,7 +949,7 @@ describe('alias integrity — every table is a true claim about its schema', () const nonMatching: StrictObjectDeclaration[] = [{ options: { surface: 'synthetic reachability probe (non-matching set)', - history: 'n/a — planted for #7889 self-test', + history: 'n/a — planted for the reachability self-test', aliases: { disabled: 'readonly' }, guidanceSets: [{ name: 'SYNTHETIC_VIS_PATTERN', @@ -963,7 +963,7 @@ describe('alias integrity — every table is a true claim about its schema', () expect(unreachableAliasRows(nonMatching)).toEqual([]); }); - it('the three #6416 hand-written maps are FOLDED and judged here — the blind spot stays closed (#6619)', () => { + it('the three hand-written error maps are FOLDED and judged here — the blind spot stays closed', () => { // The reason #6619 existed: `strictVisibilityError`, // `strictWidgetAnalyticsError` and `strictTenancyError` were hand-rolled // `$ZodErrorMap`s, so their alias pointers and prescriptions registered in @@ -1008,7 +1008,7 @@ describe('alias integrity — every table is a true claim about its schema', () .toEqual(['crossTenantAccess', 'organizationField', 'strategy']); }); - it('no live surface still reports the shared view/page FAMILY name (#8202)', () => { + it('no live surface still reports the shared view/page FAMILY name', () => { // `VISIBILITY_STRICT_OPTIONS.surface` is the family's name, and every // consumer overrides it with its own shape's (`'this form field'` / // `'this form section'` / `'this page component'`) — because since #7887 @@ -1028,7 +1028,7 @@ describe('alias integrity — every table is a true claim about its schema', () ).toEqual([]); }); - it('the two maps #6619 MISSED are folded and judged here too (#6805)', () => { + it('the two maps the first fold MISSED are folded and judged here too', () => { // #6619's inventory was two short, and both survivors were the same shape // as the three above — `unrecognized_keys` prescription tables attached to // a `.strict()` object through `{ error: … }`, seen by no registry. The @@ -1055,7 +1055,7 @@ describe('alias integrity — every table is a true claim about its schema', () expect(Object.keys(capabilities!.options.guidance ?? {}).sort()).toEqual(['mru', 'trash']); }); - it('NO module outside the shared helpers writes its own `unrecognized_keys` map (#6805)', () => { + it('NO module outside the shared helpers writes its own `unrecognized_keys` map', () => { // The class, not the instances. Both closure pins above name surfaces, so // each only holds the line it was written for — #6416 named three, and the // inventory that produced the number was two short. A pin over the SHAPE @@ -1097,11 +1097,11 @@ describe('alias integrity — every table is a true claim about its schema', () offenders.sort(), 'build the shape with `strictObject(options, shape)` and put the prescriptions in ' + '`guidance` / `guidanceSets` — a hand-rolled map registers in no registry, so its ' - + 'aliases and prescriptions are unmeasured rather than clean (#6416/#6619/#6805)', + + 'aliases and prescriptions are unmeasured rather than clean', ).toEqual([]); }); - it('…and that scan is alive: the pre-fold shape is found, prose and the two out-of-class maps are not (#6805)', () => { + it('…and that scan is alive: the pre-fold shape is found, prose and the two out-of-class maps are not', () => { // Anti-vacuity for the verdict above, which asserts that a search came back // EMPTY — the shape that passes just as well when the instrument is dead. // Four controls, each closing a different way it could be. diff --git a/packages/spec/src/shared/duration.test.ts b/packages/spec/src/shared/duration.test.ts index 0b3f4a3dbdf..e7cc7702259 100644 --- a/packages/spec/src/shared/duration.test.ts +++ b/packages/spec/src/shared/duration.test.ts @@ -42,7 +42,7 @@ export type IsoDurationSeconds = Assert< Eq, z.infer> >; -describe('the closed duration vocabulary — exactly two units (#18122)', () => { +describe('the closed duration vocabulary — exactly two units', () => { it('declares milliseconds and seconds, and no speculative third unit', async () => { // ⛔ `DurationMinutes` / `DurationHours` / `DurationDays` are added when a // real row needs one, in the PR that converts it — the unit set is derived diff --git a/packages/spec/src/shared/editability-boundary.test.ts b/packages/spec/src/shared/editability-boundary.test.ts index e47fd805d3c..0e0d293055e 100644 --- a/packages/spec/src/shared/editability-boundary.test.ts +++ b/packages/spec/src/shared/editability-boundary.test.ts @@ -99,7 +99,7 @@ const EDITABILITY_KEYS = ['disabled', 'disabledWhen', 'readonly', 'readOnly', 'r // =========================================================================== // 1. The guidance reaches an author — on the real parse error // =========================================================================== -describe('#7887 — the boundary prescription an author actually sees', () => { +describe('editability lives on fields — the boundary prescription an author actually sees', () => { it.each(VISIBILITY_ONLY)('%s answers `disabled` with the boundary, not a bare refusal', (_n, schema, base) => { const m = unknownKeyMessage(schema, { ...base, disabled: true }); expect(m).toContain('Editability is a FIELD-level concern'); @@ -128,7 +128,7 @@ describe('#7887 — the boundary prescription an author actually sees', () => { for (const key of ['disabled', 'readonly', 'editable']) expect(m).toContain(`\`${key}\``); }); - it.each(VISIBILITY_ONLY)('%s still puts the history sentence last (the #5955 order survives the new set)', (_n, schema, base) => { + it.each(VISIBILITY_ONLY)('%s still puts the history sentence last (the fix-first order survives the new set)', (_n, schema, base) => { const m = unknownKeyMessage(schema, { ...base, disabled: true }); const history = 'Before ADR-0089 D3a these were dropped silently'; expect(m.indexOf('Editability is a FIELD-level concern')).toBeLessThan(m.indexOf(history)); @@ -138,7 +138,7 @@ describe('#7887 — the boundary prescription an author actually sees', () => { // =========================================================================== // 2. It names `readonlyWhen` — and must never name `disabledWhen` // =========================================================================== -describe('#7887 — the prescription points at a key that exists', () => { +describe('the prescription points at a key that exists', () => { it.each(VISIBILITY_ONLY)('%s names the field-level `readonly` / `readonlyWhen` pair', (_n, schema, base) => { const m = unknownKeyMessage(schema, { ...base, disabled: true }); expect(m).toContain('`readonly: true`'); @@ -168,7 +168,7 @@ describe('#7887 — the prescription points at a key that exists', () => { // =========================================================================== // 3. The field surface is UNCHANGED — the shared-table trap // =========================================================================== -describe('#7887 — `FormFieldSchema` sees exactly what it saw before', () => { +describe('`FormFieldSchema` sees exactly what it saw before', () => { it('`disabled` on a form field still renames onto `readonly`, with no boundary text', () => { const m = unknownKeyMessage(FormFieldSchema, { ...FORM_FIELD, disabled: true }); expect(m).toContain('Did you mean `disabled` → `readonly`?'); @@ -217,7 +217,7 @@ describe('#7887 — `FormFieldSchema` sees exactly what it saw before', () => { // =========================================================================== // 4. Acceptance is byte-identical — a guidance string is not a key // =========================================================================== -describe('#7887 — no acceptance change', () => { +describe('no acceptance change', () => { it.each(VISIBILITY_ONLY)('%s still REJECTS every editability spelling', (_n, schema, base) => { for (const key of EDITABILITY_KEYS) { expect( @@ -277,7 +277,7 @@ describe('#7887 — no acceptance change', () => { // =========================================================================== // 5. #8202 — every shape names ITSELF, so the two answers cannot be swapped // =========================================================================== -describe('#8202 — the rejection says WHICH shape refused the key', () => { +describe('the rejection says WHICH shape refused the key', () => { /** Each shape, a probe body, and the name its rejection must give itself. */ const NAMED: ReadonlyArray<[string, { safeParse: (v: unknown) => { success: boolean; error?: unknown } }, object, string]> = [ ['FormFieldSchema', FormFieldSchema, FORM_FIELD, 'this form field'], @@ -341,7 +341,7 @@ describe('#8202 — the rejection says WHICH shape refused the key', () => { // =========================================================================== // 6. #8201 — `SelectOptionSchema` inherits the ruling, with its OWN answer // =========================================================================== -describe('#8201 — an option is offered or withheld, never shown-but-unselectable', () => { +describe('an option is offered or withheld, never shown-but-unselectable', () => { const OPTION_TEXT = 'Editability is not a per-OPTION concern'; it('`disabled` on an option reaches the boundary, rendered as the template bullet', () => { diff --git a/packages/spec/src/shared/error-map.test.ts b/packages/spec/src/shared/error-map.test.ts index 2e9625a8537..30d4b338b03 100644 --- a/packages/spec/src/shared/error-map.test.ts +++ b/packages/spec/src/shared/error-map.test.ts @@ -187,7 +187,7 @@ describe('formatZodError', () => { // mistake = the same key reported N times, which is why `view.zod.ts`'s // `submitBehavior` reached for `discriminatedUnion` in the first place. Both // directions are pinned below. -describe('[#4971] formatZodError expands invalid_union branches', () => { +describe('formatZodError expands invalid_union branches', () => { // The campaign's shape: a string form OR a closed object form. // // [#19581] The closed arm is a REAL PRODUCT DOOR — `NormalizedFilterSchema`, @@ -402,7 +402,7 @@ describe('safeParsePretty', () => { // `z.record` key schema there is `z.string()` or an enum — #5389's dormancy // table), which is why these fixtures are local schemas: the defect is in the // CONSUMER, and the consumer is reachable from any caller's schema. -describe('[#5389] formatZodError descends invalid_key / invalid_element', () => { +describe('formatZodError descends invalid_key / invalid_element', () => { const SnakeKey = z .string() .regex(/^[a-z][a-z0-9_]*$/, "Invalid identifier. Must be lowercase snake_case (e.g. 'first_name')."); diff --git a/packages/spec/src/shared/evaluated-expression.test.ts b/packages/spec/src/shared/evaluated-expression.test.ts index 44fbe510a5a..9febdf9f55c 100644 --- a/packages/spec/src/shared/evaluated-expression.test.ts +++ b/packages/spec/src/shared/evaluated-expression.test.ts @@ -36,7 +36,7 @@ function issuesOf(value: unknown) { return result.success ? [] : result.error.issues.map((i) => ({ code: i.code, path: i.path.map(String).join('.'), message: i.message })); } -describe('EvaluatedExpressionSchema — an evaluated slot requires a non-blank `source` (#15430)', () => { +describe('EvaluatedExpressionSchema — an evaluated slot requires a non-blank `source`', () => { it('REFUSES an `ast`-only envelope: one issue, at `source`, the published sentence', () => { expect(issuesOf(AST_ONLY)).toEqual([ { code: 'invalid_type', path: 'source', message: EVALUATED_EXPRESSION_SOURCE_REQUIRED }, diff --git a/packages/spec/src/shared/evaluated-slot-population.test.ts b/packages/spec/src/shared/evaluated-slot-population.test.ts index 75fe9b9f67a..bef92f7058e 100644 --- a/packages/spec/src/shared/evaluated-slot-population.test.ts +++ b/packages/spec/src/shared/evaluated-slot-population.test.ts @@ -107,7 +107,7 @@ function persistenceSchemaCodeLines(): string[] { return hits; } -describe('#15811 population — no declaring position still mounts the persistence schema', () => { +describe('evaluated-slot population — no declaring position still mounts the persistence schema', () => { const hits = persistenceSchemaCodeLines(); it('LIT CONTROL — the scan does find the name where it legitimately lives', () => { @@ -242,7 +242,7 @@ const POSITIONS: ReadonlyArray z.ZodType]> = [ ['system/settings-manifest.zod.ts:SettingsManifestSchema.visible', () => slot(SettingsManifestSchema, 'visible')], ]; -describe('#15811 — every evaluated slot refuses the two shapes no engine can run', () => { +describe('every evaluated slot refuses the two shapes no engine can run', () => { it('reaches exactly the 34 declaring positions the census enumerated', () => { // A position that stops being reachable must red here rather than fall out // of the table: that silent drop is the #17630 failure in another costume. diff --git a/packages/spec/src/shared/expression-dialect-docs.pin.test.ts b/packages/spec/src/shared/expression-dialect-docs.pin.test.ts index c50ee79a41a..e1d8ec13bc5 100644 --- a/packages/spec/src/shared/expression-dialect-docs.pin.test.ts +++ b/packages/spec/src/shared/expression-dialect-docs.pin.test.ts @@ -64,7 +64,7 @@ function dialectRowsInDocTable(): string[] { return names; } -describe('[#6085] expression.zod.ts dialect table === ExpressionDialect', () => { +describe('expression.zod.ts dialect table === ExpressionDialect', () => { const rows = dialectRowsInDocTable(); it('finds the table at all (anti-vacuity)', () => { @@ -79,7 +79,7 @@ describe('[#6085] expression.zod.ts dialect table === ExpressionDialect', () => expect([...rows].sort()).toEqual([...ExpressionDialect.options].sort()); }); - it('never re-advertises `js`, retired at #3278', () => { + it('never re-advertises `js`, retired in favour of ScriptBody', () => { // The specific regression this pin was written for. `js` is not an // expression dialect at all — procedural JavaScript is the L2 authoring // surface (`ScriptBody { language: 'js' }`), so a row here would send an diff --git a/packages/spec/src/shared/external-errors.test.ts b/packages/spec/src/shared/external-errors.test.ts index 7c7c2cad0ec..1a89d2ccfed 100644 --- a/packages/spec/src/shared/external-errors.test.ts +++ b/packages/spec/src/shared/external-errors.test.ts @@ -29,7 +29,7 @@ describe('External error codes (ADR-0015)', () => { // REACHABLE by a client. // --------------------------------------------------------------------------- -describe('[#7739] EXTERNAL_ERROR_HTTP_STATUS', () => { +describe('EXTERNAL_ERROR_HTTP_STATUS — each external error carries an HTTP status', () => { it('covers every code in the family — no gate can leak as a bare 500', () => { // The `satisfies Record` makes a missing entry a // compile error; this is the runtime twin, so a code added to the map but @@ -112,7 +112,7 @@ describe('renderDiffMessage', () => { * schema fact) and renders like every other kind: the raw kind name plus the * carried error text, so an unknown-to-a-consumer entry is still loud. */ - it('renders the `unreachable` kind with the carried error text (#11166)', () => { + it('renders the `unreachable` kind with the carried error text', () => { const diffs: SchemaDiffEntry[] = [ { kind: 'unreachable', diff --git a/packages/spec/src/shared/lazy-schema.test.ts b/packages/spec/src/shared/lazy-schema.test.ts index 5ae2e6ad5e7..833a146156f 100644 --- a/packages/spec/src/shared/lazy-schema.test.ts +++ b/packages/spec/src/shared/lazy-schema.test.ts @@ -127,7 +127,7 @@ describe('lazySchema × z.toJSONSchema identity', () => { * real instance, so before the facade aliased it every lazy reference lost its * `description` while `OS_EAGER_SCHEMAS=1` (no Proxy at all) kept it. */ -describe('lazySchema × z.toJSONSchema metadata (#19101)', () => { +describe('lazySchema × z.toJSONSchema — a lazy reference keeps its metadata', () => { it('a lazy reference converts exactly like the eager instance — nested and as the root', () => { const factory = () => z.record(z.string(), z.unknown()).describe('lazy-described record'); const lazy = lazySchema(factory); @@ -168,7 +168,7 @@ describe('lazySchema × z.toJSONSchema metadata (#19101)', () => { * components gain 2 descriptions, the * `os generate` IDE schema 445; description is the only key that moved. */ -describe('lazy == eager on the real contract (#19101)', () => { +describe('lazy == eager on the real contract', () => { const PKG_ROOT = fileURLToPath(new URL('../..', import.meta.url)); const CONTRACT = new URL('../api/contract.zod.ts', import.meta.url).href; const METADATA_TYPES = new URL('../kernel/metadata-type-schemas.ts', import.meta.url).href; diff --git a/packages/spec/src/shared/mapping.test.ts b/packages/spec/src/shared/mapping.test.ts index 5f22513eecf..e2fdf2d605a 100644 --- a/packages/spec/src/shared/mapping.test.ts +++ b/packages/spec/src/shared/mapping.test.ts @@ -72,7 +72,7 @@ describe('FieldMappingSchema', () => { // so without the tombstone an authored `transform` is either accepted or // silently stripped — never named). -describe('[#5552] FieldMapping.transform is retired, and says so', () => { +describe('FieldMapping.transform is retired, and says so', () => { const RETIRED = { source: 'order_value', target: 'order_total', diff --git a/packages/spec/src/shared/metadata-url-spelling.test.ts b/packages/spec/src/shared/metadata-url-spelling.test.ts index 90d91117bc7..1cf158f85a6 100644 --- a/packages/spec/src/shared/metadata-url-spelling.test.ts +++ b/packages/spec/src/shared/metadata-url-spelling.test.ts @@ -42,7 +42,7 @@ function expectedRestPlural(type: string): string { return `${type}s`; } -describe('#7894 INVARIANT 1 — no spelling that worked before may stop working', () => { +describe('INVARIANT 1 — no spelling that worked before may stop working', () => { it('folds every manifest spelling to exactly the singular it folded to before', () => { // The manifest map is the complete population of spellings that resolved at // the `/meta` boundary before this change, so quantifying over it IS the @@ -81,7 +81,7 @@ describe('#7894 INVARIANT 1 — no spelling that worked before may stop working' }); }); -describe('#7894 INVARIANT 2 — no unmapped spelling of a DECLARED type may answer 200', () => { +describe('INVARIANT 2 — no unmapped spelling of a DECLARED type may answer 200', () => { it('maps the REST plural of every declared registry type', () => { // This is the limb that makes the defect non-recurring: it is quantified // over the registry, so a newly declared type arrives already mapped and @@ -140,7 +140,7 @@ describe('#7894 INVARIANT 2 — no unmapped spelling of a DECLARED type may answ }); }); -describe('#7894 — the refusal limb is narrow by construction', () => { +describe('the refusal limb is narrow by construction', () => { it('refuses an unrecognised plural of a declared type, naming that type and its spelling', () => { expect(metaUrlSpellingRefusal('capabilitys')).toEqual({ declared: 'capability', hint: 'capabilities' }); expect(metaUrlSpellingRefusal('objectes')).toEqual({ declared: 'object', hint: 'objects' }); @@ -178,7 +178,7 @@ describe('#7894 — the refusal limb is narrow by construction', () => { } }); - it('hands its residue to the OTHER verdict rather than widening (#8421 flipped this)', () => { + it('hands its residue to the OTHER verdict rather than widening (flipped once unknown type names were refused)', () => { // FLIPPED, not deleted (#8421 closed what #7894 left open, the way #7894 // flipped what #7743 left behind). // @@ -194,7 +194,7 @@ describe('#7894 — the refusal limb is narrow by construction', () => { expect(unrecognisedMetaTypeRefusal('fieldz')).toEqual({ type: 'fieldz' }); }); - it('refuses a wrong plural of EVERY declared type, naming that type (#8424)', () => { + it('refuses a wrong plural of EVERY declared type, naming that type', () => { // Registry-quantified successor to the retired `DECLARED_META_TYPES` // membership pin: a type is refusable-when-misspelled iff it is in the // declared set, so quantifying the refusal over the registry pins the @@ -214,7 +214,7 @@ describe('#7894 — the refusal limb is narrow by construction', () => { }); }); -describe('#8421 — the second verdict: not a metadata type AT ALL', () => { +describe('the second verdict: not a metadata type AT ALL', () => { it('accepts every declared type, canonical and REST-plural alike', () => { for (const entry of DEFAULT_METADATA_TYPE_REGISTRY) { expect(unrecognisedMetaTypeRefusal(entry.type), `${entry.type} is declared`).toBeNull(); @@ -251,7 +251,7 @@ describe('#8421 — the second verdict: not a metadata type AT ALL', () => { } }); - it('[#10485] `theme` left the contract with its carrier — refused by name', () => { + it('`theme` left the contract with its carrier — refused by name', () => { // The retired kind's whole exit path: the `themes: 'theme'` fold left // `PLURAL_TO_SINGULAR`, so both spellings now earn the #8421 verdict // instead of the store-anything branch commit 2306a765c closed. @@ -305,7 +305,7 @@ describe('#8421 — the second verdict: not a metadata type AT ALL', () => { }); }); -describe('#7894 — the manifest map keeps its own job', () => { +describe('the manifest map keeps its own job', () => { it('gains no `fields` collection, so the authoring lint advertises none', () => { // `kernel/metadata-authoring-lint.ts` iterates `PLURAL_TO_SINGULAR` to // decide which stack-level collections exist and which "did you mean" hints @@ -319,7 +319,7 @@ describe('#7894 — the manifest map keeps its own job', () => { }); }); -describe('#10096 — the fine-grained entry is the SAME contract, re-exported', () => { +describe('the fine-grained entry is the SAME contract, re-exported', () => { it('`meta-spelling` and `/shared` hand out identical bindings (one declaration, two entries)', async () => { // The schema-free entry is additive: `/shared` keeps the four symbols, and // both must resolve to the one declaration in diff --git a/packages/spec/src/shared/protection.test.ts b/packages/spec/src/shared/protection.test.ts index ed9d3505ebb..8ccf5d54ab2 100644 --- a/packages/spec/src/shared/protection.test.ts +++ b/packages/spec/src/shared/protection.test.ts @@ -132,7 +132,7 @@ describe('applyProtection', () => { * reading the source cannot distinguish "has an error map" from "has an error * map that says something useful". */ -describe('ProtectionSchema — unknown-key refusal (#16845)', () => { +describe('ProtectionSchema — unknown-key refusal names the surface and the rename', () => { it('names the surface, echoes the key and suggests the rename', () => { const issue = unknownKeyIssue(ProtectionSchema.safeParse({ lock: 'full', reason: 'r', lockk: 'system' } as never)); expect(issue, 'a `.strict()` shape must still raise unrecognized_keys').toBeDefined(); @@ -206,7 +206,7 @@ describe('ProtectionSchema — unknown-key refusal (#16845)', () => { * an argument; this is the measurement. Every row below reads identically on the * pre-fix build. */ -describe('ProtectionSchema — accept set is unchanged (#16845)', () => { +describe('ProtectionSchema — accept set is unchanged', () => { it('declares exactly `lock`, `reason`, `docsUrl`', () => { expect(Object.keys(ProtectionSchema.shape).sort()).toEqual(['docsUrl', 'lock', 'reason']); }); diff --git a/packages/spec/src/shared/retired-key-migrate-sentence.test.ts b/packages/spec/src/shared/retired-key-migrate-sentence.test.ts index fc98fd082e8..0e379551cf4 100644 --- a/packages/spec/src/shared/retired-key-migrate-sentence.test.ts +++ b/packages/spec/src/shared/retired-key-migrate-sentence.test.ts @@ -267,7 +267,7 @@ function claimTree(): Array<{ file: string; line: number; excerpt: string }> { return all; } -describe('`os migrate meta` sentences are the house sentence, across corpora (#6856 route D, widened #7030)', () => { +describe('`os migrate meta` sentences are the house sentence, across corpora', () => { it('every prescription sentence in packages/spec/src and packages/lint/src is house-form or MIXED two-clause', () => { const judged = judgeTree(); const violations = judged.filter((j) => !j.ok); @@ -303,7 +303,7 @@ describe('`os migrate meta` sentences are the house sentence, across corpora (#6 expect(lintSites.every((j) => j.ok)).toBe(true); }); - it('[#9529] the withdrawn automatic-rewrite claim is absent from every prescription', () => { + it('the withdrawn automatic-rewrite claim is absent from every prescription', () => { // The other direction of the same ruling: requiring the new sentence where // `--from ` appears would still let the claim survive in a prescription // that spells the bare command (`CHATTER_POSITION_RETIRED` does) or names @@ -315,7 +315,7 @@ describe('`os migrate meta` sentences are the house sentence, across corpora (#6 ).toEqual([]); }); - it('[#9529] the withdrawn-claim scan is not vacuous — every retired spelling trips it', () => { + it('the withdrawn-claim scan is not vacuous — every retired spelling trips it', () => { const withdrawn = [ "const a = 'Delete the key. Run `os migrate meta --from 16` to rewrite existing sources automatically.';", "const b = 'Delete the key. Run `os migrate meta --from 16` to rewrite it automatically.';", @@ -339,7 +339,7 @@ describe('`os migrate meta` sentences are the house sentence, across corpora (#6 it('goes RED on the retired "rewrite it" spelling, naming the site', () => { const planted = [ "const X = retiredKey(", - " '`x.y` was removed in @objectstack/spec 17.0.0 (#0000) — nothing read it. Delete the key. '", + " '`x.y` was removed in @objectstack/spec 17.0.0 — nothing read it. Delete the key. '", " + 'Run `os migrate meta --from 16` to rewrite it automatically.',", ');', ].join('\n'); @@ -508,10 +508,10 @@ function judgeMarkdownSentences({ file, flat }: MarkdownFile): MarkdownSite[] { }); } -describe('the retirement playbook and the published skill catalog agree with this pin (#10848, corpus widened #13859)', () => { +describe('the retirement playbook and the published skill catalog agree with this pin', () => { const corpus = markdownCorpus(); - it('[#13859] anti-vacuity for the DISCOVERY: the playbook and at least one published skill', () => { + it('anti-vacuity for the DISCOVERY: the playbook and at least one published skill', () => { // The corpus is this suite's input, so a walk that reached zero published // files would restore the exact one-file blindness #13859 is about — and // every assertion below would stay green while it did. Assert the shape of @@ -550,7 +550,7 @@ describe('the retirement playbook and the published skill catalog agree with thi expect(rests.some((r) => SKILL_MIXED_TEMPLATE.test(r))).toBe(true); }); - it('[#9529] the withdrawn automatic-rewrite claim is absent from the corpus, in every spelling', () => { + it('the withdrawn automatic-rewrite claim is absent from the corpus, in every spelling', () => { // Judged over the raw text rather than reconstruct(): a markdown line // opening with an asterisk would be dropped as a comment line, hiding a // claim. WITHDRAWN_CLAIM is English-only BY DESIGN — the playbook's @@ -566,7 +566,7 @@ describe('the retirement playbook and the published skill catalog agree with thi expect(claims, claims.join('\n')).toEqual([]); }); - it('[#13859] the markdown judge is not vacuous — template and prose anchors each hold', () => { + it('the markdown judge is not vacuous — template and prose anchors each hold', () => { const judge = (flat: string): MarkdownSite[] => judgeMarkdownSentences({ file: 'synthetic.md', flat }); const house = 'Run `os migrate meta --from ` to list the mechanical edits for existing sources; apply them by hand.'; const mixed = 'Run `os migrate meta --from 16` to list the mechanical edits for the `1y` case; the rest are reported.'; diff --git a/packages/spec/src/shared/retired-key.test.ts b/packages/spec/src/shared/retired-key.test.ts index 8badd4fb442..fa427a47937 100644 --- a/packages/spec/src/shared/retired-key.test.ts +++ b/packages/spec/src/shared/retired-key.test.ts @@ -23,9 +23,9 @@ import { acceptRetiredDefaultResidue, enumWithRetiredValues, retiredKey } from ' import { strictObject } from './strict-object'; const GONE_GUIDANCE = - '`gone` was removed in @objectstack/spec 99 (#0000). Delete the key.'; + '`gone` was removed in @objectstack/spec 99. Delete the key.'; const MODE_GUIDANCE = - '`legacyMode` was removed in @objectstack/spec 99 (#0000). Delete the key.'; + '`legacyMode` was removed in @objectstack/spec 99. Delete the key.'; /** A synthetic "next retirement": one boolean default, one string default. */ const inner = strictObject( @@ -52,7 +52,7 @@ const schema = acceptRetiredDefaultResidue(inner, { legacyMode: 'classic', }); -describe('acceptRetiredDefaultResidue (#12840)', () => { +describe('acceptRetiredDefaultResidue — a retired default parses as inert residue', () => { it('accepts each captured retired default and strips it from the output', () => { const r = schema.safeParse({ keep: 'x', gone: false, legacyMode: 'classic' }); expect(r.success).toBe(true); @@ -186,7 +186,7 @@ const VariantEnum = enumWithRetiredValues( { heading: HEADING_RETIRED, subheading: SUBHEADING_RETIRED }, ); -describe('enumWithRetiredValues (#17109)', () => { +describe('enumWithRetiredValues — value-level retirement beside retiredKey()', () => { it('refuses a retired member with ITS OWN prescription, byte-for-byte', () => { for (const [member, prescription] of [ ['heading', HEADING_RETIRED], diff --git a/packages/spec/src/shared/retry-policy.test.ts b/packages/spec/src/shared/retry-policy.test.ts index e38fc1a9cf2..115e675427f 100644 --- a/packages/spec/src/shared/retry-policy.test.ts +++ b/packages/spec/src/shared/retry-policy.test.ts @@ -33,7 +33,7 @@ import * as Automation from '../automation'; import * as System from '../system'; import { RetryPolicySchema } from './retry-policy.zod'; -describe('RetryPolicy is a single declaration across entries (#4661)', () => { +describe('RetryPolicy is a single declaration across entries', () => { it('./automation and ./system export the SAME RetryPolicySchema object', () => { expect(Automation.RetryPolicySchema).toBe(System.RetryPolicySchema); }); @@ -92,7 +92,7 @@ describe('RetryPolicy is a single declaration across entries (#4661)', () => { // to assert here. `retiredKey()` is a Zod `never` whose issue carries the // guidance as its `message`, so for this rejection class the wording IS the // whole contract (#5240) and the message is the only thing worth asserting. - it('the tombstone enumerates exactly the surfaces that still carry the policy (#6630)', () => { + it('the tombstone enumerates exactly the surfaces that still carry the policy', () => { const result = RetryPolicySchema.safeParse({ retryDelayMs: 500 }); expect(result.success).toBe(false); const message = result.error!.issues.map((issue) => issue.message).join('\n'); @@ -110,7 +110,7 @@ describe('RetryPolicy is a single declaration across entries (#4661)', () => { // compile error. expect( message, - 'the prescription must not point at a surface #6414 retired', + 'the prescription must not point at the retired ETL layer', ).not.toMatch(/\bETL\b/i); // None of the above may be bought by weakening the prescription itself. @@ -173,7 +173,7 @@ describe('RetryPolicySchema — converged shape', () => { * * Adding a fifth retry surface without wiring `retryPolicyShape()` fails here. */ -describe('every retry surface carries ONE contract (#4661, #4964, #4962)', () => { +describe('every retry surface carries ONE contract', () => { const POLICY_KEYS = ['maxRetries', 'backoffMs', 'backoffMultiplier', 'maxRetryDelayMs', 'jitter']; const POLICY_DEFAULTS = { maxRetries: 0, backoffMs: 1000, backoffMultiplier: 1, maxRetryDelayMs: 30000, jitter: false, diff --git a/packages/spec/src/shared/strict-object.test.ts b/packages/spec/src/shared/strict-object.test.ts index 5b58922c312..9a7be738608 100644 --- a/packages/spec/src/shared/strict-object.test.ts +++ b/packages/spec/src/shared/strict-object.test.ts @@ -13,7 +13,7 @@ const WidgetSchema = lazySchema(() => strictObject( { surface: 'this widget', - history: 'Until #4001 these were dropped silently — the widget still rendered.', + history: 'Until unknown keys were refused, these were dropped silently — the widget still rendered.', aliases: { visibleWhen: 'visible' }, guidance: { span: '`span` was retired in vX. Use `columnSpan`.' }, }, @@ -60,7 +60,7 @@ describe('strictObject', () => { expect(r.error!.issues[0].message).toContain('`visibleWhen` → `visible`'); }); - it('ONE alias entry already covers every case/separator spelling of itself (#5481)', () => { + it('ONE alias entry already covers every case/separator spelling of itself', () => { // The fact that makes a second spelling of the same probe not merely // redundant but unreachable: the table is indexed by `aliasProbe`, which // folds case, `_`, `-` and spaces. Three tables on `main` carried a second @@ -192,8 +192,8 @@ describe('strictObject', () => { * back into the front matter passes every `toContain` in this file; it fails * here. */ -describe('message order — the fix comes before the history (#5955)', () => { - const HISTORY = 'Until #4001 these were dropped silently — the widget still rendered.'; +describe('message order — the fix comes before the history', () => { + const HISTORY = 'Until unknown keys were refused, these were dropped silently — the widget still rendered.'; const messageFor = (body: Record) => { const r = WidgetSchema.safeParse({ name: 'x', ...body }); @@ -262,7 +262,7 @@ describe('message order — the fix comes before the history (#5955)', () => { * 3. a set match suppresses the rename channel for that key; * 4. a set speaks once per message, at the first key that matched it. */ -describe('strictObject guidanceSets — the set-keyed prescription channel (#6619)', () => { +describe('strictObject guidanceSets — the set-keyed prescription channel', () => { const HISTORY = 'Until this shape was closed, these were dropped silently.'; const SetSchema = lazySchema(() => strictObject( @@ -507,7 +507,7 @@ describe('strictObject — the error map is lazy, so cycles cannot break it', () // own module-scope `strictObject(…)` call is the one that lands here // mid-initialization — reached through a module that pulls THIS file first. // ============================================================================ -describe('#5593 — eager construction with this module entered first', () => { +describe('eager construction with this module entered first', () => { it('does not throw at import time under OS_EAGER_SCHEMAS=1', () => { const barrel = new URL('../automation/index.ts', import.meta.url).href; const run = (): string => diff --git a/packages/spec/src/shared/suggestions.test.ts b/packages/spec/src/shared/suggestions.test.ts index f93e6d15857..7a2afefd095 100644 --- a/packages/spec/src/shared/suggestions.test.ts +++ b/packages/spec/src/shared/suggestions.test.ts @@ -58,7 +58,7 @@ describe('findClosestMatches', () => { }); }); -describe('camelCase parity in the distance fallback (#4990)', () => { +describe('camelCase parity in the distance fallback', () => { // The budget `strictUnknownKeyError` actually spends. Reproduced rather than // imported because the point of these tests is the INTERACTION between the // budget and the scoring — a test that shared the constant could not show it. diff --git a/packages/spec/src/shared/typed-expression-envelope-dialect.test.ts b/packages/spec/src/shared/typed-expression-envelope-dialect.test.ts index adff64a0b33..27c0ae490a2 100644 --- a/packages/spec/src/shared/typed-expression-envelope-dialect.test.ts +++ b/packages/spec/src/shared/typed-expression-envelope-dialect.test.ts @@ -64,7 +64,7 @@ const TYPED: ReadonlyArray<{ { dialect: 'template', schema: TemplateExpressionInputSchema, good: '{{record.name}}', unjudged: 'not a template {{{', foreign: ['cel', 'cron'] }, ]; -describe.each(TYPED)('$dialect-typed slot — the dialect is fixed on both arms, and blank is refused (#15028 / #15035)', ({ dialect, schema, good, unjudged, foreign }) => { +describe.each(TYPED)('$dialect-typed slot — the dialect is fixed on both arms, and blank is refused', ({ dialect, schema, good, unjudged, foreign }) => { const dialectOnly = TYPED_EXPRESSION_DIALECT_ONLY[dialect]; const sourceRequired = TYPED_EXPRESSION_SOURCE_REQUIRED[dialect]; @@ -199,7 +199,7 @@ describe('through `ObjectStackDefinitionSchema` — the stack-reachable typed sl ]); }); - it('[#16320] `connectors[].syncConfig.schedule` is no longer a typed slot — every shape draws the CONTAINER\'s retirement verdict at `connectors.0.syncConfig`, never a dialect verdict', () => { + it('`connectors[].syncConfig.schedule` is no longer a typed slot — every shape draws the CONTAINER\'s retirement verdict at `connectors.0.syncConfig`, never a dialect verdict', () => { // The foreign envelope this case used to narrow on, the cron envelope the // slot used to normalize TO, and the bare string it used to accept. They // were silently stripped from 2026-09-10 (the key deleted with no diff --git a/packages/spec/src/shared/union-author-message-pins.test.ts b/packages/spec/src/shared/union-author-message-pins.test.ts index 153912e497a..f02c058fba3 100644 --- a/packages/spec/src/shared/union-author-message-pins.test.ts +++ b/packages/spec/src/shared/union-author-message-pins.test.ts @@ -406,7 +406,7 @@ function render(site: UnionMessageSite, body: unknown): string { return formatZodError(result.error as Parameters[0]); } -describe('[#15423] the AUTHOR-VISIBLE message at a string-or-object union site', () => { +describe('the AUTHOR-VISIBLE message at a string-or-object union site', () => { // ── Pin 1 ───────────────────────────────────────────────────────────────── describe('pin 1 — the rendered message names the key, the surface and the rename', () => { it.each(SITES)('%s', (_name, site) => { diff --git a/packages/spec/src/shared/union-branch-policy.parity.test.ts b/packages/spec/src/shared/union-branch-policy.parity.test.ts index efa36e28657..db0acb95c69 100644 --- a/packages/spec/src/shared/union-branch-policy.parity.test.ts +++ b/packages/spec/src/shared/union-branch-policy.parity.test.ts @@ -161,12 +161,12 @@ const FIXTURES: Array<[string, { safeParse: (v: unknown) => any }, unknown]> = [ { u: { next: { next: { next: { next: { wrong: 1 } } } } } }, ], [ - 'container descent — invalid_key on a constrained z.record key (#5389)', + 'container descent — invalid_key on a constrained z.record key', z.object({ fields: z.record(z.string().regex(/^[a-z_]+$/, 'Must be snake_case.'), z.number()) }), { fields: { 'First Name': 1 } }, ], [ - 'container descent — invalid_element on a z.map with a non-PropertyKey key (#5389)', + 'container descent — invalid_element on a z.map with a non-PropertyKey key', z.object({ m: z.map(z.object({ id: z.string() }), z.string()) }), { m: new Map([[{ id: 'a' }, 42]]) }, ], @@ -182,7 +182,7 @@ const FIXTURES: Array<[string, { safeParse: (v: unknown) => any }, unknown]> = [ ], ]; -describe('[#8318] the two walks reach the same union-branch verdict', () => { +describe('the two walks reach the same union-branch verdict', () => { for (const [name, schema, value] of FIXTURES) { it(`agrees pair for pair — ${name}`, () => { const issues = issuesFor(schema, value); @@ -211,7 +211,7 @@ describe('[#8318] the two walks reach the same union-branch verdict', () => { }); }); -describe('[#8318] the ONE deliberate asymmetry, asserted rather than assumed', () => { +describe('the ONE deliberate asymmetry, asserted rather than assumed', () => { const [, cappedSchema, cappedValue] = FIXTURES.find( ([name]) => name.startsWith('the branch cap'), )!; @@ -242,7 +242,7 @@ describe('[#8318] the ONE deliberate asymmetry, asserted rather than assumed', ( }); }); -describe('[#8318] the policy constants are the ones both walks were pinned on', () => { +describe('the policy constants are the ones both walks were pinned on', () => { it('depth limit 3, branch cap 3', () => { expect(NESTED_EXPANSION_DEPTH_LIMIT).toBe(3); expect(UNION_BRANCH_SELECTION_LIMIT).toBe(3); @@ -257,7 +257,7 @@ describe('[#8318] the policy constants are the ones both walks were pinned on', }); }); -describe('[#8318] ⛔ the policy stays package-internal', () => { +describe('⛔ the policy stays package-internal', () => { // The #4001 pitfall the card names: this module is machinery two siblings // need, not a contract anyone should author against. If a barrel ever // re-exports it, `api-surface/` and `export-origins/` move with it and this diff --git a/packages/spec/src/shared/visible-when-alias-guidance.test.ts b/packages/spec/src/shared/visible-when-alias-guidance.test.ts index 8076d198ba2..7a17b33e682 100644 --- a/packages/spec/src/shared/visible-when-alias-guidance.test.ts +++ b/packages/spec/src/shared/visible-when-alias-guidance.test.ts @@ -76,14 +76,14 @@ const FORM_FIELD = { field: 'probe' } as const; // =========================================================================== // 1. The surfaces this card CHANGED // =========================================================================== -describe('#7832 — the curation added here', () => { +describe('the reverse-direction alias curation added here', () => { describe('`RowCrudActionOverrideSchema` — was a bare zod message, surface unnamed', () => { it('names the surface at all (it did not before — `Unrecognized key: "visible"` was the whole message)', () => { const m = unknownKeyMessage(RowCrudActionOverrideSchema, { visible: true }); expect(m).toContain('this row CRUD override'); }); - it('`visible` names BOTH landing keys — the boolean one first, per #7816', () => { + it('`visible` names BOTH landing keys — the boolean `enabled: false` first', () => { const m = unknownKeyMessage(RowCrudActionOverrideSchema, { visible: true }); expect(m).toMatch(/`enabled: false`/); expect(m).toMatch(/`visibleWhen/); @@ -144,7 +144,7 @@ describe('#7832 — the curation added here', () => { // 2. The surfaces that were ALREADY compliant — pinned so a sweep can tell // "already answered" from "nobody got to it" // =========================================================================== -describe('#7832 — already curated before this card, and why no row was added', () => { +describe('already curated before the reverse-direction sweep, and why no row was added', () => { it('`SelectOptionSchema` already renames `visible` and `showWhen` onto `visibleWhen`', () => { expect(unknownKeyMessage(SelectOptionSchema, { ...OPTION, visible: true })) .toContain('Did you mean `visible` → `visibleWhen`?'); @@ -171,7 +171,7 @@ describe('#7832 — already curated before this card, and why no row was added', // =========================================================================== // 3. Where NO row was added, because the target key does not exist // =========================================================================== -describe('#7832 — the deliberate gaps (an alias here would name a key the shape rejects)', () => { +describe('the deliberate gaps (an alias here would name a key the shape rejects)', () => { it.each([ ['SelectOptionSchema', SelectOptionSchema, OPTION], ['FormSectionSchema', FormSectionSchema, SECTION], @@ -213,7 +213,7 @@ describe('#7832 — the deliberate gaps (an alias here would name a key the shap // =========================================================================== // 4. Acceptance is byte-identical — the constraint this card was scoped under // =========================================================================== -describe('#7832 — no acceptance change', () => { +describe('no acceptance change', () => { it('`RowCrudActionOverrideSchema` still accepts exactly its three declared keys', () => { expect(RowCrudActionOverrideSchema.safeParse({}).success).toBe(true); expect( @@ -265,7 +265,7 @@ describe('#7832 — no acceptance change', () => { const TAB_ITEM = { label: 'Tab', children: [] } as const; const SCREEN_FIELD = { name: 'f' } as const; -describe('#8382 — the two shapes #7832 never enumerated', () => { +describe('the two `visibleWhen` shapes the first sweep never enumerated', () => { describe('`page:tabs` item (`PageTabsProps.items`) — `visibleWhen` declared, no alias for the action-side spellings', () => { it('`visible` renames onto `visibleWhen`', () => { const m = unknownKeyMessage(PageTabsProps, { items: [{ ...TAB_ITEM, visible: true }] }); @@ -302,7 +302,7 @@ describe('#8382 — the two shapes #7832 never enumerated', () => { // the rejection at `visibleWhen` for these two as well, on the same // one-landing-key rule as `visible` / `showWhen`. Pinned here so a future // edit cannot silently drop the pointer OR silently start accepting them. - it('`visibility` / `visibleOn` are POINTED at `visibleWhen` but stay rejected (the #8382 judgment call)', () => { + it('`visibility` / `visibleOn` are POINTED at `visibleWhen` but stay rejected', () => { const mVisibility = unknownKeyMessage(PageTabsProps, { items: [{ ...TAB_ITEM, visibility: true }] }); expect(mVisibility).toContain('Did you mean `visibility` → `visibleWhen`?'); expect(PageTabsProps.safeParse({ items: [{ ...TAB_ITEM, visibility: true }] }).success).toBe(false);