Problem
The macOS recording backend uses the same runner recordStop flow as physical iOS, but currently ignores the stop outcome and proceeds without validating the finalized local video.
PR #1238 makes the physical-iOS backend fail when either:
- the runner reports
recordStop did not succeed, or
- the copied MP4 is not stable/playable.
The macOS backend still calls stopRunnerRecordingBestEffort without consuming its boolean result and does not run waitForStableFile / isPlayableVideo before overlay processing and artifact publication. This can report success for a failed runner stop or an invalid MP4.
Scope
Bring the macOS runner recording backend to behavioral parity while preserving the existing RecordingBackend.stop seam. Avoid forcing a universal cross-platform finalization abstraction: simulator, Android, physical iOS, and macOS materialize recordings differently.
Acceptance criteria
- A macOS runner
recordStop failure returns COMMAND_FAILED.
- A stable, playable local MP4 is required before overlay processing or artifact publication.
- Failure clears recording session state and publishes no artifact.
- Successful macOS recordings retain current overlay and artifact behavior.
- Provider-level coverage exercises success, runner-stop failure, and invalid-video outcomes through the production route.
- Live macOS verification confirms the finalized artifact is playable.
Context
Follow-up discovered while reviewing and tightening #1238. The physical-iOS implementation is intentionally backend-specific; this issue closes the remaining consistency gap for the other Apple runner recording backend.
Problem
The macOS recording backend uses the same runner
recordStopflow as physical iOS, but currently ignores the stop outcome and proceeds without validating the finalized local video.PR #1238 makes the physical-iOS backend fail when either:
recordStopdid not succeed, orThe macOS backend still calls
stopRunnerRecordingBestEffortwithout consuming its boolean result and does not runwaitForStableFile/isPlayableVideobefore overlay processing and artifact publication. This can report success for a failed runner stop or an invalid MP4.Scope
Bring the macOS runner recording backend to behavioral parity while preserving the existing
RecordingBackend.stopseam. Avoid forcing a universal cross-platform finalization abstraction: simulator, Android, physical iOS, and macOS materialize recordings differently.Acceptance criteria
recordStopfailure returnsCOMMAND_FAILED.Context
Follow-up discovered while reviewing and tightening #1238. The physical-iOS implementation is intentionally backend-specific; this issue closes the remaining consistency gap for the other Apple runner recording backend.