fix(board): running cards land in impl under group=stage #577
No reviewers
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks!577
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/board-pivot-running-cards"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
cardBoardStageinapps/web/src/components/board/pivot-logic.tsonly consulted thestage:*label. Cards without one (every freshly assigned issue that has not been manually drag-restaged) fell through totriage. Running tasks dispatched via the regularissues.assignedwebhook are precisely that case —area:dashboard + type:user-storyarrives without astage:*label, so the four agents the operator just kicked off rendered in the Triage column instead of Implementation.The fix falls back to
card.stage(already populated server-side fromstatusviaderiveStageinapps/server/src/domain/views/board.ts:397) before defaulting totriage. Thestage:*label still wins so manual drag-restages remain sticky.Test plan
bun x vitest run src/components/board/board.test.tsx— 41 pass.?group=stageshows the four currently-running R1 issues (#565, #569, #570, #571) under Implementation, not Triage.🤖 Generated with Claude Code
implundergroup=stageapps/web/src/components/board/board.test.tsx— The newcard.stagefallback path (priority 2 in the updated JSDoc) has no coverage. All cards inpivotFixture()carry explicitstage:*labels, so the fix line (if (STAGE_SET.has(card.stage)) return card.stage) can be deleted and all 41 tests still pass. Add a test case: a card withstage: "impl"andlabels: [](nostage:*entry) that verifies it lands inboard-column-stage:impl, notboard-column-stage:triage. One test in the existingdescribe("Board group-by pivot", ...)block is enough.Addressed in
536958b.Added a
card.stagefallback regression test in the existingBoard group-by pivotdescribe block: a single running card withlabels: ["type:user-story", "area:dashboard"](nostage:*) andcard.stage = "impl"must land inboard-column-stage:impl, nottriage.Verified the test guards the fix: removing the
if (STAGE_SET.has(card.stage)) return card.stageline on a clean tree fails this new test (the original 41 still pass). Restored on the fix and the suite is back to 42/42.