refactor(apple): share simulator tools and runner operations
Summary
Follow-up to #4174. Share Apple simulator file access, app metadata, and lifecycle/runner operations so forwarded XCTest runners can use the local command implementation. Local simctl/devicectl remain the default tools. This touches 40 files in three commits, with no CLI changes or Limrun backend switch.
The review fixes preserve simulator-set cache identity, serial metadata reads, and hosted-installer result defaults. The installer-selection test now detects callback bypass, and the unused URL-owner override is removed. The inherited watchOS behavior stays unchanged.
Remaining work is open as fork drafts: native XCTest integration #1 follows this PR and recording isolation #4196; sync install/reinstall #2 stacks on it. Before upstream submission, these drafts need rebasing onto the merged prerequisites and fresh live validation; the native integration also needs splitting into smaller PRs.
Validation
At a8758b33fb5f605d1b12c4e287ea69aa5bcab901, pnpm check:affected --run --base 8c416a75980d888985886d9d6eada2f9a51d3ea8 --head a8758b33fb5f605d1b12c4e287ea69aa5bcab901 passed with exactCommit: true: 17,230 unit passes, one skip, and 305 related passes. Independent follow-up review found no issues.
Evidence, commands, receipts, and regression/mutation proof cover live simulator discovery, XCTest snapshots, screenshots, file copying, state clearing, install/reinstall, and cleanup. The final-head iPhone replay passed with six Apple-runner captures and clean teardown.
GitHub coverage and CI device checks remain required. The forwarded runtime factory and hosted installer hook have no production caller yet; those boundaries are tested locally.
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.