Found while consolidating the icon resolvers for #5935 (PR #7491). Filed unassigned, not fixed there — it is outside that card's scope fence, and the card carries three explicit do-not-touch boundaries.
What is wrong
scripts/check-lucide-icon-record-names.mjs, the data-table entry of RECORD_READING_TYPES:
'data-table': {paths: ['rowActionDefs[].icon'],resolver: 'packages/components/src/renderers/complex/data-table.tsx'},The resolver field is what the gate prints when it reports a violation (Resolved through: ...). It names renderers/complex/data-table.tsx — but that module does not read lucide's runtime icons record. Measured on the tree:
data-table.tsx:12 — import { resolveIcon } from '../action/resolve-icon';data-table.tsx:401 — const ActionIcon = resolveIcon(action.icon);- it is absent from the gate's own discovered record-reader set, correctly.
So it is a router, exactly like button, breadcrumb, command, context-menu, dropdown-menu and header-bar — and every one of those spells its resolver in the two-part form that names the record reader and the renderer:
'packages/components/src/renderers/action/resolve-icon.ts (via renderers/form/button.tsx)'
data-table is the only routed entry that does not. After #5935 it is the only entry in the whole table that does not name the seam.
Why it is worth a line
Low severity — it is a diagnostic string, not a predicate, so no verdict is wrong and nothing is unjudged. But the string is read by whoever is chasing a violation, and it currently points them at a file that has no lookup in it. That is the same class of drift #5935 exists to end, one level up in the tooling: a declaration that names a module which does not do the thing declared.
Suggested repair
One line, mechanical, and the correct form is already pinned by six sibling entries:
'data-table': {paths: ['rowActionDefs[].icon'],resolver: 'packages/components/src/renderers/action/resolve-icon.ts (via renderers/complex/data-table.tsx)',},Gate family: check:icon-record-names plus scripts/__tests__/check-lucide-icon-record-names.test.ts. Note the suite asserts violation.resolver by exact string for several types, so a change here needs the matching row updated in the same commit — that is how this was noticed.
Pre-existing, and not caused by #5935
The entry has read this way since before that card. #5935 changed the icon and view-switcher entries because its own diff made their named resolvers stop reading the record; data-table was already routed and was left exactly as found.
Generated by Claude Code
Found while consolidating the icon resolvers for #5935 (PR #7491). Filed unassigned, not fixed there — it is outside that card's scope fence, and the card carries three explicit do-not-touch boundaries.
What is wrong
scripts/check-lucide-icon-record-names.mjs, thedata-tableentry ofRECORD_READING_TYPES:The
resolverfield is what the gate prints when it reports a violation (Resolved through: ...). It namesrenderers/complex/data-table.tsx— but that module does not read lucide's runtimeiconsrecord. Measured on the tree:data-table.tsx:12—import { resolveIcon } from '../action/resolve-icon';data-table.tsx:401—const ActionIcon = resolveIcon(action.icon);So it is a router, exactly like
button,breadcrumb,command,context-menu,dropdown-menuandheader-bar— and every one of those spells itsresolverin the two-part form that names the record reader and the renderer:data-tableis the only routed entry that does not. After #5935 it is the only entry in the whole table that does not name the seam.Why it is worth a line
Low severity — it is a diagnostic string, not a predicate, so no verdict is wrong and nothing is unjudged. But the string is read by whoever is chasing a violation, and it currently points them at a file that has no lookup in it. That is the same class of drift #5935 exists to end, one level up in the tooling: a declaration that names a module which does not do the thing declared.
Suggested repair
One line, mechanical, and the correct form is already pinned by six sibling entries:
Gate family:
check:icon-record-namesplusscripts/__tests__/check-lucide-icon-record-names.test.ts. Note the suite assertsviolation.resolverby exact string for several types, so a change here needs the matching row updated in the same commit — that is how this was noticed.Pre-existing, and not caused by #5935
The entry has read this way since before that card. #5935 changed the
iconandview-switcherentries because its own diff made their named resolvers stop reading the record;data-tablewas already routed and was left exactly as found.Generated by Claude Code