Do not press Enter again yet.

A failed toast does not prove the message was rejected. A visible timer does not prove the process is alive.

Classify the lane.

Choose the strongest evidence you have. The router keeps every uncertain branch explicit.

Did the tool return a job ID?
Is persistent Bash or a PTY plugin loaded?
Is the operating-system process still alive?

Recover by authority.

Job ID existsRead, then decide

Use job_output. Keep it alive or call job_kill once.

Foreground callStop once

Prove process exit, tool settlement, and turn/end before replacement work.

Process is gonePreserve projection evidence

Capture Session and browser state before refresh. Do not recreate a finished side effect.

Message is durableDo not resubmit

A queued follow-up can remain behind the active Turn inside one running interval.

Join six identities.

Sessionevent sequence
Turnopen or closed
Tool callforeground or detached
Job or terminalowner and status
ProcessPID and process group
Submit attemptdurable message ID
Long work needs job control.

Use background mode, keep the returned ID, wait in bounded intervals, and collect or kill every relevant job before the final answer.

Primary evidence.

Keep the complete incident runbook.

The canonical guide includes the joined timeline, message-admission matrix, safe recovery branches, regression contract, and redacted incident bundle.

Read the full runbook