## Evidence — four matched local-web fixtures completed

Issue [#8701](https://github.com/pingdotgg/t3code/issues/8701), PR [#8766](https://github.com/pingdotgg/t3code/pull/8766). [Original proof matrix](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/47b97586051973ce/issue-8701-proof-audit-pass-1.md).

BASE [3b95e7831b](https://github.com/pingdotgg/t3code/commit/3b95e7831b11b17627dff16843bc087bfca397ec) (`3b95e7831b11b17627dff16843bc087bfca397ec`); final HEAD [3bbf1c3918](https://github.com/pingdotgg/t3code/commit/3bbf1c3918c120dfbbe457807f3a9a4f1a760d22) (`3bbf1c3918c120dfbbe457807f3a9a4f1a760d22`). This report retains all four original matched pairs and eight original recordings, then adds stamped C1 test runs, wide-dark interaction recordings and a controlled reload pair. Native and remote verification remain incomplete; W1 is a tested interaction subset, not a full native-input pass.

### Environment, timestamps and procedure

Recovery began 2026-10-22 at approximately 08:19 UTC. Own T3 collaborative server-browser tab on Linux x86_64; Chrome 154.0.0.0; DPR 2; visualViewport.scale=1. Reused the lead-owned isolated dev server (`vp run dev --no-seed`), web 5876/server 13916, worktree `/home/ubuntu/wt/issue-8701/.t3`. No server launched/stopped, no source edits, commits, pushes, PR-body writes, or direct database writes. The app's normal terminal lifecycle persisted isolated app state. Pairing credentials/private logs were excluded from uploads.

Font preferences: advanced typography unset (off), code size 13, code family empty. Thus the terminal uses 13 CSS px with the default SF Mono/SFMono-Regular/Menlo/Consolas/Liberation Mono and glyph fallback stack. A browser canvas measurement using that stack gave M advance 7.80126953125 CSS px and ascent 9; the exact platform face selected by Chromium was not independently identified. Same browser and unchanged preferences across all eight retained captures. Terminal column counts are independently visible in PTY reporter output: 183 wide, 48 narrow. Fifteen visible text rows; row advance 18 CSS px inferred from renderer metrics and exported rows. No font scaling or zoom change.

CSS viewports: wide 1440×900 with canvas (0,621) 1440×279; narrow 390×844 with canvas (0,565) 390×279. Whole-surface still exports are 1280×800 wide and 780×1688 narrow (preview export scaling); videos are 2880×1800 wide and 780×1688 narrow. No cropping, registration, resizing or masks were applied to the compared stills.

Each retained run: set saved light/dark theme with follow-system off; fully navigate/reload the app; wait for terminal input; close main sidebar and notifications through their DOM controls; start recording; paste `bash /tmp/issue-8701/scrollback-repro.sh` with ClipboardEvent/DataTransfer into the actual Terminal input; press Enter. This is the unchanged committed reporter from HEAD, copied outside the worktree before BASE checkout. It emits RIS, 12,000 numbered markers and T3-END with tput columns. After output settles, focus the actual scrollbar, press End, capture end, press Home, capture earliest, press End again, capture return, and leave 2.5 seconds for the recording endpoint. No synthetic terminal output or injected cosmetic UI. Navigation was keyboard End/Home, not a wheel/trackpad test.

HEAD captures preceded BASE; checkout BASE detached, then full reload for a fresh core. Restored fix branch, fully reloaded and repeated HEAD wide-light last. Earlier exploratory wide-light recording is discarded. Retained timestamps and scrollbar values are in [recovery-capture.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cdd225f6faabbbab/recovery-capture.json). All eight videos were decoded with ffmpeg; their final frames visibly contain T3-END and the shell prompt, proving return to end. Stills show Home at scrollbar position zero. This avoids the previous run's missing final frame.

### Matched whole-surface comparisons

Diff0: absolute per-channel difference amplified 8×, black for identical pixels; counted when max RGB delta >0. Diff16: per-channel binary threshold >16/255, counted when max RGB delta >16. These images deliberately compare different retained line numbers at the same earliest-scroll position; they are behavioral evidence, not an assertion of visual equality.

| CSS fixture | Before — BASE | After — final HEAD | Diff0 ×8 | Diff16 (>16/255) |
|---|---|---|---|---|
| wide-light; earliest 11656 → 08030 | ![Before wide-light earliest 11656](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f58f058c2c3736af/recovery-base-wide-light.png) | ![After wide-light earliest 08030](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/071cbe02c93267fb/recovery-head-wide-light.png) | ![Amplified zero-threshold difference wide-light](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/23bdd67a68d3d414/diff0-wide-light.png) | ![Threshold 16 difference wide-light](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8ed581fb40a655a7/diff16-wide-light.png) |
| wide-dark; earliest 11656 → 08030 | ![Before wide-dark earliest 11656](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4c430fbfd1122270/recovery-base-wide-dark.png) | ![After wide-dark earliest 08030](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/824a0a8473094070/recovery-head-wide-dark.png) | ![Amplified zero-threshold difference wide-dark](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5db887d39dae1099/diff0-wide-dark.png) | ![Threshold 16 difference wide-dark](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ec54eb089b927d4b/diff16-wide-dark.png) |
| narrow-light; earliest 10715 → 00001 | ![Before narrow-light earliest 10715](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/54bdc178ccfa217f/recovery-base-narrow-light.png) | ![After narrow-light earliest 00001](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fadb1ce077032838/recovery-head-narrow-light.png) | ![Amplified zero-threshold difference narrow-light](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/489bfca409066951/diff0-narrow-light.png) | ![Threshold 16 difference narrow-light](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6d97ab4ec96413dd/diff16-narrow-light.png) |
| narrow-dark; earliest 10715 → 00001 | ![Before narrow-dark earliest 10715](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/99f8d1c02e3f2671/recovery-base-narrow-dark.png) | ![After narrow-dark earliest 00001](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f5e88ae2a505a8bc/recovery-head-narrow-dark.png) | ![Amplified zero-threshold difference narrow-dark](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b36d2cacd19218a8/diff0-narrow-dark.png) | ![Threshold 16 difference narrow-dark](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0db37b7a814065d4/diff16-narrow-dark.png) |

| Fixture | BASE scrollbar max | HEAD scrollbar max | Diff0 pixels | Diff16 pixels |
|---|---:|---:|---:|---:|
| wide-light | 332 | 3958 | 3705 / 1024000 | 3037 / 1024000 |
| wide-dark | 332 | 3958 | 3812 / 1024000 | 3111 / 1024000 |
| narrow-light | 1273 | 11987 | 12547 / 1316640 | 11388 / 1316640 |
| narrow-dark | 1273 | 11987 | 12918 / 1316640 | 11655 / 1316640 |

[diff-stats.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2053d8b24afeb408/diff-stats.json). All changed pixels are within terminal text: wide difference bounding box (101,559)–(135,792), narrow (227,1146)–(304,1669), in exported raster coordinates. Pixels above the terminal are exactly identical in every matched pair. Visible differences are earlier retained line-number digits and their antialiasing. Theme, layout, composer, terminal bounds and focused top scrollbar position match. At Home, both scrollbar thumbs hit the same minimum size; the increased range is recorded in metadata. No other pixel differences were observed in these retained stills. No clock freeze, cosmetic correction, or diff exclusion was used.

### Interaction recordings and end-state evidence

Each original video shows the fresh PTY run, Home/earliest and visible return to End. The following timings replace the prior generic narration. Videos are variable-frame-rate: frames were decoded sequentially and their presentation timestamps inspected, rather than inferring time from frame number or seeking as if frame rate were constant. Entries below are first decoded frames visibly showing each state; a frame remains displayed until the next presentation timestamp. Whole-frame originals are unchanged.

| Original recording | Streaming output observed | First settled End frame | Earliest state begins | Returned End begins |
|---|---|---:|---:|---:|
| BASE wide-light | ~1.18 s | 1.30 s | 4.67 s (11656) | 5.51 s |
| HEAD wide-light | ~2.27 s | 2.34 s | 6.19 s (08030) | 7.65 s |
| BASE wide-dark | ~2.45–2.77 s | 2.92 s | 6.97 s (11656) | 7.11 s |
| HEAD wide-dark | ~1.79 s | 1.89 s | 5.29 s (08030) | 6.29 s |
| BASE narrow-light | ~1.17 s | 1.71 s | 4.10 s (10715) | 5.05 s |
| HEAD narrow-light | ~0.52–0.67 s | 0.75 s | 4.12 s (00001) | 5.24 s |
| BASE narrow-dark | ~0.74–1.18 s | 1.66 s | 4.09 s (10715) | 5.27 s |
| HEAD narrow-dark | ~0.58–0.77 s | 0.83 s | 4.05 s (00001) | 5.19 s |

The BASE wide-dark earliest phase is brief (~0.14 s); its still remains the readable proof. These original recordings exercise keyboard navigation, with no native wheel/trackpad claim.

| Fixture | Before video | After video | Before return still | After return still |
|---|---|---|---|---|
| wide-light (7.42s / 10.35s) | [recovery-base-wide-light.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1fe7613cc6c0dcf4/recovery-base-wide-light.mp4) | [recovery-head-wide-light.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e5c32a7a1e07d5cd/recovery-head-wide-light.mp4) | [recovery-base-wide-light-return.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dce90d4cbcc4fa19/recovery-base-wide-light-return.png) | [recovery-head-wide-light-return.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8967c550079815f0/recovery-head-wide-light-return.png) |
| wide-dark (9.05s / 8.88s) | [recovery-base-wide-dark.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ffa508d9ede15cf9/recovery-base-wide-dark.mp4) | [recovery-head-wide-dark.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5d98c7a2669ee643/recovery-head-wide-dark.mp4) | [recovery-base-wide-dark-return.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8e0c07f985ff0c73/recovery-base-wide-dark-return.png) | [recovery-head-wide-dark-return.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/062759f2f2c9e1a9/recovery-head-wide-dark-return.png) |
| narrow-light (7.94s / 8.08s) | [recovery-base-narrow-light.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5c3b83d1e0fc01b0/recovery-base-narrow-light.mp4) | [recovery-head-narrow-light.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/adf13d5f59524589/recovery-head-narrow-light.mp4) | [recovery-base-narrow-light-return.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fd9ea56560ae22f4/recovery-base-narrow-light-return.png) | [recovery-head-narrow-light-return.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b9e1d9c800299874/recovery-head-narrow-light-return.png) |
| narrow-dark (7.98s / 7.83s) | [recovery-base-narrow-dark.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0f148be08abd9dd1/recovery-base-narrow-dark.mp4) | [recovery-head-narrow-dark.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a62a376501d74d16/recovery-head-narrow-dark.mp4) | [recovery-base-narrow-dark-return.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7471828987ab6d7d/recovery-base-narrow-dark-return.png) | [recovery-head-narrow-dark-return.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2cd45f259014fd4f/recovery-head-narrow-dark-return.png) |

![Inspection sheet: final decoded frame of each recording, showing T3-END and shell prompt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ee0d239f853785ce/recovery-video-end-inspection.png)

### Supplement — stamped C1 runs and bounded interaction/reload evidence

Supplement performed 2026-10-22, 08:36:54–08:57 UTC, using the same existing isolated web 5876/server 13916. Own new T3 preview tab; no server lifecycle action, source edits, commits, pushes, PR writes or direct database fixture writes. The exact committed reporter had already been copied to `/tmp/issue-8701/scrollback-repro.sh`; it was pasted into the real terminal textarea through ClipboardEvent/DataTransfer and run by the existing PTY. Temporary BASE/RED checkouts were restored to clean final HEAD.

**C1.** Reran the existing focused test from `apps/web` on RED commit [5dea8693af](https://github.com/pingdotgg/t3code/commit/5dea8693af674e1f60d8e9e6b54b1ee6eb9b4bd2), which contains the regression test on BASE, then final HEAD. Each transcript prints `git rev-parse HEAD`, the command and exit code. Command: `vp test run --project unit src/terminal/ghostty/core.test.ts -t 'retains thousands of rows of scrollback'`. RED: expected 602 to be greater than 1000, exit 1; HEAD: one selected test passed, exit 0 (16 unselected tests skipped by `-t` in each run). No implementation edits. [Stamped RED transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a15d3f760037eb89/red-stamped.log); [stamped final-HEAD transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c48ab639496d5c05/green-stamped.log).

**W1 replacement pair.** Same whole-surface CSS viewport 1440×900, DPR 2, scale 1; dark saved theme with follow-system off; advanced typography off, code size 13, unchanged default font stack; terminal canvas (0,621), 1440×279, 183 columns and 15 visible rows. Main sidebar, details card and notifications closed through existing controls. Native preview drag moves the actual scrollbar thumb to the center of its track. Then `preview_evaluate` dispatches a canvas `WheelEvent` with `deltaY=-9000`, `deltaMode=0`, followed by focused-scrollbar Home and End. This dispatch exercises the terminal wheel handler but is **synthetic DOM input, not native wheel/trackpad input**. On HEAD the thumb value traverses 3958 → 1979 → 1479 → 0 → 3958; on BASE 332 → 166 → 0 → 332. BASE reaches earliest on the wheel dispatch before Home. Drag to the exact top was not available through the locator-to-locator drag API; Home establishes earliest.

Measured decoded video timestamps, above the pair: BASE shows streaming at ~1.09–1.19 s, End at 1.25 s, dragged midpoint marker 11822 at 3.12 s, dispatched-wheel earliest 11656 at 4.48 s, returned End at 8.69 s. HEAD shows streaming at 1.68 s, End at 1.89 s, dragged midpoint marker 10009 at 11.15 s, dispatched-wheel marker 09509 at 12.23 s, Home/earliest 08030 at 13.82 s, returned End at 16.07 s. Both decoded final frames show T3-END and the existing shell prompt. Different tool latency changes elapsed time, not viewport or reporter.

| Before — BASE interaction | After — HEAD interaction |
|---|---|
| [BASE drag + synthetic wheel + Home/End video](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/55bfe5f749569f21/wheelBaseVideo.mp4) | [HEAD drag + synthetic wheel + Home/End video](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d49f5b7f62c2050b/wheelHeadVideo.mp4) |
| ![Before BASE final End frame](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fa1691e8e1badc34/wheelBase-last.png) | ![After HEAD final End frame](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e57146c3bf8af16d/wheelHead-last.png) |

[Interaction action metadata](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c68b287f15eb42e2/wheel-capture.json). W1 disposition: keyboard + thumb-to-midpoint drag + synthetic-wheel-handler subset complete. Native browser wheel, physical trackpad inertia, drag-to-earliest, and corresponding gestures in narrow/light fixtures remain unverified. `preview_scroll` was attempted on the canvas and after hovering it, but did not change the terminal: the tool calls DOM `scrollBy`, not wheel input. This is a tool coverage gap, not evidence that native wheel scrolling fails.

**R1 controlled reload.** Each revision ran the reporter once, captured live earliest, returned End, fully navigated to the same thread URL, waited for the actual terminal input, closed the reopened main sidebar/dismissed the normal notification, and captured End then Home without issuing another PTY command. Same existing PTY and thread, no transcript reseeding after reload. The videos include normal reload splash/loading. The sidebar initially mounts the terminal at 1184 CSS px before closure restores 1440; therefore this is a real reload-plus-normal-layout-restoration fixture, not a claim of constant terminal width during mount. Both after-reload retained stills have canvas (0,621), 1440×279.

Decoded video narration: BASE live output ~1.57–1.67 s, live End 1.71 s, midpoint 11.03 s, synthetic-wheel earliest 11.56 s, live return End 24.22 s, reload begins ~24.63 s, restored End ~46.09 s, after-reload Home 11427 at 48.58 s, final End 58.90 s. HEAD live output ~2.26–2.37 s, live End 2.47 s, midpoint 11.78 s, wheel middle 12.24 s, live return End 24.80 s, reload begins ~25.08 s, restored End 46.74 s, after-reload Home 07003 at 47.24 s, final End 47.32 s. HEAD's after-reload Home is a short decoded frame (~0.08 s); its retained still is the readable assertion. The live Home action in this longer HEAD recording was too brief to encode and is not claimed as visible; the separate replacement interaction pair above supplies that proof.

| Before — BASE controlled reload | After — HEAD controlled reload |
|---|---|
| [BASE live output → reload without reseeding video](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a08d61b6683b6268/cleanBaseVideo.mp4) | [HEAD live output → reload without reseeding video](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/89918a245338b162/cleanHeadVideo.mp4) |
| ![Before BASE earliest after reload: marker 11427](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7619ebebd62ede6b/cleanBaseReloadOldest.png) | ![After HEAD earliest after reload: marker 07003](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3294fb2d739efedc/cleanHeadReloadOldest.png) |

| Diff0 ×8 | Diff16 (>16/255) |
|---|---|
| ![Controlled reload zero-threshold amplified difference](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/153cf786ab1dfc8e/clean-replay-diff0.png) | ![Controlled reload threshold-16 difference](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fcb3d4adfbaecaa8/clean-replay-diff16.png) |

After-reload scrollbar maxima: BASE 561; HEAD 4985; Home value zero in both. Whole-surface still diff: 3652 pixels at >0, 3049 at >16, out of 1,024,000; bounding box (101,559)–(134,791). Differences are terminal line-number digits and antialiasing; all pixels above the terminal are identical. No cropping, resizing, masks or registration. [Reload diff statistics](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d09c7888b06c5cce/clean-replay-diff-stats.json); [reload action and artifact metadata](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6a6c083d4fc2d1ef/clean-supplement-capture.json).

R1 is verified only for this local web full reload and normal sidebar restoration. Retained output is bounded: earliest after reload 11427 → 07003, not marker 00001. The default server replay of about 5,000 history lines, live engine byte budget and client transcript cap remain separate limits. This does not prove full 12,000-line replay, native remount, remote disconnect/reconnect or transport recovery. BASE and HEAD final decoded frames both show T3-END cols=183 and the shell prompt: [BASE reload final frame](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b79427d07afafbc8/cleanBaseVideo-last.png); [HEAD reload final frame](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/94613407e4ebac9d/cleanHeadVideo-last.png).

Sequentially decoded frame inspection sheets for the eight original videos: [wide-light](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5424cfa618bc8c62/pts-timing-wide-light.png), [wide-dark](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/35b98d117db230c1/pts-timing-wide-dark.png), [narrow-light](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ce7386bd278a05cc/pts-timing-narrow-light.png), [narrow-dark](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8cf8023cbbdd4c24/pts-timing-narrow-dark.png). These are labeled analysis crops only; the original full-surface videos and stills above remain the evidence.

### Other evidence and full matrix disposition

Lead's earlier 1280×800 comparison reported oldest marker 11285 before versus 6189 fixed. It is a separate geometry and must not be substituted into the four matched fixtures above: [current-main-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f32edc71f454ddca/current-main-before.png), [current-main-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e56bb934130f9d0f/current-main-after.png). Existing focused red test reports retained history 602, failing >1000; green run reports 53 tests passed across four files: [red-test.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/82204f46812f0aa5/red-test.log), [green-test.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9f9ef0b0b38f1259/green-test.log). Those earlier logs were retained; the focused SHA-stamped rerun above supersedes them for C1 provenance. No knip success is claimed: lead stopped its stalled retry at 08:22 UTC to reduce memory pressure.

| Matrix row | Disposition |
|---|---|
| C1 shared engine regression | VERIFIED: SHA-stamped focused RED failure (602, exit 1) → final HEAD pass (exit 0). |
| C2 config/scope | Source checked: shared WASM core and Android JNI pass 10,000,000 bytes to max_scrollback. No iOS source change. |
| W1 local web | SUBSET COMPLETE: four matched still/keyboard fixtures plus wide-dark thumb-to-midpoint drag and synthetic DOM wheel-handler pair. Native wheel/trackpad, drag-to-earliest and narrow/light gesture coverage remain UNVERIFIED. |
| W2 hosted web/remote | UNVERIFIED: no authorized remote/relay/tunnel fixture available. Local web is not proof of remote mode. |
| D1 Electron wide | UNVERIFIED: native Electron session/display infrastructure unavailable in this run. |
| D2 Electron narrow/resize | UNVERIFIED: same native infrastructure gap. |
| A1 native Android portrait | UNVERIFIED: built client/device unavailable. Mobile-width web is not native Android evidence. |
| A2 native Android rotation | UNVERIFIED: no native device or rotation run. |
| I1 iOS | UNCHANGED by final diff; native regression control not executed. |
| R1 replay/remount | VERIFIED SUBSET: local full reload of same PTY without reseeding, wide-dark, normal sidebar restoration; 11427 → 07003. Native remount, remote reconnect and complete-run replay remain UNVERIFIED. |

Live engine capacity, 512 KiB client transcript and server replay (~5,000 history lines by default) remain separate limits. The wide fixture still truncates at 08030; the fix increases the byte budget and does not guarantee 10,000 retained rows at every width. Narrow retains marker 00001 for this fixture. No promise of preserving the entire run through replay/remount.

### FRICTION and final state

- Supplement: new own tab needed isolated pairing; token stayed private and no credential-bearing artifact was uploaded. Initial terminal wait timed out because the terminal drawer was closed; opened through its normal control.
- Supplement: preview_scroll uses DOM scrollBy, so it does not exercise the canvas wheel handler. Native wheel/trackpad remains an explicit gap. Thumb drag reaches the track center; Home, not drag-to-top, establishes earliest.
- Supplement: first exploratory recordings had the details card and notifications open; excluded from the final supplement pair and reload diffs. Retained clean captures use saved dark mode with follow-system off.
- Supplement: variable-frame-rate seeking produced misleading sample times; all reported final timing corrections use sequentially decoded presentation timestamps. The longer HEAD live Home phase was not encoded; replacement interaction video holds it visibly. No further capture iteration is planned.
- Supplement: urllib download verification received HTTP 403; curl with a browser user agent succeeded. All 23 new artifact uploads were downloaded and matched byte-for-byte to local files.
- Supplement: no Electron, Android or remote infrastructure expansion was attempted, per user hard stop. Existing native/remote matrix gaps remain.


- Initial pairing cold load reached splash; first snapshot failed `Preview automation snapshot timed out after 15000ms.` A wait for the guessed text “Pair” failed `Preview automation waitFor timed out after 60000ms.` The app recovered after navigation to the existing thread; no connection-refused failure in recovery and no extra server start.
- Main sidebar reopens on reload. A locator with `:visible` and then an ambiguous CSS selector were rejected as invalid. Recovery used preview_evaluate to click the visible existing DOM sidebar control; source and styling were not changed. An exploratory capture with the sidebar open was discarded.
- Preview still export scales wide and narrow differently. Pair dimensions match exactly; diff calculations use native exports without resampling. Videos have their own encoding sizes.
- Prior partial capture had missing final End frames. Recovery explicitly retained returned-end stills and checked every decoded final video frame.
- Lead stopped stalled knip at 08:22; no test retries or infrastructure cleanup were performed here. No native/remote claims are inferred from code or shared web behavior.
- Final checkout is clean `fix/issue-8701` at `3bbf1c3918c120dfbbe457807f3a9a4f1a760d22`. Existing lead-owned server remains running. Own preview remains on final HEAD for inspection. No PR text was modified.

[Byte-for-byte verification manifest for all 23 supplemental uploads](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9ad651629c744f20/supplement-upload-verification.json). Original 44 uploads/diffs were previously verified by the completed capture/audit run and were not replaced.

Prepared by GPT-6.1-Sol through the Codex harness and T3 Code preview tools. Recovery evidence only.
