One change enters the pipeline. A packet streams through the active lane, lighting each stage as it passes — while the gauges for risk flags, confidence, blast-radius and hooks update live. Pick a lane, or trip a gate, and watch the board react.
specs/<slug>/ESCALATIONS.md — deny-on-no-response until a human confirms scope.
These categories always force high-risk, regardless of the lane intake first assigned — and only a human narrowing scope can lower them. Click any gate to watch the risk meter spike, the alarm fire, and the packet reroute through the full high-risk path.
settings.json, hooks/*, skill enginesA gate hit and not yet narrowed by a human → the change stops at specs/<slug>/ESCALATIONS.md. It's deny-on-no-response: with no recorded decision, the work stays blocked.
Hooks fire on Claude Code lifecycle events — the machine safety net that runs regardless of lane. They're why even the no-ceremony tiny lane is safe: the rules are enforced by code, not by hope.
| hook | fires | when | does |
|---|---|---|---|
| scope-gate.sh | UserPromptSubmit | on request | Warn on implementation intent with no plan referenced (lane-aware) |
| ruff-on-edit.sh | PostToolUse · Edit/Write | on edit | ruff --fix + ruff format on edited .py |
| blast-radius-check.sh | PostToolUse · Edit/Write | on edit | Warn when an edit touches a file outside the active plan's file set |
| render-plan-on-write.sh | PostToolUse · Edit/Write | on edit | Auto-render PLAN.md → PLAN.html (deterministic, no LLM) |
| check-untracked-py.sh | PreToolUse · git | at commit | Block commit/push if untracked .py files exist |
| commit-quality-gate.sh | PreToolUse · git commit | at commit | Secrets scan + debug-artifact check + targeted pytest |
| risk-corroboration.sh | PreToolUse · git commit | at commit | Block if the staged diff trips a hard gate but the declared lane is below high-risk |
| branch-guard.sh | PreToolUse · git commit | at commit | Warn when committing on main |
| branch-isolation-guard.sh | PreToolUse · Edit/Write | on edit | Block a code edit when implementation is underway on a shared branch with no isolated worktree |
| session-knowledge.sh | SessionStart | on start | Load the knowledge base (INDEX + critical patterns) into session context; never blocks |
| state-breadcrumb.sh | SessionEnd | on exit | Append a dated breadcrumb to specs/STATE.md for cross-session resume; never blocks |