69f1c9ae35
Doctor checks spawned subprocesses (gh, opencode, sg) without timeouts, causing the process to hang indefinitely if any binary was stuck. The OS would then SIGKILL the process (exit code 137). - Add spawnWithTimeout utility with 10s per-spawn timeout - Add 30s overall doctor command timeout with graceful error message - Update all doctor check subprocess calls to use timeouts