Found during the #7990 spec-half census (dev session session_0123k4cam2jEAkPmbJeoaY3r, 2026-08-12). Filed unassigned for triage to grade and route; not fixed in the #7990 PR — the maintainer's Option-A ruling (#7990 comment 5266068845) scoped that fix to the two measured surfaces (driver config, connector authentication) and parked the class-level sys_metadata write-boundary guard with reopen trigger = "a third measured artefact-type surface". This card is the census input for that trigger, not a re-litigation of the ruling.
What was measured (file:line on origin/main, 2026-08-12)
packages/spec/src/data/external-lookup.zod.ts — ExternalDataSourceSchema.authentication is { type: 'oauth2' | 'api-key' | 'basic' | 'none', config: … } whose module docblock's own example writes "clientSecret": "..." inline (~L23). The schema accepts inline secrets in authentication.config.packages/spec/src/system/message-queue.zod.ts:60-65 — MessageQueueConfigSchema.sasl declares password: z.string().describe('SASL password') — a required inline broker credential when sasl is present.
What was NOT measured (the grading question)
Whether either schema is reachable from a sys_metadata publish door (metadata-type binding, stack collection, or /meta route) — i.e. whether these are cleartext-at-rest sinks like #7990's ①-c/①-d, or dormant declared shapes with no persisting consumer. ExternalDataSourceSchema sits in data/ next to field-level external-lookup config (plausibly authored inside object metadata); MessageQueueConfigSchema's consumers were not traced. If either is (a) reachable and persisted, it is a third measured surface for the parked Option-B guard; if (b) unreachable, ADR-0049 enforce-or-remove applies instead.
Prior art
Generated by Claude Code
Found during the #7990 spec-half census (dev session
session_0123k4cam2jEAkPmbJeoaY3r, 2026-08-12). Filed unassigned for triage to grade and route; not fixed in the #7990 PR — the maintainer's Option-A ruling (#7990 comment 5266068845) scoped that fix to the two measured surfaces (driver config, connectorauthentication) and parked the class-levelsys_metadatawrite-boundary guard with reopen trigger = "a third measured artefact-type surface". This card is the census input for that trigger, not a re-litigation of the ruling.What was measured (file:line on
origin/main, 2026-08-12)packages/spec/src/data/external-lookup.zod.ts—ExternalDataSourceSchema.authenticationis{ type: 'oauth2' | 'api-key' | 'basic' | 'none', config: … }whose module docblock's own example writes"clientSecret": "..."inline (~L23). The schema accepts inline secrets inauthentication.config.packages/spec/src/system/message-queue.zod.ts:60-65—MessageQueueConfigSchema.sasldeclarespassword: z.string().describe('SASL password')— a required inline broker credential whensaslis present.What was NOT measured (the grading question)
Whether either schema is reachable from a
sys_metadatapublish door (metadata-type binding, stack collection, or/metaroute) — i.e. whether these are cleartext-at-rest sinks like #7990's ①-c/①-d, or dormant declared shapes with no persisting consumer.ExternalDataSourceSchemasits indata/next to field-level external-lookup config (plausibly authored inside object metadata);MessageQueueConfigSchema's consumers were not traced. If either is (a) reachable and persisted, it is a third measured surface for the parked Option-B guard; if (b) unreachable, ADR-0049 enforce-or-remove applies instead.Prior art
sys_metadata.metadatais a general cleartext sink: any authored artefact whose schema permits an inline credential lands it there (datasourceconfig.password, connectorauthentication) #7990 — the ruled per-artefact closure (driver config + connector authoring door), spec half in PR (branchclaude/issue-7990-inline-credential-refusal).sys_sso_provider.oidc_configcarries the OIDCclientSecretin a cleartext JSON textarea, by its own field description #8009 — sibling:sys_sso_provider.oidc_configclientSecret.Generated by Claude Code