2ae96939f5
When a prompt_toolkit run_in_terminal cooked->raw restore is lost (cancelled coroutine, racing chained cross-thread windows from background-review summaries / process-notification prints), the tty stays in cooked mode while the Application still expects raw. The kernel line-buffers keystrokes and the CLI appears to stop taking input even though the event loop is healthy. Observed live 2026-08-13: interactive session left in 'icanon echo' after a background skill-review fork + notify_on_complete turn; only an external stty rescue restored input. Fix: _heal_cooked_mode_drift() re-applies prompt_toolkit's own raw-mode flag surgery when stdin's lflag has drifted cooked, and process_loop's idle branch runs a rate-limited _check_termios_drift() watchdog that skips legitimate cooked windows (app._running_in_terminal), agent-running phases, non-tty stdin, and Windows.