# PR 32866 fixture matrix (final)

Head 4052b2f7d0. Derived by proof audit pass 1 ([full report](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9d0f93b41abad46d/proof-audit-1.md)); statuses as confirmed by pass 2. R01–R32 were captured at b088b88d19 (before main fa2f4ff2a2), whose preview, contracts, broker and MCP code is identical to 4052b2f7d0. R33 was captured at 4052b2f7d0 (before main 4c924ff4e6).

Counts: 23 transcript rows (22 per-row before/after transcripts plus R02, the agent-thread transcript in the PR body) and 10 named-test rows. R10 is a guard: its test passes on main and fails if the 500 ms answer margin is removed.

"Affected: No" rows are unchanged guards checked for regressions.

| Row id | Behaviour | Fixture / how seeded | Affected | Kind | Status | Action needed |
| --- | --- | --- | --- | --- | --- | --- |
| R01 | Hung request answers before host eviction | Owned A; hold dark appearance; deterministic broker/server timeout test | Yes | named-test | OK: timeout then status succeeds on retained host | None |
| R02 | Busy mutations; contracts busy value and recovery message | Original PR-body click/resize transcript; broker-decoded busy assertion in stuck-stop test | Yes | transcript | OK: exact recovery guidance; busy survives contracts/broker decoding | None |
| [R03](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c1c6b95698bbd167/R03.md) | Owning-agent snapshot/waitFor refusal | C1: own A; held appearance; parallel owner reads, then status | Yes | transcript | OK: busy in milliseconds; before waits/disconnects; status survives | None |
| [R04](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a74b586b5837c450/R04.md) | Explicit reuse of busy tab | C1: preview_open(tabId=A,reuseExistingTab=true) | Yes | transcript | OK: immediate busy; before open queues and disconnects | None |
| [R05](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ac9ed70aa7d6b282/R05.md) | New-tab and second-thread recovery | C1: fresh B in owner session; fresh C from second synthetic thread; evaluate both | Yes | transcript | OK: both actionable; after retains initial connection; before reconnects | None |
| [R06](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/398b48697dc13fcd/R06.md) | Close bypass and recording cleanup | C1: record A before stall; close A; list; evaluate B; encoder/page/context milestones | No | transcript | OK: A removed and resources close without awaiting held queue | None |
| R07 | Queued calls receive their own deadline answer | Stalled A; queue click before A expires; named queued-calls test | Yes | named-test | OK: both timeout; subsequent dialog calls reach live host | None |
| R08 | Ordinary work expired before dequeue never runs | Long-budget predecessor; short click; release after click expiry; locator execution assertion | Yes | named-test | OK: click times out and locator never runs | None |
| [R09](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bd5c9609d38634df/R09.md) | Serialization retained; busy clears on fulfillment/rejection | C2: held A; refuse read; enqueue manager light; resolve and reject in separate fixtures | Yes | transcript | OK: light starts after original settles; fresh evaluate succeeds both ways | None |
| R10 | Own failure wins inside answer margin | Named late-failure test: reject Playwright at T+100 ms | Yes | named-test | OK: execution error wins over host timeout | None |
| [R11](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4b49f4003be1af6b/R11.md) | Own success wins inside answer margin | C2: dark emulateMedia delay 15100 ms for 15000 ms request | Yes | transcript | OK: successful result at about T+110 ms; status/evaluate succeed | None |
| [R12](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/884b61760de7471c/R12.md) | Final cutoff ignores later settlement | C2: delay 15750 ms; R09 also supplies a late rejection | Yes | transcript | OK: before succeeds; after times out at T+505 ms, then settles and remains usable | None |
| R13 | Dialog precedes busy for actionable owner | Named queued-calls/dialog test; emit dialog after timeout; click and active-recording stop | Yes | named-test | OK: both return reason=dialogPending | None |
| [R14](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/37572e726c6747c9/R14.md) | Real overdue dialog recovery | C3: record; real confirm blocks appearance; status/open/stop; release viewer; accept; evaluate | Yes | transcript | OK: confirm visible; stop gets dialogPending; accept unblocks original; fresh work succeeds | None |
| [R15](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/da85b929868826ca/R15.md) | Ownership and human-control precedence | C1/C3: second session; viewer take/release while held, with/without confirm | No | transcript | OK: foreign mutation stays agentMismatch; owner under viewer stays humanControl | None |
| [R16](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/267b999c5892182e/R16.md) | Observer reads bypass foreign owner queue | C1/C3: foreign snapshot/waitFor; human reservation; repeat with pending confirm | No | transcript | OK: foreign reads succeed while held; dialog blocks reads; owner under human gets humanControl | None |
| [R17](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c17469d144403b1b/R17.md) | Expired recording stop still executes | C4: record; queue stop before busy; hold beyond 120 s; release; inspect encoder; retry | Yes | transcript | OK: after timeout at 120.5 s, stop starts at 122 s and encoder closes; retry finds none | None; head also adds a deterministic expired-stop assertion |
| R18 | Started recording stop hangs and becomes busy | Named stuck-stop test: active recording; CDP detach never resolves; follow-up click/status | Yes | named-test | OK: stop timeout followed by reason=busy; host remains reachable | None |
| [R19](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/537063e5d2d9f323/R19.md) | Stop requested after another action becomes busy | C1 recording plus stalled appearance; C3 dialog and viewer variants | Yes | transcript | OK: busy without dialog; dialogPending with confirm; human control still wins | None |
| R20 | Closed system() returns rejected promise | Closed SessionControl; direct call and rejection assertions | Yes | named-test | OK: no synchronous throw; returned promise rejects closed | None |
| R21 | Closed/stale queued work stays rejected | SessionControl close and takeover/release generation tests | No | named-test | OK: queued/new actions never revive after close or control changes | None |
| R22 | Color mirror progresses on another tab | Named cross-tab setting test: A dark action hangs; manager adjusts B dark | Yes | named-test | OK: B emulateMedia dark milestone resolves while A stays stuck | None |
| [R23](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ac00ed069d989e0a/R23.md) | Viewport mirror; equal-setting control | C5: A held; manager resize B to 800x600 then repeat; page dimensions and native calls | Yes | transcript | OK: B becomes 800x600 before A release; equal setting adds no viewport call | None |
| [R24](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3695cb2198bfc20f/R24.md) | Zoom mirror; equal zoom; desktop zoom skip | C5 headless 1.25 zoom; C24native real Electron WebContents via scratch CDP binding | Yes | transcript | OK: headless 640x480 before release; native zoom stays 1.25 without backend override | None; full desktop shell is outside this fixture |
| [R25](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c2042bd4408f2b73/R25.md) | Hard reload mirror and false/absent control | C5: synthetic counter page; hardReload true then ordinary/false adjustments | Yes | transcript | OK: Page.reload(ignoreCache=true) and page reload before A release; no extra false reload | None |
| [R26](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c70e2def34902794/R26.md) | Cookie clear mirror and clear-before-reload order | C5: seed synthetic cookie on B; clear=cookies plus hardReload | Yes | transcript | OK: cookie becomes empty before A release; CDP clear completes before reload | None |
| [R27](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ff64ff94cf7e6e44/R27.md) | Cache clear mirror and no-clear control | C5: fixture page fetches cacheable /asset; clear=cache; ordinary adjustment | Yes | transcript | OK: clearBrowserCache runs before A release; no extra clear on control | None; proves command dispatch, not a separate browser cache implementation |
| [R28](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/349755ede8c5cfec/R28.md) | Same-tab FIFO while other tabs proceed | C5: hold B system dark; queue viewport/light+zoom/cookies+reload; resize C; release B | Yes | transcript | OK: C progresses before B settles; B native calls preserve order without overlap | None |
| [R29](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2c1691f9c4777215/R29.md) | Manager open/close pass a stalled resized job | C5: keep A held; RPC open D and close C; inspect tab.created/page.closed | Yes | transcript | OK: actual D creation and C close precede A release after fix; before waits | None |
| [R30](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/398ec6305773e11d/R30.md) | Asynchronous mirror failure logs and stream continues | C5: one injected dark rendering failure on B; light B; resize D; status/evaluate | Yes | transcript | OK: warning captured; same/other-tab updates execute afterward on both revisions | None |
| [R31](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fd69b466c07380be/R31.md) | Metadata read keeps no-grace timeout exception | C2meta: post-evaluate status delayed 800 ms against internal 500 ms budget | Yes | transcript | OK: metadata fallback at 500 ms; evaluate succeeds; late status and fresh calls retain connection | None |
| R32 | Ambiguous tab and no-recording guards | Named ownership/explicit-target test: same session owns A/B; omitted/explicit stop and evaluate | No | named-test | OK: tabRequired remains distinct from RecordingNotActive; explicit own action succeeds | None |
| R33 | Late-started ordinary action causes transient busy | Queue a timed waitFor (4000 ms) behind a 2.5 s evaluate; it starts before its request expires and crosses the delivery deadline while its own timer runs; follow up; settle | Yes | transcript | OK (pass 2: raw files match; rebuilt independently at 4052b2f7d0) | [R33.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c1a33cb3918766e2/R33.md); disclosed in the PR body |
