Phases 0, 1, and 2 all landed Saturday. Mission Control is what's left — and since STATUS.md is already a generated view over the same data, the real question is what a dashboard does that a file can't.
The roadmap scopes phase 3 at 3-5 sessions, done when 'capture on phone → auto-route → digest entry → decision approved from phone' works end to end. Without a sharp answer to what it adds over STATUS.md, that's 3-5 sessions of building a prettier version of a file you already generate.
Saturday's gen_status.py made STATUS.md a generated artifact — automation health, engine activity, active projects, open commitments, all read from the same events and ledgers a dashboard would read. That's a genuinely good outcome, and it raises the bar for phase 3. If the dashboard is the same data with better typography, it's decoration, and decoration is the thing that gets abandoned first because nothing depends on it.
There are three things a flat file structurally cannot do. It can't act — you can read that a decision is pending but not approve it where you're standing, which is exactly the gap phase 1's ntfy buttons started closing. It can't reconcile — this week's false green existed because the health check and the alert ledger live in separate files and nothing puts them side by side; a dashboard that shows both in one row makes the contradiction impossible to miss. And it can't compress time — a file holds one timestamp per job, while a dashboard can show a heartbeat as seven days of sparkline, which is how you'd have noticed the jobhunt sweep dying rather than reading OK next to it.
Act, reconcile, compress. Every one of those traces to something that actually went wrong this week, which is the right way to scope a build — not from a feature list but from the failures you can name. Anything on the phase 3 list that doesn't serve one of the three is a candidate for cutting, and cutting it is how 3-5 sessions stays 3-5 sessions.
The comparison that scopes the work — read them side by side:
# What the file gives you today
head -30 /Users/tom/Claude/STATUS.md
# The same data, raw
cat /Users/tom/Claude/PDB/data/alert-state.json
ls /Users/tom/Claude/PDB/data/heartbeats/
ls /Users/tom/Claude/PDB/data/jarbus-events/ | tail -5
# The three questions to hold it against:
# ACT — can I approve the pending decision from here?
# RECONCILE — does health-check agree with alert-state, visibly?
# COMPRESS — is this job's last 7 days visible, or just its last run?
A dashboard earns its keep by doing what a file can't — acting, reconciling, and compressing time. Scope it to those three or you've built a prettier STATUS.md.