## Evidence

Captured **15/15 required rows (R01–R15), 19/19 recording slots**, covering **15/24 total matrix rows**, for [#7700](https://git.cafe/pingdotgg/t3code/issues/7700). R01–R04 have before and after recordings; R05–R15 are after-only as required. All seven optional/scoped U rows and both unavailable P rows are accounted for below. No PR was opened and no worktree source was edited or committed.

Before [5808469018](https://git.cafe/pingdotgg/t3code/commit/5808469018fb95676af148e7a7662c23665c67a3); after [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab), branch `fix/issue-7700`. The explicit supplied comparison base is authoritative; this report does not substitute local main.

Linux x86_64 (fs-06), real Electron 44.9.3 / Chromium 152.0.7977.167 under headless-desktop/Xvfb; no device emulation; full app 1256×780, guest 1000×700 CSS px, DPR 1, zoom 100%, font scaling 100%, dark theme. The 1256×860 recordings add an 80px narration band below the complete app surface.

Separate homes were initialized empty by each revision with `T3CODE_DEV_SEED=0`. Both used the same synthetic project and local HTML fixture, scroll position zero, matching navigation history and frozen guest clock 2026-10-27 12:00 UTC. The PDF is a harmless locally generated PDF, not HTML imitating one. No live database or real thread data was read or seeded.

Before each paired still, the static fixture was fully loaded and quiescent, fonts were ready, and two full-window screenshots 500ms apart were pixel-identical (AE=0). Every adopted frame and recording contact sheet was visually inspected. Retakes corrected navigation history and narration timing before publication.

**What else changed:**

- R01: Select loses its active text color; Erase gains the active text color and background. The Select focus outline stays in place.
- R02: Region loses its active text color; Erase gains the active text color and background. The Region focus outline stays in place.
- R03: Draw loses its active text color; Erase gains the active text color and background. The Draw focus outline stays in place.
- R04: no final-frame difference at zero threshold; its recording shows the changed intermediate transitions.
- There are no changed pixels outside the annotation toolbar in the adopted before/after pairs.

Diff0 marks every nonzero RGB-channel difference in bright pink, so a one-level change is amplified to a visible pixel. DiffT12 marks pixels whose maximum absolute RGB-channel difference exceeds 12/255. Both use the full 1256×780 frame. Changed pixels (Diff0 / DiffT12): R01: 2052 / 1977, R02: 2081 / 2006, R03: 2002 / 1932, R04: 0 / 0.

Row sheets: [R01.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/848c30a8fb5b0836/R01.md) · [R02.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5442d3067568c903/R02.md) · [R03.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/143c96eb6cfab61d/R03.md) · [R04.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ded1ccf855fbcf15/R04.md) · [R05.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1680e55373c8116b/R05.md) · [R06.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a4b04c14deeec5ec/R06.md) · [R07.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bbaaef00fe455ccb/R07.md) · [R08.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b22aa2343d26e022/R08.md) · [R09.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/174fded47a34a554/R09.md) · [R10.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/53085a57d837ff0a/R10.md) · [R11.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b0f6aa50db91091a/R11.md) · [R12.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4f402bbdc47b551d/R12.md) · [R13.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/26a5e69ea4df4642/R13.md) · [R14.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6dd14ee1665ae619/R14.md) · [R15.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/299267387081f110/R15.md)

### Unverified and scoped rows

| Row | Status and reason |
|---|---|
| R01–R15 | Captured; no required row is missing |
| P01 | Unverified: Windows desktop is unavailable on this Linux VM; reporter-platform native focus is not certified |
| P02 | Unverified: macOS desktop is unavailable on this Linux VM; native focus/picker differences are not certified |
| U01 | Optional, not captured: light/narrow smoke was outside the required minimum |
| U04 | Optional, not captured: Attach pending/error timing was outside the required minimum |
| U02, U03, U05, U06, U07 | Scoped out of the minimum by the supplied matrix; unchanged layout, target algorithms, submission, availability and lifecycle branches |

### Reproduction and raw proof

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

[reproduction-bundle.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a903b0ad964a533f/reproduction-bundle.zip)

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

[pdf-runtime-transcript.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7e1fb9027337fe84/pdf-runtime-transcript.log)

Scripts and fixtures:

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

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

[cdp.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9689b7c604a2d8f2/cdp.mjs)

[discard-drafts.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6424ec9ec0adadb7/discard-drafts.mjs)

[fixture-matrix.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/651f1462ec2f3600/fixture-matrix.md)

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

[fixture.html](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4168d0d82f28eb21/fixture.html)

[fixture.pdf](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/19b461b2f4209542/fixture.pdf)

[make-diffs.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2329826c09c67afe/make-diffs.py)

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

[navigate.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/421f57a28a1ea0d6/navigate.mjs)

[normalize-history.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4661ec902bd3cc26/normalize-history.mjs)

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

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

[resume.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/929107fad29780d0/resume.mjs)

[seed-project.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6387775b707c9c4e/seed-project.py)

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

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

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

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

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

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

### R01 — Select button focused; v/r/d/e · guest 1000×700 · dark

Linux x86_64 (fs-06), real Electron 44.9.3 / Chromium 152.0.7977.167 under headless-desktop/Xvfb; no device emulation; full app 1256×780, guest 1000×700 CSS px, DPR 1, zoom 100%, font scaling 100%, dark theme. The 1256×860 recordings add an 80px narration band below the complete app surface.

Before: Select remains active for all four keys. After: Select → Region → Draw → Erase; Select retains keyboard focus.

**Before steps (seconds from recording start):** 1.43s Select button focus; trusted v/r/d/e → select; 1.88s Click Select → select; 2.67s Key v → select; 3.73s Key r → select; 4.79s Key d → select; 5.84s Key e → select.

**After steps (seconds from recording start):** 1.42s Select button focus; trusted v/r/d/e → select; 1.86s Click Select → select; 2.66s Key v → select; 3.71s Key r → marquee; 4.76s Key d → draw; 5.81s Key e → erase.

| Before | After | Diff0 | DiffT12 |
|---|---|---|---|
| [before-R01.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e153954cf3b5b244/before-R01.mp4)<br>![before-R01-final.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4d5c958c81cbeb00/before-R01-final.png) | [after-R01.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fd0b9b4797e76098/after-R01.mp4)<br>![after-R01-final.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c8166c04344f4d74/after-R01-final.png) | ![R01-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/535497a9a1015dfc/R01-diff0.png) | ![R01-diffT12.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e612ce47cb82b220/R01-diffT12.png) |
| [5808469018](https://git.cafe/pingdotgg/t3code/commit/5808469018fb95676af148e7a7662c23665c67a3) | [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) | [5808469018](https://git.cafe/pingdotgg/t3code/commit/5808469018fb95676af148e7a7662c23665c67a3) → [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) | [5808469018](https://git.cafe/pingdotgg/t3code/commit/5808469018fb95676af148e7a7662c23665c67a3) → [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) |

Read-only focus/tool telemetry: [after-R01-events.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/39f0c4df214bb26f/after-R01-events.json) · [before-R01-events.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ce32e8f08c50d09c/before-R01-events.json)

Contact sheets (derived from the recordings):

![before-R01-sheet-1.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fa1a64b8c7bd0918/before-R01-sheet-1.jpg)

![after-R01-sheet-1.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/188b4cd863843b66/after-R01-sheet-1.jpg)


### R02 — Region button focused; v/r/d/e · guest 1000×700 · dark

Linux x86_64 (fs-06), real Electron 44.9.3 / Chromium 152.0.7977.167 under headless-desktop/Xvfb; no device emulation; full app 1256×780, guest 1000×700 CSS px, DPR 1, zoom 100%, font scaling 100%, dark theme. The 1256×860 recordings add an 80px narration band below the complete app surface.

Before: Region remains active, including after v. After: Select → Region → Draw → Erase; Region retains keyboard focus.

**Before steps (seconds from recording start):** 1.42s Region button focus; trusted v/r/d/e → select; 1.90s Click Region → marquee; 2.71s Key v → marquee; 3.76s Key r → marquee; 4.82s Key d → marquee; 5.87s Key e → marquee.

**After steps (seconds from recording start):** 1.42s Region button focus; trusted v/r/d/e → select; 1.86s Click Region → marquee; 2.65s Key v → select; 3.70s Key r → marquee; 4.75s Key d → draw; 5.80s Key e → erase.

| Before | After | Diff0 | DiffT12 |
|---|---|---|---|
| [before-R02.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b2ce38e56374f9e2/before-R02.mp4)<br>![before-R02-final.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e5c0ab373f3b00b1/before-R02-final.png) | [after-R02.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3ec81c1c8a3b132b/after-R02.mp4)<br>![after-R02-final.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ae3deb2b195a20f6/after-R02-final.png) | ![R02-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d4060023447972c4/R02-diff0.png) | ![R02-diffT12.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/de3d73b94373f59c/R02-diffT12.png) |
| [5808469018](https://git.cafe/pingdotgg/t3code/commit/5808469018fb95676af148e7a7662c23665c67a3) | [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) | [5808469018](https://git.cafe/pingdotgg/t3code/commit/5808469018fb95676af148e7a7662c23665c67a3) → [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) | [5808469018](https://git.cafe/pingdotgg/t3code/commit/5808469018fb95676af148e7a7662c23665c67a3) → [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) |

Read-only focus/tool telemetry: [after-R02-events.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9219aecd5c2e6de5/after-R02-events.json) · [before-R02-events.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9b7e47bf076209f6/before-R02-events.json)

Contact sheets (derived from the recordings):

![before-R02-sheet-1.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1062aabe792285e0/before-R02-sheet-1.jpg)

![after-R02-sheet-1.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5a98121e0da88ad2/after-R02-sheet-1.jpg)


### R03 — Draw button focused; v/r/d/e · guest 1000×700 · dark

Linux x86_64 (fs-06), real Electron 44.9.3 / Chromium 152.0.7977.167 under headless-desktop/Xvfb; no device emulation; full app 1256×780, guest 1000×700 CSS px, DPR 1, zoom 100%, font scaling 100%, dark theme. The 1256×860 recordings add an 80px narration band below the complete app surface.

Before: Draw remains active for all four keys. After: Select → Region → Draw → Erase; Draw retains keyboard focus.

**Before steps (seconds from recording start):** 1.42s Draw button focus; trusted v/r/d/e → select; 1.85s Click Draw → draw; 2.64s Key v → draw; 3.69s Key r → draw; 4.74s Key d → draw; 5.79s Key e → draw.

**After steps (seconds from recording start):** 1.42s Draw button focus; trusted v/r/d/e → select; 1.85s Click Draw → draw; 2.65s Key v → select; 3.70s Key r → marquee; 4.75s Key d → draw; 5.79s Key e → erase.

| Before | After | Diff0 | DiffT12 |
|---|---|---|---|
| [before-R03.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9d05a445728ddeac/before-R03.mp4)<br>![before-R03-final.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e1c573cbf8d0875e/before-R03-final.png) | [after-R03.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/85c3eab83d1708fe/after-R03.mp4)<br>![after-R03-final.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a4764962ab7224f7/after-R03-final.png) | ![R03-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/968ff30cd586fa56/R03-diff0.png) | ![R03-diffT12.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b22cd12305e6c53c/R03-diffT12.png) |
| [5808469018](https://git.cafe/pingdotgg/t3code/commit/5808469018fb95676af148e7a7662c23665c67a3) | [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) | [5808469018](https://git.cafe/pingdotgg/t3code/commit/5808469018fb95676af148e7a7662c23665c67a3) → [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) | [5808469018](https://git.cafe/pingdotgg/t3code/commit/5808469018fb95676af148e7a7662c23665c67a3) → [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) |

Read-only focus/tool telemetry: [after-R03-events.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a472e5bc3806c147/after-R03-events.json) · [before-R03-events.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2f109810aaaa1523/before-R03-events.json)

Contact sheets (derived from the recordings):

![before-R03-sheet-1.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/941d550c364c3799/before-R03-sheet-1.jpg)

![after-R03-sheet-1.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1d44d28e19baf3a5/after-R03-sheet-1.jpg)


### R04 — Erase button focused; v/r/d/e · guest 1000×700 · dark

Linux x86_64 (fs-06), real Electron 44.9.3 / Chromium 152.0.7977.167 under headless-desktop/Xvfb; no device emulation; full app 1256×780, guest 1000×700 CSS px, DPR 1, zoom 100%, font scaling 100%, dark theme. The 1256×860 recordings add an 80px narration band below the complete app surface.

Before: Erase remains active for all four keys. After: Select → Region → Draw → Erase. The identical final Erase frame does not replace the recording of intermediate transitions.

**Before steps (seconds from recording start):** 1.42s Erase button focus; trusted v/r/d/e → select; 1.86s Click Erase → erase; 2.66s Key v → erase; 3.70s Key r → erase; 4.75s Key d → erase; 5.79s Key e → erase.

**After steps (seconds from recording start):** 1.42s Erase button focus; trusted v/r/d/e → select; 1.86s Click Erase → erase; 2.66s Key v → select; 3.71s Key r → marquee; 4.76s Key d → draw; 5.81s Key e → erase.

| Before | After | Diff0 | DiffT12 |
|---|---|---|---|
| [before-R04.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e262cd61373035d8/before-R04.mp4)<br>![before-R04-final.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9141fd926c8bcd54/before-R04-final.png) | [after-R04.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7a59434686f5999c/after-R04.mp4)<br>![after-R04-final.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ff96821952a9eb46/after-R04-final.png) | ![R04-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/23f276361916d4ae/R04-diff0.png) | ![R04-diffT12.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f6d5a316be089411/R04-diffT12.png) |
| [5808469018](https://git.cafe/pingdotgg/t3code/commit/5808469018fb95676af148e7a7662c23665c67a3) | [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) | [5808469018](https://git.cafe/pingdotgg/t3code/commit/5808469018fb95676af148e7a7662c23665c67a3) → [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) | [5808469018](https://git.cafe/pingdotgg/t3code/commit/5808469018fb95676af148e7a7662c23665c67a3) → [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) |

Read-only focus/tool telemetry: [after-R04-events.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2e1dfe5a3039c9be/after-R04-events.json) · [before-R04-events.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d705322970ca9151/before-R04-events.json)

Contact sheets (derived from the recordings):

![before-R04-sheet-1.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f3bb38c36444931d/before-R04-sheet-1.jpg)

![after-R04-sheet-1.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/85e41b822907bcb0/after-R04-sheet-1.jpg)


### R05 — Compact comment, autofocus, vrde, Shift+Enter and second line · guest 1000×700 · dark

Linux x86_64 (fs-06), real Electron 44.9.3 / Chromium 152.0.7977.167 under headless-desktop/Xvfb; no device emulation; full app 1256×780, guest 1000×700 CSS px, DPR 1, zoom 100%, font scaling 100%, dark theme. The 1256×860 recordings add an 80px narration band below the complete app surface.

The first target visibly focuses the compact textarea. vrde and a second line remain editable without switching tools. Refocusing Region then pressing v switches back to Select.

**After steps (seconds from recording start):** 1.42s Card A; compact comment autofocus; vrde and two lines → select; 1.87s Click Select → select; 2.61s Select Card A; first-target comment autofocus completed → select; 3.01s Key v → select; 4.07s Key r → select; 5.12s Key d → select; 6.17s Key e → select; 7.23s Key Shift+Enter → select; 9.24s Typed second line after Shift+Enter; textarea remains focused → select; 10.37s Click Region → marquee; 11.17s Key v → select.

| Before | After | Diff0 | DiffT12 |
|---|---|---|---|
| After-only in required matrix | [after-R05.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0356387ba1cb3ff2/after-R05.mp4) | Not a paired row | Not a paired row |
| — | [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) | — | — |

Read-only focus/tool telemetry: [after-R05-events.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0cd85ea6a6031fc8/after-R05-events.json)

Contact sheets (derived from the recordings):

![after-R05-sheet-1.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1527439581dfbfa2/after-R05-sheet-1.jpg)

![after-R05-sheet-2.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/03f1d8d4bd52b704/after-R05-sheet-2.jpg)


### R06 — Expanded editor: Line height text input · guest 1000×700 · dark

Linux x86_64 (fs-06), real Electron 44.9.3 / Chromium 152.0.7977.167 under headless-desktop/Xvfb; no device emulation; full app 1256×780, guest 1000×700 CSS px, DPR 1, zoom 100%, font scaling 100%, dark theme. The 1256×860 recordings add an 80px narration band below the complete app surface.

The focused text field accepts vrde and keeps Select active. The driver restores normal; Region then v demonstrates shortcut release.

**After steps (seconds from recording start):** 1.42s Expanded editor: Line height text input → select; 1.87s Click Select → select; 2.60s Select Card A; first-target comment autofocus completed → select; 3.04s Click Expand annotation editor → select; 5.07s Focus Line height (text) → select; 5.47s Key v → select; 6.51s Key r → select; 7.56s Key d → select; 8.61s Key e → select; 10.08s Restored valid line height normal → select; 10.55s Click Region → marquee; 11.36s Key v → select.

| Before | After | Diff0 | DiffT12 |
|---|---|---|---|
| After-only in required matrix | [after-R06.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9a02ab5b396e6f14/after-R06.mp4) | Not a paired row | Not a paired row |
| — | [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) | — | — |

Read-only focus/tool telemetry: [after-R06-events.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1ea49c04fa9f137b/after-R06-events.json)

Contact sheets (derived from the recordings):

![after-R06-sheet-1.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d6d9043148e91d1b/after-R06-sheet-1.jpg)

![after-R06-sheet-2.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3e0e973d24a35b1a/after-R06-sheet-2.jpg)


### R07 — Expanded editor: Font size number input · guest 1000×700 · dark

Linux x86_64 (fs-06), real Electron 44.9.3 / Chromium 152.0.7977.167 under headless-desktop/Xvfb; no device emulation; full app 1256×780, guest 1000×700 CSS px, DPR 1, zoom 100%, font scaling 100%, dark theme. The 1256×860 recordings add an 80px narration band below the complete app surface.

Native numeric editing keeps Select active for v/r/d/e. A valid edit changes font size to 24px. Escape removes the overlay.

**After steps (seconds from recording start):** 1.42s Expanded editor: Font size number input → select; 1.87s Click Select → select; 2.60s Select Card A; first-target comment autofocus completed → select; 3.05s Click Expand annotation editor → select; 5.11s Focus Font sizepx (number) → select; 5.50s Key v → select; 6.55s Key r → select; 7.60s Key d → select; 8.65s Key e → select; 10.12s Valid number edit: Font size 24px → select; 10.51s Key Escape → overlay absent; 11.47s Number-input Escape removes overlay → overlay absent.

| Before | After | Diff0 | DiffT12 |
|---|---|---|---|
| After-only in required matrix | [after-R07.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cb80db8ceddb4b9d/after-R07.mp4) | Not a paired row | Not a paired row |
| — | [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) | — | — |

Read-only focus/tool telemetry: [after-R07-events.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7b660713dc0ecd9d/after-R07-events.json)

Contact sheets (derived from the recordings):

![after-R07-sheet-1.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d065d1750fa4f635/after-R07-sheet-1.jpg)

![after-R07-sheet-2.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0b8495936177a9bd/after-R07-sheet-2.jpg)


### R08 — Expanded editor: Opacity range · guest 1000×700 · dark

Linux x86_64 (fs-06), real Electron 44.9.3 / Chromium 152.0.7977.167 under headless-desktop/Xvfb; no device emulation; full app 1256×780, guest 1000×700 CSS px, DPR 1, zoom 100%, font scaling 100%, dark theme. The 1256×860 recordings add an 80px narration band below the complete app surface.

The focused range keeps Select active for all four keys. ArrowLeft changes opacity from 1 to 0.95. Escape removes the overlay.

**After steps (seconds from recording start):** 1.42s Expanded editor: Opacity range input → select; 1.86s Click Select → select; 2.59s Select Card A; first-target comment autofocus completed → select; 3.04s Click Expand annotation editor → select; 5.62s Tab-focus Opacity range; native popup closed → select; 6.01s Key v → select; 7.06s Key r → select; 8.11s Key d → select; 9.15s Key e → select; 10.20s Key ArrowLeft → select; 11.17s Opacity decreased by native ArrowLeft → select; 11.56s Key Escape → overlay absent; 12.51s Range-input Escape removes overlay → overlay absent.

| Before | After | Diff0 | DiffT12 |
|---|---|---|---|
| After-only in required matrix | [after-R08.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/22dbe7ab833148c5/after-R08.mp4) | Not a paired row | Not a paired row |
| — | [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) | — | — |

Read-only focus/tool telemetry: [after-R08-events.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2c5e39e040f47997/after-R08-events.json)

Contact sheets (derived from the recordings):

![after-R08-sheet-1.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ae9630464d01a4ae/after-R08-sheet-1.jpg)

![after-R08-sheet-2.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8632bf64bc7c27f3/after-R08-sheet-2.jpg)


### R09 — Expanded editor: native Text color input, popup closed · guest 1000×700 · dark

Linux x86_64 (fs-06), real Electron 44.9.3 / Chromium 152.0.7977.167 under headless-desktop/Xvfb; no device emulation; full app 1256×780, guest 1000×700 CSS px, DPR 1, zoom 100%, font scaling 100%, dark theme. The 1256×860 recordings add an 80px narration band below the complete app surface.

Tab reaches the native color input without opening its picker. All four keys keep Select active. Escape cancels with the popup closed.

**After steps (seconds from recording start):** 1.42s Expanded editor: native color input, popup closed → select; 1.87s Click Select → select; 2.61s Select Card A; first-target comment autofocus completed → select; 3.04s Click Expand annotation editor → select; 5.22s Tab-focus Text color input; native popup closed → select; 5.62s Key v → select; 6.66s Key r → select; 7.71s Key d → select; 8.75s Key e → select; 9.80s Key Escape → overlay absent; 10.75s Color-input Escape, native popup closed, removes overlay → overlay absent.

| Before | After | Diff0 | DiffT12 |
|---|---|---|---|
| After-only in required matrix | [after-R09.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8981a84d880932f6/after-R09.mp4) | Not a paired row | Not a paired row |
| — | [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) | — | — |

Read-only focus/tool telemetry: [after-R09-events.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/924c4433ef3259a5/after-R09-events.json)

Contact sheets (derived from the recordings):

![after-R09-sheet-1.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fbeb36d77fe76d6b/after-R09-sheet-1.jpg)

![after-R09-sheet-2.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ade9fa3795d96ef9/after-R09-sheet-2.jpg)


### R10 — Expanded editor: Font select, popup closed · guest 1000×700 · dark

Linux x86_64 (fs-06), real Electron 44.9.3 / Chromium 152.0.7977.167 under headless-desktop/Xvfb; no device emulation; full app 1256×780, guest 1000×700 CSS px, DPR 1, zoom 100%, font scaling 100%, dark theme. The 1256×860 recordings add an 80px narration band below the complete app surface.

Tab reaches the closed Font select. v/r/d/e keep Select active.

**After steps (seconds from recording start):** 1.42s Expanded editor: Font select, popup closed → select; 1.85s Click Select → select; 2.58s Select Card A; first-target comment autofocus completed → select; 3.03s Click Expand annotation editor → select; 4.74s Tab-focus Font select; native popup closed → select; 5.14s Key v → select; 6.19s Key r → select; 7.24s Key d → select; 8.28s Key e → select.

| Before | After | Diff0 | DiffT12 |
|---|---|---|---|
| After-only in required matrix | [after-R10.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c154d318ef140781/after-R10.mp4) | Not a paired row | Not a paired row |
| — | [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) | — | — |

Read-only focus/tool telemetry: [after-R10-events.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0ae9572217f911a7/after-R10-events.json)

Contact sheets (derived from the recordings):

![after-R10-sheet-1.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5e5c52bd5baeca84/after-R10-sheet-1.jpg)

![after-R10-sheet-2.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/33489567b0892440/after-R10-sheet-2.jpg)


### R11 — Expand/collapse, aspect lock/unlock, keyboard-focused drag handle · guest 1000×700 · dark

Linux x86_64 (fs-06), real Electron 44.9.3 / Chromium 152.0.7977.167 under headless-desktop/Xvfb; no device emulation; full app 1256×780, guest 1000×700 CSS px, DPR 1, zoom 100%, font scaling 100%, dark theme. The 1256×860 recordings add an 80px narration band below the complete app surface.

Tool keys work from expand/collapse, both aspect-lock states, and the Tab-focused drag handle. Expanded and compact layouts and both lock icons are recorded.

**After steps (seconds from recording start):** 1.43s Editor buttons release shortcuts; aspect lock and drag-handle focus → select; 1.91s Click Select → select; 2.64s Select Card A; first-target comment autofocus completed → select; 3.08s Click Expand annotation editor → select; 4.38s Key r → marquee; 5.50s Click Collapse annotation editor → marquee; 6.31s Key d → draw; 7.45s Click Expand annotation editor → draw; 8.25s Key e → erase; 9.96s Click Lock aspect ratio → erase; 10.77s Key v → select; 11.87s Click Lock aspect ratio → select; 12.66s Key r → marquee; 13.78s Click Collapse annotation editor → marquee; 14.63s Click Expand annotation editor → marquee; 15.59s Tab-focus Drag annotation editor; native popup closed → marquee; 15.99s Key d → draw.

| Before | After | Diff0 | DiffT12 |
|---|---|---|---|
| After-only in required matrix | [after-R11.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b3f291e400979099/after-R11.mp4) | Not a paired row | Not a paired row |
| — | [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) | — | — |

Read-only focus/tool telemetry: [after-R11-events.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/44a405d1ef38bce2/after-R11-events.json)

Contact sheets (derived from the recordings):

![after-R11-sheet-1.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5e949f5662015ef6/after-R11-sheet-1.jpg)

![after-R11-sheet-2.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a856e62586f634b4/after-R11-sheet-2.jpg)


### R12 — Escape from toolbar, comment, expanded text input and select · guest 1000×700 · dark

Linux x86_64 (fs-06), real Electron 44.9.3 / Chromium 152.0.7977.167 under headless-desktop/Xvfb; no device emulation; full app 1256×780, guest 1000×700 CSS px, DPR 1, zoom 100%, font scaling 100%, dark theme. The 1256×860 recordings add an 80px narration band below the complete app surface.

All four focus families cancel with Escape. Each pick promise resolves null; the tool attribute and overlay disappear. A new annotation session opens after cancellation.

**After steps (seconds from recording start):** 1.41s Escape priority from toolbar, comment, text input, select → overlay absent; 2.03s Reopened annotation for toolbar → select; 2.45s Click Region → marquee; 3.25s Key Escape → overlay absent; 4.20s toolbar: overlay removed and pick promise resolved null → overlay absent; 5.52s Reopened annotation for comment → select; 5.95s Click Select → select; 6.68s Select Card A; first-target comment autofocus completed → select; 7.07s Key Escape → overlay absent; 8.03s comment: overlay removed and pick promise resolved null → overlay absent; 9.35s Reopened annotation for text input → select; 9.77s Click Select → select; 10.50s Select Card A; first-target comment autofocus completed → select; 10.96s Click Expand annotation editor → select; 13.02s Focus Line height (text) → select; 13.41s Key Escape → overlay absent; 14.37s text input: overlay removed and pick promise resolved null → overlay absent; 15.69s Reopened annotation for select → select; 16.12s Click Select → select; 16.85s Select Card A; first-target comment autofocus completed → select; 17.30s Click Expand annotation editor → select; 18.99s Tab-focus Font select; native popup closed → select; 19.38s Key Escape → overlay absent; 20.33s select: overlay removed and pick promise resolved null → overlay absent; 21.66s Final reopen works after four cancellations → select.

| Before | After | Diff0 | DiffT12 |
|---|---|---|---|
| After-only in required matrix | [after-R12.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e684af5ceee015d1/after-R12.mp4) | Not a paired row | Not a paired row |
| — | [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) | — | — |

Read-only focus/tool telemetry: [after-R12-events.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c113410f0a7864ee/after-R12-events.json)

Contact sheets (derived from the recordings):

![after-R12-sheet-1.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fbe8013aaf312f34/after-R12-sheet-1.jpg)

![after-R12-sheet-2.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d99f83d4fd1ffbec/after-R12-sheet-2.jpg)

![after-R12-sheet-3.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ec8361b9b586c771/after-R12-sheet-3.jpg)


### R13 — Actual application/pdf, transparent input layer, region and stroke · guest 1000×700 · dark

Linux x86_64 (fs-06), real Electron 44.9.3 / Chromium 152.0.7977.167 under headless-desktop/Xvfb; no device emulation; full app 1256×780, guest 1000×700 CSS px, DPR 1, zoom 100%, font scaling 100%, dark theme. The 1256×860 recordings add an 80px narration band below the complete app surface.

The actual MIME type is application/pdf. A real transparent input layer receives v/r/d/e and Escape. Toolbar shortcuts also work; a region and multi-point stroke are created, then cancelled; reopening starts Region again.

**After steps (seconds from recording start):** 1.42s Real application/pdf guest; input layer; region and stroke → overlay absent; 2.06s Actual PDF; initial Region; click transparent input layer to focus guest → marquee; 2.46s Key v → select; 3.52s Key r → marquee; 4.57s Key d → draw; 5.62s Key e → erase; 6.59s Tool keys received by PDF input layer; no overlay button focused → erase; 6.99s Key Escape → overlay absent; 7.95s PDF input-layer Escape: overlay removed and pick promise resolved null → overlay absent; 9.29s PDF annotation reopens; initial Region → marquee; 9.74s Click Region → marquee; 10.55s Key v → select; 11.61s Key r → marquee; 12.67s Key d → draw; 13.72s Key e → erase; 14.82s Click Region → marquee; 15.62s Key r → marquee; 17.52s PDF region created → marquee; 17.97s Click Draw → draw; 18.77s Key d → draw; 20.87s PDF freehand stroke created → draw; 21.31s Click Erase → erase; 22.10s Key Escape → overlay absent; 23.06s PDF toolbar Escape: overlay removed and pick promise resolved null → overlay absent; 24.39s PDF annotation reopens after mixed targets → marquee.

| Before | After | Diff0 | DiffT12 |
|---|---|---|---|
| After-only in required matrix | [after-R13.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7b66cb3698d4d7c0/after-R13.mp4) | Not a paired row | Not a paired row |
| — | [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) | — | — |

Read-only focus/tool telemetry: [after-R13-events.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6aea9cc4b329af5a/after-R13-events.json)

Contact sheets (derived from the recordings):

![after-R13-sheet-1.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7b0dd02c7157ddc0/after-R13-sheet-1.jpg)

![after-R13-sheet-2.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3480ec53b6ebb456/after-R13-sheet-2.jpg)

![after-R13-sheet-3.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/02e4ca70920c325b/after-R13-sheet-3.jpg)


### R14 — Element + region + stroke; erase to zero; B/C marquee · guest 1000×700 · dark

Linux x86_64 (fs-06), real Electron 44.9.3 / Chromium 152.0.7977.167 under headless-desktop/Xvfb; no device emulation; full app 1256×780, guest 1000×700 CSS px, DPR 1, zoom 100%, font scaling 100%, dark theme. The 1256×860 recordings add an 80px narration band below the complete app surface.

The tools create a selected Card A, an empty-space region and a retained stroke. Erasing all three hides the editor. A region drag over B/C selects those elements; erasing them also returns to zero targets.

**After steps (seconds from recording start):** 1.42s Select element + empty region + stroke; erase to zero; B/C marquee → select; 1.86s Click Select → select; 2.66s Key v → select; 3.64s Select Card A; first-target comment autofocus completed → select; 4.08s Click Region → marquee; 4.88s Key r → marquee; 6.76s Created empty-space region → marquee; 7.19s Click Draw → draw; 7.99s Key d → draw; 10.08s Created retained freehand stroke → draw; 10.53s Click Erase → erase; 11.33s Key e → erase; 12.89s Erase Card A → erase; 14.81s Erase Region → erase; 16.74s Erase Stroke → erase; 18.05s All three erased; compact editor hidden → erase; 18.50s Click Region → marquee; 19.30s Key r → marquee; 21.18s Marquee over B/C selects elements → marquee; 21.62s Click Erase → erase; 22.42s Key e → erase; 24.39s Last marquee targets erased; editor hidden → erase.

| Before | After | Diff0 | DiffT12 |
|---|---|---|---|
| After-only in required matrix | [after-R14.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cb2b544517d33d4f/after-R14.mp4) | Not a paired row | Not a paired row |
| — | [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) | — | — |

Read-only focus/tool telemetry: [after-R14-events.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7f9e9789da64a258/after-R14-events.json)

Contact sheets (derived from the recordings):

![after-R14-sheet-1.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e94f467f2997554e/after-R14-sheet-1.jpg)

![after-R14-sheet-2.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/62746fb595704dd6/after-R14-sheet-2.jpg)

![after-R14-sheet-3.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9efdf90b451916e7/after-R14-sheet-3.jpg)


### R15 — HTML guest focus before overlay control focus; x no-op and hover · guest 1000×700 · dark

Linux x86_64 (fs-06), real Electron 44.9.3 / Chromium 152.0.7977.167 under headless-desktop/Xvfb; no device emulation; full app 1256×780, guest 1000×700 CSS px, DPR 1, zoom 100%, font scaling 100%, dark theme. The 1256×860 recordings add an 80px narration band below the complete app surface.

The ordinary HTML guest is focused before the bridge starts annotation. With no overlay control focused, v/r/d/e switch all four tools; x leaves Erase active. v plus pointer hover highlights Card A.

**After steps (seconds from recording start):** 1.41s HTML guest focused; start annotation via bridge before overlay focus → overlay absent; 2.11s Key v → select; 3.16s Key r → marquee; 4.21s Key d → draw; 5.26s Key e → erase; 6.31s Key x → erase; 7.36s Key v → select; 8.73s Select hover highlights Card A without overlay button focus → select.

| Before | After | Diff0 | DiffT12 |
|---|---|---|---|
| After-only in required matrix | [after-R15.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9ab908b95184b6b7/after-R15.mp4) | Not a paired row | Not a paired row |
| — | [1667f6fbf1](https://git.cafe/pingdotgg/t3code/commit/1667f6fbf15e0b2e5a8269ecdbdc00f793017bab) | — | — |

Read-only focus/tool telemetry: [after-R15-events.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cd301645024ddbfc/after-R15-events.json)

Contact sheets (derived from the recordings):

![after-R15-sheet-1.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/aa553142b3c6fdf3/after-R15-sheet-1.jpg)

![after-R15-sheet-2.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ac31a39eb7aabcb5/after-R15-sheet-2.jpg)


All started app and fixture processes were stopped by their tracked process groups. The temporary baseline checkout was removed. The after checkout is clean.

FRICTION:
tool | PDF navigation left host address-bar focus; a trusted click on the PDF input layer restored guest key delivery | Focus the guest before input-layer key checks
tool | Electron replaced the guest CDP target on reload; the driver reconnects after navigation | Document target replacement in the capture recipe
runbook | Restarted synthetic homes exposed a saved unsent draft and different navigation history; UI discard plus history reset preceded comparison retakes | Normalize drafts and browser history before paired captures
model | Initial captions lagged key input; all adopted recordings were retaken with immediate captions and a visible hold | Update narration immediately after trusted input
model | One dependency install ran in the home directory; the three newly created empty package artifacts were removed and install rerun in the checkout | Use the explicit workdir on each install command

VERDICT: CAPTURED 15/15 required rows; 19/19 recording slots. Windows/macOS remain unverified.
