Summary
The session-flow running-retro detached observer declares a session ended after idle_seconds (default 900) of transcript quiet, runs its post-end analysis, and exits — permanently. In an attended session, 15 minutes of the operator reading and typing a long reply tripped it mid-session: the analysis ran against a partial transcript, and the remainder of the session was left unobserved.
Evidence
Status file from the affected run (v0.17.3):
{"cycles": 211, "lines_observed": 44, "idle_seconds": 900.1,
"last_growth": "2026-07-26T04:01:39Z", "state": "ended-idle"}
Analysis fired at 04:16Z and the ledger checkpoint was written while the session was still active (the session continued for a substantial further stretch, unobserved).
Why this matters
- Attended/interactive sessions routinely have >15-minute human pauses; mtime-idle is a weak proxy for "session ended."
- The failure is silent and terminal: no re-arm, no notice to the session, analysis covers a prefix and presents itself as the session retro.
Suggested directions (any subset)
- Growth re-check before analysis, and resume on renewed growth: on idle trip, snapshot offset; if the transcript grows during or after analysis, return to watching and supersede/append at the true end rather than exiting.
- Raise the default for attended contexts (900s is tuned for abandoned sessions, not thinking humans) and surface the
observer_idle_seconds config more prominently in the arm output.
- Prefer a positive end signal where available — a SessionEnd hook event writing a tombstone the observer polls — with mtime-idle as fallback only.
Filed by an AI agent during an attended session (operator-directed). Related: #1468 (arm launcher NameError, same component).
Summary
The
session-flowrunning-retro detached observer declares a session ended afteridle_seconds(default 900) of transcript quiet, runs its post-end analysis, and exits — permanently. In an attended session, 15 minutes of the operator reading and typing a long reply tripped it mid-session: the analysis ran against a partial transcript, and the remainder of the session was left unobserved.Evidence
Status file from the affected run (v0.17.3):
{"cycles": 211, "lines_observed": 44, "idle_seconds": 900.1, "last_growth": "2026-07-26T04:01:39Z", "state": "ended-idle"}Analysis fired at 04:16Z and the ledger checkpoint was written while the session was still active (the session continued for a substantial further stretch, unobserved).
Why this matters
Suggested directions (any subset)
observer_idle_secondsconfig more prominently in the arm output.Filed by an AI agent during an attended session (operator-directed). Related: #1468 (arm launcher NameError, same component).