You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs(spec): record which calendar axis the #13817 guard gates — and which door carries the other (#17447)
* test(spec): pin the `type: 'calendar'` axis the #13817 guard does not gate
The #13817 cross-field check gates one axis — `appearance.allowedVisualizations`
includes 'calendar'. A view can also ask for a calendar by BEING one
(`type: 'calendar'`), and that axis parses CLEAN at all three doors. The
disposition was undocumented and so unreadable as a decision.
Measured at every door before writing a line: the axis is not unwatched, it is
carried by `checkViewCompleteness`'s VIEW_BINDING_BLOCKS at WARNING severity,
under the ADR-0078 §1 rubric the `page` note already cites. The two doors have
complementary coverage — the completeness check reads `type` only, the schema
check reads `allowedVisualizations` only.
Behaviour unchanged. Escalating the `type:` axis to a parse refusal would
refuse a shape 17.3.0 accepts, so it is a published-surface narrowing and a
separate ruling — the same disposition the `timeline` scope pin states.
Also pins that `viewType` is not a second spelling of `type`: refused as an
unknown key at the two authoring doors, and DROPPED at the `.strip()`ed overlay
write door, leaving the defaulted `type: 'grid'`.
Claude-Session: https://claude.ai/code/session_01MkQhmuuJAVDjmeWNixwDDH
Co-authored-by: Claude <noreply@anthropic.com>
* docs(changeset): the list-view calendar guard's axis scope (#16577)
`view.zod.ts` ships in `files[]` twice — as `src/**/*.zod.ts` and as the TSDoc
carried into `dist/*.d.ts` — so a docblock-only edit moves published bytes and
is not `skip-changeset`. Measured: the added prose greps in both
`dist/view.zod-*.d.ts` and `.d.mts`, positive control from the same docblock
hits the same two files, dark control zero.
Claude-Session: https://claude.ai/code/session_01MkQhmuuJAVDjmeWNixwDDH
Co-authored-by: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
docs(spec): record which axis the list-view calendar guard gates — and which it does not (#16577)
6
+
7
+
`checkListViewCalendarVisualization` gates ONE way of asking for a calendar: `appearance.allowedVisualizations` includes `'calendar'`. A view can also ask for one by BEING one — `type: 'calendar'` — and that axis parses CLEAN at all three doors (`ListViewSchema`, `ObjectListViewSchema`, `VIEW_METADATA_MEMBERS.listOverlay`). The disposition was correct but undocumented, so it read as an oversight rather than a decision.
8
+
9
+
**No behaviour changes.** Every parse verdict at every door is byte-identical before and after; the diff is a TSDoc block on the exported check (which ships in `dist/*.d.ts` and in `src/**/*.zod.ts`) plus pins in `view.test.ts`.
10
+
11
+
What the docblock now records, all of it measured rather than inferred:
12
+
13
+
- The `type:` axis is **not unwatched**. It is carried by `checkViewCompleteness`'s `VIEW_BINDING_BLOCKS` (`kernel/functional-completeness.ts`) at **warning** severity, under the same ADR-0078 §1 rubric this file's `page` note already cites — refuse what renders NOTHING, warn what degrades. The two doors have complementary coverage: the completeness check reads `type` only and is blind to `allowedVisualizations`; this check reads `allowedVisualizations` only and is blind to `type`.
14
+
-`viewType` is **not** a second spelling of `type`. The two authoring doors refuse it as an unknown key; the `.strip()`ed overlay write door (`PUT /api/v1/meta/view`) DROPS it, so the view parses as the defaulted `type: 'grid'` — an author who spells it reaches a grid, never a calendar.
15
+
16
+
⛔ Escalating the `type:` axis to a parse refusal is deliberately NOT done here: it would refuse a shape 17.3.0 accepts, which is a published-surface narrowing and belongs to a ruling — the same disposition the `timeline` scope pin has stated since #13817.
0 commit comments