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 validator — safeValidateSchema, 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 ComplexSchema → AnyComponentSchema |
the renderer — ObjectKanbanRenderer, 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
Filed by the
domain:uiPM 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:safeValidateSchema, i.e. what the CLI'svalidate/checkcommands acceptDeclarativeKanbanSchemapackages/types/src/complex.ts's own docblock states it is the'kanban'arm ofComplexSchema→AnyComponentSchemaObjectKanbanRenderer, registered for the'kanban'key@object-ui/plugin-kanban's ownKanbanSchemapackages/plugin-kanban/src/index.tsxThe two are structurally unrelated dialects: the declarative face carries
draggable, columncolor, cardlabels/assignees/priority; the plugin face carriesobjectName,groupBy,cardTitle,cardFields, cardbadgesand 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.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
validateis exactly the signal an author would trust.Not a duplicate of the neighbours
SchemaRegistry['kanban']stop naming either face. That removed a false type claim; it did not reconcile the two consumers.ObjectKanbanshould gain a real record-source ladder. Adjacent, different axis.The decision needed
Which face is authoritative for an authored
kanbandocument? Everything else follows from it:⛔ 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