You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(qa): keep the settings visible slot in the ADR-0058 expression ratchet, classified honestly (#7327)
The expression-surface conformance ratchet discovers surfaces by matching
`<key>: ExpressionInputSchema` textually, so narrowing the two settings
`visible` slots onto their own schema dropped them out of the scan and turned
their ledger entry stale — a live predicate surface silently leaving the
ledger, which is the #1887 class the ledger exists to catch.
Discovery now reads a registered list of expression-declaring schema names
rather than one hardcoded name, with the failure mode written down: a slot
narrowed onto its own schema must register that schema on the same commit.
The classification is corrected while it is being moved. `settings-manifest
visible` sat under `cel-ui` — `dialect: 'cel'`, enforced by the SchemaRenderer
and celEngine — and is evaluated by neither. It gets its own `settings-visibility`
row naming `evaluateVisibility`, its closed grammar, and its fail-closed policy
(#7310), proved by the producer/consumer pin. `ExprDialect` gains a member for
it: the ledger records what a surface IS, and spelling this one `cel` would
restate in the ledger the exact claim #7327 removes from the schema.
Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdPj3S347aPWapzTuHCb4N
'service-settings `evaluateVisibility` (visibility-eval.ts), called from `SettingsService.validatePatch` — a closed grammar: single root `data`, one-level member access, `|| && !`, `=== !== == != >= <= > <`, parens, and string/number/bool/null literals, optionally `${…}`-wrapped, as a bare string or a `{dialect, source}` envelope. Fail-closed since #7310: a predicate outside the grammar REFUSES the save (SettingsValidationError, HTTP 400) instead of skipping the specifier — `visible` gates every other check on the key (`required`, `options`, `pattern`, `valueDomain`, the value window), so skipping it switched all of them off at once. The console evaluates the same string client-side through `new Function(...)`. Since #7327 the spec DECLARES that same grammar (`SettingsVisibilityInputSchema`), so it is refused at publish/parse too',
0 commit comments