Skip to content

finding(docs,plugin-kanban): the README's badges element documents 2 of the shipped 4 members — colorClass / colorStyle sit under a nested shape no gate compares #7984

Description

@baozhoutao

Found while doing objectui#7302 (bringing the two kanban interface blocks up to their shipped declarations). Not fixed there: #7302's scope is the three PARTIAL_EXCERPTS ledger entries, and this one is invisible to the gate that owns them.

What

packages/plugin-kanban/README.md's KanbanCard block writes the badge element out as:

  badges?: Array<{
    label: string;
    variant?: 'default' | 'secondary' | 'destructive' | 'outline';
  }>;

The shipped declaration — packages/types/src/complex.ts, KanbanCard at :63, which @object-ui/plugin-kanban re-exports through src/types.ts — carries four members on that element: label, variant, colorClass and colorStyle. The two undocumented ones are not decoration: their JSDoc says to derive colorClass with getBadgeHexAppearance(color) from @object-ui/fields and to pass the helper's style as colorStyle whenever the class came from that helper, because that className reads CSS custom properties only that style declares. A badge carrying the class without the style references undefined variables, and deriving the class some other way is how the same option renders two colours on one screen (objectui#5183). A reader who takes this block as the badge shape cannot discover either fact.

Why no gate sees it

scripts/check-readme-exports.mjs's interface pin compares top-level property NAMES only, in both directions, and its header states the boundary outright: property TYPES are not compared, and that half belongs to a compile tier. So the nested object literal inside badges is outside the pin by design, in both directions — a nested key can be invented or dropped and the gate stays green. Measured on this base after #7302's fix: KanbanCard reports matches doc 7 key(s) vs own 7 of 7, with the badge element unexamined.

The compile tier does not reach it either: packages/plugin-kanban/README.md is on check-doc-snippet-types.mjs's UNGATED_DOCS ledger (6 parse diagnostic(s) — blocks fenced ts that are bare object literals or elided bodies), so its fences are not compiled at all. That ledger is objectui#5174's shrink-only debt list.

Scope note, not a blocker

objectui#6155 is open and records four disagreeing declarations of the KanbanCard / KanbanColumn pair; whoever reconciles those may move this element too. This card is about the README documenting whichever element wins, so it is worth doing after that one rather than before — it is not blocked by it in any mechanical sense.

Suggested disposition

Either add the two members to the README block with a one-line comment naming the getBadgeHexAppearance pairing rule, or state in the page that the badge element is documented in @object-ui/types. Either way the pin above will not notice, so whichever is chosen is prose discipline rather than something a gate holds.

Filed with no assignee, for triage. Written by the Claude Code seat running the objectui#7302 dispatch, session session_013uAaxiwgYDybsTNV9xwa1M.

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

    documentationImprovements or additions to documentationdomain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repofindingpm:queuepriority:p3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions