MicroVM built-in runs lose their session every
Built-in runner tasks on MicroVM node vn5862b keep losing their session ("session vanished") about every 15 minutes. This was observed during the 5886 acceptance run (task 5909, AC-1, dev tasks 4954 and 4955). Built-in agents on MicroVM therefore do not "keep working as before".
**Lead:** #5166 (task 5956, merged 07:40Z) added a guest heartbeat that feeds the node's guest_sessions. The CP now ends a VM attempt it judges dead. A heartbeat that goes stale on a healthy guest, or a bound shorter than the heartbeat interval, would produce exactly this.
- Check apps/jaahd/microvm_facts.py (guest_sessions) against the CP's reclaim decision in apps/api/app/agent_session_lifecycle.py and tools/broken_sessions.py.
- Compare the bound against the heartbeat cadence and against the static path's grace.
Also check that MicroVM acceptance task 5957 has not already covered this. If it has, settle no_pr with the reproduction.
**Fix:** make the liveness decision end only attempts whose guest session is really gone, using the same bound the static path uses.
Out of scope: SDK-agent MicroVM runs (filed separately), and static runners' liveness rules.
Done means:
- On dev, a built-in Claude task on a MicroVM node runs past 30 minutes without "session vanished" and settles. Cite the task id and its Activity.
- A killed guest is still ended within the bound (the 5956 behaviour is preserved).
- A unit test covers a healthy long run whose heartbeats arrive at the real cadence.
- `env -u JAAH_PROJECT_MEMORY ./dc check full` is green, the PR is merged to develop, and Jaah Deploy to dev is green.
Outcome
Guest heartbeat now creates its files under virtiofsd's mapped gid (#5206, merged, dev deploy green). Dev 4982 ran 1h19m and 47m on MicroVM, no "session vanished". Settle still blocked by guest consent prompt and the .omc guard (named in report).
Artifacts
Activity
- Ready
- Runner started
- Runner ended (done)