feat(interaction)!: remove target-readiness waits
Summary
Removes the replay target-readiness wait, per the #3077 decision: the audited hosted evidence showed no rescue on either platform. Replayed press/click/longpress no longer poll for a missing target; post-gesture and scroll observation are unchanged. Scripts that need to wait use an explicit step:
wait 'label=Continue'
press 'label=Continue'
Breaking for Node clients that passed readinessTimeoutMs (shipped in v0.21.19). The key is now retired: the Node client (at its projection seam) and MCP/CLI input (through the common row) refuse it on every command with INVALID_ARGS and "add an explicit wait for the target" instead of dropping it silently. Also removed: the capture_sparse refusal (only the poll produced it; replay now reports selector_not_found on an empty tree, like live commands) and five observeUntil options only the wait used. 62 files, 533+/2,106โ; the gross budget is waived for removals. Leftover result forwarding is tracked in #3607.
Closes #3077
Validation
Head 1f26100da, with main merged at 562e798d1.
pnpm check:affected --base origin/main --run: pass (685 files / 5,151 tests).- Retirement tests (Node press, click, longpress, fill, swipe; MCP press and fill) fail when either refusal site is removed.
- Fresh-context review and cubic findings fixed.
- Live evidence on pre-rebase source
f22ddb765: Android full fixtures plus six replays (87 actions, first attempt, zero healing); iOS diagnostic six replays (47 actions). A later app-switcher fixture failure is outside the corpus and occurs without this change.
๐ค Generated with Claude Code