ci / rust (push) Failing after 6m50s
Every `SessionManager` tmux call shelled out via blocking `std::process::Command::output()` on the tokio worker — including `send_keys` on the per-keystroke hot path. Under concurrent typing the small worker pool stalls on `tmux` fork+waits (tens of ms on a loaded host), starving HTTP handlers, the registry WS, the liveness watcher, and PTY readers. Wrap each call site (create/kill/recover/liveness/send_keys/resize/pipe_pane) in `tokio::task::spawn_blocking` via a small `tmux_blocking` helper, so the blocking fork+wait runs on the blocking pool and never parks an async worker. The `Tmux` API stays synchronous (lower blast radius than an async migration; its tests are unchanged). Full daemon suite + send_keys/broker e2e green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>