cmux NEXT: wait through acpmux socket restarts
Merged
TE
13d ago+326+326+012345678901234567890123456789-295-295-012345678901234567890123456789
Problem
During a daemon handoff, acpmux removes its Unix socket before the replacement daemon is ready. The pane treated that short gap as a permanent peer refusal, showed a scary card, and told the person to paste an ACPMUX_SOCKET=… acpmux daemon shutdown command. The compose was already being retried, so the prompt could wait safely.
Change
- Retry transient “nothing answers on the socket” peer failures for up to three seconds with bounded backoff before surfacing a host error.
- Keep live-peer refusals actionable without exposing shell commands; the existing Retry path remains the user action.
- Add localized copy for the two replacement messages and remove the old shell-command catalog entries.
- Add regression coverage for transient classification, refusal copy, and a prompt surviving a daemon restart mid-compose and being delivered once by the replacement daemon.
The daemon’s existing per-home lock remains the single-owner guard. The open Chief-host handoff work is tracked separately in #23019; this PR covers the agent-pane socket path.
Validation
python3 scripts/verify-local.py --only swift-syntax --swift-changed origin/feat-cmux-next— passed.python3 scripts/localization_catalog.py check --root . --catalog Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/Resources/Localizable.xcstrings— catalog valid; existing catalog debt remains within baseline.- Fleet Swift package test step submitted for the red regression commit
67f15e79eeas job5f4df74f0d6bc5d084461a1f; it was still queued when this PR was prepared. - Native build/test execution is routed to the managed fleet; no local app build was run.
- No capture: this is a connection-state and copy change; the visual surface is unchanged and the transient restart state is not deterministic in a static capture.
Changelog
Fixed: agent chats wait through a short acpmux restart without losing the compose or asking for a shell command.
Agent session: Air-Blue