Feature: Upgrade story: label to hard-block in check-board-item.sh #167
Labels
No labels
domain:backend
domain:devops
domain:frontend
status:approved
status:in-progress
status:needs-fix
status:qa
type:bug
type:devops
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
ldraney/claude-custom#167
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?
Type
Feature
Lineage
standalone — discovered during kanban dogfooding session 2026-03-26
Repo
forgejo_admin/claude-customUser Story
As Betty Sue (PM),
I want board item creation to be denied when missing a
story:label,So that every ticket is provably traceable to a user need and orphan work is impossible.
Context
Currently
check-board-item.shenforcestype:(hard block) andarch:(hard block) but only warns on missingstory:. This means tickets can enter the kanban without connecting to a user story. During alert triage on 2026-03-26, all 4 tickets had story labels but only because Betty Sue remembered — not because the system enforced it. The traceability triangle requires all three legs.The template-ticket says "Not every ticket needs every label... foundational work might not have a story." But the counter-argument: if you can't name which user story the work serves, either the story doesn't exist yet (create it) or the work doesn't serve a user need (why are we doing it?).
File Targets
hooks/check-board-item.shlines 48-51 — change from warning to denyWARNINGS="${WARNINGS:+${WARNINGS} }Consider adding a 'story:' label..."ERRORS="${ERRORS:+${ERRORS} }Labels must include a 'story:' label..."Files NOT to touch:
Acceptance Criteria
create_board_itemwithoutstory:label is DENIED (not just warned)create_board_itemWITHstory:label still succeedsTest Expectations
create_board_itemwithout story: → deniedcreate_board_itemwith story: → allowedConstraints
Checklist
Related
project-pal-e-agency— projectstory:pm-scope— user storyarch:enforcement— architecture componenttemplate-ticket— the convention this enforcesconvention-architecture-ids— arch label conventionScope Addition: Task type routing in check-issue-template.sh
Discovered during dogfooding:
check-issue-template.shline 33-38 case statement doesn't recognizeTasktype. Falls through to Feature default, blocking Task-type issues.Additional File Target
hooks/check-issue-template.shline 33-38 — addTask|task)case routing totemplate-issue-taskUpdated Acceptance Criteria (appended)
check-issue-template.shrecognizes### Type: Taskand validates againsttemplate-issue-task### Type,### Scope,### Acceptance Criteria,### RelatedThis unblocks creation of Task-type issues for non-code work (Tickets C and D).
Scope Review: NEEDS_REFINEMENT
Review note:
review-395-2026-03-26Ticket is well-scoped with all template sections present and all file targets verified against the codebase. Two refinements needed:
check-board-item.shsays "recommended — warn, don't block" but will be stale after the change. Add to File Targets so the implementing agent updates it.session-start-context.shlines 558-561 list Bug/Feature/Spike types but not Task. Agents won't know Task type exists after the hook ships. Track separately.Refinement: line 8 comment header
Per review
review-395-2026-03-26:Additional File Target
hooks/check-board-item.shline 8 — update comment from "labels includes a story: label (recommended — warn, don't block)" to "labels includes a story: label (required)"Discovered Scope (separate issue, not a blocker)
session-start-context.shlines 558-561 list Bug, Feature, Spike types but not Task. After this hook ships, agents still won't know Task type exists. Track separately.Scope Re-Review: READY
Review note:
review-395-2026-03-26-v2Previous NEEDS_REFINEMENT items resolved: line 8 comment header added as explicit file target (Comment 3), session-start-context.sh Task gap acknowledged as separate discovered scope.
All 4 file targets verified against codebase. All 7 acceptance criteria are agent-verifiable.
template-issue-taskdependency confirmed to exist. No blocking dependencies on the board.Two nits for the implementing agent (not blockers):