Filed unassigned from the objectstack #15442 / #15449 consumer census (PM session session_01M59rPZZFzqhfMUPFqqZTkf, os-dev seat, 2026-09-05). Measured at the pin a472b07.
Measured
packages/plugin-calendar/src/ObjectCalendar.tsx:143-146:
function getCalendarConfig(schema) {
if ('filter' in schema && schema.filter && typeof schema.filter === 'object' && 'calendar' in schema.filter) {
return schema.filter.calendar;
Live in the render path: :271 const calendarConfig = useMemo(() => getCalendarConfig(schema), ...). The same schema.filter is also handed verbatim to the wire at :454 ($filter: schema.filter).
Why it matters
filter is a filter, not a configuration slot — the reading #4034 recorded for ObjectMap (getMapConfig reading filter.map) and closed. On the calendar it is still there: a MongoDB-style filter on an object that has a field named calendar (filter: { calendar: 'team' }, a legal FilterCondition) is read as the calendar config object, and the same value still goes to $filter, so one authored key is interpreted twice with two meanings. The spec side (objectstack ComponentPropsMap['object-calendar'], component.zod.ts:2708-2719) declares calendar as the canonical config object and filter as the base query filter; nothing in the spec admits a filter.calendar spelling.
Refs: #4034 (the map twin) · objectstack#15449 (the object-* filter doors census).
Generated by Claude Code
Filed unassigned from the objectstack #15442 / #15449 consumer census (PM session
session_01M59rPZZFzqhfMUPFqqZTkf, os-dev seat, 2026-09-05). Measured at the pina472b07.Measured
packages/plugin-calendar/src/ObjectCalendar.tsx:143-146:Live in the render path:
:271const calendarConfig = useMemo(() => getCalendarConfig(schema), ...). The sameschema.filteris also handed verbatim to the wire at:454($filter: schema.filter).Why it matters
filteris a filter, not a configuration slot — the reading #4034 recorded forObjectMap(getMapConfigreadingfilter.map) and closed. On the calendar it is still there: a MongoDB-style filter on an object that has a field namedcalendar(filter: { calendar: 'team' }, a legalFilterCondition) is read as the calendar config object, and the same value still goes to$filter, so one authored key is interpreted twice with two meanings. The spec side (objectstackComponentPropsMap['object-calendar'],component.zod.ts:2708-2719) declarescalendaras the canonical config object andfilteras the base query filter; nothing in the spec admits afilter.calendarspelling.Refs: #4034 (the map twin) · objectstack#15449 (the
object-*filterdoors census).Generated by Claude Code