feat(limrun): serve iOS alert get/wait/accept/dismiss from tree capture
TH
2m ago+2708+2708+0123456789012345678901234567890123456789-185-185-012345678901234567890123456789
Summary
Closes #3349. Limrun iOS alert get/wait/accept/dismiss use existing element-tree capture and tap seams through the tree-alert driver and English vocabulary shared with Android. Ambiguous captures refuse untapped; dismiss never authorizes ATT. alert get reports visible|none|undecided.
Validation
Head: 957726b0de7e2049b556a0b58efceca0e4af31a6.
- Direct gate
run-Sh88Vapassed withexactCommit: trueand an unchanged clean checkout. Fresh isolated review found no new findings and assessed the size/design tradeoffs. All 22 threads are resolved. - Coverage's persistent-dialog failure was fixed in the driver, leaving the integration oracle unchanged. Cutoff paths use the latest completed observation; an undecided reread or no confirming answer remains unconfirmed. The press-cutoff disclosure has a detecting mutation test.
- Corrected Android live proof at this head used only own-bundle FINE/COARSE permission revokes. The multi-grant sheet selected "While using the app", both permissions became granted, and the second lookup returned none. Quiet-screen dismiss returned typed
alert-window-expired,dispatched: no; no tap-count claim is made. The prior global-reset violation and corrected evidence are disclosed in comment 6220298855. - Limrun live evidence at
f584e8a15uses an instrumented real client: one accept tap then absence, one denying dismiss tap, preferred location grant, and zero taps on an app dialog. Later commits change cutoff classification, tests and documentation.
CI: 18 successes, one skip and iOS smoke failed waiting for the deep-link destination (APP_NOT_RUNNING, wait_capture_stalled). Cause remains unestablished; no retry was taken. The branch conflicts with main; its owner is resolving it and investigating the failure. Limrun SDK 0.64.1 cannot abort in-flight elementTree/tap requests.