Observation-class record from #7327's implementation (PR #7387), filed by the dispatching PM so it is not lost to session memory. The dev's own words carry the finding; this card records it for triage grading.
The fragility
packages/qa/dogfood/test/expression-conformance.test.ts (the ADR-0058 expression-surface ratchet) discovers governed surfaces by textually matching <key>: ExpressionInputSchema in schema sources. Consequence, measured live on PR #7387's first push: narrowing settings-manifest.zod.ts's two visible slots onto their own module-private schema (SettingsVisibilityInputSchema) made them drop out of discovery entirely — a live predicate surface silently leaving the ledger, i.e. the #1887 class that ledger exists to catch. Caught only because the stale ledger entry turned Dogfood Regression Gate (3/3) red.
Mitigation already landed (PR #7387)
Discovery now reads a registered schema-name list instead of one hardcoded name, and the trap is written down in both the test and the ledger header. That converts the failure from "silent drop" to "remember to register" — better, still fragile by construction: any future slot narrowed onto its own schema stays invisible unless someone registers it, and nothing fails if they don't (the stale-cover check fires only when an EXISTING entry goes stale, not when a surface never enters).
The structural fix (not attempted — larger than #7327's card)
Discover by resolved type rather than by identifier text — e.g. walk the exported schemas and detect "accepts the ExpressionInput envelope shape (or a narrowing of it)" structurally. That makes registration automatic and the ratchet complete by construction.
Refs
Filed unlabeled and unassigned for triage per the filing discipline. Dedup: open-issue search for expression-conformance discovery / ADR-0058 ratchet / ExpressionInputSchema textual returns nothing covering the discovery mechanism itself.
Observation-class record from #7327's implementation (PR #7387), filed by the dispatching PM so it is not lost to session memory. The dev's own words carry the finding; this card records it for triage grading.
The fragility
packages/qa/dogfood/test/expression-conformance.test.ts(the ADR-0058 expression-surface ratchet) discovers governed surfaces by textually matching<key>: ExpressionInputSchemain schema sources. Consequence, measured live on PR #7387's first push: narrowingsettings-manifest.zod.ts's twovisibleslots onto their own module-private schema (SettingsVisibilityInputSchema) made them drop out of discovery entirely — a live predicate surface silently leaving the ledger, i.e. the #1887 class that ledger exists to catch. Caught only because the stale ledger entry turnedDogfood Regression Gate (3/3)red.Mitigation already landed (PR #7387)
Discovery now reads a registered schema-name list instead of one hardcoded name, and the trap is written down in both the test and the ledger header. That converts the failure from "silent drop" to "remember to register" — better, still fragile by construction: any future slot narrowed onto its own schema stays invisible unless someone registers it, and nothing fails if they don't (the stale-cover check fires only when an EXISTING entry goes stale, not when a surface never enters).
The structural fix (not attempted — larger than #7327's card)
Discover by resolved type rather than by identifier text — e.g. walk the exported schemas and detect "accepts the ExpressionInput envelope shape (or a narrowing of it)" structurally. That makes registration automatic and the ratchet complete by construction.
Refs
visiblegrammar the evaluator actually implements (#7327) #7387 (the mitigation + trap documentation; commit 60b3120 is the CI-forced fix)visibledeclaration to the grammar the save-time evaluator actually implements (#7169 alignment half, measured 1-vs-93) #7327 / OS-DEV-REPORT comment 5238208223 (the dev's full account, "open_questions" section)settings-visibilityledger row +ExprDialectmember added thereFiled unlabeled and unassigned for triage per the filing discipline. Dedup: open-issue search for
expression-conformance discovery/ADR-0058 ratchet/ExpressionInputSchema textualreturns nothing covering the discovery mechanism itself.