11ccbb4b6f
The `_owner_alive` fallback in gateway/delivery_ledger.py (taken whenever a process start time is unreadable) probed liveness with a raw `os.kill(pid, 0)`. On Windows that is NOT a no-op: CPython maps sig=0 to `GenerateConsoleCtrlEvent(0, pid)` (bpo-14484), so probing a LIVE pid whose start time psutil could not read would Ctrl+C the target's entire console group. The prior `# windows-footgun: ok` annotation only justified the EPERM-means-alive exception semantics, not the Ctrl+C side effect. Route the probe through `gateway.status._pid_exists` (psutil-first, ctypes OpenProcess fallback on Windows), preserving EPERM-means-alive. A POSIX-only raw-probe fallback remains for the unreachable case where gateway.status cannot be imported; on Windows that path reports dead rather than firing a sig-0 probe. Tests patch `gateway.status._pid_exists` per the windows-native-support pattern, including a regression guard asserting os.kill is never used for the probe. Sabotage-verified (revert → red, restore → green). Part of #41662 (the os.kill half; watchdog half tracked separately).