# R1 — evidence for [#32334](https://git.cafe/pingdotgg/t3code/pull/32334)

Before [e5b0718](https://github.com/pingdotgg/t3code/commit/e5b0718a8a297823920d1bf3a7d5cbacd57263ea); After [f34b5b6](https://github.com/pingdotgg/t3code/commit/f34b5b6cf9d143c859cce17f6af5939697753d07). Only these pinned revisions are claimed; current forge head/checks/reviews were not assessed.

A/B/R1/R2: T3 preview, Chromium 157.0.0.0 on Linux, no device emulation, mouse, DPR 2, 100% zoom/font scaling, Inter Variable, root 16px/chat 14px; 1440×1000 or 390×844 CSS px as labelled; light/dark. Reduced-motion emulation unavailable in preview (actual false). R3: agent-browser 0.42.0, Playwright Chromium headless 148.0.7778.96 Linux, no device emulation, mouse, DPR 2, 100% scaling, 390×844 light, reduced motion true. Both sides freeze Date at 2026-11-10 16:55 UTC after authentication; timers continue.

Fix-up captures: T3 preview, Chromium 157.0.0.0 on Linux, no device emulation, mouse, DPR 2, 100% zoom/font scaling, Inter Variable, root 16px/chat 14px, 1440×1000 CSS px; R1 desktop main pair light, R2 button-menu pair dark. Reduced motion false (preview emulation unavailable). Date frozen at 2026-11-10 16:55 UTC after authentication; timers continue. The 390×844 dark main pair is unchanged; its frames were re-audited.

All stills passed fonts/visible-image readiness, resource quiet, and two pixel-identical full-surface PNGs 500 ms apart. Each full capture and both diffs was inspected in a labelled sheet. Videos were inspected using full-viewport timestamped frame sheets. Diff0: exact RGB nonzero per-channel deltas amplified ×32, minimum 64 brightness. DiffT: maximum channel difference **strictly >16/255**, highlighted pink. Full surfaces are retained; icon crops are extra.

What else changed:

- File-chip SVGs move **0.25 CSS px upward**, not downward as anticipated in the brief. F3 icon top: 336.3671875 → 336.1171875; chip/text/paragraph bounds unchanged. This appearance change is outside the PR title’s selection wording and should be routed to Julius.
- Selected favicon images now receive the blue selection tint. Before, the icon itself remains untinted. Native triple-click selection includes the complete paragraph/cell on the changed revision.
- Zero-threshold differences also include faint backdrop-blur pixels behind the sticky composer/attachment modal, caused by changed icon pixels underneath. Example button-menu pair: 677 changed pixels, maximum channel delta 2/255; none above threshold 16.
- No other visible static differences found in the accepted pairs: text positioning, wrapping, punctuation, RTL/LTR ordering, document colors, ellipsis, focus/menu anchors and tooltip wrapping remain aligned. This conclusion uses Diff0, not just the thresholded images.
- Both R3 recordings move content upward by 43 CSS px when the Working header disappears at turn completion. This shared transition is not introduced by the PR. Replacing pending icons/metadata causes no additional vertical movement. Ordinary loading frames and differing action latency in recordings are timing, not static comparison evidence.

Real app on fresh isolated databases created by each revision with T3CODE_DEV_SEED=0. Same synthetic payloads, file tree, themes and scroll poses; no live database or component harness. R3 uses a labelled real-app network fixture intercepting actual favicon and metadata responses. 

Rebuild: [reproduction.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/38595ef844a06fa9/reproduction.md); complete scripts bundle [reproduction-scripts.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7e1830ece3d4dca1/reproduction-scripts.zip). Seed [seed-fixtures.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/432c1b5e0c72fd49/seed-fixtures.py), ACP agent [fixture-agent.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e0a01c1b75aa19de/fixture-agent.mjs), RPC seed [browser-seed.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2e0f8efe633afeb5/browser-seed.js), preview driver [preview-capture-driver.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8c2068f3d499013e/preview-capture-driver.mjs) + [final-preview-drivers.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/04cdd9cb52cfb6a9/final-preview-drivers.json), browser helpers [browser-utils.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/28cc11fffec47818/browser-utils.js), network driver [r3-driver.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e83ff9713ae57c02/r3-driver.mjs) + [r3-init.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/792d90ef02b4112e/r3-init.js). Exact observations [accepted-observations.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/253db9a5c02c973e/accepted-observations.json); pixel counts [accepted-pixel-counts.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f6ba0dfd6808ed74/accepted-pixel-counts.json).

Fix-up reproduction: [fixup-reproduction.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/28ff851f04265661/fixup-reproduction.md) + [fixup-reproduction-scripts.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/75eae457fc17f585/fixup-reproduction-scripts.zip) + [fixup-preview-driver.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/46e7fdfec6b98b54/fixup-preview-driver.mjs). Fix-up records: [corrected-timestamps.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/90915761b179ba25/corrected-timestamps.md) + [corrected-timestamps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ca96ac07417990ab/corrected-timestamps.json) + [capture-validation.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/084e5feb013fe3cc/capture-validation.json) + [r1-retake-actions.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5a6b6a9220782b3f/r1-retake-actions.json) + [fixup-video-metadata.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/afc7911fccf92838/fixup-video-metadata.json). These supersede only the affected R1 main-pair timestamps and R2 button-menu stills/counts in the earlier records.

Desktop main pair replaced after the first L1 trial was not separately visible in the old recording. The replacement pair logs native actions and holds every selection for screenshot verification. All 18 trials in each desktop recording and each original 390 dark recording were checked using extracted frames (72 selections total). The two old desktop after-side L1 dispatch times, 1.399s and 2.647s, are withdrawn; use 11.800500s and 16.361833s in the replacement recording. Other R1 recording pairs are unchanged.

Native mouse triple clicks on Before/after, clear selection each trial; DOM Range only locates coordinates. Narrow viewport is pointer-driven web, not native touch. Both sides now select entire wrapped paragraph/cell in Chromium; plain C1 control does so on both revisions. Double-click ordinary inline/fenced code remains unchanged.

Timestamp proof bundles (full onset frames, immediately preceding frames, held desktop screenshots, and review sheets):

[R1-D-L-retake-before-timestamp-audit.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a98f24b68ae3eeb6/R1-D-L-retake-before-timestamp-audit.zip)
[R1-D-L-retake-after-timestamp-audit.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6f47b79e997d865b/R1-D-L-retake-after-timestamp-audit.zip)
[R1-N-K-before-timestamp-audit.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/32dc36b5c56e46f1/R1-N-K-before-timestamp-audit.zip)
[R1-N-K-after-timestamp-audit.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/364610f88e6f9f5c/R1-N-K-after-timestamp-audit.zip)

Native actions (same order both sides); timestamps are exact encoded frame PTS in seconds from recording start, verified at selection onset and against the immediately preceding frame. Exact getSelection().toString(), including newline escapes:

| Trial | Before time / selection | After time / selection |
| --- | --- | --- |
| L1 / Before | 2.036600s: <code>"L1 Before "</code> | 11.800500s: <code>"L1 Before docs after words.\n\n"</code> |
| L1 / after | 5.703233s: <code>"docs after words.\n\n"</code> | 16.361833s: <code>"L1 Before docs after words.\n\n"</code> |
| L2 / Before | 10.238200s: <code>"L2 Before "</code> | 22.214100s: <code>"L2 Before GitHub GitLab GitCafe Codeberg Bitbucket Origin after words.\n\n"</code> |
| L2 / after | 13.861333s: <code>"Origin after words.\n\n"</code> | 27.733567s: <code>"L2 Before GitHub GitLab GitCafe Codeberg Bitbucket Origin after words.\n\n"</code> |
| L3 / Before | 17.269633s: <code>"L3 Before "</code> | 32.243433s: <code>"L3 Before private docs after words.\n\n"</code> |
| L3 / after | 20.609900s: <code>"private docs after words.\n\n"</code> | 36.873700s: <code>"L3 Before private docs after words.\n\n"</code> |
| L4 / Before | 29.208367s: <code>"L4 Before "</code> | 47.669667s: <code>"L4 Before https://example.com/a-very-long-unbroken-link-label-with-more-than-sixteen-characters after words.\n\n"</code> |
| L4 / after | 33.439600s: <code>"https://example.com/a-very-long-unbroken-link-label-with-more-than-sixteen-characters after words.\n\n"</code> | 52.439033s: <code>"L4 Before https://example.com/a-very-long-unbroken-link-label-with-more-than-sixteen-characters after words.\n\n"</code> |
| F1 / Before | 37.178700s: <code>"F1 Before \n"</code> | 57.479667s: <code>"F1 Before App.tsx · synthetic-project/src settings.json mystery.fixtureunknown folder after words.\n\n"</code> |
| F1 / after | 41.175400s: <code>" after words.\n\n"</code> | 62.306100s: <code>"F1 Before App.tsx · synthetic-project/src settings.json mystery.fixtureunknown folder after words.\n\n"</code> |
| F2 / Before | 45.047267s: <code>"F2 Before read the implementation \n"</code> | 66.868800s: <code>"F2 Before read the implementation App.tsx · synthetic-project/src after words.\n\n"</code> |
| F2 / after | 48.425267s: <code>" after words.\n\n"</code> | 71.624367s: <code>"F2 Before read the implementation App.tsx · synthetic-project/src after words.\n\n"</code> |
| F3 / Before | 63.799367s: <code>"F3 Before \n"</code> | 86.043700s: <code>"F3 Before App.tsx · synthetic-project/src · L12:C3 after words; ordinary hyphenated-word remains code.\n\n"</code> |
| F3 / after | 69.165433s: <code>" after words; ordinary hyphenated-word remains code.\n\n"</code> | 90.166000s: <code>"F3 Before App.tsx · synthetic-project/src · L12:C3 after words; ordinary hyphenated-word remains code.\n\n"</code> |
| F4 / Before | 74.542333s: <code>"F4 Before \n"</code> | 94.358967s: <code>"F4 Before settings.json after words.\n\n"</code> |
| F4 / after | 79.490967s: <code>" after words.\n\n"</code> | 98.607367s: <code>"F4 Before settings.json after words.\n\n"</code> |
| F5 / Before | 84.144667s: <code>"F5 Before \n"</code> | 102.784067s: <code>"F5 Before shared.ts · synthetic-project/src shared.ts · synthetic-project/tests, App.tsx · synthetic-project/src! after words.\n\n"</code> |
| F5 / after | 88.901500s: <code>"! after words.\n\n"</code> | 106.953333s: <code>"F5 Before shared.ts · synthetic-project/src shared.ts · synthetic-project/tests, App.tsx · synthetic-project/src! after words.\n\n"</code> |
The timestamped native-action table immediately above is the script for this pair. Highlight is held between trials.

| Before [e5b0718](https://github.com/pingdotgg/t3code/commit/e5b0718a8a297823920d1bf3a7d5cbacd57263ea) | After [f34b5b6](https://github.com/pingdotgg/t3code/commit/f34b5b6cf9d143c859cce17f6af5939697753d07) |
| --- | --- |
| [R1-D-L-retake-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3d92539497f0097c/R1-D-L-retake-before.mp4) | [R1-D-L-retake-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9ceb6f299da2479e/R1-D-L-retake-after.mp4) |

![R1-D-L-retake-before-video-review.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/31d2195a3b4ddd89/R1-D-L-retake-before-video-review.png)

![R1-D-L-retake-after-video-review.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/04d5e34c95b8fef8/R1-D-L-retake-after-video-review.png)

Native actions (same order both sides); timestamps are exact encoded frame PTS in seconds from recording start, verified at selection onset and against the immediately preceding frame. Exact getSelection().toString(), including newline escapes:

| Trial | Before time / selection | After time / selection |
| --- | --- | --- |
| L1 / Before | 0.641500s: <code>"L1 Before "</code> | 0.674600s: <code>"L1 Before docs after words.\n\n"</code> |
| L1 / after | 1.720500s: <code>"docs after words.\n\n"</code> | 1.776367s: <code>"L1 Before docs after words.\n\n"</code> |
| L2 / Before | 3.015867s: <code>"L2 Before "</code> | 3.106867s: <code>"L2 Before GitHub GitLab GitCafe Codeberg Bitbucket Origin after words.\n\n"</code> |
| L2 / after | 4.038267s: <code>"Origin after words.\n\n"</code> | 4.114000s: <code>"L2 Before GitHub GitLab GitCafe Codeberg Bitbucket Origin after words.\n\n"</code> |
| L3 / Before | 5.336700s: <code>"L3 Before "</code> | 5.415300s: <code>"L3 Before private docs after words.\n\n"</code> |
| L3 / after | 6.351033s: <code>"private docs after words.\n\n"</code> | 6.427267s: <code>"L3 Before private docs after words.\n\n"</code> |
| L4 / Before | 7.638667s: <code>"L4 Before "</code> | 7.732800s: <code>"L4 Before https://example.com/a-very-long-unbroken-link-label-with-more-than-sixteen-characters after words.\n\n"</code> |
| L4 / after | 8.658033s: <code>"https://example.com/a-very-long-unbroken-link-label-with-more-than-sixteen-characters after words.\n\n"</code> | 8.769367s: <code>"L4 Before https://example.com/a-very-long-unbroken-link-label-with-more-than-sixteen-characters after words.\n\n"</code> |
| F1 / Before | 9.934367s: <code>"F1 Before \n"</code> | 10.108867s: <code>"F1 Before App.tsx · synthetic-project/src settings.json mystery.fixtureunknown folder after words.\n\n"</code> |
| F1 / after | 10.956800s: <code>" after words.\n\n"</code> | 11.107567s: <code>"F1 Before App.tsx · synthetic-project/src settings.json mystery.fixtureunknown folder after words.\n\n"</code> |
| F2 / Before | 12.244533s: <code>"F2 Before read the implementation \n"</code> | 12.401033s: <code>"F2 Before read the implementation App.tsx · synthetic-project/src after words.\n\n"</code> |
| F2 / after | 13.276800s: <code>" after words.\n\n"</code> | 13.430767s: <code>"F2 Before read the implementation App.tsx · synthetic-project/src after words.\n\n"</code> |
| F3 / Before | 14.578667s: <code>"F3 Before \n"</code> | 14.740100s: <code>"F3 Before App.tsx · synthetic-project/src · L12:C3 after words; ordinary hyphenated-word remains code.\n\n"</code> |
| F3 / after | 15.677367s: <code>" after words; ordinary hyphenated-word remains code.\n\n"</code> | 15.806367s: <code>"F3 Before App.tsx · synthetic-project/src · L12:C3 after words; ordinary hyphenated-word remains code.\n\n"</code> |
| F4 / Before | 16.991333s: <code>"F4 Before \n"</code> | 17.058233s: <code>"F4 Before settings.json after words.\n\n"</code> |
| F4 / after | 18.014600s: <code>" after words.\n\n"</code> | 18.110933s: <code>"F4 Before settings.json after words.\n\n"</code> |
| F5 / Before | 19.337833s: <code>"F5 Before \n"</code> | 19.486900s: <code>"F5 Before shared.ts · synthetic-project/src shared.ts · synthetic-project/tests, App.tsx · synthetic-project/src! after words.\n\n"</code> |
| F5 / after | 20.389067s: <code>"! after words.\n\n"</code> | 20.471167s: <code>"F5 Before shared.ts · synthetic-project/src shared.ts · synthetic-project/tests, App.tsx · synthetic-project/src! after words.\n\n"</code> |
The timestamped native-action table immediately above is the script for this pair. Highlight is held between trials.

| Before [e5b0718](https://github.com/pingdotgg/t3code/commit/e5b0718a8a297823920d1bf3a7d5cbacd57263ea) | After [f34b5b6](https://github.com/pingdotgg/t3code/commit/f34b5b6cf9d143c859cce17f6af5939697753d07) |
| --- | --- |
| [R1-N-K-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cdcf0ba426feb487/R1-N-K-before.mp4) | [R1-N-K-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7d940f0f073fdaf3/R1-N-K-after.mp4) |

![R1-N-K-before-video-review.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3edc55ab0cd852c8/R1-N-K-before-video-review.png)

![R1-N-K-after-video-review.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7c5fa474918a84de/R1-N-K-after-video-review.png)

Native actions (same order both sides); timestamps are seconds from recording start. Exact getSelection().toString(), including newline escapes:

| Trial | Before time / selection | After time / selection |
| --- | --- | --- |
| F1 / Before | 0.379s: <code>"F1 Before \n"</code> | 0.327s: <code>"F1 Before App.tsx settings.json mystery.fixtureunknown folder after words.\n\n"</code> |
| F1 / after | 1.486s: <code>" after words.\n\n"</code> | 1.396s: <code>"F1 Before App.tsx settings.json mystery.fixtureunknown folder after words.\n\n"</code> |
| T2 / Before | 2.520s: <code>"T2 Before \n"</code> | 2.460s: <code>"T2 Before environment-connection-handshake-retry-policy-fixtures-with-a-very-long-name.ts, after words.\n\n"</code> |
| T2 / after | 3.542s: <code>", after words.\n\n"</code> | 3.519s: <code>"T2 Before environment-connection-handshake-retry-policy-fixtures-with-a-very-long-name.ts, after words.\n\n"</code> |
The timestamped native-action table immediately above is the script for this pair. Highlight is held between trials.

| Before [e5b0718](https://github.com/pingdotgg/t3code/commit/e5b0718a8a297823920d1bf3a7d5cbacd57263ea) | After [f34b5b6](https://github.com/pingdotgg/t3code/commit/f34b5b6cf9d143c859cce17f6af5939697753d07) |
| --- | --- |
| [R1-D-L-preview-final-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/65b13cf44d69c1e9/R1-D-L-preview-final-before.mp4) | [R1-D-L-preview-final-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3f9b511b16ede8ba/R1-D-L-preview-final-after.mp4) |

![R1-D-L-preview-final-before-video-review.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2606d601420efc5c/R1-D-L-preview-final-before-video-review.png)

![R1-D-L-preview-final-after-video-review.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a4a983a89ca99266/R1-D-L-preview-final-after-video-review.png)

Native actions (same order both sides); timestamps are seconds from recording start. Exact getSelection().toString(), including newline escapes:

| Trial | Before time / selection | After time / selection |
| --- | --- | --- |
| F1 / Before | 0.288s: <code>"F1 Before \n"</code> | 0.285s: <code>"F1 Before App.tsx settings.json mystery.fixtureunknown folder after words.\n\n"</code> |
| F1 / after | 1.329s: <code>" after words.\n\n"</code> | 1.332s: <code>"F1 Before App.tsx settings.json mystery.fixtureunknown folder after words.\n\n"</code> |
| T2 / Before | 2.364s: <code>"T2 Before \n"</code> | 2.372s: <code>"T2 Before environment-connection-handshake-retry-policy-fixtures-with-a-very-long-name.ts, after words.\n\n"</code> |
| T2 / after | 3.423s: <code>", after words.\n\n"</code> | 3.397s: <code>"T2 Before environment-connection-handshake-retry-policy-fixtures-with-a-very-long-name.ts, after words.\n\n"</code> |
The timestamped native-action table immediately above is the script for this pair. Highlight is held between trials.

| Before [e5b0718](https://github.com/pingdotgg/t3code/commit/e5b0718a8a297823920d1bf3a7d5cbacd57263ea) | After [f34b5b6](https://github.com/pingdotgg/t3code/commit/f34b5b6cf9d143c859cce17f6af5939697753d07) |
| --- | --- |
| [R1-N-K-preview-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9d0a0287d76a5664/R1-N-K-preview-before.mp4) | [R1-N-K-preview-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9166f08ed9bbf56f/R1-N-K-preview-after.mp4) |

![R1-N-K-preview-before-video-review.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cdecaa29d70e3fd0/R1-N-K-preview-before-video-review.png)

![R1-N-K-preview-after-video-review.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4da39492aa0249ae/R1-N-K-preview-after-video-review.png)

Native actions (same order both sides); timestamps are seconds from recording start. Exact getSelection().toString(), including newline escapes:

| Trial | Before time / selection | After time / selection |
| --- | --- | --- |
| C1 / Before | 0.378s: <code>"C1 Before email fragment and ordinary word after words.\n\n"</code> | 0.341s: <code>"C1 Before email fragment and ordinary word after words.\n\n"</code> |
| C1 / after | 1.414s: <code>"C1 Before email fragment and ordinary word after words.\n\n"</code> | 1.364s: <code>"C1 Before email fragment and ordinary word after words.\n\n"</code> |
| T2-cell / Before | 2.566s: <code>"Before "</code> | 2.417s: <code>"Before environment-connection-handshake-retry-policy-fixtures-with-a-very-long-name.ts, after words."</code> |
| T2-cell / after | 3.631s: <code>", after words."</code> | 3.474s: <code>"Before environment-connection-handshake-retry-policy-fixtures-with-a-very-long-name.ts, after words."</code> |
The timestamped native-action table immediately above is the script for this pair. Highlight is held between trials.

| Before [e5b0718](https://github.com/pingdotgg/t3code/commit/e5b0718a8a297823920d1bf3a7d5cbacd57263ea) | After [f34b5b6](https://github.com/pingdotgg/t3code/commit/f34b5b6cf9d143c859cce17f6af5939697753d07) |
| --- | --- |
| [R1-N-K-table-control-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6e3ce8f17f82c734/R1-N-K-table-control-before.mp4) | [R1-N-K-table-control-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/71933ead3937aacd/R1-N-K-table-control-after.mp4) |

![R1-N-K-table-control-before-video-review.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dbea84ff3188c300/R1-N-K-table-control-before-video-review.png)

![R1-N-K-table-control-after-video-review.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cdeea3870afc68ff/R1-N-K-table-control-after-video-review.png)

Native actions (same order both sides); timestamps are seconds from recording start. Exact getSelection().toString(), including newline escapes:

| Trial | Before time / selection | After time / selection |
| --- | --- | --- |
| L1 / after | 0.584s: <code>"docs after words.\n\n"</code> | 0.511s: <code>"L1 Before docs after words.\n\n"</code> |
| F3 code / double hyphenated-word | 3.895s: <code>"hyphenated-word"</code> | 3.618s: <code>"hyphenated-word"</code> |
| fenced code / double fenced | 5.067s: <code>"fenced"</code> | 4.726s: <code>"fenced"</code> |
| B F1 / after | 7.567s: <code>" after words.\n\n"</code> | 7.455s: <code>"F1 Before App.tsx settings.json mystery.fixtureunknown folder after words.\n\n"</code> |
Copy sequence: triple-click L1 after → Ctrl+C → Ctrl+V into real composer; undo; double-click hyphenated-word and fenced; open B preview, triple-click F1 after → copy → close preview → paste → undo. Paste text/plain is logged by a passive paste listener.

The timestamped native-action table immediately above is the script for this pair. Highlight is held between trials.

| Before [e5b0718](https://github.com/pingdotgg/t3code/commit/e5b0718a8a297823920d1bf3a7d5cbacd57263ea) | After [f34b5b6](https://github.com/pingdotgg/t3code/commit/f34b5b6cf9d143c859cce17f6af5939697753d07) |
| --- | --- |
| [R1-D-L-copy-settled-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d02990f4d423b7cc/R1-D-L-copy-settled-before.mp4) | [R1-D-L-copy-settled-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f7e429018735bed8/R1-D-L-copy-settled-after.mp4) |

![R1-D-L-copy-settled-before-video-review.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4bed806fc4e57dab/R1-D-L-copy-settled-before-video-review.png)

![R1-D-L-copy-settled-after-video-review.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6ff55aa0491e7114/R1-D-L-copy-settled-after-video-review.png)

Clipboard (real editor; link/file destinations retained in Markdown; attachment chip already in draft):

| Trial | Before clipboard | After clipboard |
| --- | --- | --- |
| L1 | 3.141s: <code>"[docs](https://example.com/docs) after words."</code> | 3.039s: <code>"L1 Before [docs](https://example.com/docs) after words."</code> |
| B F1 | 11.442s: <code>"after words."</code> | 10.824s: <code>"F1 Before [App.tsx](/tmp/lead-32334-r1/evidence-capture-1/synthetic-project/src/App.tsx) [settings.json](/tmp/lead-32334-r1/evidence-capture-1/synthetic-project/settings.json) [mystery.fixtureunknown](/tmp/lead-32334-r1/evidence-capture-1/synthetic-project/mystery.fixtureunknown) [folder](/tmp/lead-32334-r1/evidence-capture-1/synthetic-project/folder) after words."</code> |

| Pose | Before | After | Diff0 | DiffT >16 |
| --- | --- | --- | --- | --- |
| R1-D-L-selected — 1440×1000 light — full surface | ![R1-D-L-selected-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/77f2791d02cb54cd/R1-D-L-selected-before.png)<br>[e5b0718](https://github.com/pingdotgg/t3code/commit/e5b0718a8a297823920d1bf3a7d5cbacd57263ea) | ![R1-D-L-selected-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ec1b6177e21abecd/R1-D-L-selected-after.png)<br>[f34b5b6](https://github.com/pingdotgg/t3code/commit/f34b5b6cf9d143c859cce17f6af5939697753d07) | ![R1-D-L-selected-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/05e7130d72c29944/R1-D-L-selected-diff0.png)<br>[e5b0718](https://github.com/pingdotgg/t3code/commit/e5b0718a8a297823920d1bf3a7d5cbacd57263ea) → [f34b5b6](https://github.com/pingdotgg/t3code/commit/f34b5b6cf9d143c859cce17f6af5939697753d07) | ![R1-D-L-selected-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3b5494779be35bac/R1-D-L-selected-diff16.png)<br>[e5b0718](https://github.com/pingdotgg/t3code/commit/e5b0718a8a297823920d1bf3a7d5cbacd57263ea) → [f34b5b6](https://github.com/pingdotgg/t3code/commit/f34b5b6cf9d143c859cce17f6af5939697753d07) |

![R1-D-L-selected-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2381e37fe64a6b21/R1-D-L-selected-sheet.png)

Diff0 pixels: 10032; >16: 9014.


| Pose | Before | After | Diff0 | DiffT >16 |
| --- | --- | --- | --- | --- |
| R1-N-K-table-selected — 390×844 dark — full surface | ![R1-N-K-table-selected-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1e62ccb8533c487f/R1-N-K-table-selected-before.png)<br>[e5b0718](https://github.com/pingdotgg/t3code/commit/e5b0718a8a297823920d1bf3a7d5cbacd57263ea) | ![R1-N-K-table-selected-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/68cd71d864116f10/R1-N-K-table-selected-after.png)<br>[f34b5b6](https://github.com/pingdotgg/t3code/commit/f34b5b6cf9d143c859cce17f6af5939697753d07) | ![R1-N-K-table-selected-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ea768b699a576866/R1-N-K-table-selected-diff0.png)<br>[e5b0718](https://github.com/pingdotgg/t3code/commit/e5b0718a8a297823920d1bf3a7d5cbacd57263ea) → [f34b5b6](https://github.com/pingdotgg/t3code/commit/f34b5b6cf9d143c859cce17f6af5939697753d07) | ![R1-N-K-table-selected-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/51299126e8425b53/R1-N-K-table-selected-diff16.png)<br>[e5b0718](https://github.com/pingdotgg/t3code/commit/e5b0718a8a297823920d1bf3a7d5cbacd57263ea) → [f34b5b6](https://github.com/pingdotgg/t3code/commit/f34b5b6cf9d143c859cce17f6af5939697753d07) |

![R1-N-K-table-selected-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/49287df20b0d8b2b/R1-N-K-table-selected-sheet.png)

Diff0 pixels: 22727; >16: 22356.

![R1-favicon-selection-detail.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5f950fd0e2690909/R1-favicon-selection-detail.png)

Unverified matrix rows: none. Firefox, Safari and native mobile gestures not tested.

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