fix(board): Triage column hides type:bug and type:chore tickets #619
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks#619
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
User story
As an operator triaging the planner board, I want bugs and chores without an assignee to appear in the Triage column alongside user stories, so that no actionable backlog ticket is invisible just because of its type label.
Background
Filed today (2026-04-30):
#615—type:bugfor the stuck CI pill#618—type:chorefor the redundant Unassigned filter toggleNeither appeared in the planner board's Triage column. Cause:
apps/server/src/domain/views/board.ts:382-383definesisUserStoryasissue.labels.includes("type:user-story"), and the Triage gutter loop at line 532 hard-filters byif (!isUserStory(issue)) continue;. Bugs and chores never enter the column.The dispatch side is fine —
mcp__forgejo__*issues.assignedwebhook has no user-story gate, so manually assigning atype:bugto dev still dispatches normally. The blind spot is purely the board surface.This violates the global label convention in
~/.claude/CLAUDE.md("each issue gets exactly one area label and one type label") — operators following the convention land tickets that the board pretends do not exist.Acceptance criteria
Filter
isUserStory(apps/server/src/domain/views/board.ts:382) toisTriageable(or similar) and accept any oftype:user-story,type:bug,type:chore. Update the call site at line 532.runningIssueKeysat lines 518-523) and sort logic (line 559) are unaffected — keep as-is.Server tests
apps/server/src/domain/views/board.test.ts(or wherever the Triage projection is tested — grep forunassigned/Triage): atype:bug+ atype:choreissue with no assignee land in theunassignedcolumn, alongside the existingtype:user-storycase.type:metaonly) is not picked up — meta tickets are tracking, not work.type:user-storyandtype:bug(rare but legal) is picked up exactly once.Web
Triage. (Don't rename it to "Backlog" or anything else here — separate concern.)Out of scope
type:metainclusion — those are explicitly tracking issues that should not be picked up by an agent.STATUS_ORDERinapps/web/src/components/board/use-board-keymap.ts:23— the"unassigned"entry refers to the column status string, not the type label, and stays the same.References
apps/server/src/domain/views/board.ts:378-383—isUserStorydefinitionapps/server/src/domain/views/board.ts:525-559— Triage column build loop~/.claude/CLAUDE.md— global label conventions: one area + one type label per issue#615,#618(assigned manually as a workaround until this lands)