Skip to content

Gardening queue — carry-over (bot) + decisions (human) #2626

Description

@camielvs

Single standing queue for the gardening skill. Two parts, two owners.

  • Part A is the bot's own to-do. It drains automatically as PR budget frees up; nobody needs to read it.
  • Part B is the only part that wants a human. Each entry is a closeable yes/no.

Opened by run 2026-W33 (PRs #2620#2625).

Updated 2026-08-18 after the run and its follow-ups merged. 8 of 20 Part B decisions are resolved
(struck through below), 3 are partly done or in flight, 9 are untouched. Part A is 12 entries (was 13):
one landed, and five had stale paths that are now corrected rather than dropped.
Numbering is unchanged — B-numbers are referenced from PR titles and descriptions.


Part A — Carry-over (bot-owned, machine-readable)

12 entries (was 13). Changes since the last revision:

  • 1 entry landed and was removedsrc/routes/v2/shared/windows/types.ts, cleaned by chore: Enforce Minimal Code Comments #2630.
  • 5 entries had wrong paths, now corrected (fingerprints and firstDeferredWeek preserved, so
    dedup and staleness tracking are unaffected):
    • src/routes/v2/shared/store/windowStore.tssrc/routes/v2/shared/windows/windowStore.ts
    • src/routes/ComponentDetail/ComponentDetail.tsxsrc/components/shared/ComponentDetail/ComponentDetail.tsx
    • src/compilers/vertexAiCompiler.tssrc/components/shared/Submitters/GoogleCloud/compiler/vertexAiCompiler.ts
    • src/utils/nodes/types.tssrc/routes/v2/shared/nodes/types.ts
    • src/utils/nodes/duplicateNodes.tssrc/components/shared/ReactFlow/FlowCanvas/utils/duplicateNodes.ts
  • 2 of those were swept by chore: Enforce Minimal Code Comments #2630ComponentDetail.tsx and nodes/types.ts were in its file list but
    still carry 27 and 43 comment lines. Kept rather than closed: these are file-scoped pointers, so whether
    the remainder is legitimate why commentary needs the re-analysis E7 does anyway. Deprioritize, don't skip.

#2630 also added the local/no-type-member-comments ESLint rule, so the type-member slice of this pillar is
now enforced at lint time rather than swept weekly.

Granularity note, so the next run isn't misled: the remaining comments entries are file-scoped
pointers
, not line-level snippets. They came from MAP partitions whose per-finding detail was
summarised rather than persisted, so they carry no proposedSnippet and need re-analysis — they are
a ranking hint only. The one dry entry is fully re-appliable.

Human-readable index of Part A:

  • comments (11 files, first deferred 2026-W33) — project-conventions#comments--documentation:
    src/utils/validations.ts, src/routes/v2/shared/windows/windowStore.ts,
    src/components/shared/ComponentDetail/ComponentDetail.tsx, src/utils/annotations.ts,
    src/components/shared/Submitters/GoogleCloud/compiler/vertexAiCompiler.ts,
    src/routes/v2/shared/nodes/types.ts, src/utils/executionStatus.ts, src/utils/subgraphUtils.ts,
    src/services/pipelineService.ts,
    src/components/shared/ReactFlow/FlowCanvas/utils/duplicateNodes.ts,
    src/services/componentService.ts
  • dry (1) — src/utils/componentStore.ts:285 still holds the third copy of
    makeNameUniqueByAddingIndex. PR garden(dry): weekly groundskeeping — 2026-W33 #2621 de-duplicated the other two. Now unblockedgarden(comments): weekly groundskeeping — 2026-W33 #2620 has
    merged, so the file is no longer claimed.

Part B — Decisions (human-owned)

9 open, 3 partly done, 8 resolved.

✅ Resolved

🔶 Partly done / in flight

B5. readOnly precedence in the node factories. — fix written, awaiting merge in #2625
Ruled a bug: the factories now resolve readOnly ?? nodeData.readOnly ?? false. Verified a no-op on every
current path (the node-level gate reads the same field), and inheritance can only tighten. Closes when
#2625 merges.

B18. Design tokens for hardcoded text colours. — partly done
#2631 cleared the residual sites it covered. The originally-named ones are still open:
ContextPanelProvider.tsx:32 (text-gray-500) and ImportPipeline.tsx:229/:232/:240/:243.
#2639 is open and adds a success tone plus the colour migrations.

B19. flex flex-colBlockStack, and heading primitives. — (a) mostly done, (b) open
(a) Down from 27 sites to 5 (ArtifactVisualizer.tsx:109, ComponentDetailsDialog.tsx:100,
DockArea.tsx:121, DebugPanel.tsx:78, HistoryContent.tsx:52) — each combines flex flex-col with
other classes, so they need the per-site w-full/items-start call.
(b) Unchanged: Heading still takes only children and level and accepts no className, so the
16 heading sites remain blocked. #2639 is open and widens Heading's props.

Behavior questions the bot must not answer for you

B6. The two it.todos in hydrateComponentReference.test.ts.real-issue-bot-couldn't-safely-fix
:892 "should use text over spec when they differ" and :979 "should return null when text is invalid
YAML but valid spec" both carry their own "todo: decide" notes.
Yes ⇒ state the intended semantics for each; the bot then writes the two tests. Implementing them now
would mean inventing the behavior.

B7. Un-skip tests/e2e/aggregator.spec.ts:49.real-issue-bot-couldn't-safely-fix
test.skip("should add dynamic inputs when connection is made to add-input handle").
Yes ⇒ someone runs Playwright locally and either un-skips it or deletes it. Left skipped because this
environment has no browser/dev server and shipping an unexecuted spec is worse than leaving it off.

B8. Widen ArgumentType for DynamicDataArgument.touchesProtected
arguments.actions.ts:57 and BatchArgumentRow.tsx:138 both use as unknown as ArgumentType.
Yes ⇒ a human changes the componentSpec type (a protectedPatterns entry the bot may never touch),
after which both casts delete cleanly.

B9. Adopt useRequiredContext in the four hand-rolled contexts.not-behavior-preserving
useDialog.ts:8, NodeRegistryContext.tsx:22, SpecContext.tsx:41, ContentWindowStateContext.tsx:31.
The canonical hook throws a different message (Required context ${displayName} was not found) and
createRequiredContext changes the context default to null — both observable.
Yes ⇒ accept the message/default change and the bot migrates all four.

Design / architecture calls

B11. Relocate the component-search logic.not-behavior-preserving
componentSearchV2Logic.ts (a v2 Editor page internal) is re-implemented in
routes/Dashboard/DashboardComponentsV2View.tsx — 6 duplicated symbols. Adopting it directly would make
routes/Dashboard/** import another page's internals.
Yes ⇒ move it to src/services/**, then the bot adopts it from both call sites.

B13. Shared confirmation-dialog host.new-component proposal
useConfirmationDialog + <ConfirmationDialog {...props} /> repeated verbatim in 6 files.
Yes ⇒ a human writes the shared component; the bot then migrates the 6 call sites. (The bot may not
author new components.)

B14. Shared pagination control.new-component proposal
DashboardFavoritesView and DashboardRecentlyViewedView share 25 identical lines. Note
src/components/shared/PaginationControls.tsx and src/hooks/usePagination.ts already exist (from #2028)
but neither view uses them — worth checking whether adopting those is enough.
Yes ⇒ a human decides adopt-or-extract; the bot migrates both.

B15. RunActionsBar vs RunMenu.new-component proposal
RunActionsBar.tsx and RunViewMenuBar/components/RunMenu.tsx share ~34 lines of menu items + dialogs,
both v2, same feature.
Yes ⇒ a human extracts the shared surface; the bot migrates both.

B16. src/components/ui/date-picker.tsx:42.not-behavior-preserving
An exact <span className="text-muted-foreground"><Text tone="subdued"> mapping, deliberately
skipped: it would make one components/ui primitive depend on another, and the file is shadcn-CLI
regenerable.
Yes ⇒ confirm cross-primitive imports are fine and the bot applies it.


Maintained by the gardening skill. Part A is rewritten each run (dedup by fingerprint, entries
that landed or were suppressed are removed). Part B is curated — close an entry when it is actioned or
moot, and it will not come back.

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

    automated-gardening-queueGardening queue: bot-owned carry-over + human decision list

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions