graph TD
Start([Start: Review Story]) --> Phase1[Phase 1: Discovery
Team ID auto-discovery]
Phase1 --> Phase2[Phase 2: Preparation
Determine pass: Pass 1 or Pass 2
based on test task existence]
Phase2 --> PassCheck{Which pass?}
%% Pass 1: Early Exit Pattern with Worker Delegation
PassCheck -->|Pass 1| P1_Phase3[Phase 3: Delegate to
ln-341-code-quality-checker
Worker analyzes DRY/KISS/YAGNI/Architecture
FAIL FAST FIRST]
P1_Phase3 --> CodeQualityCheck{Worker verdict:
PASS or
ISSUES_FOUND?}
CodeQualityCheck -->|ISSUES_FOUND| CodeQualityFail[❌ Code quality failed
Create refactoring task
STOP Pass 1]
CodeQualityCheck -->|PASS| P1_Phase4
P1_Phase4[Phase 4: Delegate to
ln-342-regression-checker
Worker runs ALL existing tests
FAIL FAST SECOND]
P1_Phase4 --> RegressionPass{Worker verdict:
PASS or
FAIL?}
RegressionPass -->|FAIL| RegressionFail[❌ Regression detected
Create fix task
STOP Pass 1]
RegressionPass -->|PASS| P1_Phase5
P1_Phase5[Phase 5: Delegate to
ln-343-manual-tester
Worker tests AC via curl/puppeteer
Creates scripts/tmp_[story_id].sh
Documents in Linear Format v1.0
FAIL FAST THIRD]
P1_Phase5 --> ManualTestCheck{Worker verdict:
PASS or
FAIL?}
ManualTestCheck -->|FAIL| ManualTestFail[❌ Manual testing failed
Create fix task
STOP Pass 1]
ManualTestCheck -->|PASS| P1_Phase6
P1_Phase6[Phase 6: Verdict and Next Steps
All quality gates passed via delegation]
P1_Phase6 --> CheckTestTask{Test task
exists?}
CheckTestTask -->|Yes & Done| Pass2Entry[Continue to Pass 2]
CheckTestTask -->|Yes & NOT Done| ReportStatus[Report test task status
Exit]
CheckTestTask -->|NOT exists| InvokeFinalizer[✅ Delegate to ln-350-story-test-planner
via Skill tool
Worker creates test task]
InvokeFinalizer --> NextSteps[Next steps:
ln-334-test-executor executes test task
ln-332-task-reviewer reviews
Auto-invoke Pass 2 when Done]
NextSteps --> End
%% Pass 2
PassCheck -->|Pass 2| Pass2Entry
Pass2Entry --> P2_Phase1[Pass 2 Phase 1: Prerequisites Check
Load Story + tasks
Verify test task status = Done
Load test files]
P2_Phase1 --> P2_PrereqCheck{Test task
Done?}
P2_PrereqCheck -->|No| P2_Error[Error: Test task missing or NOT Done
Exit]
P2_PrereqCheck -->|Yes| P2_Phase2
P2_Phase2[Pass 2 Phase 2: Test Verification
All tests pass 2-5 E2E 3-8 Integration
5-15 Unit 10-28 total Priority ≥15
NO performance/load tests
Infrastructure updated]
P2_Phase2 --> P2_Phase3[Pass 2 Phase 3: Verdict and Story Closure]
P2_Phase3 --> P2_Verdict{Verdict?}
P2_Verdict -->|Pass| StoryDone[Mark Story Done
Update kanban_board.md
Minimal cleanup]
P2_Verdict -->|Fail| CreateFixTasks[Create fix tasks
Story remains current state
Re-run Pass 2 after fixes]
CodeQualityFail --> End([End])
RegressionFail --> End
ManualTestFail --> End
ReportStatus --> End
StoryDone --> End
CreateFixTasks --> End
P2_Error --> End
classDef discovery fill:#E3F2FD,stroke:#1976D2,stroke-width:2px
classDef processing fill:#FFF9C4,stroke:#F57C00,stroke-width:2px
classDef decision fill:#FFE0B2,stroke:#E64A19,stroke-width:2px
classDef action fill:#C8E6C9,stroke:#388E3C,stroke-width:2px
classDef error fill:#FFCDD2,stroke:#C62828,stroke-width:2px
class Phase1,Phase2 discovery
class P1_Phase3,P1_Phase4,P1_Phase5,P1_Phase6,P2_Phase1,P2_Phase2,P2_Phase3 processing
class PassCheck,CodeQualityCheck,RegressionPass,ManualTestCheck,CheckTestTask,P2_PrereqCheck,P2_Verdict decision
class InvokeFinalizer,NextSteps,StoryDone,ReportStatus action
class CodeQualityFail,RegressionFail,ManualTestFail,CreateFixTasks,P2_Error error