fix(ios): harden Bluesky-class interaction reliability - #1588
Conversation
Size Report
Startup median (7 runs, lower is better):
Top changed chunks:
|
|
Review of [P1] Preserve [P1] Cover the normal simple-selector fill route before claiming semantic iOS fill reliability. Default The focused runtime evidence for refs/coordinate resolution is useful, and static/type/Swift gates are green; several exact-head CI/device lanes were still running during review. No fix work was performed. |
|
Addressed both P1 findings in b588a48 (with the implementation split across 62b47bc, b756f8c, and b588a48):
Red → green evidence:
Verification:
|
|
Re-review of [P1] The cutover of ordinary simple selector fill to the runtime accidentally removes the Maestro replay non-hittable fill path: [P1] Delayed type synthesis is fixed in production, but the new regression exercises only Owner-action CI: exact-head iOS Smoke is red because the live E2E reads a newly assumed Ordinary selector fill otherwise correctly moves to the runtime. |
|
Addressed the re-review findings in
Additional review fixes in the same commit keep synthesized replacement restricted to XCTest-penalized apps, distinguish private-synthesis unavailable (fallback) from genuine failure (raise), preserve coordinate-focus fallback, cover mislabeled inputs on penalized screens, widen the rect property generator, and accept zero-sized runner reference frames. Private synthesized typing passes Verification:
The PR body now also records that #1587 should land first and this PR should be rebased onto it before merge. |
|
Re-review of |
7922ba6 to
535d08b
Compare
|
Follow-up after the size/duplication audit and #1587 landing:
Verification on the rebased head:
|
535d08b to
1db735e
Compare
|
Re-review at |
|
Re-review at |
|
CI follow-up is complete and the final head is green. Root causes fixed:
Verification:
The unrelated Android viewport flake passed on rerun. All PR checks are now green. |
|
Final review at |
|
Summary
typedoes not accept--settleand that an explicit success state is the end of the taskThe fixes come from rerunning Software Mansion's AppControlBench Bluesky suite on agent-device 0.20.5. They address three concrete failure classes seen in the benchmark: 20–30s XCTest text-entry stalls, ancestor promotion that redirected child taps to list containers, and post-success agent actions that destroyed otherwise judgeable final state.
The private-AX/settle performance work from the same investigation is in #1587. Landing order: merge #1587 first, then rebase this PR onto it before merge so the shared channel-penalty and settle behavior has one final source of truth.
This PR touches the iOS runner, interaction targeting, typed runner evidence, live simulator coverage, and CLI help/conformance. The scope crosses command families because the benchmark exposed independent type, fill, and tap reliability failures that share the same Bluesky-class AX environment.
Privacy remains explicit on the private synthesis path:
typeText:atOffset:typingSpeed:shouldRedact:is invoked withshouldRedact: YES, and diagnostics emit only route, phase, timing, character count, and mode—not entered text.Validation
Regression tests were mechanically proven red:
unavailable/faileddisposition and coordinate-focus fallback tests failed under their counterfactual mappingstypeTextReliablycaller to one-shot replacement produced[replace("abc")]instead of[replace("a"), append("b"), append("c")]; the restored production caller passesLive iOS simulator evidence:
typeon authenticated Bluesky completed its runner text work in roughly 0.5–0.8s instead of stalling for about 20sfillreplaced the exact focused composer text in 2.1s end to endhello from the benchmark; the final screenshot showed it at the top of Following (227.8s, 23 tool calls)Final verification for the review fixes:
pnpm check:affected --run: passed with Vitest serialized to one worker after the parallel run showed unrelated host-contention timeouts; 3,469 affected tests passed and changed-line coverage was 100%The iOS smoke test now reads the authoritative
runnerLogPathreturned byopen, rather than reconstructing a state-directory path.The public CLI help and deterministic help-conformance corpus were updated. Skills were not changed because they intentionally route to versioned CLI help rather than duplicating command behavior.