Review: Scope review pipeline: jidoka for the left side of the board (re-review)

review-364-2026-03-27-v2 Review

review ready

Verdict: READY

Re-review of board item #364 after refinement. All 7 recommendations from review-364-2026-03-27 have been addressed. Architectural decision resolved. Decomposition plan documented in body.

Template Completeness

  • [x] Type -- Feature
  • [x] Lineage -- standalone, discovered scope
  • [x] Repo -- forgejo_admin/claude-custom
  • [x] User Story -- well-formed As/I want/So that
  • [x] Context -- excellent TPS analogy, three failure modes, jidoka framing
  • [x] File Targets -- create list, modify list, NOT-touch list all present
  • [x] Acceptance Criteria -- 9 items (expanded from 7 to cover bulk_move and sync_board)
  • [x] Test Expectations -- 3 manual tests + run command note
  • [x] Constraints -- 6 constraints including resolved architectural decision
  • [x] Decomposition Recommendation -- 3-ticket split documented with AC mapping
  • [x] Checklist -- standard PR checklist
  • [x] Related -- 6 related items linked
All sections present and complete.

Traceability

  • [x] story:scope-review label -- user story in issue body
  • [x] arch:hooks label -- primary architecture component
  • [x] arch:board-api label -- secondary architecture component
  • [x] Forgejo issue -- forgejo_admin/claude-custom#161, open
All three legs of the traceability triangle are satisfied.

File Targets

  • [x] ~/.claude/hooks/check-board-advance.sh -- create target. Does not exist. Parent dir has 38 hooks. Naming follows convention. VERIFIED.
  • [x] sop-ticket-scope-review pal-e-docs note -- create target. Confirmed 404 via get_note. VERIFIED.
  • [x] ~/.claude/skills/review-ticket/SKILL.md -- modify target. Exists at correct path with correct casing. Contains router logic, 78 lines. VERIFIED.
  • [x] ~/.claude/settings.json or settings.local.json -- modify target. Symlinked from ~/claude-custom/settings.json. No existing update_board_item or bulk_move matcher in PreToolUse. VERIFIED.
  • [x] template-ticket pal-e-docs note -- modify target. Exists with 9 sections, no Review Gate section yet. VERIFIED.
  • [x] sop-board-workflow pal-e-docs note -- modify target. Exists with column-semantics, item-lifecycle sections. VERIFIED.
  • [x] skill-review-ticket pal-e-docs note -- modify target (agent workflow note). Exists, last updated 2026-03-27. VERIFIED.

Repo Placement

OK. Issue filed on forgejo_admin/claude-custom. All filesystem targets are in claude-custom (hooks, skills, settings). pal-e-docs note modifications are MCP API writes -- no separate repo PR needed.

Dependencies

  • [x] mcp__forgejo__update_issue -- now exists in Forgejo MCP. Confirmed via ToolSearch. AC5 consolidated spec convention is unblocked.
  • [x] Architectural decision resolved -- curl-to-API approach documented in Constraints. Ground truth from database over tool_input inspection.
  • [x] Review note naming convention review-{item_id}-{date} already defined in skill-review-ticket. No conflict.
  • No blocking board dependencies found. Two items in in_progress (spike #478 note-type audit, phase #98 context-intelligence) are unrelated.

Acceptance Criteria

9 ACs total. All are verifiable:
  • AC1: Hook blocks update_board_item todo-to-next_up without review -- testable via manual column advance
  • AC2: Hook covers bulk_move_board_items -- testable (NEW, addresses prior blast radius gap)
  • AC3: Hook excludes sync_board operations -- testable (NEW, addresses prior sync safety concern)
  • AC4: Skill handles fix-and-re-review loop -- testable via manual /review-ticket invocation
  • AC5: Convention documented (body updates vs comments) -- verifiable in SOP note
  • AC6: SOP note sop-ticket-scope-review exists -- verifiable via get_note
  • AC7: template-ticket documents review gate -- verifiable via get_note
  • AC8: E2E happy path (create-review-fix-approve-advance) -- manual multi-step test
  • AC9: E2E block path (advance without review blocked) -- manual test
9 ACs exceeds the 5-AC threshold. Decomposition into 3 child tickets is documented in the issue body with clear AC-to-ticket mapping.

Blast Radius

  • [x] bulk_move_board_items bypass -- now addressed in AC2
  • [x] sync_board safety -- now addressed in AC3. session-start-board-sync.sh uses POST /boards/{slug}/sync (not update_board_item), so hook matchers on update_board_item and bulk_move won't fire during sync anyway. AC3 is belt-and-suspenders.
  • [x] First API-calling hook -- acknowledged as novel pattern in Constraints. Must fail-open if pal-e-docs is down.
  • [x] Execution pipeline unaffected -- hook only gates todo-to-next_up
  • [x] Skill backward compatibility -- existing READY verdicts still valid. Loop logic is additive.

Decomposition

Decomposition plan is documented in the issue body. 3 child tickets with clear AC mapping:
  • Hook + settings -- check-board-advance.sh, settings.json, bulk_move coverage, sync_board exclusion (AC 1-3, 8-9)
  • Skill rewrite + SOP -- SKILL.md loop logic, sop-ticket-scope-review, consolidated spec convention (AC 4-6)
  • Doc updates -- template-ticket review gate, sop-board-workflow cross-ref, skill-review-ticket note update (AC 7)
Each child ticket is estimated under 5 minutes. Parent ticket stays in todo as coordination anchor until children are created and dispatched.

Prior Review Fixes Verified

  • [x] [BODY] File path case: SKILL.md -- fixed
  • [x] [BODY] False constraint about check-board-item.sh pattern -- fixed, novel pattern acknowledged
  • [x] [BODY] bulk_move_board_items in scope -- fixed, now AC2
  • [x] [BODY] sync_board safety -- fixed, now AC3
  • [x] [BODY] update_issue dependency -- fixed, tool confirmed available
  • [x] [SCOPE] curl-to-API vs tool_input -- resolved, documented in Constraints
  • [x] [DECOMPOSE] 3-ticket split -- documented in body with AC mapping

Recommendation

No action needed. Scope is solid. All prior refinement items addressed. Next step: create the 3 child tickets from the Decomposition Recommendation section, then advance parent to next_up as coordination anchor (or track children independently and close parent when all complete).