Two triage gradings this session named, as the fix's target, a spelling or a shape that the governing adjudication had already rejected. In both the grading's reasoning was sound; only its target was wrong, and in both the error was caught at the execution seat's fence — in one case after a dispatch order had already been written.
Filing as one card because the two share a single failure mode, not because either is expensive on its own.
Instance 1 — #16867 (closed; fix landed as PR #17477)
Triage's grading said the fix was to make FieldSchema accept the name storageNotNull.
Reading ADR-0113 itself: storageNotNull is itself one of the rejected flat spellings. What Q1 adjudicated is the nested storage: { notNull: true }; the ADR's whole point is that there is no flat spelling of the column constraint.
Discriminating evidence, on origin/main 0ee32edef5 (read 2026-09-10T17:37Z), from the fix that actually landed:
packages/spec/src/data/field.zod.ts
const COLUMN_CONSTRAINT_FLAT_KEYS: KeySetGuidance = {
keys: /^(?:storage[_-]?)?not[_-]?null$/i,
examples: ['notNull', 'not_null', 'storageNotNull'],
storageNotNull ships as an example of a refused spelling — the exact opposite of what the grading asked to be accepted.
Instance 2 — #17425 (open; now in the decision box, rec D)
Triage's grading asked for a narrowing of the retired-default residue tolerance.
Fence verdict was branch 1, STOP: #12840's residue tolerance is a general rule carrying the marking "not re-adjudicable", and allowRestore / allowPurge are its founding case — the code reaches it through the class helper acceptRetiredDefaultResidue(...), not through a per-key arm. The requested narrowing would reverse the rule at its origin.
Liveness sweep behind that verdict: 181 raw-source occurrences, largest single site 150 in #12840's own founding artifact; lit controls 57 / 63; dark controls 0.
The shape
Not "triage graded on a stale premise" — the premise was current both times. It is: the grading named a target inside an adjudicated area without quoting the line of the adjudication it was targeting, so a target that the governing text explicitly rejects was not visible until a seat re-read the ADR.
Cross-links, so the skills seat can merge rather than duplicate if it grades them one class:
What I am NOT asking for
No grading and no label change from me — this is filed for the skills seat's own triage per the lane's self-triage rule. One candidate shape, offered and not asserted: require the grading that names a target inside an adjudicated area to quote the governing line, so a rejected target is visible before dispatch rather than at the fence.
Filed by the domain:spec execution seat, 2026-09-10T17:40Z.
Generated by Claude Code
Two triage gradings this session named, as the fix's target, a spelling or a shape that the governing adjudication had already rejected. In both the grading's reasoning was sound; only its target was wrong, and in both the error was caught at the execution seat's fence — in one case after a dispatch order had already been written.
Filing as one card because the two share a single failure mode, not because either is expensive on its own.
Instance 1 — #16867 (closed; fix landed as PR #17477)
Triage's grading said the fix was to make
FieldSchemaaccept the namestorageNotNull.Reading ADR-0113 itself:
storageNotNullis itself one of the rejected flat spellings. What Q1 adjudicated is the nestedstorage: { notNull: true }; the ADR's whole point is that there is no flat spelling of the column constraint.Discriminating evidence, on
origin/main0ee32edef5(read 2026-09-10T17:37Z), from the fix that actually landed:storageNotNullships as an example of a refused spelling — the exact opposite of what the grading asked to be accepted.Instance 2 — #17425 (open; now in the decision box, rec D)
Triage's grading asked for a narrowing of the retired-default residue tolerance.
Fence verdict was branch 1, STOP: #12840's residue tolerance is a general rule carrying the marking "not re-adjudicable", and
allowRestore/allowPurgeare its founding case — the code reaches it through the class helperacceptRetiredDefaultResidue(...), not through a per-key arm. The requested narrowing would reverse the rule at its origin.Liveness sweep behind that verdict: 181 raw-source occurrences, largest single site 150 in #12840's own founding artifact; lit controls 57 / 63; dark controls 0.
The shape
Not "triage graded on a stale premise" — the premise was current both times. It is: the grading named a target inside an adjudicated area without quoting the line of the adjudication it was targeting, so a target that the governing text explicitly rejects was not visible until a seat re-read the ADR.
Cross-links, so the skills seat can merge rather than duplicate if it grades them one class:
.changeset/seed-locale-axis.mdships two present-tense claims that PR #17013 makes false, and it is queued in the pending release PR #15334 — the correction cannot be made from the PR that falsifies it #17026 already carrypm:retriagefor a different shape — graded on a premise that had gone stale.Governing text:omitted the ADR that already decides it (ADR-0131 D8) reached batch presentation with a recommendation to re-rule — the text-level governing-text step failed at filing and at presentation; a mechanical prior-ruling search is asked #17009 is the adjacent class on the decision-card side: a decision card whoseGoverning text:omitted the ADR. Same cause, different surface. If the seat grades this one as [finding] #15929's class recurred on #16934: a decision card whoseGoverning text:omitted the ADR that already decides it (ADR-0131 D8) reached batch presentation with a recommendation to re-rule — the text-level governing-text step failed at filing and at presentation; a mechanical prior-ruling search is asked #17009's class, close this as duplicate rather than running both.What I am NOT asking for
No grading and no label change from me — this is filed for the skills seat's own triage per the lane's self-triage rule. One candidate shape, offered and not asserted: require the grading that names a target inside an adjudicated area to quote the governing line, so a rejected target is visible before dispatch rather than at the fence.
Filed by the
domain:specexecution seat, 2026-09-10T17:40Z.Generated by Claude Code