feat: add parallel quality gate evaluation with evaluating-gates phase
Introduce infrastructure to spawn parallel sub-agents for independent
quality gate questions (Q3: Threat Surface, Q4: Requirement Impact)
during slice planning, reducing wall-clock time per milestone.
- quality_gates DB table (schema v12) with CRUD functions
- evaluating-gates phase in state machine between planning and executing
- gate-evaluate dispatch rule (opt-in via gate_evaluation preference)
- gsd_save_gate_result tool for sub-agents to persist findings
- Gate seeding inside plan-slice transaction (atomic with plan + tasks)
- Markdown renderer injects gate findings into plan.md and task-plan.md
- Recovery, rogue detection, dashboard, and scope-badge wired for new phase
- 15 new tests (9 storage + 6 dispatch/state)
plan-slice tool
└─ transaction: upsertSlicePlanning + insertTask(s) + insertGateRow(s)
└─ renderPlanFromDb
deriveState() → phase: "evaluating-gates" (pending slice gates)
auto-dispatch: "evaluating-gates → gate-evaluate"
├─ if !prefs.gate_evaluation.enabled → markAllGatesOmitted → skip
└─ dispatch gate-evaluate unit
└─ parent agent spawns sub-agents in parallel:
├─ Q3 agent → gsd_save_gate_result(verdict, findings)
└─ Q4 agent → gsd_save_gate_result(verdict, findings)
deriveState() → phase: "executing" (no pending slice gates)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>