fix(interaction): route the first settle capture afresh
Merged
TH
13h ago+12+12+01234567890123456789-6-6-0123456789
Summary
--settle and wait stable pinned every capture to the runner's private-AX tier whenever the session's last read came from it. Each settle stores its own pinned capture as the next baseline, so one runner fallback kept every later press @ref --settle off the iOS simulator AX bridge. That is the call shape e2e sends for every tap.
The loop now routes its first capture normally. It still pins to private AX once one of its own captures recovers there, so a runner-served loop keeps one tier. Tap-failure corroboration keeps its baseline pin (same-backend evidence, #1605/#1634).
3 files. Codex design review agreed to scope this to settle only.
Validation
pnpm check:affected --run --head ca3e358055: passed (exactCommit: true).- The updated settle and wait-stable pin tests fail on
origin/mainsource and pass at head. - Live, Bluesky 1.136.0 (real account, Discover feed), iOS 27.0 simulator. Sequence:
snapshotpinned to private AX, thenpress @ref --settle --settle-quiet 150on a feed tab, 4 runs:- base
origin/main: 0 bridge / 2 runner captures, 1635โ1802 ms. - head
ca3e358055: 2โ3 bridge / 0 runner captures, 1068โ1402 ms.
- base
- On the deeper part of the same feed, runner private AX costs 6.5โ8.2 s per capture against ~200 ms on the bridge.
- CI owns integration and coverage lanes.
๐ค Generated with Claude Code