fix: keep iOS runner status transport visible#663
Conversation
Size Report
Startup median (7 runs, lower is better):
Top changed chunks:
|
1e630d6 to
0589c7c
Compare
ReviewThis is a clean separation of concerns: I checked the obvious risk — Notes:
LGTM pending CI / simulator validation (noted the runner Generated by Claude Code |
thymikee
left a comment
There was a problem hiding this comment.
Reviewed current head 0589c7c70. No blocking findings.
The transport/status split keeps status journal-only and leaves non-status commands serialized through the command execution queue. Validation coverage and manual simulator evidence match the acceptance criteria. Keep an eye on downstream rebases because this Swift transport surface may overlap with later runner-retention/status work, but this PR looks good as-is.
|
Summary
Status commands now return directly from the iOS runner transport journal while non-status runner commands execute on a dedicated serial queue. This makes
accepted/startedobservable during long XCTest work without app activation, XCTest dispatch, or retry logic on the status path.Cleanup pass included:
INVALID_ARGSwith actionable hints.COMMAND_FAILEDwith runner-log guidance.Acceptance coverage:
statuscan answer while another command is waiting on main-thread XCTest work.statusremains journal-only and bypasses app activation/XCTest dispatch/retry logic.startedbefore terminal state.Touched files: 4. Scope stayed within iOS runner transport/execution plus one focused smoke fixture.
Validation
node --test test/integration/smoke-ios-runner-status-visible-transport.test.tspassed.pnpm check:quickpassed.pnpm formatpassed.pnpm build:xcuitestpassed after the original transport work and again after the cleanup pass.pnpm buildandpnpm clean:daemonpassed before manual runtime validation.iPhone 17 Pro(C25DBB5B-9254-4293-A8D5-2785C78DE03A) passed with isolated temp state dir/var/folders/65/fz9_2bsj6fzgct46vx226s8c0000gn/T/agent-device-codex-status-visible-transport-1780366621109: longtapSeriescommandmanual-long-1780366641029was still running when runnerstatusreturned in 7 ms withlifecycleState: "started"; second mutatingtapSeriescompleted after the long command (longElapsedMs=13253,secondElapsedMs=15669). Runner sessionC25DBB5B-9254-4293-A8D5-2785C78DE03A:51693:1780366634495was stopped, and process inspection showed no stale runner/xcodebuild process.Known gap: runner
statusis not exposed as a public daemon/CLI command, so the simulator status probe targeted the runner protocol directly after starting the runner session.