## Evidence

What else changed: the keyboard focus ring also expands to the whole row, beyond the clickable-padding behavior named by this change.

- E1: after a padding/gap click, the Claude selected highlight and Claude editor replace the Codex highlight/editor. Before they stay on Codex.
- E2: only the focus-ring rectangle changes; all other pixels are identical at zero threshold.
- E3: after the disabled-row edge click, Claude gains the selected background, its disabled-row opacity changes with selection, and its editor opens; enablement remains off.
- E4: after the reset/switch gap click, the selected highlight and editor move to Claude; override controls keep their independent behavior.
- E5: both sides open and dismiss the same natural advisory without changing row selection.
- At rest, E1/E3/E4/E5 have no visible differences at zero threshold. Intentional provider-name ellipsis with project controls is present on both sides. No additional static differences were found. Recordings use the same action order; automation/render latency makes their durations differ.

Captured **5/5 matrix rows**: 11 still pairs, 22 diffs, 10 recording pairs. **Unverified rows: none.**

Rendering environment for every capture and recording: T3 Code preview tools, headless Chromium 157.0.0.0 on Linux x86_64; no device emulation; DPR 2; browser zoom/font scaling 100%, root font 16 px. Viewport and theme are stated in each row. Wide PNG/video frames are 2880×2000; narrow frames are 780×1688. Settings and navigation scrollTop=0, main sidebar collapsed. Date frozen to 2026-12-01T12:00:00.000Z on both sides; timers continue. The preview tools expose no reduced-motion emulation control, so the native preference remained no-preference.

Real app dev servers, each from its own detached checkout, installed with vp install and started with T3CODE_DEV_SEED=0 vp run dev. Both databases were created fresh by that revision. The same UI driver used app defaults and registered only a throwaway scratch project; no live database was read or seeded. Each still waited for network quiet and document.fonts.ready, then passed an exact RGB comparison of two screenshots 500 ms apart. All retained stills, diffs, and recording inspection frames were opened and reviewed before upload. Full viewport originals are below; overview sheets are supplemental.

Diff0: any RGB channel difference greater than 0/255 is amplified to solid magenta, including one-level changes. DiffT8: any channel difference greater than 8/255 is magenta. Black means unchanged. All at-rest E1/E3/E4/E5 pairs have zero differing pixels at threshold zero. E2 differs only in the old/new focus-ring outlines (9590 wide / 9878 narrow pixels at zero threshold).

Row documents: [E1.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/86cbca89530b1c68/E1.md), [E2.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3c8b7ac033c76d9e/E2.md), [E3.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f344c4aee5fe2c7a/E3.md), [E4.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ab1311ca024e5907/E4.md), [E5.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b984a4db5b40cb4c/E5.md)

### E1 — Enabled, unselected provider: row padding and switch gap

Before: all five edge/gap clicks leave Codex selected. After: each selects Claude and changes the selected-row highlight and provider editor. Codex is reselected before each target click.

Rendering environment for every capture and recording: T3 Code preview tools, headless Chromium 157.0.0.0 on Linux x86_64; no device emulation; DPR 2; browser zoom/font scaling 100%, root font 16 px. Viewport and theme are stated in each row. Wide PNG/video frames are 2880×2000; narrow frames are 780×1688. Settings and navigation scrollTop=0, main sidebar collapsed. Date frozen to 2026-12-01T12:00:00.000Z on both sides; timers continue. The preview tools expose no reduced-motion emulation control, so the native preference remained no-preference.

| Viewport / theme | Before | After | Diff0 | DiffT8 |
|---|---|---|---|---|
| Revision | [ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | [5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) | [ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) → [5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) | [ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) → [5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) |
| E1 1440×1000 dark | ![E1-WD-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/62a797d358bdda6f/E1-WD-before.png) | ![E1-WD-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/35de61f67433629a/E1-WD-after.png) | ![E1-WD-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/455d1041dd9f6de9/E1-WD-diff0.png) | ![E1-WD-diffT8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dcaf3a80fbf6bef1/E1-WD-diffT8.png) |
| E1 390×844 light | ![E1-NL-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d3c6d9fb7d376021/E1-NL-before.png) | ![E1-NL-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/daf35390d40d9c2b/E1-NL-after.png) | ![E1-NL-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/683db011627e6ef7/E1-NL-diff0.png) | ![E1-NL-diffT8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/12e5d0fba48a73dc/E1-NL-diffT8.png) |
| E1 1440×1000 light | ![E1-WL-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8c3bb381cfa29dac/E1-WL-before.png) | ![E1-WL-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b2343b89fbf81b7f/E1-WL-after.png) | ![E1-WL-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d910e3f54c90f079/E1-WL-diff0.png) | ![E1-WL-diffT8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2b970502ddb8ff4d/E1-WL-diffT8.png) |
| E1 390×844 dark | ![E1-ND-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c1268a1f5c599b16/E1-ND-before.png) | ![E1-ND-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0d5de59ab4cfa7af/E1-ND-after.png) | ![E1-ND-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0ad906f30da42665/E1-ND-diff0.png) | ![E1-ND-diffT8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5783094f03772a36/E1-ND-diffT8.png) |

![E1-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6e7dd24ec526eda8/E1-sheet.png)

**Recording — E1 1440×1000 dark**

Same ordered script on both sides. Timestamps below are driver step starts in seconds from its recording baseline; the red circle appears before each pointer click, and tool/render latency follows. Keyboard E2 uses Tab and has no pointer target.

| Step | Before start (s) | After start (s) |
|---|---:|---:|
| Select Codex to reset | 1.04 | 0.86 |
| Click Claude top padding | 2.87 | 1.92 |
| Select Codex to reset | 5.71 | 4.08 |
| Click Claude left padding | 7.95 | 6.54 |
| Select Codex to reset | 11.55 | 8.78 |
| Click Claude bottom padding | 14.45 | 11.00 |
| Select Codex to reset | 17.53 | 13.11 |
| Click Claude right padding | 20.31 | 15.24 |
| Select Codex to reset | 23.23 | 17.48 |
| Click gap before enable switch | 25.61 | 20.52 |

| Before | After |
|---|---|
| [E1-WD-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/64e774fb31fe7703/E1-WD-before.mp4)<br>[ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | [E1-WD-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f6a913229f7df9d5/E1-WD-after.mp4)<br>[5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) |

**Recording — E1 390×844 light**

Same ordered script on both sides. Timestamps below are driver step starts in seconds from its recording baseline; the red circle appears before each pointer click, and tool/render latency follows. Keyboard E2 uses Tab and has no pointer target.

| Step | Before start (s) | After start (s) |
|---|---:|---:|
| Select Codex to reset | 0.93 | 1.01 |
| Click Claude top padding | 2.35 | 2.13 |
| Select Codex to reset | 4.65 | 4.03 |
| Click Claude left padding | 6.24 | 5.15 |
| Select Codex to reset | 8.64 | 6.94 |
| Click Claude bottom padding | 10.19 | 8.13 |
| Select Codex to reset | 12.54 | 10.38 |
| Click Claude right padding | 14.16 | 11.54 |
| Select Codex to reset | 16.73 | 13.45 |
| Click gap before enable switch | 18.41 | 14.87 |

| Before | After |
|---|---|
| [E1-NL-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b28656c284875ba4/E1-NL-before.mp4)<br>[ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | [E1-NL-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9bfaf34d4a034924/E1-NL-after.mp4)<br>[5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) |


### E2 — Keyboard focus after Tab

The same Tab step focuses Select Claude without selecting it. Before: the focus ring encloses the padded inner column. After: it encloses the full row. After the advisory, Tab reaches Claude's own Enable switch.

Rendering environment for every capture and recording: T3 Code preview tools, headless Chromium 157.0.0.0 on Linux x86_64; no device emulation; DPR 2; browser zoom/font scaling 100%, root font 16 px. Viewport and theme are stated in each row. Wide PNG/video frames are 2880×2000; narrow frames are 780×1688. Settings and navigation scrollTop=0, main sidebar collapsed. Date frozen to 2026-12-01T12:00:00.000Z on both sides; timers continue. The preview tools expose no reduced-motion emulation control, so the native preference remained no-preference.

| Viewport / theme | Before | After | Diff0 | DiffT8 |
|---|---|---|---|---|
| Revision | [ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | [5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) | [ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) → [5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) | [ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) → [5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) |
| E2 1440×1000 dark | ![E2-WD-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6bebbaecda7ece18/E2-WD-before.png) | ![E2-WD-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6bb481d444adc9b5/E2-WD-after.png) | ![E2-WD-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9c9d79c20b0d3f7d/E2-WD-diff0.png) | ![E2-WD-diffT8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a51876f950da068e/E2-WD-diffT8.png) |
| E2 390×844 light | ![E2-NL-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c2ee3e7c39887848/E2-NL-before.png) | ![E2-NL-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/db5fc349c1a9f270/E2-NL-after.png) | ![E2-NL-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3b04fde19d3ed0f2/E2-NL-diff0.png) | ![E2-NL-diffT8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6101289f376d3875/E2-NL-diffT8.png) |
| E2 1440×1000 light | ![E2-WL-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cec7c63b47be0739/E2-WL-before.png) | ![E2-WL-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ba5e1675d422552c/E2-WL-after.png) | ![E2-WL-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/92ff7c926499f671/E2-WL-diff0.png) | ![E2-WL-diffT8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fb4bc8245fada50f/E2-WL-diffT8.png) |
| E2 390×844 dark | ![E2-ND-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/50c23bc461c49a10/E2-ND-before.png) | ![E2-ND-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f193eb520d5593d9/E2-ND-after.png) | ![E2-ND-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d146da6250f8c1a4/E2-ND-diff0.png) | ![E2-ND-diffT8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a14fa642d5830d92/E2-ND-diffT8.png) |

![E2-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bc520f0b73975a50/E2-sheet.png)

**Recording — E2 1440×1000 dark**

Date was frozen before app modules loaded. Both sides assert `Checked 20d ago` before recording and after every step (the label is naturally hidden at narrow widths). Codex remains selected and both providers remain enabled. Real Tab presses visit Claude’s select button, the intervening update advisory, then its independent Enable Claude switch. Each Tab asserts the active element and `:focus-visible`, then waits for a preview snapshot.

Timestamps are driver action starts, in seconds from the recording baseline; tool/render latency follows. Each step finishes its state and paint checks before the next starts.

| Narrated step | Before start (s) | After start (s) |
| --- | ---: | ---: |
| Focus preceding Codex enable switch | 0.77 | 1.15 |
| Press Tab to Claude select button | 1.99 | 3.16 |
| Press Tab to Claude update advisory | 5.10 | 8.60 |
| Press Tab to Claude Enable Claude switch | 9.00 | 13.14 |

| Before | After |
| --- | --- |
| [E2-WD-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b9e9fba52618d223/E2-WD-before.mp4)<br>[ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | [E2-WD-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/64a7773427264cf2/E2-WD-after.mp4)<br>[5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) |

**Recording — E2 390×844 light**

Date was frozen before app modules loaded. Both sides assert `Checked 20d ago` before recording and after every step (the label is naturally hidden at narrow widths). Codex remains selected and both providers remain enabled. Real Tab presses visit Claude’s select button, the intervening update advisory, then its independent Enable Claude switch. Each Tab asserts the active element and `:focus-visible`, then waits for a preview snapshot.

Timestamps are driver action starts, in seconds from the recording baseline; tool/render latency follows. Each step finishes its state and paint checks before the next starts.

| Narrated step | Before start (s) | After start (s) |
| --- | ---: | ---: |
| Focus preceding Codex enable switch | 0.83 | 1.03 |
| Press Tab to Claude select button | 2.94 | 2.75 |
| Press Tab to Claude update advisory | 6.62 | 10.30 |
| Press Tab to Claude Enable Claude switch | 10.41 | 13.67 |

| Before | After |
| --- | --- |
| [E2-NL-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8089da49bb1614a1/E2-NL-before.mp4)<br>[ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | [E2-NL-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5dab39829b7e4248/E2-NL-after.mp4)<br>[5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) |

**Recording — E2 1440×1000 light**

Date was frozen before app modules loaded. Both sides assert `Checked 20d ago` before recording and after every step (the label is naturally hidden at narrow widths). Codex remains selected and both providers remain enabled. Real Tab presses visit Claude’s select button, the intervening update advisory, then its independent Enable Claude switch. Each Tab asserts the active element and `:focus-visible`, then waits for a preview snapshot.

Timestamps are driver action starts, in seconds from the recording baseline; tool/render latency follows. Each step finishes its state and paint checks before the next starts.

| Narrated step | Before start (s) | After start (s) |
| --- | ---: | ---: |
| Focus preceding Codex enable switch | 0.81 | 0.79 |
| Press Tab to Claude select button | 1.80 | 1.88 |
| Press Tab to Claude update advisory | 4.99 | 5.01 |
| Press Tab to Claude Enable Claude switch | 8.71 | 7.48 |

| Before | After |
| --- | --- |
| [E2-WL-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/709cef3187e76b0e/E2-WL-before.mp4)<br>[ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | [E2-WL-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0a9be8c4fe9c9e4e/E2-WL-after.mp4)<br>[5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) |

**Recording — E2 390×844 dark**

Date was frozen before app modules loaded. Both sides assert `Checked 20d ago` before recording and after every step (the label is naturally hidden at narrow widths). Codex remains selected and both providers remain enabled. Real Tab presses visit Claude’s select button, the intervening update advisory, then its independent Enable Claude switch. Each Tab asserts the active element and `:focus-visible`, then waits for a preview snapshot.

Timestamps are driver action starts, in seconds from the recording baseline; tool/render latency follows. Each step finishes its state and paint checks before the next starts.

| Narrated step | Before start (s) | After start (s) |
| --- | ---: | ---: |
| Focus preceding Codex enable switch | 0.82 | 0.84 |
| Press Tab to Claude select button | 1.92 | 1.91 |
| Press Tab to Claude update advisory | 4.33 | 4.32 |
| Press Tab to Claude Enable Claude switch | 6.08 | 5.99 |

| Before | After |
| --- | --- |
| [E2-ND-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e5f3427e205e5049/E2-ND-before.mp4)<br>[ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | [E2-ND-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b16ef9b8928f72b2/E2-ND-after.mp4)<br>[5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) |

### E3 — Disabled, unselected provider

Before: the disabled row edge does nothing. After: it selects disabled Claude without enabling it. After resetting selection to Codex, both switch clicks change Claude enablement while Codex stays selected.

Rendering environment for every capture and recording: T3 Code preview tools, headless Chromium 157.0.0.0 on Linux x86_64; no device emulation; DPR 2; browser zoom/font scaling 100%, root font 16 px. Viewport and theme are stated in each row. Wide PNG/video frames are 2880×2000; narrow frames are 780×1688. Settings and navigation scrollTop=0, main sidebar collapsed. Date frozen to 2026-12-01T12:00:00.000Z on both sides; timers continue. The preview tools expose no reduced-motion emulation control, so the native preference remained no-preference.

| Viewport / theme | Before | After | Diff0 | DiffT8 |
|---|---|---|---|---|
| Revision | [ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | [5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) | [ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) → [5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) | [ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) → [5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) |
| E3 1440×1000 dark | ![E3-WD-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2bff062dc2772aa5/E3-WD-before.png) | ![E3-WD-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/acbbef3e73c89885/E3-WD-after.png) | ![E3-WD-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/49d718a016f00217/E3-WD-diff0.png) | ![E3-WD-diffT8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/87aa8299734b7a0d/E3-WD-diffT8.png) |

![E3-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9aa3bd4f01b28704/E3-sheet.png)

**Recording — E3 1440×1000 dark**

Same ordered script on both sides. Timestamps below are driver step starts in seconds from its recording baseline; the red circle appears before each pointer click, and tool/render latency follows. Keyboard E2 uses Tab and has no pointer target.

| Step | Before start (s) | After start (s) |
|---|---:|---:|
| Click Claude top padding | 0.95 | 0.84 |
| Select Codex to reset | 3.04 | 3.07 |
| Toggle Claude on without selecting | 6.47 | 5.62 |
| Toggle Claude off without selecting | 8.93 | 7.89 |

| Before | After |
|---|---|
| [E3-WD-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ae64adcc8c41176c/E3-WD-before.mp4)<br>[ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | [E3-WD-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/124a39a382e8b9c8/E3-WD-after.mp4)<br>[5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) |


### E4 — Project override, inheritance, reset and 4 px gap

The gap was measured as 4 CSS px, and the click lands at its midpoint. Before: Codex stays selected. After: Claude is selected. On both sides, inheritance opens its layer popover, reset removes the override, and the switch changes enablement while Codex stays selected. WD starts with an explicit off override; NL starts with an explicit on override. The throwaway project is named E4.

Rendering environment for every capture and recording: T3 Code preview tools, headless Chromium 157.0.0.0 on Linux x86_64; no device emulation; DPR 2; browser zoom/font scaling 100%, root font 16 px. Viewport and theme are stated in each row. Wide PNG/video frames are 2880×2000; narrow frames are 780×1688. Settings and navigation scrollTop=0, main sidebar collapsed. Date frozen to 2026-12-01T12:00:00.000Z on both sides; timers continue. The preview tools expose no reduced-motion emulation control, so the native preference remained no-preference.

| Viewport / theme | Before | After | Diff0 | DiffT8 |
|---|---|---|---|---|
| Revision | [ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | [5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) | [ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) → [5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) | [ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) → [5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) |
| E4 1440×1000 dark | ![E4-WD-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8ab505ae9f708dfb/E4-WD-before.png) | ![E4-WD-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fed624edc54bf0a7/E4-WD-after.png) | ![E4-WD-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/835f22f958a63d97/E4-WD-diff0.png) | ![E4-WD-diffT8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/16f3b091df63268c/E4-WD-diffT8.png) |

![E4-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e4309a01e192527c/E4-sheet.png)

**Recording — E4 1440×1000 dark**

The same script starts with an explicit Claude off override. Every step checks both select buttons’ `aria-pressed`, editor heading, row opacity and highlight; a preview snapshot and pixel check wait for the painted state. Every encoded frame was reviewed around the narrated steps. The after recording changes Claude’s editor/highlight/opacity together and restores Codex’s editor/highlight together.

Timestamps are driver action starts, in seconds from the recording baseline; tool/render latency follows. Each step finishes its state and paint checks before the next starts.

| Narrated step | Before start (s) | After start (s) |
| --- | ---: | ---: |
| Click midpoint of reset/switch 4 px gap | 0.79 | 0.77 |
| Select Codex to reset | 5.88 | 5.71 |
| Open inheritance popover | 8.95 | 9.65 |
| Dismiss inheritance popover | 14.64 | 15.51 |
| Reset override | 16.90 | 17.86 |
| Toggle Claude off without selecting | 21.27 | 22.29 |
| Toggle Claude on without selecting | 25.69 | 27.44 |

| Before | After |
| --- | --- |
| [E4-WD-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e5a6b704be8ad2a4/E4-WD-before.mp4)<br>[ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | [E4-WD-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/64cb9528b0f051d9/E4-WD-after.mp4)<br>[5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) |

**Recording — E4 390×844 light**

Same ordered script on both sides. Timestamps below are driver step starts in seconds from its recording baseline; the red circle appears before each pointer click, and tool/render latency follows. Keyboard E2 uses Tab and has no pointer target.

| Step | Before start (s) | After start (s) |
|---|---:|---:|
| Click midpoint of reset/switch 4 px gap | 1.61 | 0.97 |
| Select Codex to reset | 4.66 | 3.48 |
| Open inheritance popover | 7.12 | 4.96 |
| Dismiss inheritance popover | 12.44 | 8.27 |
| Reset override | 14.14 | 9.16 |
| Toggle Claude off without selecting | 17.05 | 11.44 |
| Toggle Claude on without selecting | 19.49 | 13.68 |

| Before | After |
|---|---|
| [E4-NL-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0b7ad0bf93731fa1/E4-NL-before.mp4)<br>[ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | [E4-NL-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1db6131c0107268d/E4-NL-after.mp4)<br>[5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) |

### E5 — Natural version advisory

The isolated servers naturally supplied the Update available advisory. Clicking it opens the update popover and Escape dismisses it while Codex stays selected on both sides. No update was run and no advisory was injected.

Rendering environment for every capture and recording: T3 Code preview tools, headless Chromium 157.0.0.0 on Linux x86_64; no device emulation; DPR 2; browser zoom/font scaling 100%, root font 16 px. Viewport and theme are stated in each row. Wide PNG/video frames are 2880×2000; narrow frames are 780×1688. Settings and navigation scrollTop=0, main sidebar collapsed. Date frozen to 2026-12-01T12:00:00.000Z on both sides; timers continue. The preview tools expose no reduced-motion emulation control, so the native preference remained no-preference.

| Viewport / theme | Before | After | Diff0 | DiffT8 |
|---|---|---|---|---|
| Revision | [ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | [5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) | [ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) → [5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) | [ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) → [5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) |
| E5 1440×1000 dark | ![E5-WD-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bcc44d275c818c54/E5-WD-before.png) | ![E5-WD-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cef4737ba6b44767/E5-WD-after.png) | ![E5-WD-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2012c8d5d504a39a/E5-WD-diff0.png) | ![E5-WD-diffT8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dae3f732d2e23b24/E5-WD-diffT8.png) |

![E5-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6f8e611e4847e92d/E5-sheet.png)

**Recording — E5 1440×1000 dark**

Same ordered script on both sides. Timestamps below are driver step starts in seconds from its recording baseline; the red circle appears before each pointer click, and tool/render latency follows. Keyboard E2 uses Tab and has no pointer target.

| Step | Before start (s) | After start (s) |
|---|---:|---:|
| Open natural update advisory | 0.88 | 0.81 |
| Dismiss advisory | 4.34 | 4.03 |

| Before | After |
|---|---|
| [E5-WD-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1884bc97a4252da0/E5-WD-before.mp4)<br>[ac5e48c612](https://git.cafe/pingdotgg/t3code/commit/ac5e48c612061895511f549d363a2186a6a005ea) | [E5-WD-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4fb9873a72212d32/E5-WD-after.mp4)<br>[5449da173a](https://git.cafe/pingdotgg/t3code/commit/5449da173ac11ec3c86f5786d265810d4eaac211) |


### Scripts and supporting files

[capture-driver.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a74c4c7087eda07d/capture-driver.js)
[focus-recording-driver.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/af56973e2dcf25f6/focus-recording-driver.js)
[preview-driver.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a90b658bfe4eded7/preview-driver.js)
[project-recording-driver.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8764a0927d763acc/project-recording-driver.js)
[recording-driver.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5b1ac4effbcbbc22/recording-driver.js)
[seed-driver.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ae7199ed22041daa/seed-driver.js)

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

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

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

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

[diff-stats.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ee11c55d84ea9360/diff-stats.json)

[settled-and-review-frames.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/15c3426360c13e6b/settled-and-review-frames.zip)

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

FRICTION:
tool | agent-browser binary absent; used the explicitly permitted preview tools | provision the CLI or document preview as the primary path
tool | preview tools have no reduced-motion emulation control | expose media-preference emulation
tool | initial blank-tab and numeric-loopback navigation failed; localhost worked | use the logged localhost dev URL directly
runbook | relative time and retained sidebar/background state caused rejected early frames | freeze Date and normalize layout before capture
brief | the long synthetic project name clipped the narrow project selector | seed a short project display name; E4 was retaken as E4
