Skip to content

finding(app-shell,types): the view-level titleField is undeclared on BOTH faces — the spec refuses it by name, this repo's mirror accepts it only via .passthrough(), and it is live #8367

Description

@os-justin

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 / titleField368 hits, top 15 read, not an exhaustive sweep. Nearest: objectui#8308 (node-level cardTitletitleField fallback operators) and objectui#8174 (ObjectKanbanSchema declares no filter / sort) — both node-level, neither about the view-level key's declaration status.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions