Filed unassigned by the domain:ui execution seat out of #7196 (session session_012wwHa4aaFybxXrfmfHioDM), whose dispatch order named this explicitly as report-only and ⛔ not a rider. Recording it so the observation has a home; grading and routing are triage's.
What was measured
packages/plugin-grid/src/ObjectGrid.tsx carries two held-key censuses, and only one of them can go red when a hold's entry condition expires.
An "undeclared-but-live HELD key" is a claim about another package. Both censuses say so in their own words: the entry condition is "undeclared by TableColumn" / "undeclared by DataTableSchema", and both warn that this "can stop being true with nothing going red here."
⇒ #6882 declared both keys on 2026-08-30. The schema-level census went stale that day, the suite beside it stayed green, and #7196 had to notice it by reading. That is the gap.
Why it is worth a gate rather than a note
The census is a document later readers trust instead of re-measuring — that is its purpose. #7196 re-derived all sixteen claims in the file and found seven defective, of which four had drifted and three were wrong on the day they were written. A hand-maintained census drifts at roughly the rate the packages around it move, and this file's neighbours moved three times in one day.
⚠️ The gate would also have caught the drift at the moment of loss, which is the only cheap moment: on the PR that declared the key, where the person holding the context is still in the room.
Shape it would take
The narrow version is the column-level twin, transplanted — a compile-time assertion per schema-level hold that the key is NOT a declared member of DataTableSchema, with a live positive control in the same suite:
- red when the key becomes declared (the event that expires the hold),
- green while it is genuinely held,
- and its failure message points at the census prose that then needs re-deriving.
The wider version is a derivation gate over the whole census — relationalMetaCopySet.derivation.test.ts is the closest analogue in this repo — deriving the hold set from the literals rather than pinning names one at a time.
⛔ Deliberately not decided here
Which of the two shapes to build, and whether this repo wants a fourth derivation gate at all, is a design decision with its own review. This repo already carries several, and adding one on the side of a comment correction is precisely the rider #7196's order refused. Recorded as an observation, not a proposal that has been argued.
Refs
Filed unassigned by the
domain:uiexecution seat out of #7196 (sessionsession_012wwHa4aaFybxXrfmfHioDM), whose dispatch order named this explicitly as report-only and ⛔ not a rider. Recording it so the observation has a home; grading and routing are triage's.What was measured
packages/plugin-grid/src/ObjectGrid.tsxcarries two held-key censuses, and only one of them can go red when a hold's entry condition expires.An "undeclared-but-live HELD key" is a claim about another package. Both censuses say so in their own words: the entry condition is "undeclared by
TableColumn" / "undeclared byDataTableSchema", and both warn that this "can stop being true with nothing going red here."columnHoldsExpiry-6424.test.tspins the entry condition directly — it assertsTableColumndoes NOT declarepinned, with a positive control on a key it does declare. If@object-ui/typesdeclarespinnedtomorrow, that suite goes red the same day, and the hold gets re-adjudicated instead of quietly rotting. That pin exists because DeclareheaderIcononTableColumn(interface + zod mirror + static tombstone); measure thefitContentauthor surface #6615 → finding(components):data-tablereads two column keysTableColumndoes not declare —headerIconandfitContent#6424 walked this exact path forheaderIcon.dataTableSchemaSlot-6459.test.tshas no such pin. Its one census assertion pins that the seam ACCEPTSrenderCellEditorandcellClassName— an assertion that is true while the keys are held locally and equally true once they arrive throughDeclaredDataTableSchema. An acceptance pin cannot express an entry condition, so it is green on both sides of the event it would need to detect.⇒ #6882 declared both keys on 2026-08-30. The schema-level census went stale that day, the suite beside it stayed green, and #7196 had to notice it by reading. That is the gap.
Why it is worth a gate rather than a note
The census is a document later readers trust instead of re-measuring — that is its purpose. #7196 re-derived all sixteen claims in the file and found seven defective, of which four had drifted and three were wrong on the day they were written. A hand-maintained census drifts at roughly the rate the packages around it move, and this file's neighbours moved three times in one day.
Shape it would take
The narrow version is the column-level twin, transplanted — a compile-time assertion per schema-level hold that the key is NOT a declared member of
DataTableSchema, with a live positive control in the same suite:The wider version is a derivation gate over the whole census —
relationalMetaCopySet.derivation.test.tsis the closest analogue in this repo — deriving the hold set from the literals rather than pinning names one at a time.⛔ Deliberately not decided here
Which of the two shapes to build, and whether this repo wants a fourth derivation gate at all, is a design decision with its own review. This repo already carries several, and adding one on the side of a comment correction is precisely the rider #7196's order refused. Recorded as an observation, not a proposal that has been argued.
Refs
ObjectGrid's held-key census still callsrenderCellEditorundeclared and its ruling "pending" — #6882 declared it two days ago, so the comment now states the opposite of the tree #7196 — the re-derivation that surfaced this. Its PR corrects the prose and states in the docblock that nothing guards it.ObjectGridDataTableSchemaHolds' docblock forbids the exact declaration the 2026-08-30 ruling authorised — and the seam hold itself is now redundant #6919 — the sibling finding on the same type, open: retire the now-redundant seam hold or record why it survives.renderCellEditorand schema-levelcellClassNameonDataTableSchema? — the two live undeclared keys the #6459 census measured #6882 — the 2026-08-30 ruling that declared both keys.data-tablereads two column keysTableColumndoes not declare —headerIconandfitContent#6424 / DeclareheaderIcononTableColumn(interface + zod mirror + static tombstone); measure thefitContentauthor surface #6615 — the column-level precedent, where the pin now exists.