Observation, filed unassigned while measuring the icon-name population for #5633. Not a user-visible failure by itself — it is authored surface that nothing reads.
Measured
Three catalog fixtures declare an icon on child items whose renderer never reads icon at all. Verified by reading each renderer, not by inference:
| fixture | key | renderer | reads icon? |
|---|
examples/schema-catalog/.../components-basic-button-group/with-icons.json | buttons[].icon ("grid", "list") | packages/components/src/renderers/basic/button-group.tsx | no — the only icon in the file is the 'icon' member of the size enum |
examples/schema-catalog/.../components-data-display-breadcrumb/with-icons.json | items[].icon ("home", "book", "layout") | packages/components/src/renderers/data-display/breadcrumb.tsx | no — no icon anywhere in the file |
examples/schema-catalog/.../components-form-command/command-menu.json | groups[].items[].icon ("smile", …) | packages/components/src/renderers/form/command.tsx | no — no icon anywhere in the file |
Two of the fixtures are named with-icons.json and render none.
The command one was already recorded in #5633's own comment thread as inert; the other two are new here, and the shape is the same in all three.
Why it stayed invisible
Worth deciding
The declared-but-unenforced pattern is the one ADR-0049's enforce-or-remove reasoning exists for. Either these components should render an authored icon (which is #5930's question, one component over), or the key should leave the fixtures so the catalog stops advertising an affordance the renderer does not have. A fixture named with-icons.json that renders no icons is the worst of the two states, because it reads as coverage.
Generated by Claude Code
Observation, filed unassigned while measuring the icon-name population for #5633. Not a user-visible failure by itself — it is authored surface that nothing reads.
Measured
Three catalog fixtures declare an
iconon child items whose renderer never readsiconat all. Verified by reading each renderer, not by inference:icon?examples/schema-catalog/.../components-basic-button-group/with-icons.jsonbuttons[].icon("grid","list")packages/components/src/renderers/basic/button-group.tsxiconin the file is the'icon'member of thesizeenumexamples/schema-catalog/.../components-data-display-breadcrumb/with-icons.jsonitems[].icon("home","book","layout")packages/components/src/renderers/data-display/breadcrumb.tsxiconanywhere in the fileexamples/schema-catalog/.../components-form-command/command-menu.jsongroups[].items[].icon("smile", …)packages/components/src/renderers/form/command.tsxiconanywhere in the fileTwo of the fixtures are named
with-icons.jsonand render none.The
commandone was already recorded in #5633's own comment thread as inert; the other two are new here, and the shape is the same in all three.Why it stayed invisible
icon:literal reaching a record-reading lucide resolver is a liveiconskey — four hand-copied resolvers, four local pins, no gate over the population #5633 gate sees all six names and declines them: the child items carry notypeof their own, so the gate cannot say which vocabulary (if any) they reach — and the honest answer here is "none". Its silence is correct; it is just not a report.Worth deciding
The declared-but-unenforced pattern is the one ADR-0049's enforce-or-remove reasoning exists for. Either these components should render an authored
icon(which is #5930's question, one component over), or the key should leave the fixtures so the catalog stops advertising an affordance the renderer does not have. A fixture namedwith-icons.jsonthat renders no icons is the worst of the two states, because it reads as coverage.Generated by Claude Code