### R01 — detached viewport shrink, three paired recordings

Captured 2026-11-10 for [#33038](https://git.cafe/pingdotgg/t3code/pull/33038). **PASS for this scripted reproduction.** Main keeps Next enabled; the previous head leaves it disabled after shrinking; the final head enables it. Each build used its own detached checkout and fresh synthetic database, with the same nine-turn Replay fixture.

Main [7171fdd771](https://git.cafe/pingdotgg/t3code/commit/7171fdd7716b05dc1b4be40c26ac78e8bb35f80c); previous head [8e252d57cd](https://git.cafe/pingdotgg/t3code/commit/8e252d57cd524d2ed2beca9a55ca0b4a0252c21b); final head [4a337eb0fc](https://git.cafe/pingdotgg/t3code/commit/4a337eb0fce6f4bfdbe84ca465a4982613c5d421).

Environment: T3 Browser preview tools; Chrome 157 on Linux x86_64; no device emulation; DPR 2; visualViewport.scale 1; fine pointer; default font scaling/root 16 px; browser clock frozen to 2026-11-10 09:00 UTC. Light theme; ordinary motion (prefers-reduced-motion=false). Full viewport, no crop/downscale. Initial 1440×900 CSS → 1440×500 CSS. Post-shrink stills are 2880×1000 PNG. Native 2880×1800 MP4 recordings retain the full smaller viewport with black letterboxing after resize.

Same script on all three: open seeded nine-turn A at bottom; release follow with the established detach.js upward wheel signal; keep exact bottom; hover Next; resize to 1440×500 without scrolling; hover Next again and dwell. The WheelEvent is dispatched to the actual viewport listener (deltaY=-300, isTrusted=false), without detach.js's separate scrollTop offset. Omitting the browser's default scroll keeps distance=0 without a leave-and-return sequence that re-arms follow. No application follow state or button state is injected. Hardware wheel input is not verified: preview_act scroll uses scrollBy, so this reuses the brief's wheel-dispatch method.

All three: scrollHeight=1305, scrollTop=457 throughout, clientHeight=848→448, bottom distance=0→400. **Zero scroll events in every recorded sample.** Sidebar/details closed; timeline=1440/lane=736/gutter=352; nine minimap strips.

Times below are seconds on the measurement clock visible within each video, rounded to tenths, rather than video-player timestamps. The complete recordings include a short recorder startup segment before the overlay. Each stage dwells; no tail or interaction was removed.

| Step | Main | Previous head | Final head | Measured state |
|---|---:|---:|---:|---|
| Bottom settled | 2.1 | 2.2 | 2.2 | distance=0; Next disabled false / true / true |
| Wheel releases follow at exact bottom | 2.2 | 2.3 | 2.4 | distance=0; scrollTop=457; no scroll |
| Detached bottom, hover Next | 6.0 | 6.1 | 6.6 | distance=0; Next disabled false / true / true |
| Mark resize to 1440×500, then resize | 8.3 | 8.3 | 8.7 | no scroll command or scroll event |
| Post-shrink settled, hover Next | 12.7 | 13.3 | 12.9 | distance=400; Next disabled false / true / false |

| Main | Previous head — bug reproduced | Final head — fixed |
|---|---|---|
| [R01-main.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/465ac9d50ac14cba/R01-main.mp4) | [R01-previous.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d6bc308a24a760a9/R01-previous.mp4) | [R01-final.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/de009ef23ae5c845/R01-final.mp4) |

One settled post-shrink still per build, with the same stationary Next hover/tooltip. Each selected full frame equals a second snapshot taken at least 500 ms later: AE=0 and identical SHA-256. Fonts/hydration completed and composer is inactive. Preview exposes no network-idle primitive; captures follow completed requests with only persistent dev connections remaining.

| Main — Next enabled | Previous head — Next disabled | Final head — Next enabled |
|---|---|---|
| ![R01-main.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/25354d7efa427576/R01-main.png) | ![R01-previous.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/555dc6dcc9561266/R01-previous.png) | ![R01-final.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/098d4389f44093e9/R01-final.png) |

Previous head → final head only. Diff0 amplifies RGB difference ×255; DiffT uses grayscale difference >8/255. Black is unchanged. Differences are limited to the Next hover/disabled appearance, a minimap strip highlight, and the intentional true/false overlay text.

| Diff0 | DiffT (>8/255) |
|---|---|
| ![R01-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e1df59eea1803230/R01-Diff0.png) | ![R01-DiffT8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d4a6197ee103f812/R01-DiffT8.png) |

Measurements and settled-frame verification:

[R01-main-measurements.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6500b57e41aa20f2/R01-main-measurements.json)
[R01-previous-measurements.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/185f9bf63ef714c0/R01-previous-measurements.json)
[R01-final-measurements.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e1202a298f816010/R01-final-measurements.json)
[settled-frame-checks.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7e5aa10b7670ff45/settled-frame-checks.json)

Reproducibility scripts and workflow:

[browser-driver.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6a3a52a82ed2de40/browser-driver.js)
[seed.sh](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1ad0956947d6a658/seed.sh)
[R01-driver.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/60c1723e5224ca80/R01-driver.js)
[run-R01.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/834b244f966a4d10/run-R01.js)
[diffs.sh](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5446b3e299a060f8/diffs.sh)
[verify-R01.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c917e9d10e40e90f/verify-R01.py)
[workflow.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b5b195bcaaca7ee1/workflow.md)

Every selected still and diff was visually inspected. Each recording was reviewed through full-surface one-second sequences and full critical post-shrink frames. The verification script passed the pixel-equality, expected state, and zero-scroll-event checks. No repository test suite was run for this evidence-only row.

No tracked code changes, paid provider turns, PR edits, live database access, migration, or live-data seeding. Service-generated browser artifacts were copied into scratch. All three owned dev servers were stopped, the owned preview tab closed, and the three temporary checkouts removed; the lead's original checkout was untouched. Scratch evidence and raw logs remain available. Desktop/mobile and remote connection paths are outside this web-only row; physical wheel hardware remains unverified for the reason above.

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