Finding (observation, awaiting first grading). Measured by the os-dev seat working objectui#5174 batch 13 (PR to follow, packages/plugin-calendar/README.md leaving UNGATED_DOCS). ⛔ Deliberately NOT fixed there: that batch's disposition is snippet coverage, every one of these blocks already COMPILES, and repairing them is an authoring decision plus a lenient-alias question, not a coverage one. Unassigned and bare — domain:* and grading are triage's.
What is true today (measured at origin/main db2c20d08)
packages/plugin-calendar/README.md teaches the object-calendar node in two example blocks. Between them they author six keys. The renderer reads none of them as written.
Block 1 — "With ObjectQL Integration" (README line 262)
const schema = {
type: 'object-calendar',
object: 'events',
titleField: 'name',
startField: 'startDate',
endField: 'endDate',
colorField: 'category.color'
};
| key taught |
declared on ObjectCalendarSchema? |
read by the renderer? |
object |
no (it declares objectName) |
no — packages/plugin-calendar/src/ObjectCalendar.tsx reads schema.objectName at 26 sites and schema.object at none |
startField |
no |
no — no read site anywhere in the package |
endField |
no |
only inside a branch this example never enters (below) |
colorField |
no |
same branch |
titleField |
yes |
same branch |
The branch is the decisive part. getCalendarConfig (ObjectCalendar.tsx:119) reaches the flat-property ladder only through this gate at :131:
if ((schema as any).startDateField || (schema as any).dateField) {
The example supplies startField — neither of those two spellings — so the gate is false, getCalendarConfig returns null, and titleField / endField / colorField are never read even though two of them are spelled the way the ladder would accept. A reader who copies this block gets a calendar bound to no object and configured by nothing.
Block 2 — "ObjectQL Integration" (README line 314)
const schema = {
type: 'object-calendar',
dataSource,
object: 'calendar_events',
fields: { title: 'title', start: 'start_time', end: 'end_time', color: 'category_color' }
};
fields is not declared on ObjectCalendarSchema and has no read site in plugin-calendar (the only fields read, ObjectCalendar.tsx:484, is the OBJECT definition's field map, not the node's). dataSource is not an authorable node key at all — AGENTS.md §5 #1 says it is injected as <SchemaRendererProvider dataSource={...} />. object is wrong here for the same reason as above.
For reference, ObjectCalendarSchema (packages/types/src/objectql.ts:2672) declares exactly: type, objectName?, data?, staticData?, startDateField?, endDateField?, titleField?, defaultView?.
Why no gate catches this, which is the part worth keeping
Three gates are green on these two blocks right now, and each is green for its own stated reason:
check-doc-component-types verifies the type literal object-calendar, which is correct.
check-doc-snippet-types compiles the blocks, and they compile — the literals carry no annotation, so nothing is compared against ObjectCalendarSchema.
- Annotating them would not fix that.
ObjectCalendarSchema extends BaseSchema, and BaseSchema closes with [key: string]: any (packages/types/src/base.ts:467), so every one of these six keys type-checks under the annotation too. Measured directly on the sibling CalendarViewSchema in batch 13's probe P5: renaming titleField to titleFieldd inside an annotated block leaves the gate at exit 0. Filed separately.
This is objectui#5138's shape 1 with a concrete instance, and the same sentence the snippet gate's own header uses for objectui#5174: the gate looked at the one key that was correct.
Scope, if this is graded for work
- Decide the intended authored form of an
object-calendar node — objectName is the only spelling the renderer honours, so the README's object is simply wrong and mechanical to repair.
startField has no read site; endField / dateField are lenient (schema as any) aliases read behind the :131 gate. AGENTS.md §5 #0.1 says a fallback alias belongs at the producer, not the consumer — so the honest question is whether those aliases should be removed and the README pointed at startDateField / endDateField, not whether to teach the aliases.
fields and node-level dataSource look like they predate the current DataSource injection contract; confirm before rewriting either block.
- Whatever lands, a pin is what keeps it:
packages/plugin-calendar/src/readme-calendar-view-schema.test.ts already holds the calendar-view fence to CalendarViewSchema by parsing both sides from source. There is no equivalent for the object-calendar blocks, which is why these drifted silently.
Related: objectui#7780 (ObjectKanbanSchema — a declared/read mismatch on a sibling view schema), objectui#7711 and objectui#7311 (both on plugin-calendar's config plumbing), objectui#7661 (ObjectCalendar among the three renderers that ignore a bare-array data), objectui#5138 (the shape).
Generated by Claude Code
Finding (observation, awaiting first grading). Measured by the
os-devseat working objectui#5174 batch 13 (PR to follow,packages/plugin-calendar/README.mdleavingUNGATED_DOCS). ⛔ Deliberately NOT fixed there: that batch's disposition is snippet coverage, every one of these blocks already COMPILES, and repairing them is an authoring decision plus a lenient-alias question, not a coverage one. Unassigned and bare —domain:*and grading are triage's.What is true today (measured at
origin/maindb2c20d08)packages/plugin-calendar/README.mdteaches theobject-calendarnode in two example blocks. Between them they author six keys. The renderer reads none of them as written.Block 1 — "With ObjectQL Integration" (README line 262)
ObjectCalendarSchema?objectobjectName)packages/plugin-calendar/src/ObjectCalendar.tsxreadsschema.objectNameat 26 sites andschema.objectat nonestartFieldendFieldcolorFieldtitleFieldThe branch is the decisive part.
getCalendarConfig(ObjectCalendar.tsx:119) reaches the flat-property ladder only through this gate at:131:The example supplies
startField— neither of those two spellings — so the gate is false,getCalendarConfigreturnsnull, andtitleField/endField/colorFieldare never read even though two of them are spelled the way the ladder would accept. A reader who copies this block gets a calendar bound to no object and configured by nothing.Block 2 — "ObjectQL Integration" (README line 314)
fieldsis not declared onObjectCalendarSchemaand has no read site inplugin-calendar(the onlyfieldsread,ObjectCalendar.tsx:484, is the OBJECT definition's field map, not the node's).dataSourceis not an authorable node key at all — AGENTS.md §5 #1 says it is injected as<SchemaRendererProvider dataSource={...} />.objectis wrong here for the same reason as above.For reference,
ObjectCalendarSchema(packages/types/src/objectql.ts:2672) declares exactly:type,objectName?,data?,staticData?,startDateField?,endDateField?,titleField?,defaultView?.Why no gate catches this, which is the part worth keeping
Three gates are green on these two blocks right now, and each is green for its own stated reason:
check-doc-component-typesverifies thetypeliteralobject-calendar, which is correct.check-doc-snippet-typescompiles the blocks, and they compile — the literals carry no annotation, so nothing is compared againstObjectCalendarSchema.ObjectCalendarSchema extends BaseSchema, andBaseSchemacloses with[key: string]: any(packages/types/src/base.ts:467), so every one of these six keys type-checks under the annotation too. Measured directly on the siblingCalendarViewSchemain batch 13's probe P5: renamingtitleFieldtotitleFielddinside an annotated block leaves the gate at exit 0. Filed separately.This is objectui#5138's shape 1 with a concrete instance, and the same sentence the snippet gate's own header uses for objectui#5174: the gate looked at the one key that was correct.
Scope, if this is graded for work
object-calendarnode —objectNameis the only spelling the renderer honours, so the README'sobjectis simply wrong and mechanical to repair.startFieldhas no read site;endField/dateFieldare lenient(schema as any)aliases read behind the:131gate. AGENTS.md §5 #0.1 says a fallback alias belongs at the producer, not the consumer — so the honest question is whether those aliases should be removed and the README pointed atstartDateField/endDateField, not whether to teach the aliases.fieldsand node-leveldataSourcelook like they predate the current DataSource injection contract; confirm before rewriting either block.packages/plugin-calendar/src/readme-calendar-view-schema.test.tsalready holds thecalendar-viewfence toCalendarViewSchemaby parsing both sides from source. There is no equivalent for theobject-calendarblocks, which is why these drifted silently.Related: objectui#7780 (
ObjectKanbanSchema— a declared/read mismatch on a sibling view schema), objectui#7711 and objectui#7311 (both onplugin-calendar's config plumbing), objectui#7661 (ObjectCalendaramong the three renderers that ignore a bare-arraydata), objectui#5138 (the shape).Generated by Claude Code