tests/gateway/test_planned_stop_watcher.py::test_watcher_fires_shutdown_when_marker_appears tests/gateway/test_planned_stop_watcher.py::test_watcher_does_not_fire_when_marker_absent tests/gateway/test_planned_stop_watcher.py::test_watcher_skips_when_runner_already_draining tests/gateway/test_planned_stop_watcher.py::test_watcher_skips_when_runner_not_started tests/gateway/test_planned_stop_watcher.py::test_watcher_responds_to_stop_event_promptly tests/gateway/test_planned_stop_watcher.py::test_watcher_fires_only_once_when_marker_persists tests/gateway/test_planned_stop_watcher.py::test_watcher_tolerates_marker_path_resolution_errors tests/gateway/test_planned_stop_watcher.py::test_watcher_does_not_fire_for_foreign_pid_marker tests/gateway/test_planned_stop_watcher.py::test_watcher_cleans_up_stale_marker_and_keeps_running tests/gateway/test_planned_stop_watcher.py::test_planned_stop_marker_targets_self_probe_is_non_destructive tests/gateway/test_planned_stop_watcher.py::test_planned_stop_marker_targets_self_drops_malformed