Re-Review: Upgrade story: label to hard-block + Task type routing
Verdict: READY
Re-Review Context
This is a re-review of board item #395 (Forgejo issue forgejo_admin/claude-custom#167). The original review (
review-395-2026-03-26) returned NEEDS_REFINEMENT with two items:- Line 8 comment header in
check-board-item.shsays "recommended — warn, don't block" but would be stale after the change. Needed to be added to File Targets. - session-start-context.sh lines 558-561 list Bug/Feature/Spike but not Task. Flagged as discovered scope (not a blocker).
Comment 3 on the Forgejo issue addresses both: adds line 8 as an explicit file target with before/after text, and acknowledges session-start-context.sh as separate discovered scope.
Template Completeness
Issue body + all 3 comments combined:
- [x] Type (Feature)
- [x] Lineage (standalone — discovered during kanban dogfooding session 2026-03-26)
- [x] Repo (forgejo_admin/claude-custom)
- [x] User Story
- [x] Context
- [x] File Targets — 3 targets across body + comments
- [x] Acceptance Criteria — 7 criteria across body + Comment 1
- [x] Test Expectations
- [x] Constraints
- [x] Checklist
- [x] Related
File Targets
- [x]
hooks/check-board-item.shlines 48-51 — VERIFIED. Line 49-50 containWARNINGS="${WARNINGS:+${WARNINGS} }Consider adding a 'story:' label...". Matches ticket's "Current" snippet exactly. Change to ERRORS pattern. - [x]
hooks/check-board-item.shline 8 — VERIFIED (added by Comment 3). Currently reads# - labels includes a story: label (recommended — warn, don't block). Comment 3 specifies changing to(required). Previous review's refinement item #1 is resolved. - [x]
hooks/check-issue-template.shlines 33-38 — VERIFIED (added by Comment 1). Case statement handles Bug, Spike, Nit-Bundle, and*(default feature). NoTask|task)branch. Task falls through totemplate-issue-feature. - [x]
template-issue-tasknote in pal-e-docs — VERIFIED. Exists (active, has required headings### Type,### Scope,### Acceptance Criteria,### Related). Dependency satisfied.
Repo Placement
OK. All file targets in
forgejo_admin/claude-custom. Matches Repo field. Single-repo change.Dependencies
template-issue-taskmust exist before hook ships — already exists in pal-e-docs. No blocker.- Board item #377 (claude-custom #166,
arch:enforcementconvention) intodo— related, not blocking. - Board item #396 (claude-custom #168, "Remove plan/phase hooks") in
todo— related cleanup, not blocking. - No items in
in_progressconflict with this ticket's file targets.
Acceptance Criteria
Original (4 criteria): All agent-verifiable. "DENIED without story:" testable via hook invocation. "Deny message includes explanation" testable by output inspection. "WITH story: succeeds" and "existing items unaffected" both testable.
Scope addition — Comment 1 (3 criteria): All agent-verifiable. "Recognizes Task" testable. "Task-type requires only Type/Scope/Acceptance Criteria/Related" testable against template pre block. "Feature/Bug/Spike unchanged" testable as regression.
No missing criteria detected.
Blast Radius
- Dead WARNINGS code (nit): After moving story: from WARNINGS to ERRORS, the WARNINGS variable (line 31) and advisory output block (lines 67-76) become dead code — story: was the only WARNINGS producer. Implementing agent should either remove the dead code or add a comment preserving it for future advisory labels. Not a scope gap — a cleanup nit.
- session-start-context.sh Task gap (discovered scope): Lines 558-561 list Bug, Feature, Spike but not Task. Acknowledged in Comment 3 as separate scope. No Forgejo issue exists for it yet. Not a blocker for this ticket.
- Existing unlabeled board items: Several board items lack story: labels. Hook only fires on creation, so existing items unaffected. Board item #398 (claude-custom #170 "Board hygiene") already tracks this cleanup.
- Line 48 inline comment: Line 48 reads
# Check labels (recommend story: label). Should be updated to "require" when line 8 is updated. Minor — implementing agent will naturally catch this when modifying lines 48-51.
Recommendation
No action needed. Previous review's two refinement items are resolved:
- Line 8 comment header — explicitly added as file target in Comment 3 with before/after text.
- session-start-context.sh Task gap — acknowledged as discovered scope, correctly excluded from this ticket's scope.
Two nits for the implementing agent (not scope blockers):
- Clean up or comment the dead WARNINGS infrastructure (lines 31, 67-76) after story: moves to ERRORS.
- Update line 48 inline comment from "recommend" to "require" alongside the line 8 header update.