Repository navigation
Commit ec2ede0
fix(spec): the calendar binding warning describes the refusal objectui#7029 left, not the fallback it deleted (#19623)
Fixes #17445
Clause-②: no
## What was wrong
Two carriers in `packages/spec/src/kernel/functional-completeness.ts`
asserted the same renderer behaviour, and objectui deleted it:
- `VIEW_BINDING_BLOCKS`' calendar row — `calendar` goes to
`startDateField || 'start_date'`, `endDateField || 'end_date'` — stated
as **measured**, against "the built console 17.2.0";
- the body `checkViewCompleteness` emits on the
`view/layout-without-binding` route: "the renderer falls back to literal
default field names ... the view renders empty while authoring reports
success".
## The re-verification — mine, at my own ref
⛔ The card's measurement (objectui `3fbdd4a2d`, 2026-09-10) was **not**
taken on trust. Re-read on objectui `main` at **`0cf2d6644`**
(2026-09-21), and again at the pin this repo builds against,
`.objectui-sha` = `87af769e9` (2026-09-20). **Both measured facts hold
at both refs; only half ① is byte-identical.** Half ①,
`packages/plugin-list/src/ListView.tsx`, is byte-identical across the
two refs — `git log 87af769e9..0cf2d6644 --
packages/plugin-list/src/ListView.tsx` is empty, and so is the file
diff. Half ②, `packages/plugin-calendar/src/ObjectCalendar.tsx`, is
**not**: 43 insertions / 17 deletions, one commit, objectui `afb228418`
(objectui#10101, routing the component's copy through the locale packs).
What the finding rests on survives that commit exactly:
`getCalendarConfig` occupies lines 287–313 at **both** refs with an
md5-identical body (`3424cd63d0300a8ad7c3f78c233f742f`), and the refusal
sentence is character-identical at both refs — objectui#10101 moved it
out of JSX text into the English default of
`tt('calendar.configRequired', …)`, so the rendered string is unchanged
at the pin this repo ships while a non-English locale on objectui's head
renders other words. The in-tree docblock already had the accurate
wording ("Both reads are identical at the pin"); this paragraph now
matches it rather than over-claiming past it:
1. `packages/plugin-list/src/ListView.tsx`, `case 'calendar':` — the two
literal floors are gone. The branch resolves `startDateField` /
`endDateField` / `titleField` from the declared block only and spreads
each conditionally; its comment records objectui#7029 and the reason
("field names no view had written and most objects do not carry").
2. `packages/plugin-calendar/src/ObjectCalendar.tsx` —
`getCalendarConfig(schema)` returns `null` with neither a `calendar`
block nor a flat `startDateField`, and the `if (!calendarConfig)` arm
renders the refusal screen.
Two deltas against the card, both in the same direction:
- The refusal text has **moved since the card**: objectui#8170 corrected
it to "Calendar configuration required. Please specify startDateField,
the calendar's one required key; the event title resolves without
titleField." — `titleField` is **not** required, which matches
`CalendarConfigSchema` on this side (one required key:
`startDateField`).
- The flat `dateField` rung the card's sentence named is **retired**
(objectui#8355); `getCalendarConfig` reads the declared spellings only.
⇒ the claim under test is confirmed dead, and confirmed dead in the tree
this repo ships, not just in objectui's head.
## What this PR changes
- **The calendar row** now states what the two reads show, names both
refs, and cites objectui#7029 / objectui#8170 rather than a 17.2.0
reading.
- **The docblock's opening premise** no longer generalises one row to
the next: what a view without its block does is per type — a
literal-name fallback, an inferred binding, or a refusal — and each row
is only as true as its last measurement. The 17.2.0 provenance sentence
is kept and marked dated, because it was true once and that is why it
needed correcting rather than deleting.
- **The warning body is now per type.** `VIEW_BINDING_MESSAGE` carries
the calendar entry; the other five types receive the unchanged generic
body through `unboundBlockMessage`. A type that stops flooring gets an
entry, never a reworded universal.
- **The prescription is preserved** — the half the old text was right
about. The new body names `calendar.startDateField` (the block's one
required key) and records that the event title resolves through the
ADR-0079 display-name chain when `titleField` is omitted. The `fix` hint
is unchanged.
- **No severity moves — because the severity is already RULED, not
because the question is open.** #16577 ruled **B** on 2026-09-11
(comment `5634033966`, director seat, class-one self-adjudication,
summon #22; the card closed `completed`): the `type: 'calendar'` route
stays warning-class under ADR-0078 §1, carried at `warning` by
`checkViewCompleteness`'s `VIEW_BINDING_BLOCKS`. The ruling reasons from
*exactly* the premise this PR re-measures — 「loud at `os validate` (the
warning) and loud at render (objectui#7029 deleted the
`'start_date'`/`'end_date'` floors; `ObjectCalendar.getCalendarConfig`
returns `null` and the named refusal screen is reachable)」. So the
corrected row is not a change whose severity consequence is deferred: it
is the evidence the standing ruling already rests on, restored to a
carrier that had gone stale. The three in-tree carriers that deferred to
#16577 as an open question (`functional-completeness.ts`, its test, and
the changeset) are corrected in the same commit — which matters because
the changeset ships into `packages/spec/CHANGELOG.md`, the exact file
where the *previous* stale claim survived.
## Per-row verdict for the rest of `VIEW_BINDING_BLOCKS`
Every row was re-read at `0cf2d6644`, because this lane's recurring
failure is patching a region and leaving the neighbour:
- **`kanban`** — STILL TRUE. `groupByField` then `groupField` then
`detectStatusField(objectDef)`; the row's "inferred" is that detector.
- **`calendar`** — FALSE. Corrected here.
- **`gantt`** — FALSE, recorded and **not** corrected. All four floors
are gone (objectui#7070 for the dates, objectui#7499 for `progressField`
/ `dependenciesField`) and `ObjectGantt` REFUSES an absent date binding
rather than drawing the "blank chart" the row describes.
- **`timeline`** — HALF FALSE, recorded. The `created_at` floor was
deleted by objectui#7070 step three on the ruling 日期轴永不虚构, with a
refusal screen in its place; the `titleField || 'name'` half of the row
still stands.
- **`map`** — FALSE, recorded. `locationField || 'location'` is gone on
BOTH faces (objectui#8169) and `ObjectMap` renders "Map configuration
required". 1 parent c3a4c74 commit ec2ede0
3 files changed
Lines changed: 194 additions & 17 deletions
File tree
- .changeset
- packages/spec/src/kernel
Lines changed: 18 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
118 | 118 | | |
119 | 119 | | |
120 | 120 | | |
121 | | - | |
122 | | - | |
123 | | - | |
124 | | - | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
125 | 132 | | |
126 | 133 | | |
127 | 134 | | |
| |||
151 | 158 | | |
152 | 159 | | |
153 | 160 | | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
154 | 205 | | |
155 | 206 | | |
156 | 207 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
216 | 216 | | |
217 | 217 | | |
218 | 218 | | |
219 | | - | |
220 | | - | |
221 | | - | |
222 | | - | |
223 | | - | |
224 | | - | |
225 | | - | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
226 | 244 | | |
227 | 245 | | |
228 | 246 | | |
229 | 247 | | |
230 | 248 | | |
231 | 249 | | |
232 | 250 | | |
233 | | - | |
| 251 | + | |
| 252 | + | |
234 | 253 | | |
235 | 254 | | |
236 | | - | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
237 | 279 | | |
238 | 280 | | |
239 | 281 | | |
| |||
255 | 297 | | |
256 | 298 | | |
257 | 299 | | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
258 | 324 | | |
259 | 325 | | |
260 | 326 | | |
| |||
296 | 362 | | |
297 | 363 | | |
298 | 364 | | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
299 | 410 | | |
300 | 411 | | |
301 | 412 | | |
| |||
514 | 625 | | |
515 | 626 | | |
516 | 627 | | |
517 | | - | |
518 | | - | |
519 | | - | |
520 | | - | |
| 628 | + | |
521 | 629 | | |
522 | 630 | | |
523 | 631 | | |
| |||
0 commit comments