fix(ios): wait for transient fill mismatches to settle

Merged
SH
15h ago
+41-4

Summary

Fixes #3952. A settled negative read-back could end iOS replacement confirmation merely because the value or frame differed from its baseline. Keep negative observations pending until the existing deadline; retain early exact/unconfirmed results, identity checks, and single-entry behavior.

Four files: confirmation rule, one synthetic regression, CLI help, and command docs. No scope expansion, public API change, new timeout, or retyping fallback.

Validation

Tested head: 4cbfb928143594300e658b4d462e7d443d920c72.
Base: 45125d717b207736dd47bc7969edbff7807a6e6d, with only the regression test added.

Same iOS Simulator command on both: xcodebuild test-without-building -xctestrun "$XCTESTRUN" -destination "$DESTINATION" -only-testing:AgentDeviceRunnerUITests/RunnerTests/testReplacementMismatchWaitsForCorrectTextOrDeadline.
Base: one test failed with four premature-negative assertions. Head: one passed.

All 18 tests in RunnerTests+TextEntryConfirmationTests.swift passed on iOS Simulator, zero retries, including the actual replacement-command path and persistent mismatch without retyping. iOS and macOS runner builds passed. Independent review found no issues.

pnpm check:affected --run --head 4cbfb928143594300e658b4d462e7d443d920c72: receipt status=passed, exitCode=0, exactCommit=true, checkoutChanged=false; 12 runnable checks passed, nine authoritative/manual checks skipped.

limitation: the macOS host test launcher stalled before executing tests; no host-test pass is claimed. I own that remaining validation. CI must still validate required native/device, Integration Tests, and Coverage jobs at this head. No physical-device run is claimed.