## PR comment-link evidence — third pass

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

Before: [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea). After: [9b9b813](https://github.com/pingdotgg/t3code/commit/9b9b813985b8a18c3c5b4dc0ab6aa75627633b99), final head of [#32548](https://git.cafe/pingdotgg/t3code/pull/32548).

Rendering environment for every capture: T3 Browser panel, Chrome 157, Linux x86_64, no emulation, DPR 2, default T3 theme, interface 16px/code 13px, scale 100%. Each row states its viewport/theme. Separate fresh checkout databases were created with T3CODE_DEV_SEED=0 and seeded with the same synthetic Replay conversation and public PR links. One server ran at a time. The installed T3 database was never used.

Eight base/head recording pairs plus one head-only growth comparison are published: nine recorded row variants out of ten attempted. Seven requested variants are complete; F28 and F29b are explicitly partial. F16-page Code-first takes were rejected for focus tooltips.

All 17 original final still pairs, and the extra head pre-growth pair, are pixel-identical across captures at least 500ms apart (absolute pixel difference 0), before masking. Every decoded frame of each accepted recording was inspected. VFR frame counts and timestamps are preserved. Current frame sheets and sanitized active-element/geometry transcripts are in [frame-review.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9fddd3df247050c4/frame-review.zip) and [capture-metadata.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a2f3e863ed79e19e/capture-metadata.json).

Source links use the existing rendered anchor handler via DOM .click(), exactly as the prior method. This does not establish trusted pointer hit-testing. No CSS/content overrides. Diff0 is raw absolute RGB difference amplified ×8 at threshold zero; DiffT is white where maximum raw channel difference is >16/255. Fixed grey privacy blocks are identical across both sides and the entire corresponding recordings; originals are excluded from public uploads.

### F30 — Pull requests page panel

1440×900 CSS, light; 2880×1800 PNG. On /pull-requests, select [#29332](https://github.com/pingdotgg/t3code/pull/29332) Summary and activate the actual overview markdown link to the current root. Description closed, bot comments on, resolved comments off, starting scrollTop 1261.5 on both. Base stays at the overview without a marker; head reveals the root at y=203.43 CSS, with its replies open, blue marker, and article focus.

Before recording steps: 16:55:15.328 recording starts; 16:55:17.139 source link activation; 16:55:21.550 settled still; 16:55:23.414 settled still; 16:55:24.626 recording stops UTC.

After recording steps: 17:05:17.486 recording starts; 17:05:18.764 source link activation; 17:05:22.804 settled still; 17:05:23.798 settled still; 17:05:24.246 recording stops UTC.

What else changed: No visible changes outside the page panel. Inside it, the revealed conversation replaces the overview viewport; surrounding cards and scroll position change accordingly.

| Before — [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | After — [9b9b813](https://github.com/pingdotgg/t3code/commit/9b9b813985b8a18c3c5b4dc0ab6aa75627633b99) | Diff0 ×8 | DiffT >16 | Recordings |
|---|---|---|---|---|
| ![F30-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8d737f7261525706/F30-before.png) | ![F30-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/068d7a24cca81a42/F30-after.png) | ![F30-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/46ed3ff6f65843c8/F30-Diff0-x8.png) | ![F30-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/55fa167588c393a5/F30-DiffT16.png) | [F30-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f56cb4a4a10b42ae/F30-before.mp4)<br>[F30-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2cba8b30c105fc34/F30-after.mp4) |

### F12 — Beyond two conversation pages

1440×900 CSS, light; 2880×1800 PNG. [#33684](https://github.com/pingdotgg/t3code/pull/33684) target discussion_r4521046840; both filters on, newest-first, Description closed, 10 of 29 conversations rendered, scrollTop 0. Activate the target, shrink to 10, then activate it again. Base stays at 10 without a marker. Head pages in the conversation, renders 31 articles including replies, marks/focuses it at y=203.38; shrinking removes the marker, and repeating restores it.

Before recording steps: 17:22:34.678 recording starts; 17:22:36.706 source link activation; 17:22:40.780 shrink to 10 if available; 17:22:41.934 repeat pagination target; 17:22:43.273 settled still; 17:22:45.171 settled still; 17:22:46.495 recording stops UTC.

After recording steps: 17:31:41.977 recording starts; 17:31:43.549 source link activation; 17:31:47.681 shrink to 10 if available; 17:31:48.615 repeat pagination target; 17:31:50.631 settled still; 17:31:51.999 settled still; 17:31:52.709 recording stops UTC.

What else changed: Sidebar relative ages and synthetic message times (4:52 PM / 5:02 PM) differ. The head compacts the PR header and changes visible conversations and paging control. Identical fixed privacy band on both sides covers CSS (930,520)-(1420,552), including some unrelated target text on the head.

| Before — [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | After — [9b9b813](https://github.com/pingdotgg/t3code/commit/9b9b813985b8a18c3c5b4dc0ab6aa75627633b99) | Diff0 ×8 | DiffT >16 | Recordings |
|---|---|---|---|---|
| ![F12-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6470fcd3960fb4d2/F12-before.png) | ![F12-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d13a4dbf1038e420/F12-after.png) | ![F12-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f82deb84f69cb2e2/F12-Diff0-x8.png) | ![F12-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2fa233969c0cb112/F12-DiffT16.png) | [F12-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0c9a00b6846b3adf/F12-before.mp4)<br>[F12-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7d4c682cd9f1bef8/F12-after.mp4) |

### F13 — Oldest-first pagination

1440×900 CSS, light; 2880×1800 PNG. Same PR and target, both filters on, oldest-first, initial limit 10 and scrollTop 0; the older-conversations button is above the list. Base stays unmarked; head reveals and focuses the target at y=203.5 CSS.

Before recording steps: 16:57:15.801 recording starts; 16:57:17.137 source link activation; 16:57:20.987 settled still; 16:57:22.193 settled still; 16:57:22.945 recording stops UTC.

After recording steps: 17:08:44.915 recording starts; 17:08:46.264 source link activation; 17:08:50.436 settled still; 17:08:51.533 settled still; 17:08:52.382 recording stops UTC.

What else changed: Sidebar relative ages and synthetic message times differ. Header compaction, visible conversations, pagination control and its placement in the scrolled viewport change with the reveal.

| Before — [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | After — [9b9b813](https://github.com/pingdotgg/t3code/commit/9b9b813985b8a18c3c5b4dc0ab6aa75627633b99) | Diff0 ×8 | DiffT >16 | Recordings |
|---|---|---|---|---|
| ![F13-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/96e184701279ac70/F13-before.png) | ![F13-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/690df8c022c78fc5/F13-after.png) | ![F13-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/40d6afcb6034e2b0/F13-Diff0-x8.png) | ![F13-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c284a7a972d368b8/F13-DiffT16.png) | [F13-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b1aa9670c3132f76/F13-before.mp4)<br>[F13-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d34b72df7fea4f45/F13-after.mp4) |

### F06 — Collapsed resolved root

1440×900 CSS, light; 2880×1800 PNG. [#29332](https://github.com/pingdotgg/t3code/pull/29332) current root discussion_r4443340868; both filters on, Description closed. Both start at scrollTop 1043 with the root visibly collapsed at y=400.18 CSS, height 101. Activate the root link. Base leaves it collapsed. Head opens its body and replies, marks/focuses the root at y=203.68 CSS.

Before recording steps: 17:38:36.955 recording starts; 17:38:38.287 source link activation; 17:38:42.109 settled still; 17:38:43.148 settled still; 17:38:43.689 recording stops UTC.

After recording steps: 17:36:46.381 recording starts; 17:36:48.652 source link activation; 17:36:53.076 settled still; 17:36:54.455 settled still; 17:36:55.286 recording stops UTC.

What else changed: Sidebar relative ages and synthetic message times differ. Head also has an inactive [#33684](https://github.com/pingdotgg/t3code/pull/33684) tab; base has only [#29332](https://github.com/pingdotgg/t3code/pull/29332). Surrounding comments move because the root expands and scrolls.

| Before — [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | After — [9b9b813](https://github.com/pingdotgg/t3code/commit/9b9b813985b8a18c3c5b4dc0ab6aa75627633b99) | Diff0 ×8 | DiffT >16 | Recordings |
|---|---|---|---|---|
| ![F06-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8c5406bc50d69c6d/F06-before.png) | ![F06-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c5da8d82eaea40db/F06-after.png) | ![F06-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7d5160ec9649e754/F06-Diff0-x8.png) | ![F06-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b546e8faa9a77dc2/F06-DiffT16.png) | [F06-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0c27062243a66a74/F06-before.mp4)<br>[F06-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b7860c88c7178e51/F06-after.mp4) |

### F11 — Manually closed Comments

1440×900 CSS, light; 2880×1800 PNG. Start with Description and Comments manually closed, default filters, scrollTop 0. Activate root link, close Comments if it opened, then activate the root again. Base stays closed. Head opens and reveals, successfully re-closes (aria-expanded=false), then opens and reveals again, focused at y=203.5 CSS.

Before recording steps: 17:23:01.816 recording starts; 17:23:03.469 source link activation; 17:23:07.464 close Comments if open; 17:23:08.372 repeat root link; 17:23:09.676 settled still; 17:23:10.977 settled still; 17:23:11.850 recording stops UTC.

After recording steps: 17:26:50.191 recording starts; 17:26:51.745 source link activation; 17:26:56.040 close Comments if open; 17:26:56.922 repeat root link; 17:26:58.434 settled still; 17:26:59.788 settled still; 17:27:00.551 recording stops UTC.

What else changed: Sidebar relative ages and synthetic message times differ. The head compacts its PR header and shows the expanded root and replies where the base has an empty closed section.

| Before — [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | After — [9b9b813](https://github.com/pingdotgg/t3code/commit/9b9b813985b8a18c3c5b4dc0ab6aa75627633b99) | Diff0 ×8 | DiffT >16 | Recordings |
|---|---|---|---|---|
| ![F11-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/237b5bd3c685360f/F11-before.png) | ![F11-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7b702200b2b9bc7c/F11-after.png) | ![F11-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/75dc3b837d7cfb52/F11-Diff0-x8.png) | ![F11-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7caeac868dd1f9ae/F11-DiffT16.png) | [F11-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/948d76ac6cffd7a1/F11-before.mp4)<br>[F11-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9e927a817866a2fd/F11-after.mp4) |

### F15 — A, B, scroll away, B again

1440×900 CSS, light; 2880×1800 PNG. Default filters, Description closed, scrollTop 0. A is issuecomment-6709928633; B is discussion_r4443350073. On head A is the sole marker, then B is the sole marker. After programmatic scroll moves scrollTop 1400 to 1483, repeating B returns to 1400 and focuses B at y=203.5. Base never marks either target.

Before recording steps: 16:58:29.861 recording starts; 16:58:31.300 source link activation; 16:58:35.192 canonical B link activation; 16:58:36.351 programmatic scroll away; 16:58:37.282 canonical B link activation; 16:58:38.991 settled still; 16:58:40.286 settled still; 16:58:41.063 recording stops UTC.

After recording steps: 17:09:59.544 recording starts; 17:10:02.208 source link activation; 17:10:06.919 canonical B link activation; 17:10:08.580 programmatic scroll away; 17:10:09.545 canonical B link activation; 17:10:11.620 settled still; 17:10:13.090 settled still; 17:10:14.057 recording stops UTC.

What else changed: Sidebar relative ages and synthetic message times differ. Revealed resolved content, hidden count and surrounding viewport change. A fixed grey rectangle CSS (915,550)-(1440,900) masks neighbouring operational attribution and some lower content identically on both sides.

| Before — [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | After — [9b9b813](https://github.com/pingdotgg/t3code/commit/9b9b813985b8a18c3c5b4dc0ab6aa75627633b99) | Diff0 ×8 | DiffT >16 | Recordings |
|---|---|---|---|---|
| ![F15-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/81ce18c0cc1a0e40/F15-before.png) | ![F15-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d05c48f60cc7d7e8/F15-after.png) | ![F15-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/81a8e312e6c3293f/F15-Diff0-x8.png) | ![F15-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1c292c3a322fb482/F15-DiffT16.png) | [F15-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8c6aff49b5f62455/F15-before.mp4)<br>[F15-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/57b978394d59e995/F15-after.mp4) |

### F28 — Composer focus — warm-panel variant only

1440×900 CSS, light; 2880×1800 PNG. The composer already contains synthetic draft text and has focus; neutral [#29332](https://github.com/pingdotgg/t3code/pull/29332) Summary is already open at scrollTop 0, Description open. Activate the root link. On head the target mounts, scrolls to y=203.37 and is marked while the composer remains the active DIV role=textbox contenteditable=true, including at the MutationObserver target-mount callback. The comment itself is not focused. Base also retains composer focus but never reveals. This is not delayed cold-network proof.

Before recording steps: 17:23:23.320 recording starts; 17:23:25.177 source link activation; 17:23:29.714 settled still; 17:23:31.101 settled still; 17:23:32.317 recording stops UTC.

After recording steps: 17:11:59.323 recording starts; 17:12:00.672 source link activation; 17:12:04.758 settled still; 17:12:05.805 settled still; 17:12:06.339 recording stops UTC.

What else changed: Sidebar relative ages, synthetic message times and caret phase differ. The head compacts the header, opens resolved content and scrolls; the synthetic draft remains unchanged.

| Before — [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | After — [9b9b813](https://github.com/pingdotgg/t3code/commit/9b9b813985b8a18c3c5b4dc0ab6aa75627633b99) | Diff0 ×8 | DiffT >16 | Recordings |
|---|---|---|---|---|
| ![F28-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f6475259028e8c37/F28-before.png) | ![F28-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1e16cd1a83532c8f/F28-after.png) | ![F28-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3affebe9419f9a4e/F28-Diff0-x8.png) | ![F28-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3b2423020bde25ef/F28-DiffT16.png) | [F28-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ad3b33a2323eb550/F28-before.mp4)<br>[F28-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ab5baa774d6069e1/F28-after.mp4) |

### F08 — Files alias and canonical reply, narrow dark

390×900 CSS, dark; 780×1800 PNG. 390x900 CSS, dark. Neutral [#29332](https://github.com/pingdotgg/t3code/pull/29332) Summary, Description open, scrollTop 0, default filters. Activate /files?w=1#r4443350073, then canonical #discussion_r4443350073. Head reveals the same reply at x=106.80, y=219.68, width=254.20 CSS, marked and focused after each activation. Base remains on the description with no marker.

Before recording steps: 17:23:59.533 recording starts; 17:24:00.667 source link activation; 17:24:04.603 canonical B link activation; 17:24:06.028 settled still; 17:24:06.696 settled still; 17:24:06.898 recording stops UTC.

After recording steps: 17:15:39.042 recording starts; 17:15:39.983 source link activation; 17:15:44.022 canonical B link activation; 17:15:45.384 settled still; 17:15:45.988 settled still; 17:15:46.093 recording stops UTC.

What else changed: No visible changes outside the PR panel. Its compact header, comment filter count, expanded resolved conversation and visible body change with the reveal. The narrow web layout retains its normal overlapping composer at the bottom.

| Before — [ac5e48c612](https://github.com/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | After — [9b9b813](https://github.com/pingdotgg/t3code/commit/9b9b813985b8a18c3c5b4dc0ab6aa75627633b99) | Diff0 ×8 | DiffT >16 | Recordings |
|---|---|---|---|---|
| ![F08-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/537103d60f6d1cb4/F08-before.png) | ![F08-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f0b4e8eca429e6f2/F08-after.png) | ![F08-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/98157529bc675e9f/F08-Diff0-x8.png) | ![F08-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a45cfeb2fdd9eaf3/F08-DiffT16.png) | [F08-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6f3c6ab3d0adb029/F08-before.mp4)<br>[F08-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/36fb473d0b9edf2a/F08-after.mp4) |

### F29b — Layout growth after scrolling — pointer variant only

1440×900 CSS, light; 2880×1800 PNG. Head only. Reveal B, programmatically scroll up 300, save a settled pre-growth pair, then pointer-click Show full comment on its root above B. Root height grows 1073 to 1085.35 CSS. scrollTop stays 3636; B moves from y=503.37 to 515.72 rather than returning to its original reveal y=203.37. This demonstrates position staying after actual expansion; trusted-wheel release remains unverified.

Recording steps: 17:14:28.551 recording starts; 17:14:30.023 source link activation; 17:14:33.923 programmatic scroll away; 17:14:34.841 settled still; 17:14:36.111 settled still; 17:14:37.004 pointer expansion of root comment; 17:14:39.589 settled still; 17:14:40.802 settled still; 17:14:41.512 recording stops UTC.

What else changed: Only the expanded root's lower content, Show less control, and the 12.35 CSS downward movement of B and following content differ. Both columns use the final head; this is not a base/head comparison.

| Before expansion — [9b9b813](https://github.com/pingdotgg/t3code/commit/9b9b813985b8a18c3c5b4dc0ab6aa75627633b99) | After expansion — [9b9b813](https://github.com/pingdotgg/t3code/commit/9b9b813985b8a18c3c5b4dc0ab6aa75627633b99) | Diff0 ×8 | DiffT >16 | Recording |
|---|---|---|---|---|
| ![F29b-pre-growth.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2c0be5e7c4cf0a58/F29b-pre-growth.png) | ![F29b-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/38587a6d0e050cac/F29b-after.png) | ![F29b-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0e1b2130c4ed7d90/F29b-Diff0-x8.png) | ![F29b-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3923ecb7d331f3c7/F29b-DiffT16.png) | [F29b-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c15ec86de25dd18b/F29b-after.mp4) |

### Remaining proof gaps

- F16-page with Code selected first: attempted; recordings contained a repository focus tooltip and were rejected. F30 Summary-page proof is included.

- F28 delayed cold-panel response: not established. In exploratory cold opens, panel focus moved away from the composer on both commits. The accepted recording proves only target mounting in an already-open panel; do not count this as the requested cold-response pass.

- F29b trusted-wheel release: not established. preview_act scroll calls scrollBy and emits no wheel event. The recording includes genuine pointer-triggered layout growth after programmatic scrolling, with position staying; do not count it as trusted-wheel proof.

- F14 and F21–F27: intentionally outside scope; no controlled server harness was built.

No code was changed, no tests or CI were run, and no checks/reviews readiness assessment was made. This pass supplies browser evidence only.

### Reproduction scripts

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

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

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

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

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

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

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

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

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

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

### Verbatim ghdrop output

<details><summary>All reviewed artifacts, settled a/b pairs, recordings and scripts</summary>

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

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

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

[F30-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f56cb4a4a10b42ae/F30-before.mp4)

![F30-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/068d7a24cca81a42/F30-after.png)

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

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

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

![F12-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6470fcd3960fb4d2/F12-before.png)

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

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

[F12-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0c9a00b6846b3adf/F12-before.mp4)

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

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

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

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

![F13-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/96e184701279ac70/F13-before.png)

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

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

[F13-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b1aa9670c3132f76/F13-before.mp4)

![F13-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/690df8c022c78fc5/F13-after.png)

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

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

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

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

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

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

[F06-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0c27062243a66a74/F06-before.mp4)

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

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

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

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

![F11-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/237b5bd3c685360f/F11-before.png)

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

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

[F11-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/948d76ac6cffd7a1/F11-before.mp4)

![F11-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7b702200b2b9bc7c/F11-after.png)

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

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

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

![F15-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/81ce18c0cc1a0e40/F15-before.png)

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

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

[F15-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8c6aff49b5f62455/F15-before.mp4)

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

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

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

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

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

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

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

[F28-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ad3b33a2323eb550/F28-before.mp4)

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

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

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

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

![F08-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/537103d60f6d1cb4/F08-before.png)

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

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

[F08-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6f3c6ab3d0adb029/F08-before.mp4)

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

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

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

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

![F29b-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/38587a6d0e050cac/F29b-after.png)

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

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

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

![F30-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/46ed3ff6f65843c8/F30-Diff0-x8.png)

![F30-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/55fa167588c393a5/F30-DiffT16.png)

![F12-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f82deb84f69cb2e2/F12-Diff0-x8.png)

![F12-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2fa233969c0cb112/F12-DiffT16.png)

![F13-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/40d6afcb6034e2b0/F13-Diff0-x8.png)

![F13-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c284a7a972d368b8/F13-DiffT16.png)

![F06-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7d5160ec9649e754/F06-Diff0-x8.png)

![F06-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b546e8faa9a77dc2/F06-DiffT16.png)

![F11-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/75dc3b837d7cfb52/F11-Diff0-x8.png)

![F11-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7caeac868dd1f9ae/F11-DiffT16.png)

![F15-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/81a8e312e6c3293f/F15-Diff0-x8.png)

![F15-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1c292c3a322fb482/F15-DiffT16.png)

![F28-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3affebe9419f9a4e/F28-Diff0-x8.png)

![F28-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3b2423020bde25ef/F28-DiffT16.png)

![F08-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/98157529bc675e9f/F08-Diff0-x8.png)

![F08-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a45cfeb2fdd9eaf3/F08-DiffT16.png)

![F29b-Diff0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0e1b2130c4ed7d90/F29b-Diff0-x8.png)

![F29b-DiffT16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3923ecb7d331f3c7/F29b-DiffT16.png)

![F29b-pre-growth.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2c0be5e7c4cf0a58/F29b-pre-growth.png)

![F29b-pre-growth-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/05dfd2559c05363f/F29b-pre-growth-a.png)

![F29b-pre-growth-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6b5b2019c6545c04/F29b-pre-growth-b.png)

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

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

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

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

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

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

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

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

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

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

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

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

</details>

FRICTION: tool | preview_act scroll uses scrollBy, not wheel input | a trusted wheel action would establish F29b exactly.

FRICTION: runbook | stale hidden panel text could satisfy readiness waits; focused repository links produced tooltips | verify the selected PR and clear focus after navigation before recording.

FRICTION: brief | delayed cold-panel focus was not proved within this capture method; exploratory focus moved on both builds | a separately scoped deterministic delayed-response test would isolate the claim.
