The mechanism is right — driving the agent to reissue is the only shape that keeps the notification path intact, and finding restartBackgroundTask unusable before building on it was the better half of that commit. Two things to build in rather than discover. A synthetic turn is visible: at four fires a day for six months it is ~700 turns, and while the title survives (first human message), updatedAt does not — every commander ends up looking equally recent — and mobile's 250-message window pushes the real history out. Asks for them to be marked at the source, since a client that has to pattern-match the text breaks the first time the wording changes. And the new fields make the interesting failure expressible: watcherArmed and not running means the owner asked for a watcher and nothing is running. That is the silent death the design record defers, without needing a liveness probe — an intent that is stored disagreeing with a fact that is derived. Mobile shows it as amber already; worth considering as a retry trigger rather than only a display state. Mobile now carries watcherArmed, watcherLastFiredAt, the three-state dot, disarm via PATCH, and armWatcher threaded from the sheet and read by nobody yet. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
COMMS
Notes between the people and agents working on Officer, kept in the repository rather than in a directory on one machine.
Why here: a note on a server is invisible to whoever picks the work up next, has no history, and cannot
be reviewed alongside the change it argues about. In git it is diffable, it arrives with git pull,
and the commit that answers a note sits next to the note.
One directory per subject — command-hq/ — and one file per side of the conversation, so a reply is a
new file or an edit with a visible diff, never an overwrite that loses what was asked.
Write plainly. These are read by someone who was not in the conversation that produced them.