Skip to content

Run 9 — canary-refactor Byproducts

B9-01 — ItemTableAGGrid.tsx and columnPresets.tsx are orphaned dead code

Section titled “B9-01 — ItemTableAGGrid.tsx and columnPresets.tsx are orphaned dead code”

File: src/canary-refactor/components/ItemTableAGGrid.tsx and columnPresets.tsx

Observation: Both files exist in canary-refactor/components/ but are effectively dead code. ItemTableAGGrid.tsx is imported by ItemsPage.tsx (line 41) but the module body is replaced by a re-export of the vendored page — the import creates a Vite module graph edge but the ItemTableAGGrid component is never rendered.

columnPresets.tsx (36KB) contains a full copy of the vendored items grid column definitions, partially ported to use canary atoms (TextCellDisplay, SelectCellDisplay, etc.). This port was work-in-progress at the time of consolidation and never reached a usable state as a standalone story.

Impact: Vite bundles both files into storybook-static/assets/columnPresets-*.js (200KB). No runtime errors, but the bundle is larger than needed.

Recommended action: Delete both files in a cleanup pass. The functionality they represent is now provided by:

  • src/components/canary/organisms/item-grid/item-grid.tsx (ItemGrid organism)
  • src/components/canary/molecules/item-grid/item-grid-columns.ts (column definitions)

The items-grid.stories.tsx and item-detail.stories.tsx stories do not need these files and would continue to work after deletion.

Priority: Low. No blocking issue. Cleanup deferred to post-consolidation PR.


B9-02 — canary-refactor stories render vendored page, not canary components

Section titled “B9-02 — canary-refactor stories render vendored page, not canary components”

Observation: The two canary-refactor reference stories (items-grid.stories.tsx, item-detail.stories.tsx) exercise the vendored application page via @frontend/app/items/page, not the consolidated canary organisms. This is by design: the @frontend Storybook alias routes to src/vendored/arda-frontend/, and the vendored page uses ItemTableAGGrid (from the vendored source), not ItemGrid from the canary library.

The original intent of canary-refactor/ was to replace vendored components with canary equivalents. That intent was partially realized (ItemTableAGGrid.tsx used the canary DataGrid molecule; columnPresets.tsx used canary atoms) but never completed into a story-mountable page.

Impact: The canary-refactor/ directory does not prove that the consolidated canary organisms can reproduce the vendored page. That proof is provided instead by:

  • src/use-cases/reference/items/browse-and-search/view-items-list.stories.tsx
  • src/use-cases/reference/items/view-details/item-details-panel.stories.tsx

(Run 8 composition stories, which directly use ItemGrid and ArdaItemDetails.)

Recommended action: If canary-refactor stories should truly exercise canary components, they should be rewritten to match the use-case story pattern: compose ItemGrid + ArdaItemDetails + ArdaSidebar + ArdaAppHeader inline. This would make them redundant with the use-case stories, so consider whether the canary-refactor/ directory serves a distinct purpose post-consolidation.

Priority: Architectural decision — escalate to Principal Engineer before acting.


B9-03 — react-icons was a transitive dependency, not a declared dependency

Section titled “B9-03 — react-icons was a transitive dependency, not a declared dependency”

Observation: react-icons is present in node_modules/ but not listed in package.json. It was used only in columnPresets.tsx (line 7). Replacing with lucide-react eliminates the undeclared dependency from canary-refactor code.

Impact: None post-fix. Noting for completeness in case react-icons appears elsewhere as a transitive dep that someone might rely on.

Action taken: Fixed in Run 9 task 9.5. LuCaptions replaced with Captions from lucide-react.


B9-04 — MaxListenersExceededWarning in Storybook during kanban card loading

Section titled “B9-04 — MaxListenersExceededWarning in Storybook during kanban card loading”

Observation: The Items Grid and Item Detail stories trigger a MaxListenersExceededWarning: Possible EventEmitter memory leak detected warning in the browser console during initial load. This occurs because the vendored page calls getKanbanCardsForItem for each visible grid row (15+ rows) simultaneously, each attaching event listeners to the same AbortController.

Impact: Console warning only. No functional impact — all 50 items load correctly, all card data resolves. Not introduced by Run 9; pre-existing in the vendored page.

Recommended action: None required for consolidation project. The vendored page is not maintained in this codebase.


B9-05 — Storybook build chunk size warning for canary-refactor assets

Section titled “B9-05 — Storybook build chunk size warning for canary-refactor assets”

Observation: npm run build-storybook reports:

(!) Some chunks are larger than 1200 kB after minification.

The iframe-BaLUcqQa.js chunk is 1,792KB. This includes columnPresets-rNVl8261.js (200KB unminified). The warning is from Vite’s Rollup bundler and does not cause a build failure.

Recommended action: Deleting ItemTableAGGrid.tsx and columnPresets.tsx (see B9-01) would reduce the iframe bundle by ~200KB. Consider also applying build.rollupOptions.output.manualChunks in vite.config.ts to split the vendored and canary assets. Deferred.