diff --git a/packages/spec/src/api/ai-agents-envelope.test.ts b/packages/spec/src/api/ai-agents-envelope.test.ts index 062710e8570..8472c8078e7 100644 --- a/packages/spec/src/api/ai-agents-envelope.test.ts +++ b/packages/spec/src/api/ai-agents-envelope.test.ts @@ -91,7 +91,7 @@ describe('GET /ai/agents — the shapes a producer must NOT drift back into', () expect(servesTheDeclaredShape(body)).toBe(false); }); - it('the pre-#4053 bare body — no flag for `unwrapResponse` to key on', () => { + it('the bare body from before the envelope relocation — no flag for `unwrapResponse` to key on', () => { const body = { agents: [ASK] }; expect(servesTheDeclaredShape(body)).toBe(false); expect(envelopeViolations(body)).toContain('success is missing, must be a boolean'); diff --git a/packages/spec/src/api/analytics.test.ts b/packages/spec/src/api/analytics.test.ts index 1f437dd3610..7bd4b917a44 100644 --- a/packages/spec/src/api/analytics.test.ts +++ b/packages/spec/src/api/analytics.test.ts @@ -63,7 +63,7 @@ describe('AnalyticsEndpoint', () => { }); }); -describe('AnalyticsQueryRequestSchema — the BARE AnalyticsQuery shape (#3878)', () => { +describe('AnalyticsQueryRequestSchema — the BARE AnalyticsQuery shape', () => { it('should accept a minimal bare query', () => { const req = AnalyticsQueryRequestSchema.parse({ cube: 'orders', @@ -104,7 +104,7 @@ describe('AnalyticsQueryRequestSchema — the BARE AnalyticsQuery shape (#3878)' ).toThrow(); }); - it('should reject the retired {cube, query: {...}} envelope (#3891 shim dialect)', () => { + it('should reject the retired {cube, query: {...}} envelope (the degraded shim dialect)', () => { expect(() => AnalyticsQueryRequestSchema.parse({ cube: 'orders', @@ -384,7 +384,7 @@ describe('GetAnalyticsMetaRequestSchema', () => { * replaced by the assertion that carries the actual load of this change: the * previously-declared shape is now rejected. */ -describe('AnalyticsMetadataResponseSchema — the CubeMeta[] projection (#6442)', () => { +describe('AnalyticsMetadataResponseSchema — the CubeMeta[] projection', () => { /** * A real `GET /analytics/meta` body: what `AnalyticsService.getMeta` builds — * measure/dimension names CUBE-QUALIFIED, `title` projected from the diff --git a/packages/spec/src/api/api-entry-graph.pin.test.ts b/packages/spec/src/api/api-entry-graph.pin.test.ts index 95f33c39ac2..f22cdcaa21a 100644 --- a/packages/spec/src/api/api-entry-graph.pin.test.ts +++ b/packages/spec/src/api/api-entry-graph.pin.test.ts @@ -74,7 +74,7 @@ function valueGraph(entry: string): Set { return new Set([...seen].map((f) => relative(SRC, f).split('\\').join('/'))); } -describe('`@objectstack/spec/api` stays off the assembled package body (#18576 ruling, letter B)', () => { +describe('`@objectstack/spec/api` stays off the assembled package body (ruled: split the entry rather than watch its weight)', () => { const api = valueGraph('api/index.ts'); const assembled = valueGraph('api-assembled/index.ts'); diff --git a/packages/spec/src/api/api-error-code-type.test.ts b/packages/spec/src/api/api-error-code-type.test.ts index a99de99f69e..dff3d731d64 100644 --- a/packages/spec/src/api/api-error-code-type.test.ts +++ b/packages/spec/src/api/api-error-code-type.test.ts @@ -68,7 +68,7 @@ function refusalAt(result: z.ZodSafeParseResult): Array<{ code: string; return (result.error?.issues ?? []).map((issue) => ({ code: issue.code, path: issue.path })); } -describe('[#19920] ApiError.code is typed as the vocabulary its schema parses against', () => { +describe('ApiError.code is typed as the vocabulary its schema parses against', () => { it('every body the type refuses is refused by the schema at `code`', () => { expect(refusalAt(ApiErrorSchema.safeParse({ code: 42, message: 'x' }))).toEqual([ { code: 'invalid_value', path: ['code'] }, diff --git a/packages/spec/src/api/apis-publish-gates.test.ts b/packages/spec/src/api/apis-publish-gates.test.ts index 6eff8be56b1..ee6d243411a 100644 --- a/packages/spec/src/api/apis-publish-gates.test.ts +++ b/packages/spec/src/api/apis-publish-gates.test.ts @@ -85,7 +85,7 @@ function accept(stack: Record) { return result.success ? result.data.apis : undefined; } -describe('[#5111] the flip — a well-formed `apis:` publishes', () => { +describe('the flip — a well-formed `apis:` publishes', () => { it('accepts an object_operation endpoint under the stack\'s own namespace', () => { const apis = accept({ manifest, apis: [validObjectEndpoint] }); expect(apis).toHaveLength(1); @@ -149,7 +149,7 @@ describe('[#5111] the flip — a well-formed `apis:` publishes', () => { }); }); - it('still accepts an EMPTY and an ABSENT `apis:` — the #4936 regression pin', () => { + it('still accepts an EMPTY and an ABSENT `apis:` — never refused, even while a non-empty one was', () => { expect(ObjectStackDefinitionSchema.safeParse({ manifest, apis: [] }).success).toBe(true); expect(ObjectStackDefinitionSchema.safeParse({ manifest }).success).toBe(true); expect(() => defineStack({ manifest, apis: [] })).not.toThrow(); @@ -162,7 +162,7 @@ describe('[#5111] the flip — a well-formed `apis:` publishes', () => { }); }); -describe('[#5111] gate (c) — namespace carve-out (ADR-0121 D1/D2)', () => { +describe('gate (c) — namespace carve-out (ADR-0121 D1/D2)', () => { it('rejects a path outside the `apps//` mount, naming the endpoint and the shape', () => { const message = reject({ manifest, @@ -214,7 +214,7 @@ describe('[#5111] gate (c) — namespace carve-out (ADR-0121 D1/D2)', () => { }); }); -describe('[#5310] the `path` vocabulary text is itself publishable', () => { +describe('the `path` vocabulary text is itself publishable', () => { /** * `ApiEndpointSchema.path`'s `.describe()` is not a code comment. Since `api` * became a registered metadata kind (#5271) it is the field help the @@ -273,7 +273,7 @@ describe('[#5310] the `path` vocabulary text is itself publishable', () => { }); }); -describe('[#5111] gate (a) — the supported subset (mirrors `planEndpointTarget`)', () => { +describe('gate (a) — the supported subset (mirrors `planEndpointTarget`)', () => { it("rejects `type: 'script'` with the flow prescription", () => { const message = reject({ manifest, @@ -324,7 +324,7 @@ describe('[#5111] gate (a) — the supported subset (mirrors `planEndpointTarget }); }); -describe('[#5111] gate (b) — mapping declarations (mirrors `mappingDeclarationRejection`)', () => { +describe('gate (b) — mapping declarations (mirrors `mappingDeclarationRejection`)', () => { const bodyEndpoint = { ...validObjectEndpoint, name: 'showcase_task_create', @@ -399,7 +399,7 @@ describe('[#5111] gate (b) — mapping declarations (mirrors `mappingDeclaration }); }); -describe('[#5111] gate (e) — policy keys (ADR-0121 D6 + the E4 refusals)', () => { +describe('gate (e) — policy keys (ADR-0121 D6 + the E4 refusals)', () => { it('rejects `authRequired: false` with NO rateLimit', () => { const message = reject({ manifest, apis: [{ ...validFlowEndpoint, authRequired: false }] }); expect(message).toMatch(/ADR-0121 D6|armed rate limit/i); @@ -464,7 +464,7 @@ describe('[#5111] gate (e) — policy keys (ADR-0121 D6 + the E4 refusals)', () }); }); -describe('[#5111] gate (d) — one claim per METHOD + path inside a stack', () => { +describe('gate (d) — one claim per METHOD + path inside a stack', () => { it('rejects two endpoints claiming the same method and path, naming BOTH', () => { const message = reject({ manifest, @@ -508,7 +508,7 @@ describe('[#5111] gate (d) — one claim per METHOD + path inside a stack', () = }); }); -describe('[#5111] every rejection is actionable, and reaches every publish seam', () => { +describe('every rejection is actionable, and reaches every publish seam', () => { it('reports one issue per offending endpoint — three bad endpoints, three rejections', () => { const result = ObjectStackDefinitionSchema.safeParse({ manifest, @@ -538,7 +538,7 @@ describe('[#5111] every rejection is actionable, and reaches every publish seam' }); }); -describe('[#5111] the `ApiEndpoint` vocabulary itself is untouched', () => { +describe('the `ApiEndpoint` vocabulary itself is untouched', () => { // Anti-vacuity for the whole file: the flip is validation logic on the // EXISTING keys. If a key had been added, removed or renamed, every // assertion above could still pass while the frozen-vocabulary constraint @@ -565,7 +565,7 @@ describe('[#5111] the `ApiEndpoint` vocabulary itself is untouched', () => { expect(parsed.authRequired).toBe(true); }); - it('keeps endpoint-level `rateLimit` in the vocabulary (#4910-Q2 routed it here)', () => { + it('keeps endpoint-level `rateLimit` in the vocabulary (ruled: left to the endpoint executor, not the server-level seam)', () => { const parsed = ApiEndpointSchema.parse({ name: 'x_endpoint', path: '/api/v1/apps/showcase/x', @@ -594,7 +594,7 @@ describe('identityFreeEndpointGateFailure — the same judge, minus stack identi expect(identityFreeEndpointGateFailure(ApiEndpointSchema.parse(validObjectEndpoint))).toBeUndefined(); }); - it('still refuses D6 — the gate with no runtime counterpart, and the reason #5189 exists', () => { + it('still refuses D6 — the gate with no runtime counterpart, so the per-item publish path runs it too', () => { const failure = identityFreeEndpointGateFailure( ApiEndpointSchema.parse({ ...validObjectEndpoint, cacheTtlSeconds: undefined, authRequired: false }), ); diff --git a/packages/spec/src/api/auth-endpoints.test.ts b/packages/spec/src/api/auth-endpoints.test.ts index 8c8b4c986c6..9f6eb27b14f 100644 --- a/packages/spec/src/api/auth-endpoints.test.ts +++ b/packages/spec/src/api/auth-endpoints.test.ts @@ -109,7 +109,7 @@ describe('AuthEndpointSchema', () => { // leave nothing to grep (#3733, ADR-0104) — the tombstone is what makes the // withdrawal audible, so it is pinned on both legs: the prescription a writer // hits, and the absence a reader gets. -describe('AuthFeaturesConfig retired flags (#7481)', () => { +describe('AuthFeaturesConfig retired flags (ruled: stop advertising them)', () => { const valid = { twoFactor: false, organization: true }; it('rejects `passkeys` with its own prescription, naming the missing consumer', () => { @@ -181,7 +181,7 @@ describe('getAuthEndpointUrl', () => { // than a bare unrecognized-key error, and the value survives at the same // magnitude. Asserting the message, not just `.toThrow()`: a bare throw stays // green when the schema throws for some unrelated reason. -describe('DeviceRequestResponse.interval \u2192 intervalSeconds (#15677)', () => { +describe('DeviceRequestResponse.interval \u2192 intervalSeconds', () => { const base = { code: 'ABCD-1234', verificationUrl: 'https://example.com/device', diff --git a/packages/spec/src/api/auth.test.ts b/packages/spec/src/api/auth.test.ts index b06a070321b..582841b56a0 100644 --- a/packages/spec/src/api/auth.test.ts +++ b/packages/spec/src/api/auth.test.ts @@ -85,7 +85,7 @@ describe('SessionUserSchema', () => { }); }); -describe('SessionUser.language retirement (#14788, ADR-0049 — maintainer ruling D, 2026-09-03)', () => { +describe('SessionUser.language retirement (ADR-0049 — ruled: gone, with no replacement field)', () => { const base = { id: 'usr_1', email: 'a@b.com', name: 'A' }; it('REJECTS a `language` value, with the prescription in the message', () => { @@ -152,7 +152,7 @@ describe('SessionUser.language retirement (#14788, ADR-0049 — maintainer rulin // and the excluded ledger really is where the key's record lives. expect(fs.existsSync(tombstone)).toBe(true); expect(fs.existsSync(path.join(ledger, 'entries', 'retired-keys', '18.api__SessionUser__language.ts'))).toBe(true); - expect(readers, 'a reader of SessionUser.language reappeared — the key is retired (#14788)').toEqual([]); + expect(readers, 'a reader of SessionUser.language reappeared — the key is retired').toEqual([]); }); }); diff --git a/packages/spec/src/api/automation-api.zod.test.ts b/packages/spec/src/api/automation-api.zod.test.ts index 067fbad5c17..8d68ce41e1e 100644 --- a/packages/spec/src/api/automation-api.zod.test.ts +++ b/packages/spec/src/api/automation-api.zod.test.ts @@ -89,7 +89,7 @@ describe('AutomationRunPathParamsSchema', () => { // List Flows — RETIRED (#19543, door ④) // ========================================== -describe('the GET /api/v1/automation flow-list door is retired (#19543)', () => { +describe('the GET /api/v1/automation flow-list door is retired', () => { // Flows are metadata (ADR-0106); the list is `GET /api/v1/meta/flow`. The // three schemas left with the route and are registered as whole-def removals // (`RETIRED_DEFS_BY_MAJOR[18]`), so an export that came back would be a @@ -324,7 +324,7 @@ describe('TriggerFlowResponseSchema', () => { // undeclared keys (BaseResponseSchema.extend + plain z.object), so before // the widening the paused-run triple below "passed" while the parse silently // dropped `status`, the `runId` a caller resumes with and the whole screen. - it('should preserve the paused-run triple — status, runId and the screen (#9378/#9510 third state)', () => { + it('should preserve the paused-run triple — status, runId and the screen (a pause is the third state, not a failure)', () => { const result = TriggerFlowResponseSchema.parse({ success: true, data: { @@ -596,7 +596,7 @@ describe('ListRunsRequestSchema', () => { })).toThrow(); }); - it('declares exactly the canonical ExecutionStatus set (#7359)', () => { + it('declares exactly the canonical ExecutionStatus set', () => { // The wire's filter and the runtime boundary that now enforces it must // accept ONE set. The boundary reads `ExecutionStatus.options`; this pins // that the schema does too, so a member added to the enum cannot end up @@ -754,7 +754,7 @@ describe('AutomationApiContracts', () => { expect(Object.keys(AutomationApiContracts)).toHaveLength(8); }); - it('declares no flow-list entry and no GET at the bare /api/v1/automation path (#19543)', () => { + it('declares no flow-list entry and no GET at the bare /api/v1/automation path', () => { expect(Object.keys(AutomationApiContracts)).not.toContain('listFlows'); const routes = Object.values(AutomationApiContracts).map((c) => `${c.method} ${c.path}`); expect(routes).not.toContain('GET /api/v1/automation'); diff --git a/packages/spec/src/api/batch.test.ts b/packages/spec/src/api/batch.test.ts index 0747dbfb5e2..b4851a875f1 100644 --- a/packages/spec/src/api/batch.test.ts +++ b/packages/spec/src/api/batch.test.ts @@ -75,7 +75,7 @@ describe('BatchOptionsSchema', () => { expect(options.continueOnError).toBe(true); }); - it('rejects the retired `validateOnly` key with its prescription (#3963 follow-up)', () => { + it('rejects the retired `validateOnly` key with its prescription', () => { // Never implemented — a "dry-run" that silently persisted. Tombstoned so // writing it is audible rather than silently stripped (ADR-0104 / PD #10). const result = BatchOptionsSchema.safeParse({ validateOnly: true }); @@ -197,7 +197,7 @@ describe('UpdateManyRequestSchema', () => { // had already drifted: batch.zod's accepted `{}` rows, protocol.zod's required // id+data, and only the latter was ever enforced. Pin the relationship so a // future edit to one cannot silently fork them again. -describe('protocol request schemas derive from the wire-body schemas (#3939)', () => { +describe('protocol request schemas derive from the wire-body schemas', () => { it('updateMany: same record shape, plus object', async () => { const { UpdateManyDataRequestSchema } = await import('./protocol.zod'); const records = [{ id: '1', data: { name: 'x' } }]; diff --git a/packages/spec/src/api/contract.test.ts b/packages/spec/src/api/contract.test.ts index 7d3cffd9b52..b1c3074f016 100644 --- a/packages/spec/src/api/contract.test.ts +++ b/packages/spec/src/api/contract.test.ts @@ -701,7 +701,7 @@ describe('QueryOptimizationConfigSchema', () => { * unregistered code must still fail, and `ApiErrorSchema` must not have been * widened by the factory's existence. */ -describe('makeApiErrorSchema (federated ledger, #4805)', () => { +describe('makeApiErrorSchema (federated ledger)', () => { const DOWNSTREAM_CODES = ['CONTACT_SALES_PLAN', 'PRODUCTION_ENV_LIMIT'] as const; const DownstreamApiError = makeApiErrorSchema(DOWNSTREAM_CODES); @@ -778,7 +778,7 @@ describe('makeApiErrorSchema (federated ledger, #4805)', () => { // than a bare unrecognized-key error, and the value survives at the same // magnitude. Asserting the message, not just `.toThrow()`: a bare throw stays // green when the schema throws for some unrelated reason. -describe('DataLoaderConfig.cacheTtl \u2192 cacheTtlSeconds (#15677)', () => { +describe('DataLoaderConfig.cacheTtl \u2192 cacheTtlSeconds', () => { it('REFUSES the retired `cacheTtl` spelling with the rename in the message', () => { const result = DataLoaderConfigSchema.safeParse({ cacheTtl: 60 }); expect(result.success).toBe(false); @@ -810,7 +810,7 @@ describe('DataLoaderConfig.cacheTtl \u2192 cacheTtlSeconds (#15677)', () => { // contradict, the declaration is taken from the sibling channel that does speak: // every key in this spec that spells the unit for a processing time spells // milliseconds (`tracing.durationMs`, `worker.durationMs`, `worker.avgExecutionMs`). -describe('BaseResponse.meta.duration declares milliseconds (#18124)', () => { +describe('BaseResponse.meta.duration declares milliseconds', () => { it('refuses a fractional millisecond count', () => { const result = BaseResponseSchema.safeParse({ success: true, diff --git a/packages/spec/src/api/dataset-selection.test.ts b/packages/spec/src/api/dataset-selection.test.ts index 995e74ef57e..9c698bd869b 100644 --- a/packages/spec/src/api/dataset-selection.test.ts +++ b/packages/spec/src/api/dataset-selection.test.ts @@ -83,7 +83,7 @@ const SHARED_WITH_ANALYTICS_QUERY = [ const DATASET_ONLY = ['runtimeFilter', 'dateGranularity', 'compareTo', 'totals'] as const; -describe('#17551 §1 — a transcription of published text, not a new contract', () => { +describe('§1 — a transcription of published text, not a new contract', () => { it('the seven shared members ARE `AnalyticsQuery`’s declarations, by identity', () => { const selection = DatasetSelectionSchema.shape as Record; const query = AnalyticsQuerySchema.shape as Record; @@ -126,7 +126,7 @@ describe('#17551 §1 — a transcription of published text, not a new contract', // §2 — ⭐ #17550's case: an unrecognised `compareTo.kind` // ───────────────────────────────────────────────────────────────────────────── -describe('#17550 §2 — `compareTo: { kind: … }` outside the closed pair is refused, with a remedy', () => { +describe('§2 — `compareTo: { kind: … }` outside the closed pair is refused, with a remedy', () => { it('the card’s own specimen is refused', () => { const text = refusalText({ measures: ['revenue'], compareTo: { kind: 'nonsense' } }); // ① what arrived — so the caller can find it in the body they sent. @@ -191,7 +191,7 @@ describe('#17550 §2 — `compareTo: { kind: … }` outside the closed pair is r // §3 — the other three undoored members, both directions each // ───────────────────────────────────────────────────────────────────────────── -describe('#17551 §3 — `runtimeFilter` / `dateGranularity` / `totals`', () => { +describe('§3 — `runtimeFilter` / `dateGranularity` / `totals`', () => { it('`dateGranularity` outside the closed vocabulary is refused; every member of it passes', () => { expect(refusalText({ measures: ['revenue'], dateGranularity: 'fortnight' })) .toMatch(/fortnight|Invalid option/); @@ -240,7 +240,7 @@ describe('#17551 §3 — `runtimeFilter` / `dateGranularity` / `totals`', () => // §4 — an unknown key is named, echoed and pointed somewhere // ───────────────────────────────────────────────────────────────────────────── -describe('#17551 §4 — the selection is `.strict()`, like every other analytics door', () => { +describe('§4 — the selection is `.strict()`, like every other analytics door', () => { it('names the surface, echoes the key, and carries the history', () => { const text = refusalText({ measures: ['revenue'], totaIs: { groupings: [[]] } }); expect(text).toContain('Unrecognized key(s) on this dataset selection'); @@ -264,7 +264,7 @@ describe('#17551 §4 — the selection is `.strict()`, like every other analytic // §5 — ⭐ the negative side: the whole shape still passes, unchanged // ───────────────────────────────────────────────────────────────────────────── -describe('#17551 §5 — a valid selection still passes, and the parse adds nothing', () => { +describe('§5 — a valid selection still passes, and the parse adds nothing', () => { it('the fully-loaded eleven-member selection parses', () => { const parsed = DatasetSelectionSchema.safeParse(FULLY_LOADED); expect(parsed.success, parsed.success ? '' : JSON.stringify(parsed.error.issues)).toBe(true); diff --git a/packages/spec/src/api/discovery-auth-families.pin.test.ts b/packages/spec/src/api/discovery-auth-families.pin.test.ts index 750d7cc6ae7..94bc653ed6b 100644 --- a/packages/spec/src/api/discovery-auth-families.pin.test.ts +++ b/packages/spec/src/api/discovery-auth-families.pin.test.ts @@ -40,7 +40,7 @@ const base: DiscoveryResponse = { ) as DiscoveryResponse['capabilities'], }; -describe('[#21046] DiscoverySchema.authFamilies — declared, closed, optional', () => { +describe('DiscoverySchema.authFamilies — declared, closed, optional', () => { it('is kept by the canonical schema AND by the consumer parse', () => { for (const admin of [false, true]) { expect(DiscoverySchema.parse({ ...base, authFamilies: { admin } }).authFamilies).toEqual({ admin }); @@ -63,7 +63,7 @@ describe('[#21046] DiscoverySchema.authFamilies — declared, closed, optional', }); }); -describe('[#21046] readAuthFamilies — the auth service\'s own public config, nothing else', () => { +describe('readAuthFamilies — the auth service\'s own public config, nothing else', () => { const answering = (features: unknown) => ({ getPublicConfig: () => ({ features }) }); it('reads features.admin off getPublicConfig(), in both directions', () => { diff --git a/packages/spec/src/api/discovery-environment-subset.pin.test.ts b/packages/spec/src/api/discovery-environment-subset.pin.test.ts index a221bc1c63d..95f7bb2b135 100644 --- a/packages/spec/src/api/discovery-environment-subset.pin.test.ts +++ b/packages/spec/src/api/discovery-environment-subset.pin.test.ts @@ -47,7 +47,7 @@ import { DiscoveryEnvironmentSchema, EnvironmentTypeSchema } from './discovery.z const discoveryMembers = DiscoveryEnvironmentSchema.options as readonly string[]; const environmentMembers = EnvironmentTypeSchema.options as readonly string[]; -describe('[#5676] DiscoveryEnvironment ⊂ EnvironmentType', () => { +describe('DiscoveryEnvironment ⊂ EnvironmentType', () => { it('reads a non-empty membership off both enums (anti-vacuity)', () => { // Without this, every `every()` below passes against a broken import. expect(Array.isArray(discoveryMembers)).toBe(true); @@ -62,7 +62,7 @@ describe('[#5676] DiscoveryEnvironment ⊂ EnvironmentType', () => { missing, `${missing.join(', ')} is advertised by DiscoverySchema.environment but is no longer an ` + 'EnvironmentTypeSchema member. The two describe one concept and discovery is the coarse ' - + 'view of it (#5676) — if a bucket was renamed on the cloud side, rename it here and in ' + + 'view of it — if a bucket was renamed on the cloud side, rename it here and in ' + "`NODE_ENV_TO_DISCOVERY_ENVIRONMENT`'s values too, or the fold points at a dead value.", ).toEqual([]); }); diff --git a/packages/spec/src/api/discovery.test.ts b/packages/spec/src/api/discovery.test.ts index 59da9b3a4d0..f5ba0c0fe54 100644 --- a/packages/spec/src/api/discovery.test.ts +++ b/packages/spec/src/api/discovery.test.ts @@ -858,7 +858,7 @@ describe('WellKnownCapabilitiesSchema', () => { expect(undocumented, 'vocabulary keys with no .describe()').toEqual([]); }); - it('[#5672] is the ONE vocabulary — WELL_KNOWN_CAPABILITY_KEYS is derived from it', () => { + it('is the ONE vocabulary — WELL_KNOWN_CAPABILITY_KEYS is derived from it', () => { expect([...WELL_KNOWN_CAPABILITY_KEYS].sort()) .toEqual(Object.keys(WellKnownCapabilitiesSchema.shape).sort()); // The union of the two historically disjoint producer halves: 7 + 7 with @@ -1013,7 +1013,7 @@ describe('RouteHealthReportSchema', () => { }); }); -describe('Service self-description marker (ADR-0076 D12, #2462)', () => { +describe('Service self-description marker (ADR-0076 D12)', () => { it('ServiceSelfInfoSchema accepts stub and degraded declarations', () => { expect(() => ServiceSelfInfoSchema.parse({ status: 'stub' })).not.toThrow(); expect(() => ServiceSelfInfoSchema.parse({ @@ -1090,7 +1090,7 @@ describe('Service self-description marker (ADR-0076 D12, #2462)', () => { // schema's shape. That last step only stays honest while the two shapes are // the same modulo declared aliases — which is what this gate pins. -describe('[#4828] DiscoverySchema ↔ GetDiscoveryResponseSchema', () => { +describe('DiscoverySchema ↔ GetDiscoveryResponseSchema', () => { /** The one declared deprecated alias, and its removal is scheduled (protocol 18). */ const DECLARED_ALIASES = ['apiName'] as const; @@ -1129,7 +1129,7 @@ describe('[#4828] DiscoverySchema ↔ GetDiscoveryResponseSchema', () => { // no error. The producer-side conformance tests now check `routes` keys the same // way they check top-level keys, and derive their allowance from // `ApiRoutesSchema`; these two pin that the allowance is the real one. -describe('[#5679] routes: the declared key set the producer gates check against', () => { +describe('routes: the declared key set the producer gates check against', () => { it('is the very schema `DiscoverySchema` nests, not a second copy of it', () => { // The three producer gates read `ApiRoutesSchema.shape`. That is only a // faithful allowance while it IS what `DiscoverySchema.routes` declares — @@ -1164,7 +1164,7 @@ describe('[#5679] routes: the declared key set the producer gates check against' }); }); -describe('[#4828] scoping (decision 3 — declare what REST actually emits)', () => { +describe('scoping (ruled: declare what REST actually emits)', () => { const base = { name: 'ObjectStack', version: '1.0.0', @@ -1204,7 +1204,7 @@ describe('[#4828] scoping (decision 3 — declare what REST actually emits)', () }); }); -describe('[#4828] resolveDiscoveryEnvironment (decision 4 — enum, not passthrough)', () => { +describe('resolveDiscoveryEnvironment (ruled: an enum, not a passthrough)', () => { it('maps every documented NODE_ENV spelling into the declared enum', () => { const table: Array<[string, string]> = [ ['production', 'production'], @@ -1231,7 +1231,7 @@ describe('[#4828] resolveDiscoveryEnvironment (decision 4 — enum, not passthro // declining to answer and resolves conservatively to `production`; a spelling // this repo does not recognise is a GUESS and never claims production. // Collapsing them back into one is the regression these two guard. - it('an UNSET value advertises production — the host declined to say (#5673, #5936)', () => { + it('an UNSET value advertises production — the host declined to say', () => { // Blank counts as unset: `NODE_ENV=` exports an empty string, and the // runtime's `getEnv` has always folded that into its default. Were it // treated as "anything else" the two producers would drift again on exactly @@ -1249,7 +1249,7 @@ describe('[#4828] resolveDiscoveryEnvironment (decision 4 — enum, not passthro // the source now says, and would have kept passing only because the declared // answer happened to equal the fallback's. Re-spelled to inputs that are // genuinely outside both the taxonomy and the operator shorthands. - it('never CLAIMS production for an unrecognized spelling (#4828)', () => { + it('never CLAIMS production for an unrecognized spelling', () => { for (const raw of ['qa', 'uat', 'nonsense']) { expect(resolveDiscoveryEnvironment(raw), raw).toBe('development'); } @@ -1279,7 +1279,7 @@ describe('[#4828] resolveDiscoveryEnvironment (decision 4 — enum, not passthro * written down, in a table whose whole purpose is to be read by the next * author. The repair is a row each, and a type that keeps the table total. */ -describe('[#6287] the fold table is total over EnvironmentType', () => { +describe('the fold table is total over EnvironmentType', () => { /** * The declared fold per bucket. This mirrors the source table on purpose: it * is the RUNTIME half of the pin and it proves the *values*, so a silent @@ -1321,7 +1321,7 @@ describe('[#6287] the fold table is total over EnvironmentType', () => { expect(resolveDiscoveryEnvironment('Trial')).toBe('sandbox'); }); - it('leaves the #5936 two-rule split standing (absence ≠ unrecognised)', () => { + it('leaves the two-rule split standing (absence ≠ unrecognised)', () => { // Neither new row may be read as loosening those. Absence is still the host // declining to answer; an unrecognised spelling is still a guess. expect(resolveDiscoveryEnvironment(undefined)).toBe('production'); diff --git a/packages/spec/src/api/dispatcher.test.ts b/packages/spec/src/api/dispatcher.test.ts index 99466eb905b..a5e68f1efe7 100644 --- a/packages/spec/src/api/dispatcher.test.ts +++ b/packages/spec/src/api/dispatcher.test.ts @@ -139,7 +139,7 @@ describe('DispatcherErrorCode', () => { expect(() => DispatcherErrorCode.parse('SOMETHING_ELSE')).toThrow(); }); - it('should reject the HTTP-status spellings it used to hold (#3842)', () => { + it('should reject the HTTP-status spellings it used to hold', () => { // The members were `'404' | '405' | '501' | '503'` while `error.code` // carried the numeric status. `code` is semantic now, so a status is not a // code — it belongs in `httpStatus`. @@ -187,7 +187,7 @@ describe('DispatcherErrorResponseSchema', () => { })).not.toThrow(); }); - it('should reject the numeric `code` it used to declare (#3842)', () => { + it('should reject the numeric `code` it used to declare', () => { // The regression this whole change exists to prevent: a producer putting the // HTTP status back into the field callers branch on. expect(() => DispatcherErrorResponseSchema.parse({ diff --git a/packages/spec/src/api/endpoint.test.ts b/packages/spec/src/api/endpoint.test.ts index 7910c0e6733..c718aba6abb 100644 --- a/packages/spec/src/api/endpoint.test.ts +++ b/packages/spec/src/api/endpoint.test.ts @@ -109,7 +109,7 @@ describe('ApiEndpointSchema', () => { // forced to write a dead string. The per-type requirement for `type: 'flow'` // lives in the publish gate (`apis-publish-gates.test.ts` pins it), not // here — the vocabulary parses both types without the key. - it('parses an object_operation endpoint that omits `target` (#10338)', () => { + it('parses an object_operation endpoint that omits `target`', () => { const endpoint = ApiEndpointSchema.parse({ name: 'get_customers', path: '/api/v1/customers', @@ -502,7 +502,7 @@ function unknownKeyIssues(result: ReturnType ); } -describe('#5384 — ApiEndpointSchema REJECTS undeclared keys', () => { +describe('ApiEndpointSchema REJECTS undeclared keys', () => { it('CONTROL — the authored endpoint parses, and the omitted `authRequired` defaults to true', () => { // Without this the rejection cases below would also pass if the fixture // were simply invalid, which proves nothing about strictness. @@ -586,7 +586,7 @@ describe('#5384 — ApiEndpointSchema REJECTS undeclared keys', () => { }); }); -describe('#5227 — the author state is what `ApiEndpoint` denotes', () => { +describe('the author state is what `ApiEndpoint` denotes', () => { it('omitting `authRequired` type-checks on the AUTHOR state and is the safe shape', () => { // The compile-time half of this file's #5227 claim. `packages/spec` type // checks its tests (`tsconfig.test.json`, AGENTS.md), so the annotation @@ -613,7 +613,7 @@ describe('#5227 — the author state is what `ApiEndpoint` denotes', () => { // than a bare unrecognized-key error, and the value survives at the same // magnitude. Asserting the message, not just `.toThrow()`: a bare throw stays // green when the schema throws for some unrelated reason. -describe('ApiEndpoint.cacheTtl \u2192 cacheTtlSeconds (#15677, ADR-0087 `api-endpoint-cache-ttl-to-cache-ttl-seconds`)', () => { +describe('ApiEndpoint.cacheTtl \u2192 cacheTtlSeconds (ADR-0087 `api-endpoint-cache-ttl-to-cache-ttl-seconds`)', () => { const base = { name: 'get_customers', path: '/api/v1/customers', diff --git a/packages/spec/src/api/envelope-violations.test.ts b/packages/spec/src/api/envelope-violations.test.ts index 888c9e761e3..e6465cc51ee 100644 --- a/packages/spec/src/api/envelope-violations.test.ts +++ b/packages/spec/src/api/envelope-violations.test.ts @@ -76,7 +76,7 @@ describe('envelopeViolations — what the schema MISSES', () => { expect(envelopeViolations(body)).toContain('success body carries no `data`'); }); - it('the duplicate-payload drift #4049 removed', () => { + it('the duplicate-payload drift the /share-links domain stopped emitting', () => { // `{ success: true, data: link, link }` — the payload under BOTH the // envelope's `data` and a legacy top-level key, so two dialects stay alive // at once and no consumer has to choose. diff --git a/packages/spec/src/api/error-code-ledger.test.ts b/packages/spec/src/api/error-code-ledger.test.ts index 2898b75ac5a..736fd85cd80 100644 --- a/packages/spec/src/api/error-code-ledger.test.ts +++ b/packages/spec/src/api/error-code-ledger.test.ts @@ -55,7 +55,7 @@ describe('ERROR_CODE_LEDGER', () => { expect([...REGISTERED_ERROR_CODES]).toEqual(union); }); - it('no registered code is an unwaived semantic synonym of a standard member (#8211)', () => { + it('no registered code is an unwaived semantic synonym of a standard member', () => { // The ledger header's "use the standard catalog instead of registering a // synonym" was prose only, and four synonyms accumulated under it without // anyone deciding to allow them. This is its mechanical form (option C, @@ -65,7 +65,7 @@ describe('ERROR_CODE_LEDGER', () => { }); }); -describe('standard-synonym detection (#8211)', () => { +describe('standard-synonym detection (ruled: refused unless waived)', () => { it('flags the grandfathered synonyms, each against the member it shadows', () => { expect(standardSynonymOf('CONFLICT')).toBe('RESOURCE_CONFLICT'); expect(standardSynonymOf('NOT_FOUND')).toBe('RESOURCE_NOT_FOUND'); @@ -185,7 +185,7 @@ describe('ErrorCode (standard ∪ registered)', () => { expect(ErrorCode.parse('ROUTE_NOT_FOUND')).toBe('ROUTE_NOT_FOUND'); }); - it('accepts the #8087 dispatcher-gate batch, each under its measured owning package (#8846)', () => { + it('accepts the dispatcher-gate batch, each under its measured owning package', () => { // The seven codes the dispatcher-vocabulary gate's first derivation // reported as "merely unregistered" — live producer, real wire, no ledger // row (option B of the 2026-08-12 ruling, delivered as a gate; @@ -217,7 +217,7 @@ describe('ErrorCode (standard ∪ registered)', () => { expect(() => ErrorCode.parse('DUPLICATE')).toThrow(); }); - it('accepts the #10025 definition-level input-schema refusal code (#11504)', () => { + it('accepts the definition-level input-schema refusal code (ruled non-retryable: a never-dispatched exit)', () => { // The ruled contract half of #10025's Option B (maintainer, 2026-08-20): // the definition-level input-schema refusal is a never-dispatched exit // with its own code. Registered AHEAD of its producer, deliberately — the @@ -231,7 +231,7 @@ describe('ErrorCode (standard ∪ registered)', () => { expect(standardSynonymOf('FLOW_INPUT_SCHEMA_INVALID')).toBeUndefined(); }); - it('accepts the #16449 batch — every code that ships in dist, door or no door (#16404)', () => { + it('accepts the nine-code batch — every code that ships in dist, door or no door (ruled: the ledger is the published face)', () => { // The #16404 ruling (director seat, decision batch #62, 2026-09-07, option // D): the published face is this ledger, so a code that ships in `dist` is // registered whether or not an HTTP door can answer with it. The nine @@ -260,7 +260,7 @@ describe('ErrorCode (standard ∪ registered)', () => { expect(ERROR_CODE_LEDGER['@objectstack/objectql']).toContain('NAMESPACE_CONFLICT'); }); - it('lists the plugin-security class-field stamps under their stamping package (#19441)', () => { + it('lists the plugin-security class-field stamps under their stamping package', () => { // Provenance, not identity: each of these codes was already registered by // another package, and `@objectstack/plugin-security` stamps it too, as a // class field (`readonly code = '…'`) — the spelling the provenance gate @@ -305,7 +305,7 @@ describe('ErrorCode (standard ∪ registered)', () => { expect(REGISTERED_ERROR_CODES).not.toContain('OVERLAY_PERSISTENCE_FAILED'); }); - it('accepts the #16649 batch — the fourteen remaining door:none codes, each under its stamping package (#16404)', () => { + it('accepts the fourteen remaining door:none codes, each under its stamping package (ruled: the ledger is the published face)', () => { // The rest of the #16404 class after #16449: every `boot-refusal` row // `dispatcher-error-vocabulary.ts` still carried, each measured in its // package's built `dist/index.js` and absent from the union before this diff --git a/packages/spec/src/api/errors.test.ts b/packages/spec/src/api/errors.test.ts index c6070f502f9..4c2fc6a622a 100644 --- a/packages/spec/src/api/errors.test.ts +++ b/packages/spec/src/api/errors.test.ts @@ -43,7 +43,7 @@ describe('StandardErrorCode', () => { expect(StandardErrorCode.parse('INSUFFICIENT_PRIVILEGES')).toBe('INSUFFICIENT_PRIVILEGES'); }); - it('refuses the retired batch-operation codes (ADR-0112 amendment 2026-08-18, #9266)', () => { + it('refuses the retired batch-operation codes (ADR-0112 amendment 2026-08-18)', () => { // Retired under ADR-0049 enforce-or-remove: no producer ever emitted them; // the batch surface reports these conditions per row via the ledger-registered // ROLLED_BACK / NOT_ATTEMPTED codes instead. The wrong spelling must fail at @@ -296,7 +296,7 @@ describe('ErrorHttpStatusMap', () => { }); }); -describe('HttpStatusErrorCodeMap / standardErrorCodeForHttpStatus (#3842)', () => { +describe('HttpStatusErrorCodeMap / standardErrorCodeForHttpStatus', () => { it('names each status the runtime actually returns', () => { expect(standardErrorCodeForHttpStatus(400)).toBe('VALIDATION_ERROR'); expect(standardErrorCodeForHttpStatus(401)).toBe('UNAUTHENTICATED'); @@ -436,7 +436,7 @@ describe('EnhancedApiErrorSchema.fieldErrors retirement (ADR-0114 D4)', () => { // than a bare unrecognized-key error, and the value survives at the same // magnitude. Asserting the message, not just `.toThrow()`: a bare throw stays // green when the schema throws for some unrelated reason. -describe('EnhancedApiError.retryAfter \u2192 retryAfterSeconds (#15677 \u2014 BREAKING on the ADR-0112 wire envelope)', () => { +describe('EnhancedApiError.retryAfter \u2192 retryAfterSeconds (BREAKING on the ADR-0112 wire envelope)', () => { const base = { code: 'RATE_LIMIT_EXCEEDED' as const, message: 'Rate limit exceeded' }; it('REFUSES the retired `retryAfter` spelling with the rename in the message', () => { diff --git a/packages/spec/src/api/export-job-family-retirement.test.ts b/packages/spec/src/api/export-job-family-retirement.test.ts index 0e51934ec5a..7b7894fcbb6 100644 --- a/packages/spec/src/api/export-job-family-retirement.test.ts +++ b/packages/spec/src/api/export-job-family-retirement.test.ts @@ -101,7 +101,7 @@ const MUST_SURVIVE_CONTRACTS = ['IAutomationService', 'RunListResult'] as const; const SPEC_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../..'); const SRC_ROOT = path.join(SPEC_ROOT, 'src'); -describe('[#17158] export-job family retirement — the public surface', () => { +describe('export-job family retirement — the public surface', () => { it('every retired name has ZERO holders on any public entry; the survivors still stand', () => { for (const needed of ['.', './api', './contracts', './automation']) { expect(EXPORT_ENTRY_POINTS, `exports map must include ${needed}`).toContain(needed); @@ -109,7 +109,7 @@ describe('[#17158] export-job family retirement — the public surface', () => { expect(exportNamesOf('./api').length, './api must export a non-trivial surface').toBeGreaterThan(100); for (const name of RETIRED_NAMES) { - expect(holdersOf(name), `${name} must have zero holders after #17158`).toEqual([]); + expect(holdersOf(name), `${name} must have zero holders after the export-job family retirement`).toEqual([]); } const survivors: Array<[string, readonly string[]]> = [ ['./api', MUST_SURVIVE_API], @@ -155,7 +155,7 @@ describe('[#17158] export-job family retirement — the public surface', () => { } }; walk(SRC_ROOT); - expect(importers, 'a resurrected import means the retirement is being undone — re-read #17158').toEqual([]); + expect(importers, 'a resurrected import means the retirement is being undone — nothing served, bound or consumed the family').toEqual([]); }); it('the generated shards no longer list any of the thirteen defs or forty-three names', () => { @@ -197,7 +197,7 @@ describe('[#17158] export-job family retirement — the public surface', () => { }); }); -describe('[#17158] ADR-0087 registration', () => { +describe('ADR-0087 registration', () => { it('declares all thirteen defs under major 18, with the D3 semantic entry wired and no D2 conversion', () => { for (const def of RETIRED_DEFS) { expect(RETIRED_DEFS_BY_MAJOR[18], `${def} must be declared`).toContain(def); @@ -246,7 +246,7 @@ describe('[#17158] ADR-0087 registration', () => { // typed import of a retired name fails `tsc` in its own package — the enforced // channel there. The residue this leg covers is what `tsc` does not compile: // JSON, YAML, MD, MDX and untyped `.js` / `.mjs` / `.cjs`. -describe('[#17158] tree-scoped absence: nothing inside the declared radius references a retired name', () => { +describe('tree-scoped absence: nothing inside the declared radius references a retired name', () => { const REPO_ROOT = path.resolve(SPEC_ROOT, '../..'); const THIS_FILE = path.relative(REPO_ROOT, fileURLToPath(import.meta.url)).split(path.sep).join('/'); @@ -346,6 +346,6 @@ describe('[#17158] tree-scoped absence: nothing inside the declared radius refer for (const root of WALK_ROOTS) walk(path.join(REPO_ROOT, root)); // Anti-vacuity: the walk really covered the tree. expect(visited).toBeGreaterThan(1000); - expect(offenders, 'a reference to a retired name means the retirement is being undone — re-read #17158').toEqual([]); + expect(offenders, 'a reference to a retired name means the retirement is being undone — nothing served, bound or consumed the family').toEqual([]); }); }); diff --git a/packages/spec/src/api/export.test.ts b/packages/spec/src/api/export.test.ts index 37cadf541cc..26646e88e35 100644 --- a/packages/spec/src/api/export.test.ts +++ b/packages/spec/src/api/export.test.ts @@ -267,7 +267,7 @@ describe('ExportImportTemplateSchema', () => { * Before commit c3f491626 the two disagreed on exactly one input — the omitted key — and * that is the case a reader should look at first. */ -describe('ImportRequestSchema — runAutomations declared default (#6704)', () => { +describe('ImportRequestSchema — runAutomations declared default', () => { const bodyWithout = { format: 'json' as const, rows: [{ title: 'a' }] }; it('materialises `true` when the caller omits the key', () => { @@ -325,7 +325,7 @@ describe('ImportRequestSchema — runAutomations declared default (#6704)', () = * wire, because the route parses the raw body itself and never depends on * callers having used this schema. */ -describe('ImportRequestSchema — mappingName declared (#10330)', () => { +describe('ImportRequestSchema — mappingName declared', () => { const base = { format: 'csv' as const, csv: 'Full Name,E-mail\nAda,ada@example.com\n' }; it('parses a body naming a registered mapping, and the value survives', () => { @@ -342,7 +342,7 @@ describe('ImportRequestSchema — mappingName declared (#10330)', () => { expect(parsed.mappingName).toBe('showcase_inquiry_feed'); }); - it('the typed SDK request can express it — the #10330 TS2353 repro, inverted', () => { + it('the typed SDK request can express it — the original TS2353 repro, inverted', () => { // Before the declaration this exact literal was a compile error // (TS2353: 'mappingName' does not exist in type …). The literal itself is // the pin: this file is type-checked, so the key regressing out of the diff --git a/packages/spec/src/api/meta-item-response-shapes.test.ts b/packages/spec/src/api/meta-item-response-shapes.test.ts index ae53a6cf690..109d0f74927 100644 --- a/packages/spec/src/api/meta-item-response-shapes.test.ts +++ b/packages/spec/src/api/meta-item-response-shapes.test.ts @@ -61,7 +61,7 @@ export type PlainCarriesNoLayers = Assert< Eq< 'effective' extends keyof GetMeta /** The document under `item` — irrelevant to these shapes, so kept trivial. */ const CUSTOMER = { name: 'customer', label: 'Customer' }; -describe('#5950 GetMetaItemResponseSchema — the ADR-0010 protection envelope is declared', () => { +describe('GetMetaItemResponseSchema — the ADR-0010 protection envelope is declared', () => { /** * The uncached branch's real body: `metadata-protocol`'s `getMetaItem` * return, spread onto the wire verbatim by `translateMetaEnvelope`. @@ -132,7 +132,7 @@ describe('#5950 GetMetaItemResponseSchema — the ADR-0010 protection envelope i }); }); -describe('#5882 GetMetaItemLayeredResponseSchema — the three-layer projection', () => { +describe('GetMetaItemLayeredResponseSchema — the three-layer projection', () => { /** What `getMetaItemLayered` returns, and `GET /meta/:type/:name/layers` serves. */ const LAYERED_BODY = { type: 'object', diff --git a/packages/spec/src/api/metadata.test.ts b/packages/spec/src/api/metadata.test.ts index c1b75b85e38..bebd6fa3e0f 100644 --- a/packages/spec/src/api/metadata.test.ts +++ b/packages/spec/src/api/metadata.test.ts @@ -472,7 +472,7 @@ describe('MetadataBulkRegisterRequestSchema', () => { // `namespace` that no enforced write path reads). The exported type is the // authoring-side shape (z.input): the defaulted flags stay optional, and a // per-item `namespace` is NOT part of the contract. - it('exports the authoring-side MetadataBulkRegisterRequest type (#4587)', () => { + it('exports the authoring-side MetadataBulkRegisterRequest type', () => { const minimal: MetadataBulkRegisterRequest = { items: [{ type: 'object', name: 'account', data: { label: 'Account' } }], }; diff --git a/packages/spec/src/api/odata-orderby-dual-declaration.test.ts b/packages/spec/src/api/odata-orderby-dual-declaration.test.ts index b9ca5b27579..a9bd9392af8 100644 --- a/packages/spec/src/api/odata-orderby-dual-declaration.test.ts +++ b/packages/spec/src/api/odata-orderby-dual-declaration.test.ts @@ -60,7 +60,7 @@ const TRANSPORT_SPELLINGS: ReadonlyArray = [ ['the SortNode array', [{ field: 'name', order: 'desc' }]], ]; -describe('[#18977] $orderby is declared twice — the two accept sets', () => { +describe('$orderby is declared twice — the two accept sets', () => { describe('§1 ODataQuerySchema.$orderby — the OData URL-convention vocabulary', () => { it.each(ODATA_SPELLINGS)('accepts %s', (_label, value) => { const parsed = ODataQuerySchema.safeParse({ $orderby: value }); diff --git a/packages/spec/src/api/package-api.test.ts b/packages/spec/src/api/package-api.test.ts index a0277d57819..8c3c5347aa5 100644 --- a/packages/spec/src/api/package-api.test.ts +++ b/packages/spec/src/api/package-api.test.ts @@ -123,7 +123,7 @@ describe('ListInstalledPackagesRequestSchema', () => { // [#17667] Executed-but-undeclared query parameters, now declared // ========================================== -describe('the /packages doors declare the query parameters they execute (#17667)', () => { +describe('the /packages doors declare the query parameters they execute', () => { it('GET /packages/:id declares the `?version=` scope it honours', () => { const parsed = GetInstalledPackageRequestSchema.parse({ packageId: 'com.acme.crm', version: '1.2.3' }); expect(parsed.packageId).toBe('com.acme.crm'); @@ -545,7 +545,7 @@ describe('PackageApiContracts', () => { // Unmounted contract-map entries removed (#19116) // ========================================== -describe('the three unmounted `PackageApiContracts` entries are removed (#19116)', () => { +describe('the three unmounted `PackageApiContracts` entries are removed', () => { // The paths the removed entries bound. Nothing in the composed runtime // mounts any of them, and no serving door existed to rebind them onto. const UNMOUNTED_PATHS = [ @@ -600,7 +600,7 @@ describe('the three unmounted `PackageApiContracts` entries are removed (#19116) // package-rollback-response retirement (#12038 3A) // ========================================== -describe('package-rollback-response retirement (#12038 3A)', () => { +describe('package-rollback-response retirement (ruled: it described the wrong operation on the live path)', () => { // Runtime namespace probes, the registry-retirement.test.ts pattern: a // removed export cannot be imported by name (would not compile), so the pin // asks the namespace object. Anti-vacuity guard: a neighbour that stayed. @@ -740,7 +740,7 @@ describe('the set the record stage must RE-DECLARE is MEASURED, never hand-picke }); }); -describe('#17518 the row\'s manifest is the RECORD stage — a declaration, ⛔ not `z.unknown()`', () => { +describe('the row\'s manifest is the RECORD stage — a declaration, ⛔ not `z.unknown()`', () => { /** * What `toRecordManifest` really leaves on a `GET /packages` row: each * `functions` declaration MINUS its callable, and a hook whose inline handler @@ -797,7 +797,7 @@ describe('#17518 the row\'s manifest is the RECORD stage — a declaration, ⛔ }); }); -describe('the read-API responses are declared at both stages (#17431)', () => { +describe('the read-API responses are declared at both stages', () => { const envelope = (data: unknown) => ({ success: true, data }); it('`ListInstalledPackagesResponseSchema` parses a list of either stage', () => { @@ -842,7 +842,7 @@ describe('the read-API responses are declared at both stages (#17431)', () => { * edited until it parses is the failure mode this block exists to prevent: * it reports agreement between a declaration and traffic that never met. */ -describe('#18058 — install contract bound to the live door', () => { +describe('install contract bound to the live door', () => { /** The client SDK's pinned manifest — `packages/client/src/client.test.ts`. */ const SDK_MANIFEST = { id: 'com.acme.crm', name: 'Acme CRM', version: '1.0.0', type: 'app' }; @@ -1057,11 +1057,11 @@ describe('#18058 — install contract bound to the live door', () => { /** The body each drive posted before PR #20218: the same manifest, no `type`. */ const untyped = ({ type: _type, ...rest }: Record) => rest; - it('the namespace-conflict drive parses green — it carries `type` since PR #20218', () => { + it('the namespace-conflict drive parses green — it carries `type` since the door parses its whole body', () => { expect(PackageInstallBodySchema.safeParse(DOOR_DRIVE_CONFLICT).success).toBe(true); }); - it('the domain-handler-registry drive parses green — it carries `type` since PR #20218', () => { + it('the domain-handler-registry drive parses green — it carries `type` since the door parses its whole body', () => { expect(PackageInstallBodySchema.safeParse(DOOR_DRIVE_REGISTRY).success).toBe(true); }); @@ -1096,7 +1096,7 @@ describe('#18058 — install contract bound to the live door', () => { { manifest: SDK_MANIFEST, overwrite: 'true' }, ]; - it('the declaration refuses every one — and, since PR #20218, so does the door: no residual is left', () => { + it('the declaration refuses every one — and so does the door, which parses the whole body: no residual is left', () => { // Pinned as prose-with-a-parse rather than a live HTTP drive: the door // lives in `@objectstack/runtime`, which this package cannot import. // `packages/runtime/src/domains/packages-install-body-contract.test.ts` @@ -1128,7 +1128,7 @@ describe('#18058 — install contract bound to the live door', () => { expect(ManifestSchema.shape.version.safeParse(undefined).success).toBe(false); }); - it('⭐ #17534 closed the one spelling that ran the OTHER way — a whitespace-only `id` is refused HERE now, not only by the door', () => { + it('⭐ the reverse-domain id rule closed the one spelling that ran the OTHER way — a whitespace-only `id` is refused HERE now, not only by the door', () => { // What this pinned before: `handlePackages` trims before keying and // refuses an empty id, while this declaration ADMITTED `' '` — the one // measured class where the declaration was WIDER than the door. diff --git a/packages/spec/src/api/package-install-one-authority.test.ts b/packages/spec/src/api/package-install-one-authority.test.ts index 206fdc422a5..1bace40c3ec 100644 --- a/packages/spec/src/api/package-install-one-authority.test.ts +++ b/packages/spec/src/api/package-install-one-authority.test.ts @@ -104,7 +104,7 @@ const MATRIX: ReadonlyArray<{ name: string; enableOnInstall?: unknown }> = [ { name: 'null — refused by the declaration', enableOnInstall: null }, ]; -describe('#18605 — `enableOnInstall` has ONE authority', () => { +describe('`enableOnInstall` has ONE authority', () => { describe('the authority: `PackageInstallRequestSchema`', () => { it(`leaves an absent key \`undefined\` — 「${FLIP_TRIGGER}」, so the door still sees the absence`, () => { const parsed = PackageInstallRequestSchema.parse({ manifest: MANIFEST }); diff --git a/packages/spec/src/api/package-lifecycle.test.ts b/packages/spec/src/api/package-lifecycle.test.ts index 4abec190d7e..85f4a2a95e9 100644 --- a/packages/spec/src/api/package-lifecycle.test.ts +++ b/packages/spec/src/api/package-lifecycle.test.ts @@ -22,7 +22,7 @@ import { } from './package-lifecycle.zod'; import { PackagePublishResultSchema as SystemPackagePublishResultSchema } from '../system/metadata-persistence.zod'; -describe('the ruling-5A re-export of PackagePublishResultSchema (#12038)', () => { +describe('the ruled re-export of PackagePublishResultSchema into the `/api` namespace', () => { it('is the SAME declaration as the `/system` original — a re-export, never a second copy', () => { expect(PackagePublishResultSchema).toBe(SystemPackagePublishResultSchema); }); @@ -41,7 +41,7 @@ describe('the ruling-5A re-export of PackagePublishResultSchema (#12038)', () => }); }); -describe('DiscardPackageDraftsResponseSchema declares the discard-drafts body (#12038)', () => { +describe('DiscardPackageDraftsResponseSchema declares the discard-drafts body', () => { /** A verbatim-shaped capture of a real `discardPackageDrafts` return (one failure). */ const realResponse = { success: false, @@ -66,7 +66,7 @@ describe('DiscardPackageDraftsResponseSchema declares the discard-drafts body (# }); }); -describe('ListPackageCommitsResponseSchema declares the commit timeline body (#12038)', () => { +describe('ListPackageCommitsResponseSchema declares the commit timeline body', () => { /** A verbatim-shaped capture of the HANDLER's `{ commits }` payload (the wrapper is the handler's, not the protocol's). */ const realResponse = { commits: [ @@ -111,7 +111,7 @@ describe('ListPackageCommitsResponseSchema declares the commit timeline body (#1 }); }); -describe('RevertPackageCommitResponseSchema declares the revert body (#12038)', () => { +describe('RevertPackageCommitResponseSchema declares the revert body', () => { /** A verbatim-shaped capture of a real `revertCommit` return. */ const realResponse = { success: true, @@ -137,7 +137,7 @@ describe('RevertPackageCommitResponseSchema declares the revert body (#12038)', }); }); -describe('RollbackToPackageCommitResponseSchema declares the COMMIT-rollback body (#12038 3A)', () => { +describe('RollbackToPackageCommitResponseSchema declares the COMMIT-rollback body (ruled: authored once the wrong-operation schema was retired)', () => { /** A verbatim-shaped capture of a real `rollbackToPackageCommit` return (one commit stuck). */ const realResponse = { success: false, @@ -171,7 +171,7 @@ describe('RollbackToPackageCommitResponseSchema declares the COMMIT-rollback bod }); }); -describe('PackageExportManifestSchema declares the four fixed keys and stays open (#12038 4A)', () => { +describe('PackageExportManifestSchema declares the four fixed keys and stays open', () => { /** A verbatim-shaped capture of a real `assemblePackageManifest` return. */ const realResponse = { id: 'com.example.crm', @@ -198,7 +198,7 @@ describe('PackageExportManifestSchema declares the four fixed keys and stays ope }); }); -describe('ReassignOrphanedMetadataResponseSchema declares the adopt-orphans body (#12038)', () => { +describe('ReassignOrphanedMetadataResponseSchema declares the adopt-orphans body', () => { /** A verbatim-shaped capture of a real `reassignOrphanedMetadata` return. */ const realResponse = { success: true, @@ -222,7 +222,7 @@ describe('ReassignOrphanedMetadataResponseSchema declares the adopt-orphans body }); }); -describe('DuplicatePackageResponseSchema declares the duplicate body (#12038)', () => { +describe('DuplicatePackageResponseSchema declares the duplicate body', () => { /** A verbatim-shaped capture of a real `duplicatePackage` return (one copy failure). */ const realResponse = { success: false, @@ -239,7 +239,7 @@ describe('DuplicatePackageResponseSchema declares the duplicate body (#12038)', if (result.success) expect(result.data).toEqual(realResponse); }); - it('declares the OPERATION verdict at `success` — the objectui#6593 confusion has a declared answer', () => { + it('declares the OPERATION verdict at `success` — the envelope-vs-payload `success` confusion has a declared answer', () => { // On the wire this payload rides the dispatcher envelope; the envelope's // `success` is transport-level and true even here. The schema declares the // payload's own verdict so a consumer reading the declared shape reads the