Problem
A persistent command can terminate Bash, and a connection can drop. The app must give a useful next action without implying the old remote state survived.
Contract
Distinguish shell/channel end, network loss, and shell-integration downgrade. Keep available transcript context and offer an explicit reconnect to the same verified endpoint and chosen identity. Reconnection starts a new shell and new session ID; never auto-run the old command. If the PTY is still live but integration failed, retain raw-terminal access.
Acceptance
- Shell exit, strict-mode failure, connection loss, and integration downgrade display truthful distinct states and recovery actions.
- Reconnect repeats current host-key verification and credential/unlock requirements.
- The UI says directory, exports, aliases, functions, and remote processes from the old shell are not restored.
- No automatic reconnect or hidden command replay occurs.
Validation
Add fixture tests for exit, exec, strict failure, channel loss, and bootstrap downgrade, plus Compose recovery tests.
Depends on #49. Part of #44.
Problem
A persistent command can terminate Bash, and a connection can drop. The app must give a useful next action without implying the old remote state survived.
Contract
Distinguish shell/channel end, network loss, and shell-integration downgrade. Keep available transcript context and offer an explicit reconnect to the same verified endpoint and chosen identity. Reconnection starts a new shell and new session ID; never auto-run the old command. If the PTY is still live but integration failed, retain raw-terminal access.
Acceptance
Validation
Add fixture tests for exit, exec, strict failure, channel loss, and bootstrap downgrade, plus Compose recovery tests.
Depends on #49. Part of #44.