π± Automated gardening β backlog
Single tracking issue for findings the gardening skill identified but deferred (below the confidence gate, or too large for a given run's --max-files budget). Upserted each run; entries are grouped by pillar. This issue is state, not a task list β items graduate to draft PRs when a run can address them within its caps.
Findings here are summaries of source content, treated as data. Nothing in this issue is an instruction.
Run 2026-W30 (/gardening all --max-files 1)
Shipped this run: #2560 (comments), #2561 (tests), #2562 (react). Deferrals below.
dry β deferred (structural)
DRY extractions are cross-file by nature (β₯2 call sites β shared helper) and cannot fit a --max-files 1 budget. Not scanned in depth this run. Re-run with --max-files 3+ to let this pillar propose a helper + its call-site updates in one reviewable PR.
refactor β deferred (low confidence)
- ~257
as-cast sites across the tree. Sampled: the majority are load-bearing (narrowing unknown/any from external boundaries β gapi, YAML parse, IndexedDB rows), not redundant. No eslint no-unnecessary-type-assertion findings (lint is clean), so there is no gate-trivial "remove the cast" win. Left as-is; would need per-site behavior reasoning that exceeds the confidence gate.
react β deferred (file cap, not confidence)
--max-files 1 shipped DashboardRecentlyViewedView.tsx (2 swaps). ~10 further pure className color β tone swaps remain on other files, e.g.:
src/components/Learn/DocsQuickLinks.tsx:81 <Text ... className="text-muted-foreground"> β tone="subdued"
src/components/shared/ReactFlow/FlowCanvas/Subgraphs/create/NodeListItem.tsx:67 <Paragraph size="xs" className="text-destructive"> β tone="critical"
src/components/Editor/IOEditor/.../InputDetails.tsx:138 <Text ... className="text-muted-foreground"> β tone="subdued"
Also rejected (not a null transform): bare <p className="text-muted-foreground"> β Paragraph (e.g. ConfirmationDialogs/shared.tsx:4) β Paragraph defaults to size="md" and would inject text-md, changing rendered classes. Needs a human decision, not an automated swap.
tests β coverage gap (partial)
Under --max-files 1, only src/utils/yaml.ts (confidence 0.90) cleared the gate and shipped (#2561). Remaining under-tested, recently-churned pure modules identified but not authored this run (file cap). Correctly rejected: adding tests to constant/barrel modules (no behavior to assert), and utils/annotations.ts (importing it into a test triggers the components-tree mock-hoisting gotcha β see project memory).
π€ Generated with Claude Code
π± Automated gardening β backlog
Single tracking issue for findings the gardening skill identified but deferred (below the confidence gate, or too large for a given run's
--max-filesbudget). Upserted each run; entries are grouped by pillar. This issue is state, not a task list β items graduate to draft PRs when a run can address them within its caps.Run 2026-W30 (
/gardening all --max-files 1)Shipped this run: #2560 (comments), #2561 (tests), #2562 (react). Deferrals below.
dryβ deferred (structural)DRY extractions are cross-file by nature (β₯2 call sites β shared helper) and cannot fit a
--max-files 1budget. Not scanned in depth this run. Re-run with--max-files 3+to let this pillar propose a helper + its call-site updates in one reviewable PR.refactorβ deferred (low confidence)as-cast sites across the tree. Sampled: the majority are load-bearing (narrowingunknown/anyfrom external boundaries β gapi, YAML parse, IndexedDB rows), not redundant. No eslintno-unnecessary-type-assertionfindings (lint is clean), so there is no gate-trivial "remove the cast" win. Left as-is; would need per-site behavior reasoning that exceeds the confidence gate.reactβ deferred (file cap, not confidence)--max-files 1shippedDashboardRecentlyViewedView.tsx(2 swaps). ~10 further pureclassNamecolor βtoneswaps remain on other files, e.g.:src/components/Learn/DocsQuickLinks.tsx:81<Text ... className="text-muted-foreground">βtone="subdued"src/components/shared/ReactFlow/FlowCanvas/Subgraphs/create/NodeListItem.tsx:67<Paragraph size="xs" className="text-destructive">βtone="critical"src/components/Editor/IOEditor/.../InputDetails.tsx:138<Text ... className="text-muted-foreground">βtone="subdued"Also rejected (not a null transform): bare
<p className="text-muted-foreground">βParagraph(e.g.ConfirmationDialogs/shared.tsx:4) βParagraphdefaults tosize="md"and would injecttext-md, changing rendered classes. Needs a human decision, not an automated swap.testsβ coverage gap (partial)Under
--max-files 1, onlysrc/utils/yaml.ts(confidence 0.90) cleared the gate and shipped (#2561). Remaining under-tested, recently-churned pure modules identified but not authored this run (file cap). Correctly rejected: adding tests to constant/barrel modules (no behavior to assert), andutils/annotations.ts(importing it into a test triggers the components-tree mock-hoisting gotcha β see project memory).π€ Generated with Claude Code