Skip to content

[plugin-calendar] declare the remaining spec keys object-calendar reads — data · staticData · loading (objectui#8201 slice 2b) #8314

Description

@os-justin

Slice 2b of objectui#8201, split by package under the PM ruling Q2 = B on that card. Filed by the domain:ui PM seat. ⛔ Not claimed.

Why split by package

Each member pin has to be measured at its own sink, and objectui#8223 proved how easily a sink is assumed wrong — its sort pin could never have been an identity pin because convertSortToQueryParams builds a new map, while objectui#8212's landed rider note had predicted the opposite. Splitting also keeps each PR inside the plugin package's own __tests__ dir, where the worked precedents live.

Scope — three keys

object-calendar (both tags: plugin-calendar:object-calendar and view:calendar):

key declared arm note
data array owes a MEMBER_PINS entry
staticData array owes a MEMBER_PINS entry
loading boolean ⚠️ scalar — see below

All three were measured genuinely spec-declared in slice 1, with a control key drawing unrecognized_keys on the same safeParse call shape while none of these was refused by name. ⛔ objectui#8172's limit trap does not apply.

⚠️ Why loading is here and not in slice 1

loading is scalar, so it owes no member pin and slice 1's boundary (scalar-armed keys only) would otherwise have taken it. It was deliberately held back: it is inert without data — a loading flag on a block that cannot be handed rows says nothing — so it ships with the key that makes it meaningful.

⇒ if your measurement contradicts that (e.g. loading is honoured independently of data), say so and declare it on its own terms; the pairing is slice 1's reasoning, not a measured requirement.

⚠️ The three-part obligation each array-armed declaration owes

Since objectui#8212 landed:

  1. the inputs entry;
  2. deletion of its UNPUBLISHED_EXEMPTIONS entry in the same change;
  3. a MEMBER_PINS entry — ⛔ never a member-pin exemption. MEMBER_PIN_EXEMPTION_CEILING stays 62; an assertion pins four keys by name so a fifth cannot ride that headroom.

⚠️ Both halves of the shrink-only backlog ceiling move (toBeLessThanOrEqual and toBe, same it()) — moving only toBe banks headroom the ratchet exists to refuse.

⚠️ Measure each sink

Three worked precedents on main, two of them for this very package:

  • packages/plugin-calendar/src/__tests__/ObjectCalendar.filterIsNotAConfigSlot-7711.test.tsx — identity (toBe)
  • packages/plugin-calendar/src/__tests__/ObjectCalendar.sortMembersReachTheWire-8171.test.tsxnot identity; asserts what is read inside the member
  • packages/plugin-kanban/src/__tests__/ObjectKanban.filterMembersReachTheWire-8176.test.tsx

⛔ Do not assume which shape applies. ⚠️ objectui#8269 showed a sharper version of the same trap: a resolver answering which field and one answering which column the rows carry coincide only when no alias is written.

⚠️ One measured oddity in this package worth knowing before writing the data pin: getCalendarConfig (packages/plugin-calendar/src/ObjectCalendar.tsx:156) returns the block as soon as schema.calendar is truthy, so calendar: {} yields startDateField: undefined and every record lands in unscheduledRecords — degraded-but-visible, which is the ruled objectui#7071 behaviour rather than a defect. Recorded because the spec now refuses calendar: {} at its own doors while objectui's .partial() mirror accepts it, so the two faces disagree by design.

Related

objectui#8201 (parent, slice 1 = PR #8309) · objectui#8212 · objectui#8223 · objectui#7071 · objectui#8170 (the refusal screen on this renderer still names titleField, which spec 17.3.0 made optional).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatfindingpluginpm:dispatchedpriority:p2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions