Launch() = validate → resolveConfig → preflight → dispatch(driver) → report; drivers self-register as strategies. Exit contract SSOT (bridge/exitcodes.go:25-46): 80 boot-timeout, 81 artifact-timeout, 85 unknown-prompt/exhausted, 86 respond-loop-guard, 127 missing binary.❯, visible pane), codex-tmux (›, alt-screen, menu skip, pretrusted config), agy-tmux (? for shortcuts, C-c ×2 exit) — all share runTmuxREPL with boot-tick trust handling and dead-shell guards.panestream/signalcenter.go): one facade per session aggregates liveness with winner-takes-all priority Exhausted > Converging > Hung > BusyButStagnant > Idle; per-CLI detectors (Claude’s monotonic token counter, agy’s spinner…).liveness.go:58-90): when the pane matches the profile’s exhausted-regex, verdict overrides to LivenessExhausted (a re-printed quota banner can’t masquerade as progress), and the artifact wait fast-fails 85 (driver_tmux_repl.go:654-663) so the fallback CLI takes over instead of burning the full timeout.looppreflight.go:208) before dispatching lanes.evolve-bridge-p<pid> so fleet runs can’t collide; sessions are registry-recorded; orphans are lease-checked and reaped; GC never parses names and never touches a live run.Incident-driven throughout: cycle-283 (quota wall re-burned boot every dispatch → clihealth benches), 274/277 (dead-shell wedge), 262 (dead panes read as progress → liveness detectors), 286/291 (masked evidence, render wedges), ADR-0054 (per-run sockets for concurrent sibling loops). Verification found zero doc↔code drift in this domain — the most accurately documented subsystem in the repo.