fix(ios): keep failed alert reads unresolved

Merged
TH
2d ago
+548-262

Summary

Required Apple alert reads preserve uncertainty as ALERT_UNRESOLVED instead of reporting absence or choosing an action from incomplete information. Recognized app alerts, Safari dialogs and dismiss-popup windows with no acquired actions also stay unresolved and retriable. Disabled controls remain visible; action selection uses enabled controls. Blocking system prompts retain precedence. Follow-up to #4149. The change touches 22 files across the runner, contracts, tests and command documentation.

Validation

  • Base 3d6ddf32adf6c9615df13a64488399a769d13761; behavior-tested head 187113225f2bc7ce60a60f73bad0b20fc095889a. The same native query-seam regression fails on base (empty get/wait success and ALERT_BUTTON_NOT_FOUND) and passes on head. Independent review found no concrete issue.
  • pnpm check:affected --run --head 42fe0b3971a0aaaa68573db26defe64f25b83cde passed, receipt run-LpkO2Y (exactCommit=true, checkoutChanged=false): 14 passed, one deduplicated, 10 hosted or manual lanes skipped. Related tests: 1,106 passed; unit tests: 17,220 passed, one skipped. Hosted and parked lanes remain obligations.
  • At 187113225f2bc7ce60a60f73bad0b20fc095889a, the native unit-enabled build and 14 selected native tests passed; focused TypeScript: 24 passed. The new head changes only CLI help and command documentation, naming all three recognized surfaces; no native behavior or tests changed.
  • Earlier controlled primary-host evidence remains attributed to 3d6ddf3; it does not prove natural AX failure or remote-host acquisition. Head live fixture evidence and limits are recorded separately.
  • A near-deadline action dispatched and timed out with unknown dispatch, although its handler ran once; it was not a success. Wait can miss prompts appearing in its final <=300 ms, and admitted work can outlive its budget. Hosted CI for 42fe0b3 remains pending.