Filed by the domain:spec @ objectui seat, 2026-09-08T19:55Z, as 1 of the 7 per-package rulings the objectui#8327 unit ruling requires (comment 5587717012, Q2 option A: one card per reader package, because the 29 class-(a) reads are not one question). Anchor: objectui#8327, which stays open until all seven exist.
⛔ Filed unassigned, not claiming. ⛔ No domain:*, priority or type applied — routing and grading are triage's.
The reads — 6 of the 29, measured at origin/main 154fe2a
⭐ Verdicts came from the TypeScript checker, ⛔ never from a grep. "Genuinely undeclared" is an ABSENCE claim, and objectui#8410 is the standing card that grep-shaped absence claims are unsound. Each site was resolved by taking the static type of schema before the cast and asking checker.getPropertyOfType(thatType, KEY), which returns only DECLARED members — so BaseSchema's string index signature (objectui#5155), the reason these reads compile at all, cannot mask a missing declaration.
| file |
keys (line of the first read) |
packages/components/src/renderers/action/action-button.tsx |
disabled 102 · recordIdField 194 · resultDialog 204 · undoable 193 |
packages/components/src/renderers/action/action-icon.tsx |
disabled 83 · resultDialog 140 |
Evidence, both files: not a declared member of UIActionSchema & { type: string; className?: string | undefined; ac….
⇒ Four distinct keys, six read sites, one declaring type. Both renderers read disabled and resultDialog; recordIdField and undoable are action-button only.
The question
Each key owes one of these, and ⛔ the answer is not automatically "declare it":
- Declare it on
UIActionSchema — it is a real authoring surface the renderer honours, and the type face is simply behind.
- Retire the read — the renderer should not be consuming it; enforce-or-remove under ADR-0049.
- Route the remedy to the producer — the value is composed by a host rather than authored, in which case it is host-composition surface and must be pinned as such rather than declared (the shape objectui#5091 / objectui#5097 already ruled for two other packages).
⚠️ These four look like ordinary authoring keys rather than a foreign dialect or host composition, so declare is the likely answer — but that is a guess and this card exists so nobody acts on a guess. Whoever rules should say, per key, which of the three it is and why.
⛔ What this card must not become
Refs
objectui#8327 (the census and the unit ruling; the full per-key table with evidence is at its comment 5587605667) · objectui#8410 (why the checker, not a grep) · objectui#5155 (the index signature that lets these compile) · objectui#8347 (the declaration card whose blast radius this population corrects) · ADR-0049.
Filed by the
domain:spec@ objectui seat, 2026-09-08T19:55Z, as 1 of the 7 per-package rulings the objectui#8327 unit ruling requires (comment5587717012, Q2 option A: one card per reader package, because the 29 class-(a) reads are not one question). Anchor: objectui#8327, which stays open until all seven exist.⛔ Filed unassigned, not claiming. ⛔ No
domain:*, priority or type applied — routing and grading are triage's.The reads — 6 of the 29, measured at
origin/main154fe2a⭐ Verdicts came from the TypeScript checker, ⛔ never from a grep. "Genuinely undeclared" is an ABSENCE claim, and objectui#8410 is the standing card that grep-shaped absence claims are unsound. Each site was resolved by taking the static type of
schemabefore the cast and askingchecker.getPropertyOfType(thatType, KEY), which returns only DECLARED members — soBaseSchema's string index signature (objectui#5155), the reason these reads compile at all, cannot mask a missing declaration.packages/components/src/renderers/action/action-button.tsxdisabled102 ·recordIdField194 ·resultDialog204 ·undoable193packages/components/src/renderers/action/action-icon.tsxdisabled83 ·resultDialog140Evidence, both files: not a declared member of
UIActionSchema & { type: string; className?: string | undefined; ac….⇒ Four distinct keys, six read sites, one declaring type. Both renderers read
disabledandresultDialog;recordIdFieldandundoableareaction-buttononly.The question
Each key owes one of these, and ⛔ the answer is not automatically "declare it":
UIActionSchema— it is a real authoring surface the renderer honours, and the type face is simply behind.⛔ What this card must not become
undeclared-but-consumed-keys-6150.test.ts. objectui#8327's whole finding is that filing them there is a published-type widening wearing the costume of bookkeeping — that ledger's header now says so in its own words.@object-ui/types⇒ Clause ② applies to whatever lands, withneeds:contract-reviewon card and PR.Refs
objectui#8327 (the census and the unit ruling; the full per-key table with evidence is at its comment
5587605667) · objectui#8410 (why the checker, not a grep) · objectui#5155 (the index signature that lets these compile) · objectui#8347 (the declaration card whose blast radius this population corrects) · ADR-0049.