diff --git a/packages/contracts/src/interaction-guarantees.ts b/packages/contracts/src/interaction-guarantees.ts index 825898cd8..2e0311fe5 100644 --- a/packages/contracts/src/interaction-guarantees.ts +++ b/packages/contracts/src/interaction-guarantees.ts @@ -170,6 +170,15 @@ const RUNTIME_TREE_SHARED_GUARANTEES = { // not the bulk one. Every other platform, and any backend that omits the // hook, refuses on the visibility resolver's verdict unchanged — this is a // rescue-only override, never a way to relax a genuine refusal. + // The live read is a SEPARATE runner request (the direct querySelector), so + // it shares the runner's prepareActiveCommandContext surface policy only with + // a RUNNER-ROUTED capture: eligible simulator captures go to the host AX + // bridge (packages/platform-apple/src/snapshot-route.ts), and a bridge-served + // capture never reaches that seam. #2448 puts the system-surface case (the + // web sign-in sheet) back on the runner, where both reads do share it. Either + // way this is not a same-instant guarantee — no captured surface identity + // crosses the two requests, so a surface that appears or dismisses between + // them is undetected. offscreen: { kind: 'runtime', via: 'src/commands/interaction/runtime/resolution.ts#throwIfOffscreenInteractionTarget',