## Evidence

Second capture pass for [#32548](https://git.cafe/pingdotgg/t3code/pull/32548): base [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) and proposed head [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179). **6 rows captured / 6 rows attempted**: five revision pairs plus the permitted head-only wheel comparison.

T3 Browser panel; Chrome 157.0.0.0 on Linux x86_64 VM; no device emulation; DPR 2; 1440 × 900 CSS viewport (2880 × 1800 captured pixels); browser/font scaling 100%, interface 16 px, monospace 13 px; default T3 Code theme.

Each side used a fresh database created by its own revision with `T3CODE_DEV_SEED=0`, seeded with the same synthetic Replay conversation and public PR links. Retakes reused only that revision’s isolated database. One dev server ran at a time. No live T3 database was read or used as a seed.

Link activation in accepted recordings is scripted `anchor.click()` through the app’s existing conversation-link handler; it is not a trusted pointer hit-test. The pointer is parked on blank conversation space to avoid a link-preview popover. F29 uses the Browser panel’s wheel action. Themes were selected in normal Appearance settings and verified in the document. Public source content is [#29332](https://github.com/pingdotgg/t3code/pull/29332).

All final original still pairs are pixel-identical (absolute differing pixels = 0), captured at least 500 ms apart before privacy edits. Whole-surface PNGs and recordings keep the dimensions above. **Diff0**: absolute RGB difference, threshold 0, amplified ×8. **DiffT**: white if any raw RGB channel differs by more than 16/255; black otherwise. Diffs use the published stills after identical disclosed masks. Videos are lossily encoded H.264 with original frame counts and presentation timestamps preserved. Every decoded accepted frame was inspected; spinner/hover-preview takes were discarded. No skeletons, spinners, transient overlays, wrong-theme frames or ghosting are present in the accepted set. Native panel/header movement and comment-clamping fades remain visible.

Timelines below use UTC tool-invocation timestamps on 2026-11-10; browser-tool latency means these are not a performance benchmark. The frame-review archive labels every decoded frame with its actual video PTS. The two still times are invocation times; the helper waits 500 ms after the first screenshot returns.

**F07 — Resolved outdated reply; 1440 × 900 CSS; light.**

Environment: T3 Browser panel; Chrome 157.0.0.0 on Linux x86_64 VM; no device emulation; DPR 2; 1440 × 900 CSS viewport (2880 × 1800 captured pixels); browser/font scaling 100%, interface 16 px, monospace 13 px; default T3 Code theme. Scheme: light.

Steps: PR panel closed; default comment filters; activate the resolved outdated reply link from the expanded synthetic prompt.

Before timeline: 16:09:19.963 record; 16:09:21.150 activate source link; 16:09:25.118 still; 16:09:26.296 still; 16:09:26.974 stop.

After timeline: 16:11:30.512 record; 16:11:31.635 activate source link; 16:11:35.803 still; 16:11:36.890 still; 16:11:37.397 stop.

Before opens Summary at Description, scrollTop 0, without a linked comment. After opens the resolved thread, exposes its reply despite the default filters, marks it blue and focuses it (activeElement equals the marked card). Summary scrollTop 3936; target top 203.367 CSS px.

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179) | [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) → [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179) | [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) → [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179) |
| ![F07-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1c7c4e19020ba43c/F07-before.png) | ![F07-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/11b8aa9cb0bbb40b/F07-after.png) | ![F07-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b1b455d91161d114/F07-Diff0-x8.png) | ![F07-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/857a6b7f2a8ca137/F07-DiffT16.png) |

Before recording: [F07-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/87ab25e6e000ccbc/F07-before.mp4)

After recording: [F07-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cb85d1702cd24139/F07-after.mp4)

Stable-pair originals after privacy redaction (a and b, pixel-identical):

![F07-before-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7e8610d90d8b889c/F07-before-a.png)

![F07-before-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/87ac99ec71883f35/F07-before-b.png)

![F07-after-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8e73278c1d0d3377/F07-after-a.png)

![F07-after-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/db69c233dc4ef1e8/F07-after-b.png)

What else changed:

- The right panel moves from the description/reviewers/labels to the expanded discussion replies. The target author, body, reaction button, blue border/ring and Show full comment are visible; the following coderabbitai reply enters the viewport. The filter counter is 7 hidden (the neutral default is 10).
- Scrolling compacts the PR header: the title truncates onto the identity line, author/branch/file counts compress, checkout text and reviewer/label rows leave the viewport, and Summary/checks move up. The Comments heading becomes sticky.
- Incidental time labels: sidebar 18m/18m → 11m/12m; PR update age 34m → 36m. No other difference appears outside the panel and those sidebar ages.

**F02 — Hidden bot comment; 1440 × 900 CSS; light.**

Environment: T3 Browser panel; Chrome 157.0.0.0 on Linux x86_64 VM; no device emulation; DPR 2; 1440 × 900 CSS viewport (2880 × 1800 captured pixels); browser/font scaling 100%, interface 16 px, monospace 13 px; default T3 Code theme. Scheme: light.

Steps: PR panel closed; default comment filters; activate Hidden bot comment.

Before timeline: 16:09:43.950 record; 16:09:45.111 activate source link; 16:09:49.177 still; 16:09:50.277 still; 16:09:50.748 stop.

After timeline: 16:11:39.063 record; 16:11:40.782 activate source link; 16:11:44.963 still; 16:11:45.970 still; 16:11:46.533 stop.

Before remains at Description, scrollTop 0. After shows and focuses the Macroscope app issue comment through the bot filter, with a blue border/ring; 9 hidden. Summary scrollTop 3228; full target top 543.367, bottom 825.586 CSS px.

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179) | [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) → [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179) | [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) → [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179) |
| ![F02-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/282964244521c5a6/F02-before.png) | ![F02-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e96fd79bee0e3586/F02-after.png) | ![F02-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/edb9f959c5bf27b1/F02-Diff0-x8.png) | ![F02-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/02f77c3f331b6b22/F02-DiffT16.png) |

Before recording: [F02-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d273f25fa6e5f879/F02-before.mp4)

After recording: [F02-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b674c9e1bfe6cdc4/F02-after.mp4)

Stable-pair originals after privacy redaction (a and b, pixel-identical):

![F02-before-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5afaa308a7c1b29b/F02-before-a.png)

![F02-before-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b8a1c66b160580a5/F02-before-b.png)

![F02-after-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9f4333b1b51e44d2/F02-after-a.png)

![F02-after-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4b4681e13350cda1/F02-after-b.png)

What else changed:

- The description is replaced by the comments region and the targeted bot card. Its author, Approvability text, Add to chat and reaction controls are visible; part of the next bot review and its Approved badge enter at the bottom. The filter counter reads 9 hidden instead of the neutral default 10.
- The PR header compacts and the Comments/filter row becomes sticky, as in F07.
- The same fixed gray privacy rectangle covers CSS x915–1440, y195–539 on both sides; it hides a preceding attribution and some unrelated description/toolbar content, so no claim is made about that obscured region. The target card remains below it.
- Incidental time labels: sidebar 18m/18m → 11m/12m; PR update age 34m → 36m. No other visible difference outside the panel and sidebar ages.

**F17 — Plain PR and non-comment files fragment; 1440 × 900 CSS; light.**

Environment: T3 Browser panel; Chrome 157.0.0.0 on Linux x86_64 VM; no device emulation; DPR 2; 1440 × 900 CSS viewport (2880 × 1800 captured pixels); browser/font scaling 100%, interface 16 px, monospace 13 px; default T3 Code theme. Scheme: light.

Steps: Neutral Summary panel open, no selected comment; wheel down 220 from the top to compact the header; verify scrollTop 142 on both sides. Activate Plain PR link, then Non-comment files fragment.

Before timeline: 16:09:51.928 record; 16:09:53.038 activate source link; 16:09:56.789 activate non-comment files link; 16:09:57.855 still; 16:09:58.838 still; 16:09:59.309 stop.

After timeline: 16:12:07.499 record; 16:12:08.722 activate source link; 16:12:12.494 activate non-comment files link; 16:12:13.668 still; 16:12:14.696 still; 16:12:15.329 stop.

Both links preserve Summary, scrollTop 142, and the unmarked state on both revisions. No refresh spinner appears in either accepted recording. The visible content and geometry remain equal; the full screenshot is not byte-identical because time labels differ.

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179) | [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) → [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179) | [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) → [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179) |
| ![F17-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9a7f42acb148d022/F17-before.png) | ![F17-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/13f270afcaeeb5f2/F17-after.png) | ![F17-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6c0b577ebaaaf152/F17-Diff0-x8.png) | ![F17-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b8ff8fcfc040be44/F17-DiffT16.png) |

Before recording: [F17-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0cf21c7c0b4e0aa4/F17-before.mp4)

After recording: [F17-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b51cbb71ff763b50/F17-after.mp4)

Stable-pair originals after privacy redaction (a and b, pixel-identical):

![F17-before-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f0d9f5fc56a37957/F17-before-a.png)

![F17-before-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/047f8a7c6078bd20/F17-before-b.png)

![F17-after-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1e48938efcf37fbb/F17-after-a.png)

![F17-after-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c0dada70a1996e32/F17-after-b.png)

What else changed:

- Only relative-time text changes: sidebar 18m/18m → 12m/13m and PR update age 34m → 37m. Diff0 also catches the small adjacent text raster/spacing change in the compressed metadata line.
- No other visible difference: the same description text, tabs, title truncation, branch metadata, controls, panel width, and scroll position are retained. No privacy mask in this row.

**F16 — Ordinary link from Code tab; 1440 × 900 CSS; light.**

Environment: T3 Browser panel; Chrome 157.0.0.0 on Linux x86_64 VM; no device emulation; DPR 2; 1440 × 900 CSS viewport (2880 × 1800 captured pixels); browser/font scaling 100%, interface 16 px, monospace 13 px; default T3 Code theme. Scheme: light.

Steps: Neutral PR panel open on Code, all three file rows collapsed (0/3 viewed); activate Ordinary issue comment from the conversation.

Before timeline: 16:10:01.414 record; 16:10:02.644 activate source link; 16:10:06.406 still; 16:10:07.400 still; 16:10:07.906 stop.

After timeline: 16:12:17.392 record; 16:12:18.675 activate source link; 16:12:22.622 still; 16:12:23.571 still; 16:12:24.014 stop.

Before stays on Code with the collapsed file list. After selects Summary, scrolls to the ordinary issue comment, marks it blue and focuses it. Summary scrollTop 2854; target top 203.367, bottom 548.367 CSS px; default filter counter remains 10 hidden.

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179) | [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) → [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179) | [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) → [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179) |
| ![F16-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5e4b307eb67cd43/F16-before.png) | ![F16-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3028b5be9f3231b0/F16-after.png) | ![F16-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9ebc0e8faf88db95/F16-Diff0-x8.png) | ![F16-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d58d1af8f8318d1b/F16-DiffT16.png) |

Before recording: [F16-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cf5fb43c925e804e/F16-before.mp4)

After recording: [F16-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/65067778bb94669d/F16-after.mp4)

Stable-pair originals after privacy redaction (a and b, pixel-identical):

![F16-before-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9e74caabe232b55c/F16-before-a.png)

![F16-before-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5fd124566398af58/F16-before-b.png)

![F16-after-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/180a32df099ae5c9/F16-after-a.png)

![F16-after-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d8317012c1507b22/F16-after-b.png)

What else changed:

- Code selection and the file toolbar/list are replaced by selected Summary, the sticky Comments/filter row and the target card. The target author, body, reaction, Add to chat and Show full comment controls become visible.
- The header compacts as the comment is scrolled into view; checkout text leaves, title truncates, and metadata/checks move up.
- Identical gray privacy masks cover CSS x915–1440, y550–900 on both sides, hiding the neighboring attribution below the target and some blank Code space.
- Incidental time labels: sidebar 19m/19m → 12m/13m; PR update age 34m → 37m. No other visible difference outside the panel and sidebar ages.

**F01 — Ordinary comment in DARK mode; 1440 × 900 CSS; dark.**

Environment: T3 Browser panel; Chrome 157.0.0.0 on Linux x86_64 VM; no device emulation; DPR 2; 1440 × 900 CSS viewport (2880 × 1800 captured pixels); browser/font scaling 100%, interface 16 px, monospace 13 px; default T3 Code theme. Scheme: dark.

Steps: Set Dark through Settings > Appearance and verify document class dark. Warm Summary until its host refresh ends, close the PR panel, then activate Ordinary issue comment.

Before timeline: 16:19:53.564 record; 16:19:56.206 activate source link; 16:20:00.945 still; 16:20:02.444 still; 16:20:03.104 stop.

After timeline: 16:22:36.105 record; 16:22:37.353 activate source link; 16:22:41.571 still; 16:22:42.592 still; 16:22:43.089 stop.

Before opens Description at scrollTop 0 with no linked card. After reveals and focuses the ordinary comment at scrollTop 2854 with a blue border/ring. Target top 203.367, bottom 548.367 CSS px; 10 hidden. Both accepted recordings have the verified dark theme and no refresh spinner.

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179) | [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) → [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179) | [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) → [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179) |
| ![F01-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ec0a14d866b9ec8f/F01-before.png) | ![F01-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9e1bdfa2b2928835/F01-after.png) | ![F01-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/550d7ab371a27982/F01-Diff0-x8.png) | ![F01-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9bc8e66fcaef3f34/F01-DiffT16.png) |

Before recording: [F01-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f7071d7c83900d1d/F01-before.mp4)

After recording: [F01-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d7741a4713476234/F01-after.mp4)

Stable-pair originals after privacy redaction (a and b, pixel-identical):

![F01-before-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8aa3ffbfa9ce016c/F01-before-a.png)

![F01-before-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b5485f94e8151685/F01-before-b.png)

![F01-after-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/22c44ff1b49f3b92/F01-after-a.png)

![F01-after-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b3d8534ef1b6ddd9/F01-after-b.png)

What else changed:

- The dark description/reviewers/labels view becomes the dark comment view; the target author, body, Add to chat, reaction and Show full comment controls appear with the blue selection border/ring.
- The header compacts and Comments/filter controls become sticky, as in F07.
- Identical gray masks cover CSS x915–1440, y550–900 on both sides; they hide the neighboring attribution and lower description content while leaving the target card visible.
- Incidental time labels: sidebar 29m/29m → 22m/23m; PR update age 44m → 47m. No other visible difference outside the panel and sidebar ages.

**F29 — Wheel releases the reveal hold (head only); 1440 × 900 CSS; light.**

Environment: T3 Browser panel; Chrome 157.0.0.0 on Linux x86_64 VM; no device emulation; DPR 2; 1440 × 900 CSS viewport (2880 × 1800 captured pixels); browser/font scaling 100%, interface 16 px, monospace 13 px; default T3 Code theme. Scheme: light.

Steps: On the proposed head, open the resolved reply from a closed panel; record the revealed state and take a stable pre-wheel screenshot pair. Wheel the Summary scroller up by 300; observe it after 800 ms and again more than 2 seconds later.

After timeline: 16:13:02.181 record; 16:13:03.267 activate source link; 16:13:07.307 still; 16:13:08.241 still; 16:13:08.691 wheel −300; 16:13:11.742 still; 16:13:12.832 still; 16:13:13.264 stop.

The wheel moves scrollTop 3936 → 3636. The target top moves 203.367 → 503.367 CSS px and stays there through the final still pair: no snap-back. The target remains selected/focused. This is an interaction comparison within the head, not evidence about the base revision.

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179) | [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179) | [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179) → [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179) | [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179) → [df232a10d9](https://github.com/pingdotgg/t3code/commit/df232a10d932491c0b70604a08e315b20f7d4179) |
| ![F29-pre-wheel.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dac740a715e5db3d/F29-pre-wheel.png) | ![F29-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8be27061ed4fb697/F29-after.png) | ![F29-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b19cca673def723f/F29-Diff0-x8.png) | ![F29-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bfce15ac4a75c962/F29-DiffT16.png) |

The Before column is **pre-wheel on the head**; After is **post-wheel on the same head**. One continuous recording contains reveal and wheel.

[F29-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b85c1bed6304c3f6/F29-after.mp4)

Stable-pair originals after privacy redaction (a and b, pixel-identical):

![F29-after-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a65ffe4438e839f5/F29-after-a.png)

![F29-after-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8ebd04795b97cbe3/F29-after-b.png)

![F29-pre-wheel-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/807622e50e0d11d0/F29-pre-wheel-a.png)

![F29-pre-wheel-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5576be3265a3415c/F29-pre-wheel-b.png)

What else changed:

- Only the Summary body scrolls upward by 300 CSS px, revealing the parent review text, its Prompt for AI Agents disclosure and Show full comment above the target. The target card moves down; most of the following reply exits below the viewport, leaving its author header at the bottom.
- The compact header, Summary tab, Comments/filter row, blue marker, sidebar, conversation and composer remain unchanged. The PR relative update age crosses a minute boundary, 37m → 38m. No privacy mask.

**Verification limits.** No requested row is missing. F29 has no base-revision parity recording (explicitly optional). This pass does not verify key/pointer/touch hold release, older-page loading, files-comment aliases, narrow viewports, mobile/desktop shells, other providers, keyboard link activation, or cold-cache loading. The resolved-thread status/header is above the final F07 viewport; the linked reply is visible in the expanded thread. Gray privacy masks obscure unrelated portions of F02/F16/F01, so no visual claim is made about those areas. Checks and reviews were not assessed in this capture-only task.

**Scripts and diagnostics**

[seed.sh](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dfef928abad000c2/seed.sh)

[preview-driver.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/de27ca0ce4478cb1/preview-driver.mjs)

[preview-rows.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4ac9723c7b05e32f/preview-rows.mjs)

[process.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/01e7404d38048c7d/process.py)

[upload.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3495b49f13be1d3b/upload.py)

[report.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1225c70d39d31569/report.py)

[RUNBOOK.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3f61850d06e4a630/RUNBOOK.md)

[capture-metadata.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2baaaec979966abf/capture-metadata.json)

[artifact-manifest.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3158a6ada6c0de7e/artifact-manifest.json)

[frame-review.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/11a4fbd195806c89/frame-review.zip)

Frame counts: F07before=6, F02before=7, F17before=5, F16before=5, F01before=8, F07after=11, F02after=9, F17after=6, F16after=11, F01after=9, F29after=17.

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