0066 — The Supervisor is off

What happened

The mini rebooted at about 00:51Z on 2026-10-18 and ran at load 130–178 afterwards.

  1. A freshly launched claude took about 3.5 minutes to register. One measured case: pid 973 was exec'd at 01:18:34Z and registered at 01:21:59Z. The Supervisor's readiness gate waits 75 s.
  2. Every respawn was therefore logged respawn FAILED: claude never registered in the roster, and driverSid stayed on the dead predecessor.
  3. The next sweep took "dead, respawn" again. Its stale-kill ended the successor, which by then was registered and working its kickoff.
  4. 19 of 30 respawns in three hours went this way. When stopped, 12 tasks had a working Driver their task file did not name.
  5. The constant stream of booting sessions also made the twin guard refuse every resume-from-disk ("runs a conversation that cannot be identified"). That is why Reopen Tabs would not reopen Gera's stopped tabs.

The loop is fixed in agentflow-relay#405:

The decision

The Supervisor stays off until Gera turns it back on.

What stops while it is off

Every phase of the sweep. The authoritative list is sweepOnce() in supervisor/src/index.ts: whatever it calls is what is not running. The list below is a far copy as of 2026-10-18, so trust the code over it. These are the ones a person will notice:

Turning it back on

The first six steps are on the mini, by a person, and in this order. Building before bootstrapping is what keeps the old binary from ever running.

  1. git -C ~/code/PropFlow/agentflow log --oneline live..origin/main. Anything listed ships with the build, so read it first. On 2026-10-18 it was #405 alone.
  2. git -C ~/code/PropFlow/agentflow merge --ff-only origin/main.
  3. npm run build in both relay/ and supervisor/. That is deploy.sh's build half. Don't run deploy.sh itself yet: its kickstart fails on a disabled service.
  4. Prove the new build is the one on disk before anything can run it. grep -c 'adopting it, not respawning over it' supervisor/dist/index.js must print 1 or more, and supervisor/dist/index.js must be newer than the merge of #405. A 0 means the old, killing build is still in place, so stop.
  5. launchctl enable gui/501/com.propflow.agentflow-supervisor.
  6. launchctl bootstrap gui/501 ~/Library/LaunchAgents/com.propflow.agentflow-supervisor.plist. Then launchctl kickstart -k gui/501/com.propflow.agentflow-relay, so the relay runs the same commit.
  7. Watch ~/.claude/jobs/tasks/*/supervisor.log for two sweeps. Expect adopting it / still booting lines, and no respawning successor for a task whose op-<task> holds a claude.
  8. Then remove the "OFF" note in SYSTEMS.md and mark this ADR superseded.

Options not taken