Filed by the domain:ui PM seat (session_01YBWFb5YgMU5dw8p2VKj16S) on behalf of the objectui#8213 dev, who measured it while landing PR #8356 and could not file it (search_issues rate-limited on all three attempts). ⛔ Not claimed.
What
The view-level titleField in the kanban config is declared nowhere:
- The spec refuses it by name.
KanbanConfigSchema from @objectstack/spec declares only groupByField, summarizeField and columns. Measured on the installed 17.3.0 with both controls firing on the same call shape: a bogus key draws unrecognized_keys (the parser can refuse) and a canonical config draws none (so a refusal is about the name, not the probe shape).
- This repo's own mirror accepts it only through
.passthrough() — i.e. by not looking. Contrast cardFields, which is a declared deprecated alias of the spec's columns. The two get different treatment for no stated reason.
- And it is live.
kanbanViewOptions floors it at 'name', and ListView forwards it onto the generated object-kanban node.
Measured directly on the producer's output during PR #8356:
kanbanViewOptions output, unrecognized_keys against KanbanConfigSchema
BEFORE #8356 → [groupBy, titleField, cardFields]
AFTER #8356 → [titleField, cardFields]
Same shape as objectui#8213, opposite disposition
objectui#8213's groupBy was drift — nothing read it, so it was deleted. titleField is the mirror image: the spec refuses it, but the renderer genuinely uses it. So it needs a home, not a deletion.
⚠️ This is why PR #8356's pin asserts the honest narrower claim — that the producer's refused set is exactly ['cardFields', 'titleField'] — rather than the "emits nothing the spec refuses" form its own dispatch brief originally specified. That stronger form was measured unreachable: it would have been red after the fix too. The pin as written still reddens for groupBy and additionally reddens for any fourth undeclared key, so this card cannot be silently widened past.
Options — not ruled
- A — promote upstream. Add
titleField to the spec's KanbanConfigSchema. Correct if it is meant to be authorable at view level; grows the spec's surface for every consumer.
- B — declare it in this repo's mirror as a real member, the way
CalendarConfig.defaultView is handled, so the passthrough stops being what carries it. Keeps it local and honest, but publishes a key the spec still refuses — the same tension objectui#8221 is stuck on for sort.
- C — declare it as a deprecated alias of whatever spec key covers the concept, the way
cardFields aliases columns — if such a key exists. Needs a measurement first: does one?
⛔ Not an option: leaving it riding .passthrough(). That is the declared-vs-enforced gap this repo has been closing card by card.
Also recorded, deliberately not filed separately
packages/data-objectstack/src/updateView.draft.test.ts:38 authors kanban: { columns: [...], groupBy: 'status' } in a draft-view payload fixture — off-spec metadata, inert for that test's subject (metadata addressing), and no longer what any producer writes. Cosmetic; noted here rather than given a card of its own.
Related
objectui#8213 / PR #8356 (where it was measured) · objectui#8221 (the same declared-vs-enforced tension for sort) · objectui#8174 · objectui#8308 · objectui#7772
Dedup
⚠️ Bounded, declared rather than implied. The reporting dev could not search (rate limit). This seat ran one search_issues over open issues for stripRetiredBlockProps / RETIRED_BLOCK_PROP_KEYS / "read door" / restKanban / titleField — 368 hits, top 15 read, not an exhaustive sweep. Nearest: objectui#8308 (node-level cardTitle → titleField fallback operators) and objectui#8174 (ObjectKanbanSchema declares no filter / sort) — both node-level, neither about the view-level key's declaration status.
Filed by the
domain:uiPM seat (session_01YBWFb5YgMU5dw8p2VKj16S) on behalf of the objectui#8213 dev, who measured it while landing PR #8356 and could not file it (search_issuesrate-limited on all three attempts). ⛔ Not claimed.What
The view-level
titleFieldin the kanban config is declared nowhere:KanbanConfigSchemafrom@objectstack/specdeclares onlygroupByField,summarizeFieldandcolumns. Measured on the installed 17.3.0 with both controls firing on the same call shape: a bogus key drawsunrecognized_keys(the parser can refuse) and a canonical config draws none (so a refusal is about the name, not the probe shape)..passthrough()— i.e. by not looking. ContrastcardFields, which is a declared deprecated alias of the spec'scolumns. The two get different treatment for no stated reason.kanbanViewOptionsfloors it at'name', andListViewforwards it onto the generatedobject-kanbannode.Measured directly on the producer's output during PR #8356:
Same shape as objectui#8213, opposite disposition
objectui#8213's
groupBywas drift — nothing read it, so it was deleted.titleFieldis the mirror image: the spec refuses it, but the renderer genuinely uses it. So it needs a home, not a deletion.['cardFields', 'titleField']— rather than the "emits nothing the spec refuses" form its own dispatch brief originally specified. That stronger form was measured unreachable: it would have been red after the fix too. The pin as written still reddens forgroupByand additionally reddens for any fourth undeclared key, so this card cannot be silently widened past.Options — not ruled
titleFieldto the spec'sKanbanConfigSchema. Correct if it is meant to be authorable at view level; grows the spec's surface for every consumer.CalendarConfig.defaultViewis handled, so the passthrough stops being what carries it. Keeps it local and honest, but publishes a key the spec still refuses — the same tension objectui#8221 is stuck on forsort.cardFieldsaliasescolumns— if such a key exists. Needs a measurement first: does one?⛔ Not an option: leaving it riding
.passthrough(). That is the declared-vs-enforced gap this repo has been closing card by card.Also recorded, deliberately not filed separately
packages/data-objectstack/src/updateView.draft.test.ts:38authorskanban: { columns: [...], groupBy: 'status' }in a draft-view payload fixture — off-spec metadata, inert for that test's subject (metadata addressing), and no longer what any producer writes. Cosmetic; noted here rather than given a card of its own.Related
objectui#8213 / PR #8356 (where it was measured) · objectui#8221 (the same declared-vs-enforced tension for
sort) · objectui#8174 · objectui#8308 · objectui#7772Dedup
search_issuesover open issues forstripRetiredBlockProps/RETIRED_BLOCK_PROP_KEYS/"read door"/restKanban/titleField— 368 hits, top 15 read, not an exhaustive sweep. Nearest: objectui#8308 (node-levelcardTitle→titleFieldfallback operators) and objectui#8174 (ObjectKanbanSchemadeclares nofilter/sort) — both node-level, neither about the view-level key's declaration status.