Sprint Review — VERIFY Phase
You are reviewing completed work from the sprint. Your job is to dispatch the right reviewers based on what changed, enforce quality gates, and ensure all work meets acceptance criteria before integration.
Review Dispatch Table
For each completed task, determine what changed and spawn the appropriate reviewer agents:
| What changed | Required reviewer | Model | Agent type |
|---|---|---|---|
| Any code | code-reviewer |
Sonnet | feature-dev:code-reviewer |
| Crypto / signing logic | crypto-reviewer |
Opus | crypto-reviewer |
| Identity / auth logic | identity-reviewer |
Opus | identity-reviewer |
| Policy engine logic | policy-reviewer |
Opus | policy-reviewer |
| Input parsing / canonical form | input-surface-reviewer |
Opus | input-surface-reviewer |
| Architecture model (.likec4) | c4-reviewer |
Sonnet | likec4:c4-reviewer |
New/renamed skillsign/*.py modules |
c4-reviewer |
Sonnet | likec4:c4-reviewer |
| Cross-spec references | consistency-checker |
Opus | consistency-checker |
| New attack surface | attack-researcher |
Opus | attack-researcher |
Dispatch Rules
- Every code change gets a
code-reviewer— no exceptions - Security-sensitive changes get the domain-specific reviewer in addition to code review
- Multiple reviewers can run in parallel — spawn them concurrently using the
Tasktool - A change can trigger multiple reviewers (e.g., signing code triggers both
code-reviewerandcrypto-reviewer) - New Python modules trigger a
c4-reviewerto check for architecture drift — the reviewer should compare newskillsign/*.pyfiles against C4 component elements inarchitecture/and flag any modules that lack a corresponding component (or components that lack a corresponding module)
How to Determine What Changed
- Check the task description for which components/modules were modified
- Use
git diffon the worktree branch to see actual file changes - Map changed files to domains:
skillsign/canonical*→ input parsingskillsign/sign*,skillsign/crypto*→ crypto / signingskillsign/verify*→ crypto + identityskillsign/policy*→ policy engineskillsign/oidc*,skillsign/identity*→ identity / autharchitecture/→ architecture modeldocs/spec.md→ cross-spec consistency
- Check for new or renamed
skillsign/*.pyfiles (not just modifications):- New modules may represent new components that need C4 model entries
- Use
git diff --name-statusto detect added (A) or renamed (R) files - Trigger
c4-reviewerto compare new modules againstarchitecture/elements
Quality Gates
TaskCompleted Gate
Before a task can be marked complete, verify:
- All tests pass (unit + integration)
- Acceptance criteria from the task description are met
- Code compiles and lints cleanly (
ruff check)
Plan Approval Gate
For tasks that required plan approval:
- The implementation agent called
ExitPlanMode - Team lead received a
plan_approval_request - Team lead approved via
SendMessagewithtype: "plan_approval_response" - Only then did implementation proceed
Verify the implementation matches the approved plan.
Review Process
For each task under review:
- Read the task — understand acceptance criteria and scope
- Dispatch reviewers — spawn appropriate agents based on dispatch table
- Collect results — wait for all reviewer agents to complete
- Synthesize — combine reviewer findings into a single assessment:
- PASS — all reviewers approve, quality gates met
- PASS with notes — minor suggestions, non-blocking
- FAIL — blocking issues found, specific feedback provided
- Record result — update the task or send feedback to team lead
Handling Review Findings
Blocking issues in current sprint code
Fix immediately in the same cycle. Do NOT create a GitHub issue — the review-fix loop should stay tight:
- Fix the code based on reviewer feedback
- Re-run the relevant reviewers on the fixed code
- Update the review verdict (FAIL → PASS)
- Proceed to integration
Bugs discovered in code from previous sprints
Create a GitHub issue and defer to the next batch:
- Create an issue via
mcp__i-have-issues__create_issuedescribing the bug - Tag with the appropriate milestone and labels
- Do NOT fix it in the current sprint — it needs its own review cycle
- Note it in the cycle record for the retro
Non-blocking notes
Record in the cycle record. Address during the EVOLVE phase if they are process/skill changes, or create issues if they are code improvements to defer.
Review failures (FAIL verdict)
- Create a new task with the specific feedback and required fixes
- Link it to the original task for context
- The fix goes through the same review process
- Do NOT merge work that fails review