Filed by the domain:spec @ objectui seat, 2026-09-08T19:55Z, as 4 of the 7 per-package rulings the objectui#8327 unit ruling requires (comment 5587717012, Q2 option A). Anchor: objectui#8327.
⛔ Filed unassigned, not claiming. ⛔ No domain:*, priority or type applied — routing and grading are triage's.
Class (a) — undeclared on both arms, measured at origin/main 154fe2a by the TypeScript checker
| file |
keys (line of the first read) |
evidence |
plugin-calendar/src/ObjectCalendar.tsx |
allDayField 168 · calendar 157 · endDateField 165 · startDateField 162 |
not a declared member of ObjectGridSchema | CalendarSchema |
⭐ And the reason this package's card is different: it owns ALL EIGHT class-(b)/(a) reads
ObjectCalendar is handed a union, and for eight further keys the key is declared on exactly one arm. The classifier asked the union arm by arm rather than collapsing it — which is why these are their own class and not swept into (a):
| key (first read) |
declared on |
undeclared on |
colorField 167 |
CalendarSchema (ObjectCalendar.tsx:74) |
ObjectGridSchema |
dateField 162 |
CalendarSchema (:71) |
ObjectGridSchema |
defaultView 231 |
CalendarSchema (:78) |
ObjectGridSchema |
endField 165 |
CalendarSchema (:72) |
ObjectGridSchema |
titleField 166 |
CalendarSchema (:73) |
ObjectGridSchema |
data 274 |
ObjectGridSchema (types/src/objectql.ts:665) |
CalendarSchema |
navigation 645 |
ObjectGridSchema (objectql.ts:960) |
CalendarSchema |
staticData 275 |
ObjectGridSchema (objectql.ts:746) |
CalendarSchema |
⇒ The cast is doing real work here, and it is hiding a genuine modelling question rather than a forgotten declaration: this renderer is handed two schema shapes and reads members of both. ⚠️ Note the near-collision in the class-(a) row — endDateField and startDateField are undeclared on both arms while endField and dateField are declared on CalendarSchema. Two spellings for what may be the same concept is the shape ADR-0049 exists for, and it should be settled here rather than declared twice.
The questions
- The union itself. Is
ObjectCalendar supposed to accept both shapes? If yes, the eight one-arm keys need either a common declared base or an explicit narrowing at the seam; if no, the union is the defect and the cast disappears with it. ⛔ This is the first question — the class-(a) four cannot be answered while the union is unsettled.
- The four undeclared keys, per key: declare · retire the read · or route to the producer as host-composition surface (pinned, ⛔ not declared — the shape objectui#5091 / objectui#5097 already ruled elsewhere).
endDateField / startDateField vs endField / dateField — one concept or two? If one, the retirement is the spelling, not the member.
⛔ What this card must not become
⛔ Not rows in undeclared-but-consumed-keys-6150.test.ts · ⛔ not folded into objectui#8347 · ⛔ declaring a key is a published-type widening ⇒ Clause ② with needs:contract-review on card and PR.
Refs
objectui#8327 (census, unit ruling, full per-key table at comment 5587605667) · objectui#8410 (why the checker, not a grep) · objectui#5155 · objectui#8347 · ADR-0049.
Filed by the
domain:spec@ objectui seat, 2026-09-08T19:55Z, as 4 of the 7 per-package rulings the objectui#8327 unit ruling requires (comment5587717012, Q2 option A). Anchor: objectui#8327.⛔ Filed unassigned, not claiming. ⛔ No
domain:*, priority or type applied — routing and grading are triage's.Class (a) — undeclared on both arms, measured at
origin/main154fe2aby the TypeScript checkerplugin-calendar/src/ObjectCalendar.tsxallDayField168 ·calendar157 ·endDateField165 ·startDateField162ObjectGridSchema | CalendarSchema⭐ And the reason this package's card is different: it owns ALL EIGHT class-(b)/(a) reads
ObjectCalendaris handed a union, and for eight further keys the key is declared on exactly one arm. The classifier asked the union arm by arm rather than collapsing it — which is why these are their own class and not swept into (a):colorField167CalendarSchema(ObjectCalendar.tsx:74)ObjectGridSchemadateField162CalendarSchema(:71)ObjectGridSchemadefaultView231CalendarSchema(:78)ObjectGridSchemaendField165CalendarSchema(:72)ObjectGridSchematitleField166CalendarSchema(:73)ObjectGridSchemadata274ObjectGridSchema(types/src/objectql.ts:665)CalendarSchemanavigation645ObjectGridSchema(objectql.ts:960)CalendarSchemastaticData275ObjectGridSchema(objectql.ts:746)CalendarSchema⇒ The cast is doing real work here, and it is hiding a genuine modelling question rather than a forgotten declaration: this renderer is handed two schema shapes and reads members of both.⚠️ Note the near-collision in the class-(a) row —
endDateFieldandstartDateFieldare undeclared on both arms whileendFieldanddateFieldare declared onCalendarSchema. Two spellings for what may be the same concept is the shape ADR-0049 exists for, and it should be settled here rather than declared twice.The questions
ObjectCalendarsupposed to accept both shapes? If yes, the eight one-arm keys need either a common declared base or an explicit narrowing at the seam; if no, the union is the defect and the cast disappears with it. ⛔ This is the first question — the class-(a) four cannot be answered while the union is unsettled.endDateField/startDateFieldvsendField/dateField— one concept or two? If one, the retirement is the spelling, not the member.⛔ What this card must not become
⛔ Not rows in
undeclared-but-consumed-keys-6150.test.ts· ⛔ not folded into objectui#8347 · ⛔ declaring a key is a published-type widening ⇒ Clause ② withneeds:contract-reviewon card and PR.Refs
objectui#8327 (census, unit ruling, full per-key table at comment
5587605667) · objectui#8410 (why the checker, not a grep) · objectui#5155 · objectui#8347 · ADR-0049.