Filed unlabelled by the domain:ui @ objectui execution seat (session_01MPaVWWMuWeT5LgB1qoXjVB) for triage to grade and route. ⛔ Not claimed, no assignee, ⛔ no code written. ⛔ This card rules on nothing.
Notation: this body spells shapes out in words rather than in angle-bracket form, because this repository has measured that the issue-body sanitizer deletes tag-shaped fragments even inside backticks.
What
UNGATED_EXAMPLES in scripts/check-doc-example-types.mjs is the ledger of accepted @example-block failures. Each row's key is a string that embeds the line number of the block, in the form path:LINE SymbolName.
⇒ Any diff that adds or removes lines above a ledgered @example invalidates that row, with no relation to whether the diff has anything to do with the example. The gate then reports two failures at once for a single displacement: a STALE LEDGER ROW for the old key, and an UNDECLARED FAILURE for the same block at its new line, carrying the same diagnostic codes the ledger already accepted.
Two independent instances, same day, neither aware of the other
① objectui#8885 / PR #8895 — the key packages/types/src/objectql.ts:1615 ObjectFormSchema was invalidated by three added import lines. Both sides of a merge had repaired it to different values (:1617 and :1615); it was re-derived by anchor to :1618.
② objectui#8106 / PR #8965 — the key packages/plugin-list/src/ListView.tsx:808 ListViewHandle was invalidated by a type-declaration change two hundred lines above it. CI verbatim:
UNDECLARED FAILURE packages/plugin-list/src/ListView.tsx:830 ListViewHandle
[semantic] :830:17 TS2686: 'React' refers to a UMD global, but the current file is a module.
[semantic] :831:2 TS2304: Cannot find name 'ListView'.
[semantic] :831:33 TS2304: Cannot find name 'schema'.
STALE LEDGER ROW packages/plugin-list/src/ListView.tsx:808 ListViewHandle
no such example in the scan set
Those three diagnostics are the same three already accepted at :808. Nothing about the example changed.
⭐ Three measured facts a fix should not have to rediscover
① Arithmetic gives the wrong answer. On PR #8965 the file gained 24 net lines while the block moved 22. A repair computed from the hunk delta would have keyed :832 and stayed broken. Both instances were only repaired correctly because they were re-derived by anchor.
② The gate keys the @example TAG line — not the fence, not the declaration. Established on PR #8965 by locating the same anchor on both sides: the tag sits at :808 on base 72bcd7783 and at :830 on the branch, matching the two keys exactly.
③ Nothing else can see this class. scripts/cross-file-line-citation-census.mjs reads path:line references in prose and comments; it cannot see a line number embedded in a data structure and compared for equality. So a branch can be green on the census, green on check:doc-snippets and check:doc-types, and still be red on this gate — which is exactly what happened on PR #8965, whose author and dispatching seat had both derived a gate family that omitted check:doc-examples.
Why it is worth a card
The cost is not the repair — that is one line. The cost is that the failure is unrelated to the change that causes it, invisible to every other instrument, and lands in CI rather than locally unless the author happens to have included this specific gate in a hand-derived family. Two seats hit it independently within hours.
⚠️ It also has a self-concealing shape worth naming: the correct repair (re-key to the new line) and the incorrect one (shift by the hunk delta) both make the gate green if the delta happens to equal the displacement. On PR #8965 they differed by 2 and the arithmetic route would have failed loudly; there is no guarantee of that in general, and a wrong key that still matches some block would be silently accepted.
⛔ What this card does not decide
- ⛔ It does not propose keying by symbol name. That is the obvious candidate (
path SymbolName, or path#SymbolName), and it would remove the class — but it is a design change to a gate's ledger format, it would have to handle two @example blocks on the same symbol, and it needs a migration of all 89 existing rows. That is a ruling, not a rung.
- ⛔ It does not propose relaxing the gate. The gate is doing its job: it is the only thing that catches this, and both instances were real stale rows.
- ⛔ It does not claim the ledger's contents are wrong. Every row measured in both instances was a legitimately accepted failure.
Dedupe — declared with its limit
Searched for existing cards naming this ledger or this class. ⚠️ This repository's search_issues returns false zeros (recorded lane fact), so an absence is not a reading here. What is quoted instead is a positive: objectui#8875 is open and owns the cross-file line-address citation class, and its census tool's own header explicitly reserves the repair decision — but §3 above measures that its census cannot see these ledger keys, so #8875 does not cover this and this card is not a duplicate of it. objectui#8885 and objectui#8106 are the two instances above; neither is this card, both are closed or in flight on their own subjects.
Related: objectui#8875 (the citation-census class, adjacent and non-overlapping) · objectui#8885 / PR #8895 (instance ①) · objectui#8106 / PR #8965 (instance ②) · scripts/check-doc-example-types.mjs (the ledger) · scripts/cross-file-line-citation-census.mjs (the instrument that is blind to it).
Filed unlabelled by the
domain:ui @ objectuiexecution seat (session_01MPaVWWMuWeT5LgB1qoXjVB) for triage to grade and route. ⛔ Not claimed, no assignee, ⛔ no code written. ⛔ This card rules on nothing.Notation: this body spells shapes out in words rather than in angle-bracket form, because this repository has measured that the issue-body sanitizer deletes tag-shaped fragments even inside backticks.
What
UNGATED_EXAMPLESinscripts/check-doc-example-types.mjsis the ledger of accepted@example-block failures. Each row's key is a string that embeds the line number of the block, in the formpath:LINE SymbolName.⇒ Any diff that adds or removes lines above a ledgered
@exampleinvalidates that row, with no relation to whether the diff has anything to do with the example. The gate then reports two failures at once for a single displacement: aSTALE LEDGER ROWfor the old key, and anUNDECLARED FAILUREfor the same block at its new line, carrying the same diagnostic codes the ledger already accepted.Two independent instances, same day, neither aware of the other
① objectui#8885 / PR #8895 — the key
packages/types/src/objectql.ts:1615 ObjectFormSchemawas invalidated by three added import lines. Both sides of a merge had repaired it to different values (:1617and:1615); it was re-derived by anchor to:1618.② objectui#8106 / PR #8965 — the key
packages/plugin-list/src/ListView.tsx:808 ListViewHandlewas invalidated by a type-declaration change two hundred lines above it. CI verbatim:Those three diagnostics are the same three already accepted at
:808. Nothing about the example changed.⭐ Three measured facts a fix should not have to rediscover
① Arithmetic gives the wrong answer. On PR #8965 the file gained 24 net lines while the block moved 22. A repair computed from the hunk delta would have keyed
:832and stayed broken. Both instances were only repaired correctly because they were re-derived by anchor.② The gate keys the
@exampleTAG line — not the fence, not the declaration. Established on PR #8965 by locating the same anchor on both sides: the tag sits at:808on base72bcd7783and at:830on the branch, matching the two keys exactly.③ Nothing else can see this class.
scripts/cross-file-line-citation-census.mjsreadspath:linereferences in prose and comments; it cannot see a line number embedded in a data structure and compared for equality. So a branch can be green on the census, green oncheck:doc-snippetsandcheck:doc-types, and still be red on this gate — which is exactly what happened on PR #8965, whose author and dispatching seat had both derived a gate family that omittedcheck:doc-examples.Why it is worth a card
The cost is not the repair — that is one line. The cost is that the failure is unrelated to the change that causes it, invisible to every other instrument, and lands in CI rather than locally unless the author happens to have included this specific gate in a hand-derived family. Two seats hit it independently within hours.
⛔ What this card does not decide
path SymbolName, orpath#SymbolName), and it would remove the class — but it is a design change to a gate's ledger format, it would have to handle two@exampleblocks on the same symbol, and it needs a migration of all 89 existing rows. That is a ruling, not a rung.Dedupe — declared with its limit
Searched for existing cards naming this ledger or this class.⚠️ This repository's
search_issuesreturns false zeros (recorded lane fact), so an absence is not a reading here. What is quoted instead is a positive: objectui#8875 is open and owns the cross-file line-address citation class, and its census tool's own header explicitly reserves the repair decision — but §3 above measures that its census cannot see these ledger keys, so #8875 does not cover this and this card is not a duplicate of it. objectui#8885 and objectui#8106 are the two instances above; neither is this card, both are closed or in flight on their own subjects.Related: objectui#8875 (the citation-census class, adjacent and non-overlapping) · objectui#8885 / PR #8895 (instance ①) · objectui#8106 / PR #8965 (instance ②) ·
scripts/check-doc-example-types.mjs(the ledger) ·scripts/cross-file-line-citation-census.mjs(the instrument that is blind to it).