98 lines
5.7 KiB
HTML
98 lines
5.7 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>ln-340-story-quality-gate - State Diagram</title>
|
|
<script src="https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js"></script>
|
|
<link rel="stylesheet" href="../shared/css/diagram.css">
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<header>
|
|
<h1>🔍 ln-340-story-quality-gate</h1>
|
|
<p class="subtitle">Story Reviewer - State Diagram</p>
|
|
</header>
|
|
<div class="info-box">
|
|
<h3>📋 Overview</h3>
|
|
<ul>
|
|
<li><strong>Purpose:</strong> Two-pass review - Pass 1 (Early Exit Pattern) + Pass 2 (verify tests + Story Done)</li>
|
|
<li><strong>Pass 1 (6 phases):</strong> Discovery → Preparation → **Code Quality (FAIL FAST)** → **Regression Check (FAIL FAST)** → **Manual Testing (FAIL FAST)** → Verdict</li>
|
|
<li><strong>Pass 2 (3 phases):</strong> Prerequisites check → Test verification (10-28 tests, Priority ≥15) → Verdict and Story closure</li>
|
|
<li><strong>Early Exit Pattern:</strong> Each Pass 1 phase can stop execution and create fix/refactor task</li>
|
|
</ul>
|
|
</div>
|
|
<div class="diagram-container">
|
|
<div class="mermaid">
|
|
graph TD
|
|
Start([Start: Review Story]) --> Phase1[Phase 1: Discovery<br/>Team ID auto-discovery]
|
|
Phase1 --> Phase2[Phase 2: Preparation<br/>Determine pass: Pass 1 or Pass 2<br/>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<br/>ln-341-code-quality-checker<br/>Worker analyzes DRY/KISS/YAGNI/Architecture<br/>FAIL FAST FIRST]
|
|
P1_Phase3 --> CodeQualityCheck{Worker verdict:<br/>PASS or<br/>ISSUES_FOUND?}
|
|
CodeQualityCheck -->|ISSUES_FOUND| CodeQualityFail[❌ Code quality failed<br/>Create refactoring task<br/>STOP Pass 1]
|
|
CodeQualityCheck -->|PASS| P1_Phase4
|
|
|
|
P1_Phase4[Phase 4: Delegate to<br/>ln-342-regression-checker<br/>Worker runs ALL existing tests<br/>FAIL FAST SECOND]
|
|
P1_Phase4 --> RegressionPass{Worker verdict:<br/>PASS or<br/>FAIL?}
|
|
RegressionPass -->|FAIL| RegressionFail[❌ Regression detected<br/>Create fix task<br/>STOP Pass 1]
|
|
RegressionPass -->|PASS| P1_Phase5
|
|
|
|
P1_Phase5[Phase 5: Delegate to<br/>ln-343-manual-tester<br/>Worker tests AC via curl/puppeteer<br/>Creates scripts/tmp_[story_id].sh<br/>Documents in Linear Format v1.0<br/>FAIL FAST THIRD]
|
|
P1_Phase5 --> ManualTestCheck{Worker verdict:<br/>PASS or<br/>FAIL?}
|
|
ManualTestCheck -->|FAIL| ManualTestFail[❌ Manual testing failed<br/>Create fix task<br/>STOP Pass 1]
|
|
ManualTestCheck -->|PASS| P1_Phase6
|
|
|
|
P1_Phase6[Phase 6: Verdict and Next Steps<br/>All quality gates passed via delegation]
|
|
P1_Phase6 --> CheckTestTask{Test task<br/>exists?}
|
|
CheckTestTask -->|Yes & Done| Pass2Entry[Continue to Pass 2]
|
|
CheckTestTask -->|Yes & NOT Done| ReportStatus[Report test task status<br/>Exit]
|
|
CheckTestTask -->|NOT exists| InvokeFinalizer[✅ Delegate to ln-350-story-test-planner<br/>via Skill tool<br/>Worker creates test task]
|
|
InvokeFinalizer --> NextSteps[Next steps:<br/>ln-334-test-executor executes test task<br/>ln-332-task-reviewer reviews<br/>Auto-invoke Pass 2 when Done]
|
|
NextSteps --> End
|
|
|
|
%% Pass 2
|
|
PassCheck -->|Pass 2| Pass2Entry
|
|
Pass2Entry --> P2_Phase1[Pass 2 Phase 1: Prerequisites Check<br/>Load Story + tasks<br/>Verify test task status = Done<br/>Load test files]
|
|
P2_Phase1 --> P2_PrereqCheck{Test task<br/>Done?}
|
|
P2_PrereqCheck -->|No| P2_Error[Error: Test task missing or NOT Done<br/>Exit]
|
|
P2_PrereqCheck -->|Yes| P2_Phase2
|
|
P2_Phase2[Pass 2 Phase 2: Test Verification<br/>All tests pass 2-5 E2E 3-8 Integration<br/>5-15 Unit 10-28 total Priority ≥15<br/>NO performance/load tests<br/>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<br/>Update kanban_board.md<br/>Minimal cleanup]
|
|
P2_Verdict -->|Fail| CreateFixTasks[Create fix tasks<br/>Story remains current state<br/>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
|
|
</div>
|
|
</div>
|
|
<footer>
|
|
<p>ln-340-story-quality-gate v7.0.0 | L2 Orchestrator delegating to workers (ln-341-code-quality-checker, ln-342-regression-checker, ln-343-manual-tester) with Early Exit Pattern + Pass 2 (test verify + Done)</p>
|
|
<p>Last updated: 2025-11-14</p>
|
|
</footer>
|
|
</div>
|
|
<script>
|
|
mermaid.initialize({ startOnLoad: true, theme: 'default', flowchart: { useMaxWidth: true, htmlLabels: true, curve: 'basis' } });
|
|
</script>
|
|
</body>
|
|
</html>
|