August 24, 2026 · Joy · What JoyMux guarantees · Part 2
Sessions that survive a closed terminal
A disposable terminal treats a closed tab as the end of the world. JoyMux treats it as a client leaving a session that still exists.
The lifecycle you will see:
creating → ready → attached / detached → running → closed
That is the whole plot. Everything else is how you recover without reconstructing the task from memory.
Detach is not terminate
Detach must not kill a persistent session. Evidence keeps accumulating. You can walk away.
Attach reconnects a client to a session it already owns. It does not transfer process ownership. You are looking at the same run, not starting a new one.
Close / terminate ends the session and tears down processes JoyMux owns, according to the persistence mode you chose.
If a client vanishes, the session does not vanish with it.
Guarantee: execution state survives interruption and can be recovered without reconstructing the task from chat history.
Terminal session states are validated so conflicting lifecycle events cannot silently corrupt the recorded execution state.
Resume is not “guess from chat”
Resume is a mode, not a vibe:
- Replay events — read durable evidence; do not pretend a live terminal is still attached after a restart
- Restart required — the work itself must start again
- Not resumable — no continuation
Natural language is not re-inferred just to continue an approval that was already waiting. The checkpoint is the record. Checkpoints do not expand privileges across clients.
Guarantee: you resume from durable execution state instead of reconstructing from conversation.
Why this feels different day to day
Crash the terminal. Restart the machine. Switch from Codex to Claude Code. The execution session can still be there.
That is resume in practice. The measured version is resume after a crash and hard reset, same state. Then test the invariant on your machine.