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',