refactor: model recording backends#893
Conversation
Size Report
Startup median (7 runs, lower is better):
Top changed chunks:
|
|
Review pass complete: I did not find actionable blockers on latest green head 4086f9b. Checked the recording backend extraction against the production start/stop route: start still validates flags, resolves the backend by device, expands and clears output, then delegates to the existing iOS simulator, iOS device, macOS, and Android implementations; stop resolves by the active recording platform and preserves invalidation and finalization handling. CI is green. Residual risk is low because this is an internal refactor and does not claim new live device behavior. |
Review — refactor: model recording backends (#893)This PR extracts recording start/stop into per-platform Verified: the Two cleanup/altitude findings — speculative generality the new seam adds with no current payoff: 1. 2. Both are judgment calls for an intentional seam, but as written they add complexity without a current consumer. |
|
Addressed in For #893 specifically, I removed the unused The stacked web feature PR (#891) reintroduces |
|
Follow-up review on 897a0db: the cleanup findings are addressed. The unused validateStart and cleanupRecordOnlySession hooks are gone, releaseRecordOnlySession is synchronous again, and resolveOutputPath now returns a string without the unreachable error branch. CI is green and the PR remains a behavior-preserving internal recording-backend refactor. I do not see remaining blockers; merge-ready from this review pass. |
|
Summary
Model recording start/stop behind daemon recording backends so the record handler owns lifecycle while platform-specific execution stays below the backend seam.
Adds focused iOS simulator recording implementation module, documents the Recording backend term, and removes unused speculative backend hooks from the refactor layer.
Touched files: 4; scope is recording handler architecture only.
Validation
Verified with direct local binaries from the existing installed worktree because this temporary worktree could not install dependencies under restricted registry access: formatter passed, TypeScript passed, focused recording tests passed, and build/declaration bundling passed.