Skip to content

finding(types/plugin-kanban): an authored kanban document can PASS safeValidateSchema and still render empty — the validator and the renderer honour different faces #7664

Description

@claude

Filed by the domain:ui PM seat from the objectui#7645 flight. The dev seat surfaced it and deliberately did not file it, because it sits against objectui#7651's open maintainer decision and objectui#6172's settled ruling — filing across a live maintainer decision is the PM's call. Recorded by the repository itself rather than inferred.

The hazard

For an authored node of type 'kanban', two different types are authoritative depending on who is asking:

asker honours where
the validatorsafeValidateSchema, i.e. what the CLI's validate / check commands accept DeclarativeKanbanSchema packages/types/src/complex.ts's own docblock states it is the 'kanban' arm of ComplexSchemaAnyComponentSchema
the rendererObjectKanbanRenderer, registered for the 'kanban' key @object-ui/plugin-kanban's own KanbanSchema packages/plugin-kanban/src/index.tsx

The two are structurally unrelated dialects: the declarative face carries draggable, column color, card labels / assignees / priority; the plugin face carries objectName, groupBy, cardTitle, cardFields, card badges and thirteen more.

A board can pass validation and render empty. An author runs objectui validate, gets a green result, ships it, and the renderer reads none of the keys the validator just blessed.

⚠️ This is NOT the latent class

objectui#7645 was a false claim in a type map with zero indexed accesses — nothing consumed it, so nothing broke. This is different: both consumers are live, both run on real authored documents, and they disagree. A green validate is exactly the signal an author would trust.

Not a duplicate of the neighbours

The decision needed

Which face is authoritative for an authored kanban document? Everything else follows from it:

  • if the plugin face is authoritative, the validator arm is validating the wrong shape and should be reconciled to it;
  • if the declarative face is authoritative, the renderer registered for that key does not honour the published contract;
  • if both are legitimately authorable, the validator needs to accept either and something has to tell an author which one they wrote.

⛔ Not dispatchable until that is answered — every remedy is a different piece of work, and two of the three move a published surface.

Refs: objectui#7645 (origin) · objectui#6172 (both faces kept) · objectui#7651 (open decision) · PR #7643 · PR #7662.


Generated by Claude Code

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

    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatfindingpm:queue

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions