Repository navigation
Commit 450e030
fix(qa): give every expression declaration its own ratchet key (#15802)
* fix(qa): give every expression declaration its own ratchet key
The ADR-0058 D7 expression ledger keyed the ratchet as `file:field`, so two
different declarations of one field name in one file collapsed into a single
`Set` entry: one ledger row classified both, and the ratchet could not notice
it had never asked. 44 declaring positions reduced to 34 keys, with 10 keys
carrying two positions each.
Four of those collapses joined surfaces that are opposites, not near-duplicates
— most sharply `data/field.zod.ts:requiredWhen`, one key over the
server-enforced `FieldSchema` transition gate and the `InlineGridColumnSchema`
cell whose own describe says nothing on the write path reads it. A
declared-but-unwired predicate that says so in its own describe string was
invisible to the ledger built to surface exactly that class.
Discovery now yields one record per declaring POSITION and keys it
`file:Schema.field`, which separates all 44 today. That is a measurement, not a
guarantee — two same-named fields in different inline `z.object` blocks under
one top-level const would still collide — so the load-bearing half is a new
assertion that two positions sharing a key is a hard failure naming both
`file:line`s, rather than a silent merge. It holds for any naming scheme.
Every `covers` entry is re-pointed, and the four genuinely-different collapses
get honest rows: `cel-select-option-visible` (server-enforced on write via
rule-validator, with its proof), `cel-inline-grid-cell` (experimental — the
objectui evaluator is not in this checkout) and `cel-field-group-section`
(fail-closed, which is what separates it from `cel-ui`). Coverage does not
shrink: every position covered before is still covered, now by a row that can
tell the truth about it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D47qPfEWVPmhguWgBZCi5N
* fix(qa): keep tracker ids out of the ledger's runtime strings
`check:doc-authoring` caught two ids I had put in string prose rather than in
an adjacent comment: one in the new `cel-select-option-visible` enforcement and
one in the `cron-declared-unwired` note. A runtime string reaches authors and
operators who cannot resolve `#NNNN`; the reader who can resolve it reads the
source. The ids move to comments, and the note now says what changed rather
than which card changed it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D47qPfEWVPmhguWgBZCi5N
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 1f1b38d commit 450e030
2 files changed
Lines changed: 213 additions & 70 deletions
0 commit comments