refactor(apple): share coordinate drag execution
Merged
TH
2d ago+58+58+01234567890123456789-49-49-01234567890123456789
Summary
Give ordinary coordinate drags and synthesized-drag fallback one executor. Callers retain hold-duration and fallback policy; synthesized planning, refusals and sampled gesture profiles stay separate.
Three files change: the production owner, its existing native tests and the baseline. Production source shrinks by 19 lines / 511 bytes including overhead. The normal-drag test compares coordinates and exact reference dimensions against the live app frame, beside forced-fallback coverage. Prune exactly two obsolete clone fingerprints. No linked issue or scope expansion.
Validation
- Head
418bb114c5e71a5a514ac5c0054ba178e3d9f821; rebased onto03f394691dd8748539a4b83c18852550c1b97ebf. Range comparison preserves the extraction and two baseline removals; follow-up strengthens assertions and shortens the policy comment. AGENT_DEVICE_VITEST_MAX_WORKERS=1 pnpm check:affected --run --head 418bb114c5e71a5a514ac5c0054ba178e3d9f821: passed,exactCommit: true; receiptrun-sYWhfE, 39 passed / 25 skipped / 2 deduplicated. No related TypeScript tests selected.- Unit-enabled arm64 iOS build and four selected XCTest cases passed at this head on iPhone 18 Pro / iOS 27.0, including normal drag and forced synthesis fallback. Simulator stopped afterward. macOS builds passed at prior head
85143c3; subsequent production edit is comment-only. - Independent Apex review found no issues at
85143c3; follow-up reviewed locally. Hold durations were source-reviewed, not measured. New iOS test runs nightly, outside standard PR selection. GitHub owns full platform smoke, coverage and size evidence. tvOS/visionOS runtime unexercised.