Enforce review gate at backlog→todo (not just todo→next_up) #214

Closed
opened 2026-03-28 18:38:10 +00:00 by forgejo_admin · 1 comment
Contributor

Type

Feature

Lineage

  • Board: board-pal-e-agency
  • Story: story:scope-review
  • Arch: arch:hooks, arch:board-api
  • Discovered scope from PR #213 merge + Lucas correction on kanban semantics

Repo

forgejo_admin/claude-custom

User Story

As the PM, I need the review gate enforced at backlog→todo (not just todo→next_up) so that TODO always means REVIEWED. Currently check-board-advance.sh only gates todo→next_up — items can be moved from backlog to todo without a /review-ticket APPROVED verdict.

Context

Lucas's correction: "TODO MUST ALWAYS MEAN REVIEWED. NO EXCEPTIONS." The current hook (check-board-advance.sh from PR #213) enforces the wrong transition. The primary review gate should be backlog→todo. The todo→next_up gate can remain as belt-and-suspenders (dependency scoping).

The corrected flow:

backlog ──/review-ticket APPROVED──> todo ──scope deps──> next_up ──dispatch──> in_progress

File Targets

  • hooks/check-board-advance.sh — extend to also gate backlog→todo transitions
  • tests/test_check_board_advance.sh — add tests for backlog→todo gate

Acceptance Criteria

  • check-board-advance.sh blocks backlog→todo without APPROVED review note
  • Existing todo→next_up gate remains functional
  • Tests cover both gates (backlog→todo AND todo→next_up)
  • Regression test: backlog→todo without review note is blocked

Test Expectations

  • Run bash tests/test_check_board_advance.sh — all tests pass
  • Manual: attempt update_board_item moving item from backlog to todo without review — blocked
  • Manual: attempt same move with APPROVED review note — allowed

Constraints

  • Preserve existing todo→next_up enforcement (don't remove it)
  • Review notes follow the review-{item_id}-* naming pattern
  • The hook must check for APPROVED verdict in review note content

Checklist

  • Read existing check-board-advance.sh
  • Add backlog→todo gate logic
  • Add tests for the new gate
  • Verify existing tests still pass
  • Push to PR
  • forgejo_admin/claude-custom#161 — parent (scope review pipeline)
  • forgejo_admin/claude-custom#213 — the PR that created the hook
  • feedback_todo_means_reviewed.md — the behavioral correction driving this fix
### Type Feature ### Lineage - Board: board-pal-e-agency - Story: story:scope-review - Arch: arch:hooks, arch:board-api - Discovered scope from PR #213 merge + Lucas correction on kanban semantics ### Repo `forgejo_admin/claude-custom` ### User Story As the PM, I need the review gate enforced at backlog→todo (not just todo→next_up) so that TODO always means REVIEWED. Currently `check-board-advance.sh` only gates todo→next_up — items can be moved from backlog to todo without a /review-ticket APPROVED verdict. ### Context Lucas's correction: "TODO MUST ALWAYS MEAN REVIEWED. NO EXCEPTIONS." The current hook (check-board-advance.sh from PR #213) enforces the wrong transition. The primary review gate should be backlog→todo. The todo→next_up gate can remain as belt-and-suspenders (dependency scoping). The corrected flow: ``` backlog ──/review-ticket APPROVED──> todo ──scope deps──> next_up ──dispatch──> in_progress ``` ### File Targets - `hooks/check-board-advance.sh` — extend to also gate backlog→todo transitions - `tests/test_check_board_advance.sh` — add tests for backlog→todo gate ### Acceptance Criteria - [ ] `check-board-advance.sh` blocks backlog→todo without APPROVED review note - [ ] Existing todo→next_up gate remains functional - [ ] Tests cover both gates (backlog→todo AND todo→next_up) - [ ] Regression test: backlog→todo without review note is blocked ### Test Expectations - [ ] Run `bash tests/test_check_board_advance.sh` — all tests pass - [ ] Manual: attempt `update_board_item` moving item from backlog to todo without review — blocked - [ ] Manual: attempt same move with APPROVED review note — allowed ### Constraints - Preserve existing todo→next_up enforcement (don't remove it) - Review notes follow the `review-{item_id}-*` naming pattern - The hook must check for APPROVED verdict in review note content ### Checklist - [ ] Read existing check-board-advance.sh - [ ] Add backlog→todo gate logic - [ ] Add tests for the new gate - [ ] Verify existing tests still pass - [ ] Push to PR ### Related - `forgejo_admin/claude-custom#161` — parent (scope review pipeline) - `forgejo_admin/claude-custom#213` — the PR that created the hook - `feedback_todo_means_reviewed.md` — the behavioral correction driving this fix
Author
Contributor

Scope Review: READY

Review note: review-581-2026-03-28
Ticket is fully scoped, traceable, and executable in a single agent pass. Both file targets verified, all 4 AC are testable, no unresolved dependencies, no decomposition needed (2 files, 1 repo, ~3-4 min estimated).

## Scope Review: READY Review note: `review-581-2026-03-28` Ticket is fully scoped, traceable, and executable in a single agent pass. Both file targets verified, all 4 AC are testable, no unresolved dependencies, no decomposition needed (2 files, 1 repo, ~3-4 min estimated).
forgejo_admin 2026-03-28 23:10:48 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ldraney/claude-custom#214
No description provided.