Linux x86_64 | real T3 Code server + real OpenCode 1.19.5 | fresh isolated state
Fixture controls: 200ms parent spawn delay; no systemd agent scopes; pause T3 at ledger until crash
Commit 7be89fd3b0dfaef14774981367edcb3cbb99597b
Started owning T3 Code server PID 59153
Project created through T3 CLI: Added project a84bc764-ddb7-4744-98db-13c0c99f9414 (OpenCode cleanup proof) at <synthetic-project>.
Ledger written before releasing FIFO: {"version": 1, "pgid": 59824, "pid": 59825, "startTime": "186798", "args": ["serve", "--hostname=127.0.0.1", "--port=40429"], "port": 40429, "owner": {"pid": 59153, "startTime": "185389"}}
Recorded member before exec: {"pid": 59825, "pgid": 59824, "startTime": "186798", "zombie": false, "command": "<fixture>/opencode-wrapper serve --hostname=127.0.0.1 --port=40429"}
Pause owning T3 server after ledger write to hold wrapper-exit handling while OpenCode boots
FIFO released. Real OpenCode now listening on port 40429
Same member after exec: {"pid": 59825, "pgid": 59824, "startTime": "186798", "zombie": false, "command": "<real-opencode> serve --hostname=127.0.0.1 --port=40429"}
Command changed across exec: True
SIGKILL owning T3 Code server PID 59153 only (bypass graceful cleanup)
After crash: OpenCode port listening = True
Restarted same T3 Code state. Old ledger entry removed = True
Old OpenCode member still running = False
Old OpenCode port still listening = False
RESULT: FIX VERIFIED: recorded orphan stopped and port closed
