# Evidence fixture and protocol

Existing isolated development environment, web origin localhost:8006, server 16046. Reused root-owned runner; no server started and no tests run. Worktree /home/ubuntu/wt/issue-23661; isolated .t3 only. No direct SQLite writes. Existing synthetic Retain SECOND conversation used for established-thread cases. Provider picker shows GPT-6-Astra, Codex provider; Full access, Medium. Prompts request literal READY/SECOND and no tools.

Own T3 collaborative preview tab; no root tab used. Pair CLI explicitly targeted worktree .t3. No pairing token is in published artifacts.

Base fef851bee0; final 887f485adfe71413ecc10fd59e74255b878b7c08. Only issue worktree switched; final branch restored after baseline. Runner restarted as expected between commits, never during a valid timed recording. Base server PID 2051181 started 11:45:02 UTC; final PID 2055282 after switch. Tests were already completed by root and deliberately not rerun.

Use driver.js in preview_evaluate. It intercepts only the next selected Request: orchestration.dispatchCommand with payload.type message.dispatch, or separately orchestration.launchThread. delay forwards original frame once after 10 seconds; drop never forwards it. Ping/Pong and all other requests pass. No fake clock. Reload after a dropped request clears the controlled optimistic state and installs native WebSocket behavior. Outgoing drop proves client no-answer behavior only, not server receipt. Root's focused tests own receipt-with-no-answer proof; those were not run or assessed here.

A1: FIRST evidence success. Reply only READY, no tools. Then SECOND evidence success. Reply only SECOND, no tools. Enter during delayed FIRST; repeated Enter for A2.
A5: FIRST evidence timeout. Reply only READY, no tools. Then SECOND evidence timeout retained. Enter during suppressed FIRST. Wait at least 125 seconds.

CSS viewport is measured with innerWidth/innerHeight; DPR is 2. Recordings retain 2880x1800 for CSS1440x900, and 780x1688 for CSS390x844. Desktop preview_snapshot saved an automatically downscaled 1280x800 still: do not infer CSS viewport from that raster. Use extracted recording frames for full-resolution comparisons. UI zoom/browser agent is desktop Chromium; 390 is responsive web, never native mobile.

Base/final scenarios use the same prompts, route, viewports, theme and injection. Persisted timeline grows with harmless completed turns; clock, sidebar recency, timeline content and checkpoint diff summaries differ. Therefore they are matched conditions, not identical database snapshots or pixel-equal UI. No claim that unrelated historical diff summaries are changes caused by this fix.
