From 8788de7a4aeab0566cb1b2e4f6ce5286a7175460 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 5 Oct 2026 13:09:27 +0000 Subject: [PATCH] test(spec): the last data/ file group's test titles state each cited decision in words instead of a tracker number (stage 19) The 11 test files directly under packages/spec/src/data/ from query-transport.test.ts through validation.test.ts, and the seven id-bearing files in data/driver/: 81 test titles and one expect message, 86 tracker ids in 82 literals. Each id is either replaced by the decision its record made, stated in words, or dropped where the title already says it. Text only: no assertion, identifier, comment or line count changes. Claude-Session: https://claude.ai/code/session_01T9u38rswFp5Rw8DswRUReJ Co-authored-by: Claude --- .../src/data/driver/config-registry.test.ts | 6 +-- .../driver/driver-credential-refusal.test.ts | 54 +++++++++---------- .../driver/driver-placeholder-refusal.test.ts | 18 +++---- packages/spec/src/data/driver/memory.test.ts | 2 +- .../src/data/driver/pg-url-grammar.test.ts | 4 +- .../spec/src/data/driver/postgres.test.ts | 6 +-- packages/spec/src/data/driver/turso.test.ts | 6 +-- .../spec/src/data/query-transport.test.ts | 10 ++-- packages/spec/src/data/query.test.ts | 22 ++++---- packages/spec/src/data/record-surface.test.ts | 4 +- packages/spec/src/data/search-fields.test.ts | 12 ++--- packages/spec/src/data/secret-mask.test.ts | 2 +- packages/spec/src/data/seed.test.ts | 2 +- .../src/data/tree-reference-self-only.test.ts | 2 +- .../src/data/unique-scope-message.test.ts | 2 +- packages/spec/src/data/unique-scope.test.ts | 2 +- .../validation-boundary-description.test.ts | 8 +-- packages/spec/src/data/validation.test.ts | 2 +- 18 files changed, 82 insertions(+), 82 deletions(-) diff --git a/packages/spec/src/data/driver/config-registry.test.ts b/packages/spec/src/data/driver/config-registry.test.ts index ac1abc4bdb4..41cd6fd8662 100644 --- a/packages/spec/src/data/driver/config-registry.test.ts +++ b/packages/spec/src/data/driver/config-registry.test.ts @@ -68,7 +68,7 @@ describe('driver config registry', () => { }); }); -describe('DatasourceSchema × driver config (#4410)', () => { +describe('DatasourceSchema × driver config — parsed against the contract its driver ships', () => { const base = { name: 'warehouse', driver: 'postgres' }; /** @@ -175,7 +175,7 @@ describe('DatasourceSchema × driver config (#4410)', () => { * the first one is the way that actually matters — reading the CONFIG-CONTRACT * column instead of the SELECTION column silently widens every boot host's flag. */ -describe('DATABASE_DRIVER_SELECTION_IDS — what a boot flag may offer (#6969)', () => { +describe('DATABASE_DRIVER_SELECTION_IDS — what a boot flag may offer, derived from the one driver table', () => { it('offers no contract-only spelling, whatever the derivation is rewritten to read', () => { // The wrong-column guard. `sqlite3` / `better-sqlite3` / `mariadb` / // `inmemory` resolve a config CONTRACT and are refused as a SELECTION, so a @@ -285,7 +285,7 @@ describe('the `memory` row: contract face kept, selection face withdrawn', () => * alone would be green before and after the guard and would prove nothing, so * the population is the point of this describe. */ -describe('driver lookups — an OFF-vocabulary id is refused, never answered with a non-schema (#16903)', () => { +describe('driver lookups — an OFF-vocabulary id is refused, never answered with a non-schema', () => { /** * The consumer that actually reaches these, spelled as the cast it is. * `getDriverConfigJsonSchemaById` and both resolvers are published diff --git a/packages/spec/src/data/driver/driver-credential-refusal.test.ts b/packages/spec/src/data/driver/driver-credential-refusal.test.ts index 6e6f087f258..712a30b44d3 100644 --- a/packages/spec/src/data/driver/driver-credential-refusal.test.ts +++ b/packages/spec/src/data/driver/driver-credential-refusal.test.ts @@ -77,7 +77,7 @@ const FAMILY = [ }, ] as const; -describe.each(FAMILY)('$driver — inline credential refusal (#7990)', (f) => { +describe.each(FAMILY)('$driver — inline credential refusal', (f) => { it(`refuses an inline \`${f.key}\`, naming the key's replacement mechanisms`, () => { const result = f.schema.safeParse({ ...f.valid, [f.key]: 'hunter2' }); expect(result.success).toBe(false); @@ -136,7 +136,7 @@ describe.each(FAMILY)('$driver — inline credential refusal (#7990)', (f) => { }); }); -describe('DatasourceSchema — the refusal reaches the authored artefact (#7990)', () => { +describe('DatasourceSchema — the refusal reaches the authored artefact', () => { it('re-paths the refusal under `config.` for the author', () => { const result = DatasourceSchema.safeParse({ name: 'prod', @@ -170,7 +170,7 @@ describe('DatasourceSchema — the refusal reaches the authored artefact (#7990) expect(DatasourceSchema.parse(refBased)).toEqual(result.data); }); - it('query-parameter credentials are REFUSED at `config.url` too (#8337 — the authored artefact door)', () => { + it('query-parameter credentials are REFUSED at `config.url` too — at the authored artefact door', () => { // Same envelope note as the #8082 pin below: the zod issue's `code` and // re-pathed location are the whole envelope at this layer; the publish // door wraps every schema refusal uniformly (`422 INVALID_METADATA`). @@ -187,7 +187,7 @@ describe('DatasourceSchema — the refusal reaches the authored artefact (#7990) expect(issue!.message).toContain('external.credentialsRef'); }); - it('embedded-in-URL credentials are REFUSED at `config.url` (#8082 — the inverted #8078 pin)', () => { + it('embedded-in-URL credentials are REFUSED at `config.url` — the pin that once recorded them as accepted, inverted', () => { // This test used to pin the ACCEPTANCE of exactly this input as a measured // fact (#7990 open question). The 2026-08-12 #8082 ruling (Option A) // closed the door, so the pin inverts rather than disappears: same input, @@ -258,7 +258,7 @@ const URL_FAMILY = [ }, ] as const; -describe.each(URL_FAMILY)('$name — URL-embedded credential refusal (#8082)', (f) => { +describe.each(URL_FAMILY)('$name — URL-embedded credential refusal', (f) => { const refusalAt = (config: Record) => { const result = f.schema.safeParse(config); if (result.success) return undefined; @@ -299,7 +299,7 @@ describe.each(URL_FAMILY)('$name — URL-embedded credential refusal (#8082)', ( expect(refusalAt(f.make(`${scheme}://[2001:db8::1]:6543/prod`))).toBeUndefined(); }); - it('accepts a bare username (`user@host`) — `username` is a writable key, only the secret is refused (#7990 posture)', () => { + it('accepts a bare username (`user@host`) — `username` is a writable key, only the secret is refused', () => { const config = f.make(f.sample('svc@')); expect(refusalAt(config)).toBeUndefined(); const parsed = f.schema.safeParse(config); @@ -356,7 +356,7 @@ const QUERY_FAMILY = [ }, ] as const; -describe.each(QUERY_FAMILY)('$name — URL query-parameter credential refusal (#8337)', (f) => { +describe.each(QUERY_FAMILY)('$name — URL query-parameter credential refusal', (f) => { const refusalAt = (config: Record) => { const result = f.schema.safeParse(config); if (result.success) return undefined; @@ -428,7 +428,7 @@ describe.each(QUERY_FAMILY)('$name — URL query-parameter credential refusal (# }); }); -describe('the deliberately-absent entries (#8337) — measured as NOT read, so not refused', () => { +describe('the deliberately-absent entries — measured as NOT read, so not refused', () => { it('mysql `?password=` stays accepted: mysql2 seeds `password` from userinfo and skips the query key', () => { // `mysql2`'s `parseUrl` runs `if (key in options) continue;` over the // query, and `password` is always pre-set from userinfo — the parameter @@ -445,7 +445,7 @@ describe('the deliberately-absent entries (#8337) — measured as NOT read, so n }); }); -describe('urlCredentialQueryParams — the shared value-level parse (#8337)', () => { +describe('urlCredentialQueryParams — the shared value-level parse', () => { const TURSO = CREDENTIAL_URL_QUERY_PARAMS.turso; it('finds the declared parameter with a non-empty value, at any position, once', () => { @@ -495,7 +495,7 @@ describe('urlCredentialQueryParams — the shared value-level parse (#8337)', () }); }); -describe('urlUserinfoPassword — the shared value-level parse (#8082)', () => { +describe('urlUserinfoPassword — the shared value-level parse', () => { it('judges the DSN forms real drivers take, which `new URL()` rejects or mangles', () => { // postgres/mongo multi-host DSNs are not WHATWG URLs; the detector must // judge them rather than fail open on a parse error. @@ -536,8 +536,8 @@ describe('urlUserinfoPassword — the shared value-level parse (#8082)', () => { }); }); -describe('urlUserinfoUsername — the username half of the same grammar (#8876)', () => { - it('judges the multi-host DSN forms `new URL()` rejects — the reason this helper exists (#8696)', () => { +describe('urlUserinfoUsername — the username half of the same grammar', () => { + it('judges the multi-host DSN forms `new URL()` rejects — the reason this helper exists', () => { // `new URL('mongodb://app@h1:27017,h2:27017/app')` throws ERR_INVALID_URL // (measured in the filing); the accessor must judge it, not fail open. expect(urlUserinfoUsername('mongodb://app@h1:27017,h2:27017/app')).toBe('app'); @@ -609,7 +609,7 @@ describe('urlUserinfoUsername — the username half of the same grammar (#8876)' * is wrapped uniformly by the publish door (metadata-protocol's * `422 INVALID_METADATA`, whose `issues[]` carry these codes verbatim). */ -describe('mongo options passthrough — credential refusal (#9040)', () => { +describe('mongo options passthrough — credential refusal', () => { const VALID = { database: 'events', host: 'mongo.internal', username: 'svc' } as const; const refusalAt = (options: Record) => { const result = MongoConfigSchema.safeParse({ ...VALID, options }); @@ -666,7 +666,7 @@ describe('mongo options passthrough — credential refusal (#9040)', () => { expect(issue!.message).toContain('external.credentialsRef'); }); - it('`auth.username` alone is NOT credential material (#8876 asymmetry) — stays accepted', () => { + it('`auth.username` alone is NOT credential material — stays accepted', () => { // The schema's question is "is a secret being persisted?", and a username // is not one. (The client separately refuses a username-only `auth` block // at construction — `credentials must be an object with 'username' and @@ -675,7 +675,7 @@ describe('mongo options passthrough — credential refusal (#9040)', () => { expect(refusalAt({ auth: { username: 'app' } })).toBeUndefined(); }); - it('an EMPTY `auth.password` carries no secret — the passthrough twin of `user:@host` (#8082)', () => { + it('an EMPTY `auth.password` carries no secret — the passthrough twin of `user:@host`', () => { expect(refusalAt({ auth: { username: 'app', password: '' } })).toBeUndefined(); }); @@ -799,7 +799,7 @@ describe('mongo options passthrough — nested credential-SPELLED keys refused a * refusal is wrapped uniformly by the publish door (metadata-protocol's * `422 INVALID_METADATA`, whose `issues[]` carry these codes verbatim). */ -describe('datasource — bound credentialsRef + user-less mongo url refused (#9041)', () => { +describe('datasource — bound credentialsRef + user-less mongo url refused', () => { const BOUND = { credentialsRef: 'sys_secret:01J9ZK4T2N' } as const; const parse = (ds: Record) => DatasourceSchema.safeParse(ds); const refusalOf = (ds: Record) => { @@ -828,7 +828,7 @@ describe('datasource — bound credentialsRef + user-less mongo url refused (#90 expect(issue!.message).toContain('silent no-op'); }); - it('judges a legacy `driver: mongo` row identically (alias-resolved, like the #9040 read path)', () => { + it('judges a legacy `driver: mongo` row identically (alias-resolved, like the passthrough read-path redaction)', () => { const issue = refusalOf({ name: 'events', driver: 'mongo', @@ -848,7 +848,7 @@ describe('datasource — bound credentialsRef + user-less mongo url refused (#90 expect(issue).toBeDefined(); }); - it('accepts the blessed shape byte-identically: bare-username URL + bound secret (#8155)', () => { + it('accepts the blessed shape byte-identically: bare-username URL + bound secret, what the stored-credential remedy prescribes', () => { const ds = { name: 'events', driver: 'mongodb', @@ -892,7 +892,7 @@ describe('datasource — bound credentialsRef + user-less mongo url refused (#90 } }); - it('the COMPOSED branch is #9147\'s arm, never this one — a composed config reports neither #9041 nor a `config.url` path', () => { + it('the COMPOSED branch belongs to the no-username arm, never this one — a composed config reports neither the user-less URL refusal nor a `config.url` path', () => { // With no `url` the discrete `username` is live and the factory // interpolates the bound secret into the URI it composes (the branch // beside commit 90a12fb18's DSN one), so a composed config that NAMES a @@ -955,7 +955,7 @@ describe('datasource — bound credentialsRef + user-less mongo url refused (#90 expect(result.error!.issues.some((i) => i.message.includes("the URL's own userinfo"))).toBe(false); }); - it('composes with the #9040 passthrough refusal — one artefact, both findings, own paths', () => { + it('composes with the options-passthrough credential refusal — one artefact, both findings, own paths', () => { // The PM-mechanism composition pin: the datasource-level commit d491625c1 refinement // and the config-level commit 24206416a `credentialFreeMongoOptions` judge the same // artefact independently — an input violating both reports both. @@ -992,7 +992,7 @@ describe('datasource — bound credentialsRef + user-less mongo url refused (#90 expect(result.success, JSON.stringify(result.error?.issues)).toBe(true); }); - it('composes with the #8082 userinfo refusal the other way: a password-bearing URL has a USER', () => { + it('composes with the URL userinfo refusal the other way: a password-bearing URL has a USER', () => { // `user:password@host` violates #8082, but its userinfo NAMES a user — so // this refusal correctly stays out and the author gets exactly the #8082 // prescription (bind the secret), not a contradictory second message. @@ -1030,7 +1030,7 @@ describe('datasource — bound credentialsRef + user-less mongo url refused (#90 * schema refusal is wrapped uniformly by the publish door (metadata-protocol's * `422 INVALID_METADATA`, whose `issues[]` carry these codes verbatim). */ -describe('datasource — bound credentialsRef + composed mongo config naming no username refused (#9147)', () => { +describe('datasource — bound credentialsRef + composed mongo config naming no username refused', () => { const BOUND = { credentialsRef: 'sys_secret:01J9ZK4T2N' } as const; /** The composed branch's minimum viable target — no `url`, so the URI is built. */ const COMPOSED = { database: 'events', host: 'mongo.internal' } as const; @@ -1067,7 +1067,7 @@ describe('datasource — bound credentialsRef + composed mongo config naming no expect(issue!.message).not.toContain('add the username to the URL'); }); - it('judges a legacy `driver: mongo` row identically (alias-resolved, like #9041 and the #9040 read path)', () => { + it('judges a legacy `driver: mongo` row identically (alias-resolved, like the user-less URL arm and the passthrough read path)', () => { expect(refusalOf({ name: 'events', driver: 'mongo', @@ -1092,7 +1092,7 @@ describe('datasource — bound credentialsRef + composed mongo config naming no })).toBeDefined(); }); - it('an empty `config.url` routes HERE, not to #9041 — the arms split on the factory\'s own branch test', () => { + it('an empty `config.url` routes HERE, not to the user-less URL arm — the arms split on the factory\'s own branch test', () => { const result = parse({ name: 'events', driver: 'mongodb', @@ -1119,7 +1119,7 @@ describe('datasource — bound credentialsRef + composed mongo config naming no expect(DatasourceSchema.parse(ds)).toEqual(result.data); }); - it('near-miss ① `url` present naming NO user — exactly ONE refusal fires, and it is #9041\'s', () => { + it('near-miss ① `url` present naming NO user — exactly ONE refusal fires, and it is the user-less URL arm\'s', () => { // The arms partition the input: the author must never receive two messages // prescribing different fixes for one datasource. const result = parse({ @@ -1133,7 +1133,7 @@ describe('datasource — bound credentialsRef + composed mongo config naming no expect(result.error!.issues.some((i) => i.message.includes("add `username` to `config`"))).toBe(false); }); - it('near-miss ② a discrete `username` present — the branch where the bound secret is LIVE (#8696)', () => { + it('near-miss ② a discrete `username` present — the branch where the bound secret is LIVE', () => { const ds = { name: 'events', driver: 'mongodb', @@ -1192,7 +1192,7 @@ describe('datasource — bound credentialsRef + composed mongo config naming no expect(result.error!.issues.some((i) => i.message.includes("add `username` to `config`"))).toBe(false); }); - it('composes with the #9040 passthrough refusal — one artefact, both findings, own paths', () => { + it('composes with the options-passthrough credential refusal — one artefact, both findings, own paths', () => { const result = parse({ name: 'events', driver: 'mongodb', diff --git a/packages/spec/src/data/driver/driver-placeholder-refusal.test.ts b/packages/spec/src/data/driver/driver-placeholder-refusal.test.ts index 36d2b37a0c0..cc576909fac 100644 --- a/packages/spec/src/data/driver/driver-placeholder-refusal.test.ts +++ b/packages/spec/src/data/driver/driver-placeholder-refusal.test.ts @@ -92,7 +92,7 @@ const FAMILY = [ valid: {}, literal: './data/objectstack.db', placeholder: '${DATA_DIR}/objectstack.db' }, ] as const; -describe.each(FAMILY)('$name — unresolved placeholder refusal (#8336)', (f) => { +describe.each(FAMILY)('$name — unresolved placeholder refusal', (f) => { it('refuses a `${…}` placeholder, naming the key, the defect and the working escapes', () => { const result = f.schema.safeParse({ ...f.valid, [f.key]: f.placeholder }); expect(result.success).toBe(false); @@ -134,7 +134,7 @@ describe.each(FAMILY)('$name — unresolved placeholder refusal (#8336)', (f) => }); }); -describe('mongo `options` passthrough — the deep judgement (#8336)', () => { +describe('mongo `options` passthrough — the deep placeholder judgement', () => { const base = { database: 'events', host: 'mongo.internal' }; it('refuses a `${…}` value at its exact path inside the record', () => { @@ -196,7 +196,7 @@ const MEMORY_PERSISTENCE_FAMILY = [ literal: 'objectstack:memory-db', placeholder: '${STORAGE_KEY}' }, ] as const; -describe.each(MEMORY_PERSISTENCE_FAMILY)('$name — unresolved placeholder refusal (#8495)', (f) => { +describe.each(MEMORY_PERSISTENCE_FAMILY)('$name — unresolved placeholder refusal', (f) => { it('refuses a `${…}` placeholder, pathed under `persistence`, naming the key and the defect', () => { const result = MemoryConfigSchema.safeParse(f.valid(f.placeholder)); expect(result.success).toBe(false); @@ -231,7 +231,7 @@ describe.each(MEMORY_PERSISTENCE_FAMILY)('$name — unresolved placeholder refus }); }); -describe('memory `initialData` stays UNJUDGED — the deliberate #8336 exclusion holds (#8495)', () => { +describe('memory `initialData` stays UNJUDGED — the deliberate seed-data exclusion holds', () => { it('a literal `${…}` in a record value is legitimate DATA and keeps parsing', () => { // The mother ruling's memory-driver exclusion was argued from exactly this: // `initialData` carries arbitrary record values, where `${…}` may be the @@ -251,7 +251,7 @@ describe('memory `initialData` stays UNJUDGED — the deliberate #8336 exclusion }); }); -describe('DatasourceSchema — the memory refusal reaches the authored artefact (#8495)', () => { +describe('DatasourceSchema — the memory refusal reaches the authored artefact', () => { it('re-paths the refusal under `config.persistence.path` for the author', () => { const result = DatasourceSchema.safeParse({ name: 'scratch', @@ -266,7 +266,7 @@ describe('DatasourceSchema — the memory refusal reaches the authored artefact }); }); -describe('DatasourceSchema — the refusal reaches the authored artefact (#8336)', () => { +describe('DatasourceSchema — the refusal reaches the authored artefact', () => { it('re-paths the refusal under `config.` for the author', () => { const result = DatasourceSchema.safeParse({ name: 'prod', @@ -280,7 +280,7 @@ describe('DatasourceSchema — the refusal reaches the authored artefact (#8336) expect(issue!.message).toContain('placeholders are not resolved here'); }); - it('a driver with no shipped contract keeps its config unjudged — the honest #4410 boundary', () => { + it('a driver with no shipped contract keeps its config unjudged — the honest boundary of config validation', () => { // A plugin-contributed driver's config is validated against nothing // (config-registry.zod.ts: "we validate what we can construct"), so a // placeholder there is NOT refused — the platform has no schema to judge @@ -294,7 +294,7 @@ describe('DatasourceSchema — the refusal reaches the authored artefact (#8336) }); }); -describe('composition with the #8082 userinfo check', () => { +describe('composition with the URL userinfo check', () => { it('a URL violating both facts reports both — placeholder AND embedded credential', () => { const result = PostgresConfigSchema.safeParse({ url: 'postgresql://svc:${DB_PASSWORD}@db.internal:5432/prod', @@ -306,7 +306,7 @@ describe('composition with the #8082 userinfo check', () => { }); }); -describe('containsUnresolvedPlaceholder — the shared value-level judgement (#8336)', () => { +describe('containsUnresolvedPlaceholder — the shared value-level judgement', () => { it('matches a complete `${…}` span wherever it sits, whatever it contains', () => { expect(containsUnresolvedPlaceholder('${DB_HOST}')).toBe(true); expect(containsUnresolvedPlaceholder('postgresql://${DB_HOST}/db')).toBe(true); diff --git a/packages/spec/src/data/driver/memory.test.ts b/packages/spec/src/data/driver/memory.test.ts index f1c889fe944..a65ac082d03 100644 --- a/packages/spec/src/data/driver/memory.test.ts +++ b/packages/spec/src/data/driver/memory.test.ts @@ -545,7 +545,7 @@ describe('MemoryDriverSpec', () => { // never on a bare `toThrow()` — both shapes ARE `strictObject`, so a bare throw // assertion would pass identically on the unrecognized-key error the tombstone // exists to replace, which is exactly the case that cannot carry a rename. -describe('memory persistence auto-save interval carries its unit (#15680)', () => { +describe('memory persistence auto-save interval carries its unit', () => { it('REFUSES the retired `autoSaveInterval` on the file arm, with the rename in the message', () => { const result = FilePersistenceConfigSchema.safeParse({ type: 'file', autoSaveInterval: 5000 }); expect(result.success).toBe(false); diff --git a/packages/spec/src/data/driver/pg-url-grammar.test.ts b/packages/spec/src/data/driver/pg-url-grammar.test.ts index 46c78aa0298..98e58fd2853 100644 --- a/packages/spec/src/data/driver/pg-url-grammar.test.ts +++ b/packages/spec/src/data/driver/pg-url-grammar.test.ts @@ -36,7 +36,7 @@ const ACCEPTED_EVERYWHERE = [ 'postgres://user@db.example.com/app?sslmode=require', ]; -describe('pg-url-grammar server twin (#9091 arm)', () => { +describe('pg-url-grammar server twin — still asks the parser `pg` itself runs', () => { it('refuses each measured-bad DSN with the pg-grammar prescription', () => { for (const value of REFUSED_ON_SERVER) { const findings = serverFindings(value, 'url'); @@ -52,7 +52,7 @@ describe('pg-url-grammar server twin (#9091 arm)', () => { }); }); -describe('pg-url-grammar browser twin (#11072 degradation)', () => { +describe('pg-url-grammar browser twin — degrades to the shape-only checks, with no `pg` parse', () => { it('answers no findings for the very values the server twin refuses', () => { for (const value of [...REFUSED_ON_SERVER, ...ACCEPTED_EVERYWHERE]) { expect(browserFindings(value, 'url'), value).toEqual([]); diff --git a/packages/spec/src/data/driver/postgres.test.ts b/packages/spec/src/data/driver/postgres.test.ts index 80a0357bacb..c1f6a8ddd60 100644 --- a/packages/spec/src/data/driver/postgres.test.ts +++ b/packages/spec/src/data/driver/postgres.test.ts @@ -166,7 +166,7 @@ describe('PostgresConfigSchema', () => { expect(result.error!.issues[0]!.message).toContain('`user` → `username`'); }); - it('refuses config with environment variable patterns — placeholders are not resolved here (#8336)', () => { + it('refuses config with environment variable patterns — placeholders are not resolved here', () => { // INVERTED acceptance pin. This test used to pin (#7990 census) that // placeholder-shaped strings PARSE for non-credential keys — recording the // measured fact that nothing resolves them and they reach the client @@ -210,7 +210,7 @@ describe('PostgresConfigSchema', () => { * uniformly (metadata-protocol's `422 INVALID_METADATA`, whose `issues[]` * carry these zod codes verbatim). */ -describe('PostgresConfigSchema.url pg-grammar enforcement (#9091)', () => { +describe('PostgresConfigSchema.url pg-grammar enforcement', () => { it("refuses libpq's multi-host DSN — the form `pg` measurably cannot open", () => { // Measured on pg@8.22.0 / pg-connection-string@2.14.0: both `parse` and // `ConnectionParameters` throw `TypeError [ERR_INVALID_URL]` on this exact @@ -341,7 +341,7 @@ describe('PostgresConfigSchema.url pg-grammar enforcement (#9091)', () => { } }); - it("leaves mongo's multi-host form untouched — the shared helper's leniency it must keep (#8696)", () => { + it("leaves mongo's multi-host form untouched — the shared helper's leniency it must keep", () => { // The #9091 parse check is per-driver BY DESIGN: for mongo the multi-host // DSN is a real, working, documented shape. Pin that it still parses. const result = MongoConfigSchema.safeParse({ diff --git a/packages/spec/src/data/driver/turso.test.ts b/packages/spec/src/data/driver/turso.test.ts index ccece3b9dad..9b57799ac4a 100644 --- a/packages/spec/src/data/driver/turso.test.ts +++ b/packages/spec/src/data/driver/turso.test.ts @@ -123,7 +123,7 @@ describe('TursoConfigSchema', () => { }); }); -describe('turso is a known driver to the config registry now (#6345)', () => { +describe('turso is a known driver to the config registry now', () => { it('validateDriverConfig answers `known: true` for both spellings', () => { expect(validateDriverConfig('turso', { url: 'libsql://x.turso.io' })) .toEqual({ known: true, issues: [] }); @@ -169,7 +169,7 @@ describe('TursoDriverSpec', () => { // never on a bare `toThrow()` — this shape IS `strictObject`, so a bare throw // assertion passes identically on the unrecognized-key error, which is precisely // the error that cannot carry a FROM → TO mapping. -describe('TursoConfig.timeout carries its unit (#15680)', () => { +describe('TursoConfig.timeout carries its unit', () => { const base = { url: 'libsql://app.turso.io' }; it('REFUSES the retired `timeout` with the rename in the message', () => { @@ -210,7 +210,7 @@ describe('TursoConfig.timeout carries its unit (#15680)', () => { // credential, a placeholder) would satisfy identically. The driver-local mirror // and the constructor are held to the same table in // `packages/drivers/driver-turso/src/spec/turso-config-constructor-parity.test.ts`. -describe('TursoConfigSchema refuses what the turso driver refuses (#19977)', () => { +describe('TursoConfigSchema refuses what the turso driver refuses', () => { /** The one refusal a config earns, asserted to be the only issue there is. */ const refusal = (config: Record) => { const result = TursoConfigSchema.safeParse(config); diff --git a/packages/spec/src/data/query-transport.test.ts b/packages/spec/src/data/query-transport.test.ts index 40b36a1c8c8..fdcdde5f10b 100644 --- a/packages/spec/src/data/query-transport.test.ts +++ b/packages/spec/src/data/query-transport.test.ts @@ -35,7 +35,7 @@ import { import { QuerySchema } from './query.zod'; import type { QueryAST } from './query.zod'; -describe('[#16066] §1 what the transport declares', () => { +describe('§1 what the transport declares — a flattened spelling of the AST, never a second semantics', () => { /** Every spelling the two tables touch — both halves of each `$` pair. */ const foldedSpellings = (): Set => new Set([ ...QUERY_TRANSPORT_ALIAS_SLOTS.flatMap((slot) => slot.aliases), @@ -93,7 +93,7 @@ describe('[#16066] §1 what the transport declares', () => { }); }); -describe('[#16066] §2 every alias parses to its canonical slot', () => { +describe('§2 every alias parses to its canonical slot', () => { const parse = (query: Record) => QueryWithTransportSchema.parse(query); const CASES: Array<[string, Record, Record]> = [ @@ -156,7 +156,7 @@ describe('[#16066] §2 every alias parses to its canonical slot', () => { }); }); -describe('[#16066] §3 the fold is TOTAL — every admitted value shape lowers, or the parse fails', () => { +describe('§3 the fold is TOTAL — every admitted value shape lowers, or the parse fails', () => { /** * THE LOAD-BEARING SECTION, and every assertion in it reads the OUTPUT. * @@ -328,7 +328,7 @@ describe('[#16066] §3 the fold is TOTAL — every admitted value shape lowers, }); }); -describe('[#16066] §4 `QuerySchema` did not grow the dialect', () => { +describe('§4 `QuerySchema` did not grow the dialect', () => { /** * The ruling's Prime Directive #12 half: the transport form is declared as a * SPELLING of the AST, never admitted into the AST. A `$` key handed to @@ -350,7 +350,7 @@ describe('[#16066] §4 `QuerySchema` did not grow the dialect', () => { }); }); -describe('[#16066] §5 the declared OUTPUT type, pinned where a runtime test cannot reach', () => { +describe('§5 the declared OUTPUT type, pinned where a runtime test cannot reach', () => { /** * `z.infer` of this slot is the canonical AST plus the `count` flag — and * nothing else. The slot used to claim the bare `QueryAST` through a cast diff --git a/packages/spec/src/data/query.test.ts b/packages/spec/src/data/query.test.ts index f6d1d1741e7..2ad02daa627 100644 --- a/packages/spec/src/data/query.test.ts +++ b/packages/spec/src/data/query.test.ts @@ -127,7 +127,7 @@ describe('QuerySchema - Basic', () => { * carries the prescription rather than zod's "expected string, received object": * the parse error is the channel an upgrading consumer actually hits. */ -describe('FieldNode — the nested-select object form is REMOVED (#4196)', () => { +describe('FieldNode — the nested-select object form is REMOVED', () => { // The dotted half is a NON-NARROWING guard, not a feature pin (#7601): the // refusal of dotted projections (#7532) is a SEMANTIC verdict at the ingress // gate (`assertProjectionFieldsExist`, `400 INVALID_FIELD`), where the field @@ -189,7 +189,7 @@ describe('FieldNode — the nested-select object form is REMOVED (#4196)', () => * (`direction` → `order` is not a typo), which is why the alias table is the * load-bearing half. */ -describe('SortNode — closed, and `direction` carries its translation (#4721)', () => { +describe('SortNode — closed, and `direction` carries its translation', () => { it('accepts the canonical two-key node, defaulting `order` to asc', () => { expect(SortNodeSchema.parse({ field: 'updated_at', order: 'desc' })) .toEqual({ field: 'updated_at', order: 'desc' }); @@ -199,7 +199,7 @@ describe('SortNode — closed, and `direction` carries its translation (#4721)', it('REJECTS `direction` instead of silently sorting the other way', () => { const r = SortNodeSchema.safeParse({ field: 'updated_at', direction: 'desc' }); - expect(r.success, 'this parsed to `order: asc` before #4721').toBe(false); + expect(r.success, 'this parsed to `order: asc` before the sort node was closed').toBe(false); expect(r.error!.issues[0].message).toContain('`direction` → `order`'); }); @@ -337,7 +337,7 @@ describe('QuerySchema - Aggregations', () => { expect(() => QuerySchema.parse(query)).not.toThrow(); }); - it('rejects the retired per-aggregation `distinct` flag (#6815)', () => { + it('rejects the retired per-aggregation `distinct` flag', () => { // Was `should accept aggregation with distinct flag`. `count` + `distinct` // is the exact shape `count_distinct` already spells portably, and it is // the shape the removal is loudest about: the two answered the same number @@ -620,7 +620,7 @@ describe('QuerySchema - Aggregations', () => { * silently STRIPPED the keys (the ADR-0104 class); `retiredKey()` keeps the * removal audible in both channels (`tsc` and the parse). */ -describe('QueryAST.joins — REMOVED (#4286)', () => { +describe('QueryAST.joins — REMOVED', () => { it('rejects a query carrying `joins` with the prescription, even as an empty array', () => { expect(() => QuerySchema.parse({ object: 'order', joins: [] })) .toThrow(/query\.joins.*removed.*expand/s); @@ -648,7 +648,7 @@ describe('QueryAST.joins — REMOVED (#4286)', () => { }); }); -describe('QueryAST.windowFunctions — REMOVED (#4286)', () => { +describe('QueryAST.windowFunctions — REMOVED', () => { it('rejects a query carrying `windowFunctions` with the prescription naming the door', () => { expect(() => QuerySchema.parse({ object: 'order', @@ -663,7 +663,7 @@ describe('QueryAST.windowFunctions — REMOVED (#4286)', () => { }); }); -describe('QueryAST.cursor — REMOVED (#4286)', () => { +describe('QueryAST.cursor — REMOVED', () => { it('rejects a caller-built cursor with the prescription pointing at the manual keyset', () => { expect(() => QuerySchema.parse({ object: 'customer', cursor: { id: 'rec_9' } })) .toThrow(/query\.cursor.*removed.*where.*sort key/s); @@ -682,7 +682,7 @@ describe('QueryAST.cursor — REMOVED (#4286)', () => { }); }); -describe('QueryAST.distinct — REMOVED (#4286)', () => { +describe('QueryAST.distinct — REMOVED', () => { it('rejects the flag with the prescription naming the live spellings — either value', () => { expect(() => QuerySchema.parse({ object: 'account', distinct: true })) .toThrow(/query\.distinct.*removed.*count_distinct/s); @@ -698,7 +698,7 @@ describe('QueryAST.distinct — REMOVED (#4286)', () => { // `AggregationNode.filter` (marked EXPERIMENTAL), and the per-aggregation // flag was neither. It IS still a different member — with the same verdict // one level down, reached separately in #6815. - it('per-aggregation `distinct` is a DIFFERENT member with its OWN prescription (#6815)', () => { + it('per-aggregation `distinct` is a DIFFERENT member with its OWN prescription', () => { expect(() => QuerySchema.parse({ object: 'order', aggregations: [{ function: 'count', field: 'customer_id', distinct: true, alias: 'unique_customers' }], @@ -713,7 +713,7 @@ describe('QueryAST.distinct — REMOVED (#4286)', () => { }); }); -describe('AggregationNode.distinct — REMOVED (#6815, ADR-0049)', () => { +describe('AggregationNode.distinct — REMOVED (ADR-0049)', () => { it('refuses either value — `false` was as divergent as `true`', () => { // `distinct: false` selected the SQL faces' behaviour on the in-memory // path, so it was never inert: it was one of the two answers. The @@ -905,7 +905,7 @@ describe('QuerySchema - Edge Cases and Null Handling', () => { expect(() => QuerySchema.parse(query)).not.toThrow(); }); - it('refuses a mixed aggregation list the moment ONE entry carries `distinct` (#6815)', () => { + it('refuses a mixed aggregation list the moment ONE entry carries `distinct`', () => { // Was `should handle optional distinct flag in aggregation`. The mixed // list is the interesting shape: the second entry is untouched by the // retirement, so the refusal has to come from the first ENTRY rather than diff --git a/packages/spec/src/data/record-surface.test.ts b/packages/spec/src/data/record-surface.test.ts index 7f919a1f150..5f30752b54b 100644 --- a/packages/spec/src/data/record-surface.test.ts +++ b/packages/spec/src/data/record-surface.test.ts @@ -56,12 +56,12 @@ describe('deriveRecordSurface (ADR-0085 §5)', () => { }); }); -describe('deriveRecordFlowSurface (#2604)', () => { +describe('deriveRecordFlowSurface — viewing a record may route, a create or edit task is always an overlay', () => { const TASK_FLOWS: RecordFlow[] = ['create', 'edit', 'child-create', 'child-edit']; const heavy = objWithFields(RECORD_SURFACE_PAGE_THRESHOLD); const light = objWithFields(RECORD_SURFACE_PAGE_THRESHOLD - 1); - it("view keeps the #2578 behavior verbatim: heavy → route('page'), light → overlay('drawer')", () => { + it("view keeps the field-count detail surface verbatim: heavy → route('page'), light → overlay('drawer')", () => { expect(deriveRecordFlowSurface(heavy, 'view')).toEqual({ container: 'route', surface: 'page', size: 'auto', }); diff --git a/packages/spec/src/data/search-fields.test.ts b/packages/spec/src/data/search-fields.test.ts index 2c6295451c3..a7eb7c2b5f4 100644 --- a/packages/spec/src/data/search-fields.test.ts +++ b/packages/spec/src/data/search-fields.test.ts @@ -23,7 +23,7 @@ import { FieldType } from './field.zod'; // registration, and on a table whose only textual column is the primary key it // designates `id`, turning `$search` into a substring scan over the PK. // --------------------------------------------------------------------------- -describe('[#4483] $search auto field set — lead orders, never admits', () => { +describe('$search auto field set — lead orders, never admits', () => { const pkOnly = { id: { type: 'text' }, amount: { type: 'number' }, @@ -117,7 +117,7 @@ describe('[#4483] $search auto field set — lead orders, never admits', () => { ).toEqual({ allowed: ['id'], source: 'declared' }); }); - it('the #4254 ingress gate no longer admits `$searchFields=id`', () => { + it('the ingress gate that refuses an unsearchable `$searchFields` entry no longer admits `$searchFields=id`', () => { // `resolveSearchFields` intersects the override with `allowed`; with `id` // out of `allowed` the override matches nothing and cannot widen the scan. expect(resolveSearchFields({ fields: pkOnly, displayField: 'id', requestedFields: 'id' })) @@ -160,7 +160,7 @@ describe('[#4483] $search auto field set — lead orders, never admits', () => { // (`SEARCH_AUTO_EXCLUDED_FIELDS` is deliberately absent — its members are // field NAMES, not types.) // --------------------------------------------------------------------------- -describe('[#13695] search type vocabularies ⊆ FieldType', () => { +describe('search type vocabularies ⊆ FieldType', () => { const validTypes: ReadonlySet = new Set(FieldType.options); const vocabularies: ReadonlyArray<[string, ReadonlySet]> = [ ['SEARCHABLE_TEXTUAL_TYPES', SEARCHABLE_TEXTUAL_TYPES], @@ -191,7 +191,7 @@ describe('[#13695] search type vocabularies ⊆ FieldType', () => { }); }); -describe('[#6934] search type vocabularies are pairwise disjoint', () => { +describe('search type vocabularies are pairwise disjoint', () => { const overlap = (a: ReadonlySet, b: ReadonlySet) => [...a].filter((t) => b.has(t)).sort(); @@ -254,7 +254,7 @@ describe('[#6934] search type vocabularies are pairwise disjoint', () => { // gate and the linter), which read `isVirtualSearchField` to word their refusal // from this same judgment. // --------------------------------------------------------------------------- -describe('[#6674] a virtual field declared in searchableFields', () => { +describe('a virtual field declared in searchableFields — not admitted, since no driver stores it', () => { const fields = { id: { type: 'text' }, name: { type: 'text' }, @@ -326,7 +326,7 @@ describe('[#6674] a virtual field declared in searchableFields', () => { }); }); -describe('[#6674] SEARCH_VIRTUAL_TYPES is a storage fact', () => { +describe('SEARCH_VIRTUAL_TYPES is a storage fact', () => { it('is exactly the driver-virtual set', () => { // Mirrors `fieldHasColumn` (driver-sql/src/schema-drift.ts) and // driver-turso's "Virtual — no column" skips. A driver growing a second diff --git a/packages/spec/src/data/secret-mask.test.ts b/packages/spec/src/data/secret-mask.test.ts index d755c87252d..09b76c22171 100644 --- a/packages/spec/src/data/secret-mask.test.ts +++ b/packages/spec/src/data/secret-mask.test.ts @@ -37,7 +37,7 @@ import { SECRET_MASK } from './secret-mask'; const HERE = path.dirname(url.fileURLToPath(import.meta.url)); const SOURCE = path.resolve(HERE, 'secret-mask.ts'); -describe('SECRET_MASK — the credential read mask (ADR-0100 / #7572)', () => { +describe('SECRET_MASK — the credential read mask (ADR-0100), declared once for every masked read', () => { it('is exactly eight U+2022 BULLET characters', () => { // Restated on purpose — see the module header. expect(SECRET_MASK).toBe('••••••••'); diff --git a/packages/spec/src/data/seed.test.ts b/packages/spec/src/data/seed.test.ts index f07e7e2976c..0e25396c70d 100644 --- a/packages/spec/src/data/seed.test.ts +++ b/packages/spec/src/data/seed.test.ts @@ -157,7 +157,7 @@ describe('SeedSchema', () => { }); }); - it('should accept a composite externalId (join-table natural key, #3434)', () => { + it('should accept a composite externalId (join-table natural key)', () => { const dataset = SeedSchema.parse({ object: 'team_project_membership', externalId: ['team', 'project'], diff --git a/packages/spec/src/data/tree-reference-self-only.test.ts b/packages/spec/src/data/tree-reference-self-only.test.ts index 17bcb7a33b4..e21af883d1f 100644 --- a/packages/spec/src/data/tree-reference-self-only.test.ts +++ b/packages/spec/src/data/tree-reference-self-only.test.ts @@ -29,7 +29,7 @@ const zoo = (reference?: string) => ({ const firstSentence = (message: string): string => message.split(/\.\s/)[0]; -describe('[#14892] a `tree` field\'s `reference` must name the declaring object', () => { +describe('a `tree` field\'s `reference` must name the declaring object', () => { it('accepts a self-reference through the object schema, and through create()', () => { const parsed = ObjectSchema.safeParse(zoo('showcase_field_zoo')); expect(parsed.success, parsed.success ? '' : JSON.stringify(parsed.error.issues)).toBe(true); diff --git a/packages/spec/src/data/unique-scope-message.test.ts b/packages/spec/src/data/unique-scope-message.test.ts index c10d804085e..b98ff11af50 100644 --- a/packages/spec/src/data/unique-scope-message.test.ts +++ b/packages/spec/src/data/unique-scope-message.test.ts @@ -134,7 +134,7 @@ describe('unique scope rejection message — the two surfaces disagree about bar ); }); -describe('unique scope — message text only: the accept/reject line does not move (#8323)', () => { +describe('unique scope — message text only: the accept/reject line does not move, and bare `true` keeps its meaning', () => { // Every value an author can write on this key, accepted or refused. The // vocabulary (ADR-0120 D1) plus the two rejected words plus the shapes a // wrong type arrives as. diff --git a/packages/spec/src/data/unique-scope.test.ts b/packages/spec/src/data/unique-scope.test.ts index b5952de869a..7c78f12b0d1 100644 --- a/packages/spec/src/data/unique-scope.test.ts +++ b/packages/spec/src/data/unique-scope.test.ts @@ -16,7 +16,7 @@ import { IndexSchema } from './object.zod'; * place). Rejected words carry the fix: `'tenant'`/`'org'` name * `'organization'` in the parse error (ADR-0120 §Terminology). */ -describe('UniqueScope (#3696, ADR-0120)', () => { +describe('UniqueScope (ADR-0120) — bare `true` on a field is unique per organization; global uniqueness must be said', () => { describe('FieldSchema.unique', () => { it("accepts true / false / 'global' / 'organization'", () => { for (const unique of [true, false, 'global', 'organization'] as const) { diff --git a/packages/spec/src/data/validation-boundary-description.test.ts b/packages/spec/src/data/validation-boundary-description.test.ts index 94d56b02ad8..fea6df0276f 100644 --- a/packages/spec/src/data/validation-boundary-description.test.ts +++ b/packages/spec/src/data/validation-boundary-description.test.ts @@ -43,7 +43,7 @@ import { ScriptValidationSchema } from './validation.zod'; const fieldDoc = (key: string): string => ((FieldSchema.shape as Record)[key]?.description) ?? ''; -describe('#13879 — `Field.requiredWhen` states its TRANSITION-GATE semantics', () => { +describe('`Field.requiredWhen` states its TRANSITION-GATE semantics', () => { it('names the class and the exact rejection condition', () => { const doc = fieldDoc('requiredWhen'); expect(doc).toContain('TRANSITION GATE'); @@ -81,7 +81,7 @@ describe('#13879 — `Field.requiredWhen` states its TRANSITION-GATE semantics', }); }); -describe('#13879 — the field bounds state the same transition-gate class', () => { +describe('the field bounds state the same transition-gate class', () => { // Hardcoded rather than derived from a module set, so this is an independent // measurement of which keys carry the statement. it.each(['min', 'max', 'minLength', 'maxLength'])( @@ -108,7 +108,7 @@ describe('#13879 — the field bounds state the same transition-gate class', () ); }); -describe('#13879 — the inline-grid column `requiredWhen` says it enforces nothing', () => { +describe('the inline-grid column `requiredWhen` says it enforces nothing', () => { // The trap this closes: the grid column mirrors objectui's renderer and has // no write-path reader at all (`inlineColumns` is classified `presentation` // by driver-sql). An author who writes the requirement only here gets no @@ -127,7 +127,7 @@ describe('#13879 — the inline-grid column `requiredWhen` says it enforces noth }); }); -describe('#13879 — the `script` rule states its INVARIANT semantics', () => { +describe('the `script` rule states its INVARIANT semantics', () => { const doc = ((ScriptValidationSchema.shape as Record) .condition?.description) ?? ''; diff --git a/packages/spec/src/data/validation.test.ts b/packages/spec/src/data/validation.test.ts index 0027e344aea..e7a070ef18c 100644 --- a/packages/spec/src/data/validation.test.ts +++ b/packages/spec/src/data/validation.test.ts @@ -1117,7 +1117,7 @@ describe('ValidationRule - priority property', () => { }); }); -describe('ValidationRule - events property (#3184)', () => { +describe('ValidationRule - events property — insert and update only; a delete guard is a beforeDelete hook', () => { it('should accept insert / update events', () => { const rule = ScriptValidationSchema.parse({ type: 'script',