Constellation · v8 · three-surface split

v8 splits the Constellation dashboard across three Claude Code extension surfaces, each rendering in the right place. The columns from v7 no longer live in one giant mockup — they live where Claude Code actually has room for them.

surface 1 main statusline · always-on strip ~/.claude/settings.json → statusLine.command

Replaces your existing session_progress_real.py with a 5-line strip: three progress bars (context window first, then 5-hour block, then weekly all-model cap), a one-line ecosystem summary with OSC 8 clickable links to each component's MCP surface, and one most-recent event. Renders on idle (~every few hundred ms); adapts to COLUMNS/LINES env vars (added in Claude Code 2.1.153).

MED
186k / 200k context window 93% used
OK
442k / 1m 5-hour rolling block resets 7pm
HIGH
9.2m / 10m weekly all-model cap resets Sun
07:42:11 [info] pools.spin_up mahavishnu complete · cmd+click for mahavishnu mcp health
surface 2 subagent statusline · per-task rows ~/.claude/settings.json → subagentStatusLine.command

Receives a tasks array (each task: id, name, type, status, tokenCount, startTime, cwd, label). Output one JSON row per task: {"id": "<task id>", "content": "<row body>"}. Renders one row per active Mahavishnu worker / Claude Code subagent. This is where the workflow chain lives — one row per stage.

w-01 scout · akosha diffing 12.4k tok · 00:41
w-02 plan · crackerjack running 08.1k tok · 00:28
w-03 patch · waiting on session-buddy memory 04.7k tok · 00:12
w-04 verify · queued — · —
w-05 land · queued — · —
# stdout from subagentStatusLine script — one JSON row per active task {"id": "w-01", "content": "🟢 scout · akosha diffing · 12.4k tok · 00:41"} {"id": "w-02", "content": "🟢 plan · crackerjack running · 08.1k tok · 00:28"} {"id": "w-03", "content": "🟡 patch · waiting on session-buddy · 04.7k tok · 00:12"} {"id": "w-04", "content": "🔵 verify · queued"} {"id": "w-05", "content": "🔵 land · queued"}
surface 3 OSC 777 toasts · native transient notifications PostToolUse hook → EventBridge subscriber → OSC 777 emit

Lifecycle events from the Mahavishnu EventBridge (workflow_started, stage_completed, completed, failed, pool_scaled, worker.completed, crackerjack.gate_raised) emitted via OSC 777 as native terminal notifications. They appear briefly in the corner of the terminal (iTerm2, WezTerm, Kitty, Ghostty), don't displace the statusline, and auto-dismiss. Use mahavishnu-activity-stream.py as the PostToolUse hook that drains the queue and emits toasts.

worker w-02 completed
refactor-auth stage=plan · 8.1k tokens · 28s
07:42:08
workflow stage started
refactor-auth · stage=patch · routed to local pool
07:40:42
crackerjack gate raised warning
flaky test #218 — known issue, retry queued
07:40:11
workflow failed
release-v4 · stage=verify · crackerjack score 71 < 80 min
07:38:02
OSC 777 sequence per toast: \033]777;notify;title=worker w-02 completed;body=refactor-auth stage=plan · 8.1k tokens · 28s\a
Terminal renders the toast as a native notification (iTerm2: banner · WezTerm/Ghostty: overlay · GNOME Terminal: silent). No screen real estate consumed.