Why: CI containers leave unreaped zombies; os.kill(0) still succeeds and falsely failed the old-process-stopped assertion. Evidence: local unittest of the batch update case. Impact: assertion matches svc.sh/recover zombie semantics. Refs: .task/feature-svc-pidcheck-leak.md; PR #457 Co-authored-by: Cursor <cursoragent@cursor.com>