cloud-setup: bound Codex holder graceful shutdown
A local Codex holder that ignores SIGTERM could indefinitely block Cloud shutdown and account cleanup. Give that session-owned child two seconds to exit, then signal only its still-running process with SIGKILL. Concurrent shutdown callers share the deadline and wait for actual exit before allowing holder replacement.
Adds a process-backed regression that makes the fixture ignore TERM, starts two shutdown callers, and verifies the owned process has exited. The existing graceful-shutdown test still verifies completion after child cleanup.
Relevant notes:
New cloud workspace
Figure out what you want to transfer into the api key from current machine to new machine.. claude setup-token
Always need new claude credentials, that kind of suck
Validation head: 9271f3e58e3633100459d1f1e054b5c986f36248. Whole-PR prepush gate passed and overlap check found none. Combined exact-stack cmux-ci run 0888de20c0ef36ad479f6dc0a9a5b5cadf75aeb7 (step bbc58714e6ed0d379fa0dca8) exited 0: App/test compile plus eight suites and 57 tests. Coverage was native 7, target 4, holder-pipe 5, and adapter 15. Focused Rust cmux-ci run 40560895555 is pending at exact source 9271f3e58e363; its receipt is /home/leo/Projects/.wt-mirrors/manaflow-ai/cmux.git/cmux-fast-checks/5407f1f3e069452a9451aef6f18926f6.json. Independent xhigh review remains coordinated with the stack. No capture: this holder lifecycle code has no rendered interface. No visible UI changes.
Agent session: agent session