Evidence environment for both captures: real web client in Chromium on Linux, dark appearance, 1440x900 CSS viewport (recordings are 2880x1800 pixels).

Start each commit from its own worktree with `vp i`, then `T3CODE_DEV_SEED=0 vp run dev`. Pair the browser with that server's startup pairing link. Use the initial synthetic New thread in the default server project; no live database or provider turns are used. Open Toggle right panel, then Terminal. Both sides have one thread and one terminal.

Evaluate resize-driver.js in the browser page, call `await window.prepareResizeProof()`, start browser recording, call `await window.runResizeProof()`, then stop recording. The driver uses the terminal's actual input event listener and the divider's actual pointer handlers. It changes no app code. It hides the composer solely to redact private metadata, clears the shell prompt, and changes only one outgoing resize request's cols to zero. All other messages pass unchanged and the socket stays open.

The same timed interaction runs a spinner redrawing every 100 ms, moves the divider 80 pixels right successfully (57 columns), moves it another 80 pixels right with the one-request failure (47 columns), waits four seconds without touching it, then runs stty size and prints a line exactly as wide as the PTY reports.

Base: PTY remains 57 columns, and the 57-character line wraps in the 47-column pane. Head: one valid 47-column retry is sent, PTY reports 47, and the line fits. Request traces are in resize-observations.json.

The final PNGs were captured after two screenshots at least 500 ms apart compared pixel-identical (ImageMagick AE=0). Both videos and both final images were visually inspected before upload.

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