Read-only review of 8d9ec2f3c0b5e6f468063f52759b348dc29ddb89 against 7c3b3b3605. Native executable: codex-cli 0.163.0, Linux x86_64. Actual head CodexAdapterV2 with isolated CODEX_HOME, mock Responses HTTP endpoint, empty mock MCP endpoint. Mock model gpt-5.4; auto-compact limit 100; context window 20000; post-turn compaction disabled. Mock Responses usage: 10000 input tokens, 10 output tokens. All response texts are Done. Regression test against base adapter (supplied via Vite read-only load hook): FAIL Observed item/completed -> thread/inject_items -> turn/completed. Same regression test at head: PASS. Full CodexAdapterV2.test.ts: 86/86 PASS. Read-only additional replay variants: interrupted, failed, repeated compaction, other-thread completion: 4/4 PASS. Native sequence: seed turn, automatic compaction turn, immediately following turn, manual compaction. T3 next turn starts immediately on terminal event without waiting for restore acknowledgement. IN reply id=1 OK IN reply id=2 OK OUT turn/start id=3 IN reply id=3 OK IN turn/completed completed OUT turn/start id=4 IN reply id=4 OK IN item/completed contextCompaction IN turn/completed completed OUT thread/inject_items id=5 OUT turn/start id=6 IN reply id=5 OK IN reply id=6 OK IN item/completed contextCompaction IN turn/completed completed OUT thread/inject_items id=7 OUT thread/compact/start id=8 IN reply id=7 OK IN reply id=8 OK IN item/completed contextCompaction IN turn/completed completed OUT thread/inject_items id=9 {"result": "terminal", "counts": {"responses": 6, "compactions": 3, "answers": 3, "injects": 3, "terminals": 4}} All native subprocesses exited via their tracked Effect scopes; mock HTTP servers closed in finally. No real provider credentials or external model calls were used. Limit: no macOS/Windows execution, full T3 delegate-parent wake integration, or native autonomous goal continuation.