# Evidence handoff for issue 23661

Final head [887f485adf](https://git.cafe/pingdotgg/t3code/commit/887f485adfe71413ecc10fd59e74255b878b7c08), base [fef851bee0](https://git.cafe/pingdotgg/t3code/commit/fef851bee0). Branch fix/issue-23661, /home/ubuntu/wt/issue-23661, restored final and clean at handoff. No push, merge, PR, comment, tests, or code-content changes. Scope is browser evidence, not full sufficiency or merge approval.

## Captured rows

| Matrix row | Evidence and outcome |
|---|---|
| C1 / A1+A2 1440 light | Matched base/final recordings. Base FIRST answered after 10s, SECOND retained but not sent despite repeated Enter. Final SECOND dispatched exactly once as queue_after_active after FIRST answer; both replied. |
| C2 / A1 390 dark | Matched base/final recordings. Same outcome at CSS390x844. Responsive web only. |
| C3 / A5 1440 dark | Matched base/final uninterrupted recordings. Base pending at 131.664s, 27 Pongs. Final explicit two-minute error + unsent info toast, SECOND preserved, busy released; ledger at 138.918s, 28 Pongs. One suppressed message request, no automatic retry. |
| C4 / A5 390 light | Base valid at 134.359s/27 Pongs. Final MISSING: editor typing tools timed out; no request was intercepted. Idle recording excluded. |
| C7 / P1 1440 dark | Final-only delayed-launch promotion recording: FIRST launch held 10s, promotion occurs, SECOND dispatches once as queue_after_active, both replied. Separate launch no-answer recording: error + unsent info toast, SECOND preserved; 145.915s ledger/29 Pongs. No automatic message dispatch. Base promotion missing. |

All valid timed runs have no socket-close event, maximum Pong gap under 5.1s, and stable server PID during the recording. Final valid server PID2063612 started11:59:49 UTC and remained running through handoff. Root owns runner24004. UTC request timestamps and sanitized counts are in per-run JSON and summary-ledger.json. Incoming Exit/request IDs and projection Chunk ordering are logged for final captures, without message contents. Base driver did not log incoming requestId, so exact per-response correlation there is limited; corresponding video + outgoing count remain available.

## Missing / unverified

C5 A3 editing/clear/resubmit and A4 cross-route simultaneous-send navigation/stale completion: not captured. C6 A6 restore-original/manual recovery: not captured. C8 A12 approval and question cancellation: not seeded or captured; no unsafe tool was triggered. A7 attachment/model bookkeeping, A8 other callers/modes, A9 rejection/blockers, A10 receipt/late commit: not verified by this browser task. M1 iOS/Android and E1 native Electron: explicitly unverified. R1 relay/tunnel and other providers: unverified; this is one local web/Codex setup. No claims imported from tests or code review.

## Environment and what else changed

Linux fs-34; T3 collaborative Chromium preview own tab tab_2_e44c55fd-65d7-4f75-802b-5896c414ac9a; actual app at localhost8006, server16046. Isolated worktree .t3 only, no SQLite writes. Synthetic existing Retain SECOND thread plus fresh UI drafts. Model picker GPT-6-Astra, Codex provider, Medium, Full access. Harmless literal-answer/no-tools prompts. Shared runner reused; root restarted it to flush stale Vite cache. Worktree checkout switched base/final only and final restored. Source files were touched to attempt invalidation, with no content changes. No server was started/stopped by this capture agent. Injection removed at handoff; app remains available.

CSS1440x900 / CSS390x844 measured, DPR2. Recordings are2880x1800 /780x1688 raster. Desktop preview_snapshot still is downscaled1280x800; it is not the authoritative full-resolution pair. Extracted recording frames are used instead. Same prompts, route, dimensions, theme and next-request injection; timeline grows with completed turns, clock/sidebar recency changes, and historical/current git summaries differ. Those background differences are unrelated to the fix. No identical database snapshot or zero-diff claim.

Full-surface desktop timeout before/after pair and threshold20 diff are published. Diff has122425/5184000 pixels above threshold (2.3616%). Expected behavior and background state differ; this metric is descriptive, not a style-regression test. Pair and diff inspected. Every valid recording inspected through extracted frame(s) plus endpoint DOM/transport ledger. This does not claim exhaustive frame-by-frame review.

Outgoing suppression never forwards the selected frame: it proves client-observable no-answer behavior, not server receipt. Receipt-with-no-answer is owned by root's focused tests and was not rerun here. Delay forwards only the original selected frame once after10s; all Ping/control traffic preserved. No clock mocking, reconnect/replay or blind resend.

## FRICTION / exclusions

- Runner session15706 inaccessible from this harness; isolated pair CLI used with explicit .t3 base-dir. No credentials published.
- Public matrix URL DNS failed initially; existing local matrix read. ghdrop uploads worked.
- Checkout back to final left normal commands.ts URL serving base transform while fresh-query URL served final. Saved normal/fresh SHA256 + marker proof. First final-labelled134s run excluded as INVALID-stale-module. Touch/reload and Vite client invalidation did not fix it. Root restarted entire runner; normal URL then contained deadline; fresh valid recording passed. Never use excluded footage as final proof.
- Final390-light attempt had preview_type timeouts despite DOM editor existing; no message frame captured, so idle footage excluded. Restore and editing/navigation omitted to respect budget.
- Base/final switch caused expected runner restarts between recordings, never during valid timed evidence. No old restart-invalid timeout footage reused.

## Published artifacts

[Base A1 1440 light](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/94bc29ba47dcd251/base-A1-1440-light.mp4)
[Base A1 390 dark](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c29159046c2411c7/base-A1-390-dark.mp4)
[Base A5 1440 dark](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1999a9ee79dab2d2/base-A5-1440-dark.mp4)
[Base A5 390 light](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/86af47463b35a6df/base-A5-390-light.mp4)

- [base-A1-1440-light.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7c70d5fde559cbc0/base-A1-1440-light.json)
- [base-A1-390-dark.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9d23101ad7707f81/base-A1-390-dark.json)
- [base-A5-1440-dark.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/415b47e050231cfc/base-A5-1440-dark.json)
- [base-A5-390-light.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/be6655ccec02298b/base-A5-390-light.json)
- [driver.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/64620bc4d64f35bf/driver.js)
- [seed-and-protocol.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/07872e89379fef4c/seed-and-protocol.md)
- [final-A5-1440-dark.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3f7687c4e4c73e13/final-A5-1440-dark.mp4)
- [final-A5-1440-dark.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0c3e69534f01b8a5/final-A5-1440-dark.json)
- [final-A5-1440-dark-frame122.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/338e4cfae7b4b5c8/final-A5-1440-dark-frame122.png)
- [final-A1-1440-light.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ff3be0096ba15e7d/final-A1-1440-light.mp4)
- [final-A1-1440-light.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/511640a3e7e94e0b/final-A1-1440-light.json)
- [final-A1-390-dark.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3d5c94a2cccf1870/final-A1-390-dark.mp4)
- [final-A1-390-dark.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1db90caa7f14b6ef/final-A1-390-dark.json)
- [final-P1-promotion-1440-dark.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/abd4066b005794d4/final-P1-promotion-1440-dark.mp4)
- [final-P1-promotion-1440-dark.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/77e9002c87553685/final-P1-promotion-1440-dark.json)
- [final-P1-launch-timeout-1440-dark.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b553bb28bf8e3064/final-P1-launch-timeout-1440-dark.mp4)
- [final-P1-launch-timeout-1440-dark.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4aad28f22797e7d1/final-P1-launch-timeout-1440-dark.json)
- [timeout-before-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/aa9b4ecee15bae8a/timeout-before-after.png)
- [timeout-diff-threshold20.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a1d9303199753310/timeout-diff-threshold20.png)
- [diff-metrics.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/092660cd2a828603/diff-metrics.json)
- [stale-module-proof.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ff69b71a504869bc/stale-module-proof.json)
