# Runtime evidence for [#32866](https://git.cafe/pingdotgg/t3code/pull/32866)

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

21 requested rows: 21 captured; none left to capture. No test output is substituted for runtime evidence.

Before: [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0). After: [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8). These are the requested revisions; cached forge metadata still named an older head.

Caller 0 owns the primary thread; caller 1 is a second synthetic thread; caller 2 is a distinct synthetic agent session on the primary thread. All databases were created with T3CODE_DEV_SEED=0. The fixture provider is a local scripted process that holds a live run without invoking a model. A scratch credential adapter creates a second synthetic agent session on the same synthetic thread for ownership fixtures; all browser operations still traverse the real MCP handlers, broker, SessionControl, and Playwright/CDP. Manager changes use preview.resize/adjust/open/close on the actual WebSocket RPC.

No UI render path changed. Proof is timestamped tool results and server milestones. Success status/list JSON selects relevant fields; error results preserve the exact agent-visible text. Server lines omit synthetic agent-session ids for readability. CAPTURE records are emitted by the uploaded scratch instrumentation; the warning messages are from the server logger.

Public tool defaults were used: appearance 15000ms, recording stop 120000ms; waitFor explicitly uses its supported timeoutMs. The internal metadata read uses its built-in 500ms budget. Open has its normal extended startup budget; on before, a sibling short queued wait can disconnect the queued reuse-open. No unsupported timeout argument was sent.

What else changed: overdue recordingStop with a pending dialog now returns dialogPending instead of queueing or busy, reflecting the extra head fix. No other unexpected agent-visible differences were observed in these paths.

Unverified requested rows: none. Scope limit: the native R24 fixture uses real Electron 44.10.1 / Chromium 152.0.7977.169 WebContents and native setZoomFactor, attached directly via CDP by desktop-attach.py. It exercises the server desktop-page zoom-skip branch; the full T3 desktop shell and bootstrap-fd transport are outside this capture.

AI-assisted; verified with the tests and tools listed above.

## R03 — Owning-agent reads

| Before | After |
| --- | --- |
| [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c1c6b95698bbd167/R03.md#before) | [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c1c6b95698bbd167/R03.md#after) |
| [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) | [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8) |

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

Steps: Hold dark appearance past its 15s deadline; concurrently issue owner snapshot and waitFor on A; status follows.

What differed: Owner snapshot/waitFor are refused immediately with busy after the change. Before, a queued short wait times out and evicts the host, disconnecting sibling requests.

## R04 — Reuse busy tab

| Before | After |
| --- | --- |
| [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a74b586b5837c450/R04.md#before) | [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a74b586b5837c450/R04.md#after) |
| [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) | [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8) |

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

Steps: In the same held-tab window, preview_open explicitly reuses A with reuseExistingTab=true.

What differed: After: immediate busy recovery text, without a navigation. Before: the open waits in the queue and is disconnected when the queued wait expires.

## R05 — New tab and second thread

| Before | After |
| --- | --- |
| [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ac9ed70aa7d6b282/R05.md#before) | [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ac9ed70aa7d6b282/R05.md#after) |
| [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) | [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8) |

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

Steps: After the held-tab refusals and the fixed reconnect allowance, open B in the owner session and C in a second synthetic thread; evaluate and status each.

What differed: Both can recover through fresh tabs. After keeps the same server-browser host connection; before needs broker reconnections after timeouts.

## R06 — Close and recording cleanup

| Before | After |
| --- | --- |
| [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/398b48697dc13fcd/R06.md#before) | [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/398b48697dc13fcd/R06.md#after) |
| [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) | [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8) |

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

Steps: Start recording A before holding appearance; after expiry, close A, list remaining tabs, and act on B. Observe encoder and page closure.

What differed: Close bypasses the retained action queue and removes the recording tab on both revisions; actual encoder/page/context close milestones are captured.

## R09 — Settlement clears busy

| Before | After |
| --- | --- |
| [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bd5c9609d38634df/R09.md#before) | [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bd5c9609d38634df/R09.md#after) |
| [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) | [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8) |

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

Steps: For both successful and rejected held appearance: wait for timeout, retry a read, queue manager light appearance, release/reject original, then evaluate.

What differed: After refuses the read while overdue, retains serialization until real settlement, then applies mirror work and accepts a fresh action on both outcomes.

## R11 — Success within answer margin

| Before | After |
| --- | --- |
| [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4b49f4003be1af6b/R11.md#before) | [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4b49f4003be1af6b/R11.md#after) |
| [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) | [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8) |

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

Steps: Delay dark emulateMedia by 15100ms against the public 15000ms budget, then status and evaluate.

What differed: Both revisions return successful appearance. The head still accepts real success after its signal expired but within the 500ms answer margin.

## R12 — Final cutoff

| Before | After |
| --- | --- |
| [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/884b61760de7471c/R12.md#before) | [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/884b61760de7471c/R12.md#after) |
| [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) | [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8) |

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

Steps: Delay dark emulateMedia by 15750ms, then status and a fresh action after settlement. R09 also supplies a late rejection.

What differed: Before returns success inside the broker grace. After returns one timeout around T+500ms; late real completion does not replace it and fresh actions retain the host.

## R14 — Overdue real dialog recovery

| Before | After |
| --- | --- |
| [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/37572e726c6747c9/R14.md#before) | [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/37572e726c6747c9/R14.md#after) |
| [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) | [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8) |

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

Steps: Pre-attach an interactive viewer, start recording, trigger a real confirm inside appearance; after timeout call status, reuse-open, stop, observer reads, take/release human control, accept dialog, evaluate, stop and close.

What differed: Status exposes the pending confirm; dialog accept bypasses the held queue and fresh actions resume. Pending recordingStop times out before; after it is refused as dialogPending.

## R15 — Ownership and human-control precedence

| Before | After |
| --- | --- |
| [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/da85b929868826ca/R15.md#before) | [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/da85b929868826ca/R15.md#after) |
| [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) | [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8) |

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

Steps: Use a synthetic second agent session on the same thread for foreign mutations, then reserve viewer control while action remains held; repeat with a real pending dialog.

What differed: Foreign mutations retain agentMismatch guidance; owner mutations under viewer control retain humanControl guidance, including while the overdue dialog exists. The takeover promise need not drain before reservation becomes visible.

## R16 — Observer reads

| Before | After |
| --- | --- |
| [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/267b999c5892182e/R16.md#before) | [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/267b999c5892182e/R16.md#after) |
| [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) | [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8) |

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

Steps: While owner A is held, foreign session snapshot/waitFor A; repeat under human reservation and with the real pending confirm.

What differed: Foreign reads bypass the owner queue and succeed without a dialog; with a dialog they return dialogPending. Status is separately unqueued. The owning agent under human control receives humanControl.

## R17 — Expired stop still executes

| Before | After |
| --- | --- |
| [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c17469d144403b1b/R17.md#before) | [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c17469d144403b1b/R17.md#after) |
| [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) | [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8) |

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

Steps: Record A; hold appearance; queue public recordingStop 300ms later, before appearance is overdue. Hold until at least stop-start+122000ms, then release; observe stop/encoder milestones and retry stop.

What differed: Head answers the stop timeout at about 120500ms yet still actually stops capture after release. Before the appearance timeout disconnects the stop earlier, but the queued stop also eventually runs. Retry reports no active recording.

## R19 — Stop after busy

| Before | After |
| --- | --- |
| [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/537063e5d2d9f323/R19.md#before) | [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/537063e5d2d9f323/R19.md#after) |
| [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) | [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8) |

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

Steps: Record before the hold; request recordingStop only after appearance expiry, both without a dialog and while a real dialog is pending; close is the escape.

What differed: Without dialog: busy after; queued/disconnected before. With overdue dialog: dialogPending after, 120s timeout before. Human ownership still takes precedence.

## R23 — Cross-tab viewport

| Before | After |
| --- | --- |
| [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ac00ed069d989e0a/R23.md#before) | [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ac00ed069d989e0a/R23.md#after) |
| [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) | [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8) |

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

Steps: Hold A, queue its manager resize event, resize B to 800x600 then the identical viewport; inspect page dimensions and native calls.

What differed: After B applies before A releases; before B stays at its old dimensions until A releases. Equal viewport emits no redundant applySetting. The two immediate setViewportSize calls for the changed setting are its applySetting plus the existing zoom=1 pass, not the later equal RPC.

## R24 — Cross-tab zoom

| Before | After |
| --- | --- |
| [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3695cb2198bfc20f/R24.md#before) | [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3695cb2198bfc20f/R24.md#after) |
| [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) | [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8) |

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

Steps: With A held, manager-adjust headless B zoom to 1.25 and repeat; inspect effective dimensions and CDP device metrics. Repeat against a real Electron WebContents attached through the scratch desktop CDP binding; set native zoom 1.25 and verify no backend override.

What differed: Headless after applies zoom before A releases; before waits. Equal zoom emits no second metrics override. A real Electron WebContents fixture also applies native zoom 1.25; both revisions skip backend device-metrics/viewport zoom on its desktop-attached page, including after A releases.

## R25 — Hard reload

| Before | After |
| --- | --- |
| [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c2042bd4408f2b73/R25.md#before) | [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c2042bd4408f2b73/R25.md#after) |
| [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) | [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8) |

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

Steps: With A held and B on synthetic counter page, manager hardReload=true, then later false/no-reload adjustments; inspect counter and Page.reload calls.

What differed: After Page.reload(ignoreCache=true) runs before A releases; before it is held. Absent/false reload produces no reload call.

## R26 — Clear cookies

| Before | After |
| --- | --- |
| [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c70e2def34902794/R26.md#before) | [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c70e2def34902794/R26.md#after) |
| [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) | [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8) |

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

Steps: Set a synthetic cookie on B; manager clear=cookies plus hardReload=true while A is held; inspect cookie and CDP call order.

What differed: After clears the cookie and sends clearBrowserCookies before Page.reload while A is held. Before cookie remains until A releases.

## R27 — Clear cache

| Before | After |
| --- | --- |
| [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ff64ff94cf7e6e44/R27.md#before) | [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ff64ff94cf7e6e44/R27.md#after) |
| [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) | [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8) |

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

Steps: B loads a synthetic cacheable asset; manager clear=cache while A is held, followed by an adjustment with neither clear branch.

What differed: After Network.clearBrowserCache executes before A releases; before it waits. No-clear controls issue neither cookie nor cache clear.

## R28 — Mirror FIFO and serialization

| Before | After |
| --- | --- |
| [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/349755ede8c5cfec/R28.md#before) | [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/349755ede8c5cfec/R28.md#after) |
| [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) | [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8) |

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

Steps: Hold B system dark appearance; enqueue B viewport, light+zoom, cookies+reload; resize C; release B.

What differed: After C progresses while B waits; B applies queued viewport, rendering, cookie clear, reload in order after held media ends. Before the global mirror is still behind A until A releases.

## R29 — Manager opens/closes past stalled job

| Before | After |
| --- | --- |
| [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2c1691f9c4777215/R29.md#before) | [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2c1691f9c4777215/R29.md#after) |
| [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) | [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8) |

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

Steps: While A and its queued resized job remain held, manager-open D and manager-close C; inspect actual tab.created and page.closed milestones.

What differed: After actual page creation/closure occurs before A releases. Before only manager records change then; actual page work waits for A release.

## R30 — Mirror failure continuation

| Before | After |
| --- | --- |
| [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/398ec6305773e11d/R30.md#before) | [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/398ec6305773e11d/R30.md#after) |
| [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) | [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8) |

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

Steps: After releasing A and draining earlier jobs, inject one dark rendering failure on B; remove gate, apply light on B and resize D.

What differed: Both log the rendering failure and continue applying later settings. This preserves failure handling while the head no longer awaits each tab job in the event stream.

## R31 — Metadata no-grace exception

| Before | After |
| --- | --- |
| [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fd69b466c07380be/R31.md#before) | [Transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fd69b466c07380be/R31.md#after) |
| [fa2f4ff2a2](https://github.com/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) | [b088b88d19](https://github.com/pingdotgg/t3code/commit/b088b88d19fb0edc43f754da2e1d199bda70d6d8) |

Environment: fs-50; Linux 6.8.0-117-generic x86_64; Node v26.12.1; Playwright 1.60.0; Chrome Headless Shell 157.0.8103.38; isolated dev:server, T3CODE_DEV_SEED=0, fresh per-checkout SQLite; synthetic Fx fixture; RPC/MCP over loopback; UTC timestamps.

Steps: Delay the post-evaluate status read by 800ms against its internal 500ms budget; capture metadata fallback, eventual read settlement, subsequent ordinary status and evaluate.

What differed: Both keep successful evaluate despite metadata timeout and retain the same host connection for subsequent calls; only metadata falls back.

## Reproduction

Create the two requested detached worktrees and run vp install in each. Run setup.py, hang.py and foreign.py with the checkout path (setup.py also takes before/after). Start each with T3CODE_DEV_SEED=0 T3_REPRO_HANG_DARK=1 T3_CAPTURE_CONTROL=/tmp/lead-32866-r1/capture-1/control-<side> vp run dev:server. Issue an isolated CLI auth session with node apps/server/src/bin.ts auth session issue --base-dir .t3 --token-only, redirecting the credential to auth-<side>.private; never publish that file. Run node driver.mjs <side> seed, then C1, C2, C3, C4 and C5 sequentially on each server. Run fixture-server.mjs before C5. The final C1 and C2meta captures additionally apply extra-instrumentation.py and reseed after the automatic restart.

For C24native, extract-electron.py reuses the local cached Electron binary; run electron-runtime/electron desktop-fixture.cjs, apply desktop-attach.py to both servers, reseed after restart, then run driver.mjs <side> C24native sequentially. This binding bypasses the desktop bootstrap transport while preserving the real server desktop-page and native WebContents zoom behavior.

## Reproduction artifacts

[fx](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/010823bf1c0bb202/fx)
[setup.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/39e1c80491788e27/setup.py)
[hang.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3ed3de94f977ae7f/hang.py)
[foreign.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cc88d59d573dc214/foreign.py)
[extra-instrumentation.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a24861aa6ff5a419/extra-instrumentation.py)
[driver.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a9e0bdb6d4ccbc46/driver.mjs)
[fake-fx.ts](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8942dc5f62edcd86/fake-fx.ts)
[fixture-server.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/065495f47e821f99/fixture-server.mjs)
[desktop-fixture.cjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d8e63bdbca3f2fb6/desktop-fixture.cjs)
[desktop-attach.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cdb3b9709030bc05/desktop-attach.py)
[extract-electron.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f220a56486b78038/extract-electron.py)
[groups.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/47316b1332511639/groups.txt)
[report.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a2b516f619178d2f/report.py)
[sources.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a53d06f53b963a2b/sources.json)
[raw-captures.tar.gz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b37bbf923a9aac03/raw-captures.tar.gz)

The base capture applies setup.py, hang.py, and foreign.py identically to both checkouts. Extra encoder/settlement/metadata logging was added with extra-instrumentation.py for the final C1 and C2meta captures. desktop-attach.py selects the synthetic /desktop-fixture page and binds its desktop adapter to the real Electron CDP endpoint; it changes no zoom logic. desktop-fixture.cjs owns that isolated native WebContents; extract-electron.py extracts the existing cached Electron distribution into scratch. It changes logging only. driver.mjs seed creates the synthetic projects/threads through RPC; driver.mjs C1/C2/C3/C4/C5/C2meta runs the fixtures. fixture-server.mjs serves the synthetic counter/cache page. groups.txt is the initial driver fragment retained for provenance; driver.mjs is the final integrated driver. report.py produces the selected-field paired transcripts from the raw driver logs and CAPTURE lines. No production source was committed.

FRICTION: tool | Scratch driver needed ESM-only contracts loading and MCP initialize/version negotiation; fixture initially advertised MCP-over-ACP instead of exposing bridge HTTP credentials | a reusable documented direct MCP driver would avoid setup iterations

FRICTION: runbook | Attaching a new viewer after a real dialog blocked its CDP handshake | pre-attach the interactive viewer before opening the dialog

FRICTION: infra | No T3 Electron desktop bridge was attached to these server dev runs | used a real native WebContents fixture with an explicit scratch CDP binding for the backend zoom-skip branch

AI-assisted; verified with the tests and tools listed above.

Cleanup: all dev servers, the synthetic page server, and the Electron fixture were stopped using their retained launch sessions. The five fixture/dev ports are no longer listening. Both detached capture worktrees were removed; no changes were committed or pushed. Only this index remains locally for the lead.

Supplemental setup/recovery diagnostics (includes unsuccessful setup attempts; not substituted for the selected row captures; credentials and private model strings redacted):

[setup-recovery-diagnostics.tar.gz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1a83bb6b3d133887/setup-recovery-diagnostics.tar.gz)
