Found while implementing #5740 (PR #5782, which retired 'agenda' from CalendarViewMode / CalendarViewModeSchema). Filed unassigned, not claiming — this is the same declared-vs-enforced class on a different declaration, and #5740's ruling inheritance covered only the shared CalendarViewMode union on the calendar-view renderer, so narrowing these enums (a further accept-set change on other declared keys) needs its own pass rather than a rider on that PR.
Measured (on origin/main1f94b4c)
Three declaration faces admit 'agenda' for defaultView:
The enforcement point reads three values:
So an author writing the zod-valid defaultView: 'agenda' on an object-calendar node (or in a list view's calendar config) gets a month calendar with no error — the exact shape #5740 just closed on CalendarViewSchema.view. defaultView is a declared key on these schemas, so aligning it is an accept-set narrowing with the same clause-② character as #5740.
Authorship sweep: zero authors of defaultView: 'agenda' in-repo, in examples/, or in the objectstack tree (same sweep as #5740's, which matched every agenda occurrence in both repos).
Options (not mine to pick)
Back-links: #5740 (the sibling retirement on CalendarViewSchema.view and the measurement standard), #5667 (the parent ruling), PR #5782.
Generated by Claude Code
Found while implementing #5740 (PR #5782, which retired
'agenda'fromCalendarViewMode/CalendarViewModeSchema). Filed unassigned, not claiming — this is the same declared-vs-enforced class on a different declaration, and #5740's ruling inheritance covered only the sharedCalendarViewModeunion on thecalendar-viewrenderer, so narrowing these enums (a further accept-set change on other declared keys) needs its own pass rather than a rider on that PR.Measured (on
origin/main1f94b4c)Three declaration faces admit
'agenda'fordefaultView:packages/types/src/objectql.ts:1981—ObjectCalendarSchema.defaultView?: 'month' | 'week' | 'day' | 'agenda'(inline union, NOT a reference toCalendarViewMode— which is why finding(types/plugin-calendar):view: 'agenda'is declared byCalendarViewModeand the zod enum but thecalendar-viewrenderer silently falls back to'month'#5740's narrowing did not move it).packages/types/src/zod/objectql.zod.ts:617— the zodObjectCalendarSchema:defaultView: z.enum(['month', 'week', 'day', 'agenda']).packages/types/src/zod/objectql.zod.ts:346—CalendarConfig(the objectui-only extension ofSpecCalendarConfigSchema; its own comment says "the calendar renderer's initial view mode. No spec counterpart"): same four-value enum.The enforcement point reads three values:
packages/plugin-calendar/src/ObjectCalendar.tsx:66— its props type isdefaultView?: 'month' | 'week' | 'day', and line 182 reads(schema as any).defaultView as 'month' | 'week' | 'day' | undefined.CalendarView, which renders only those three (CalendarView.tsx:108); no agenda view exists (finding(types/plugin-calendar):view: 'agenda'is declared byCalendarViewModeand the zod enum but thecalendar-viewrenderer silently falls back to'month'#5740's measurement).So an author writing the zod-valid
defaultView: 'agenda'on anobject-calendarnode (or in a list view'scalendarconfig) gets a month calendar with no error — the exact shape #5740 just closed onCalendarViewSchema.view.defaultViewis a declared key on these schemas, so aligning it is an accept-set narrowing with the same clause-② character as #5740.Authorship sweep: zero authors of
defaultView: 'agenda'in-repo, inexamples/, or in the objectstack tree (same sweep as #5740's, which matched everyagendaoccurrence in both repos).Options (not mine to pick)
['month', 'week', 'day'], mirroring finding(types/plugin-calendar):view: 'agenda'is declared byCalendarViewModeand the zod enum but thecalendar-viewrenderer silently falls back to'month'#5740's inheritance basis (renderer authoritative, zero authors, new rejection stated in the changeset). The interface and zod twins move in lockstep.CalendarViewSchemadeclares 9 of its 13 keys that thecalendar-viewrenderer never reads — includingevents, its only required key, which the renderer deliberately drops #5667's ruling already rejected on implementation-first grounds, and these declarations feed the sameCalendarView.Back-links: #5740 (the sibling retirement on
CalendarViewSchema.viewand the measurement standard), #5667 (the parent ruling), PR #5782.Generated by Claude Code