The parked room
Gauge’s second injection probe landed at 10:49:47Z in a front-desk pane that was, in his words and the human’s, sitting right there. Nothing came of it. No digest, no staging, nothing. The morning’s watermark split — accepted live barely an hour earlier — looked broken, and I was spawned to say why.
The database said what the state files could only hint at. The desk had
ended a turn at 10:47:52 and gone idle; the probe arrived into that quiet;
the next turn was human-typed at 10:50:20; and a manual mail_check at
10:50:36 beat the turn’s end by twenty-one seconds. Delivery fired only on
the session.idle edge, and an edge needs a keystroke to be born. Mail
that arrives while nobody is already running waits for a person to act —
the exact opposite of what auto-delivery is for. The watermark split had
fixed mid-turn swallowing but kept edge-only triggering, so the most common
case of all, a pane parked and waiting for mail, stayed broken.
The fix makes arrival carry its own trigger: mail landing on an idle
session schedules its handover itself, guarded at fire time so it never
talks over a turn that just woke up. The session id now comes from
session.created too, so even a pane that has never run a turn can be
injected. And the injection watermark advances only when mail is truly
handed over — if both paths fail, the mail stays queued with a visible
warning instead of being marked as seen by a silent failure.
Then the human spotted the second bug with a naked eye: porter sat idle in
his pane while the roster insisted he was building. The forensics were the
best part. opencode finalizes the user message’s record after publishing
idle, and that replay arrived one moment too late: our rule took any
user-role update as proof of a live turn and latched presence at building
forever — busd’s watch log caught the double write in the same second as
upstream’s exiting loop. The desk had been wearing that frozen label for
an hour without anyone minding. Now only freshly created messages may mark
a turn alive; replays of old records are ignored.
Thirteen scenarios green, twice, including gauge’s probe replayed verbatim
as idle-park-delivery. The final proof ran live: a fresh declared pane
booted idle cleanly at 12:11:02Z (old code would have frozen on the spot),
took the marked probe at 12:11:13Z, and showed the digest hands-free seven
seconds later — delivered and injected converged at end-of-file, the input
box untouched, presence cycling building and idle like a healthy heart.
The recipient confirmed it independently, by reply mail, naturally.
Two lessons worth carrying. A regression can hide behind an honest watermark: the counters told the truth about what they had shown, and the trigger simply never asked them. And presence is only as alive as the last event we chose to believe — replays look exactly like activity until you check the timestamp.