fix(ios): scope bridge ownership refusals to the capture
Summary
When the iOS simulator AX bridge refused a capture because another surface owned the foreground (foreground-owner-unverified / foreground-owner-changed), the route opened the app generation's circuit. After one permission alert, cold-start transition, or iOS "Open in…?" prompt, every later capture of that app launch used XCTest. On Bluesky's feed that is 3–8 s per capture, against ~200 ms on the bridge. docs/evidence/ios-text-daemon-latency-2026-10-19.md records the same trap at cold start (text medians rose to 2.3–3.5 s).
The refusal is evidence about the screen, not the app, so it now sends only that capture to the runner. That is the same capture scope ADR 0004 gives window-coordinate-space-unresolved. The cost is one refused bridge request on each capture the other surface covers.
4 files: the route, its tests, the ADR 0004 amendment and the bridge README.
Validation
pnpm check:affected --run --head 78c989b701: passed.- The new tests fail on
origin/mainsource and pass at head. - Live, iOS 27.0 simulator, Agent Device Tester, sequence: microphone permission alert →
snapshot -i→ dismiss → 3×snapshot -i.- base
origin/main: during the alertforeground-owner-unverified, thencircuit-disabledXCTest, 288–300 ms. - head
78c989b701: XCTest for the alert capture only, then bridge, 154–163 ms.
- base
- Also observed on Bluesky 1.136.0: the post-login notifications prompt opened the circuit for the whole launch on base.
🤖 Generated with Claude Code