## Evidence

**R3/P3's “old PR must never show next to the new branch” expectation is not met on the head.** Its settled state is correct and the metadata event clears the derived PR, but the optimistic details-panel branch shows the old PR for approximately 308 ms before the server event arrives. The full frame at playback 00:02.77 and DOM observations below show it. This also occurs on the baseline; this capture does not establish it as a new regression.

For [#33293](https://git.cafe/pingdotgg/t3code/pull/33293), before [cec8d73a1f](https://git.cafe/pingdotgg/t3code/commit/cec8d73a1f0fd3bd9a48df88640436e73a04afa3), after [ae9aad89e1](https://git.cafe/pingdotgg/t3code/commit/ae9aad89e1532694ae52910ec25b1142db23725c). **6/6 required claim rows captured**: R1/P1, R2/P2, R3/P3, combined into three full-surface pairs and six recordings. R1/P1 passes; R2/P2 passes its revised default-branch guard; R3/P3 settles correctly but fails the never-stale visual expectation.

Environment for every capture: T3 Browser panel, Chromium 157 on Linux; no device emulation; 1440×900 CSS pixels, DPR 2 (2880×1800 PNG/video), 100% browser/font scale, dark theme, UTC. Same sidebar/details widths and bottom scroll per row. Pointer parked on blank header at (1100,26) for stills.

Each revision ran its real dev build against its own fresh database (`T3CODE_DEV_SEED=0`, explicit scratch home). Synthetic project-folder threads used the same disposable [zact repository](https://github.com/pingdotgg/zact), no worktree, no explicit PR links. Public [#2](https://github.com/pingdotgg/zact/pull/2) (`theo/edge`) and [#12](https://github.com/pingdotgg/zact/pull/12) (`theo/update-13.4.0`) were confirmed open; default branch is `main`. See [open-prs.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/22b8a127ec58eafc/open-prs.json).

R1/R2 run the free Replay (dev) provider through normal orchestration. External Git switches are real; replayed commands, edits, and “12 passed” output are simulated and were not executed tests. No paid-provider behavior is claimed. A completed run, ready checkpoint and succeeded `checkpoint.capture` effect were observed; the endpoint also waits for PR discovery and Git action/status revalidation.

### Comparable stills and normalization

Fonts loaded, zero active DOM animations, no loading/syncing state, and two frames at least 500 ms apart were required before selected stills. Screenshots/diffs and recording first frames/contact sheets were opened and inspected. The Browser panel has no reduced-motion emulation control; the browser reported `prefers-reduced-motion: false`. No animation was active in the selected frames. We waited for resource activity and status fetches to settle; the tool provides no formal network-idle control.

Endpoint recaptures revisited completed threads, archived/unarchived rows to keep one visible, restored actual Git to the scenario destination, moved the pointer off controls, and scrolled to the same bottom position. R1/R2 target metadata was never overwritten to manufacture the result. Baseline R3 was retaken through the same picker after restoring its starting branch, without an additional turn, and recorded through the periodic PR refresh.

Server durations and relative sidebar ages cannot be identical. Identical opaque `#3f3f46` boxes mask timing text on both sides, with no other edits. Coordinates are CSS pixels, exclusive right/bottom bounds; multiply by 2 for exported PNG pixels:

| Pair | Timing masks (left,top,right,bottom) |
|---|---|
| R1/P1 | Sidebar age `(209,111,238,129)`; “Worked for” duration `(383,80,489,105)` |
| R2/P2 | Sidebar age `(209,111,238,129)` |
| R3/P3 | Sidebar age `(209,111,238,129)`; “Worked for” duration `(383,170,489,195)` |

[masks.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e872250e7327e194/masks.json) records exact masks and raw source filenames. Recordings are unmasked and untrimmed; only container metadata was removed. Diff0 is channel-wise absolute difference amplified 16×, with AE measured at zero threshold. DiffT uses ImageMagick `compare -metric AE -fuzz 5%`; red marks above-threshold differences. Each full still has 5,184,000 pixels.

### R1/P1 — first turn, feature → feature — 1440×900 dark

Steps and timestamps (2026-11-10 UTC wall clock; independent before/after runs):

| Step | Before | After |
|---|---|---|
| Start recording with old branch / old PR rendered | 09:12:47.279 | 09:19:49.378 |
| Send first Replay turn; run becomes running | 09:12:47.483 | 09:19:49.921 |
| Replay approval pending | 09:12:49.637 | 09:19:51.917 |
| Driver switches actual Git to `theo/update-13.4.0` | 09:12:58.142 | 09:20:04.882 |
| Accept approval | 09:12:58.217 | 09:20:04.967 |
| Run completed / checkpoint ready | 09:13:01.512 | 09:20:08.448 |
| Finalization effect succeeded | 09:13:02.179 | 09:20:09.383 |
| Stored branch adoption | None | 09:20:09.376; PR cleared in same event |
| New branch PR discovery persisted | None; retains old PR | 09:20:11.046 |

Recordings: [r1-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/888d7da7adbe2cb2/r1-before.mp4) (48.76 s), [r1-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/46a261ebfb428bad/r1-after.mp4) (36.24 s).

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| ![r1-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/79cd435adeb395aa/r1-before.png)<br>[cec8d73a1f](https://git.cafe/pingdotgg/t3code/commit/cec8d73a1f0fd3bd9a48df88640436e73a04afa3) | ![r1-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4dc4c0c6a01d787f/r1-after.png)<br>[ae9aad89e1](https://git.cafe/pingdotgg/t3code/commit/ae9aad89e1532694ae52910ec25b1142db23725c) | ![r1-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ed0bb1713049e81d/r1-diff0.png)<br>[cec8d73a1f](https://git.cafe/pingdotgg/t3code/commit/cec8d73a1f0fd3bd9a48df88640436e73a04afa3) → [ae9aad89e1](https://git.cafe/pingdotgg/t3code/commit/ae9aad89e1532694ae52910ec25b1142db23725c) | ![r1-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3a788ae2787d03a1/r1-diffT.png)<br>[cec8d73a1f](https://git.cafe/pingdotgg/t3code/commit/cec8d73a1f0fd3bd9a48df88640436e73a04afa3) → [ae9aad89e1](https://git.cafe/pingdotgg/t3code/commit/ae9aad89e1532694ae52910ec25b1142db23725c) |

Final server state: before `branch="theo/edge"`, `branchPullRequest=[#2](https://github.com/pingdotgg/zact/pull/2)`; after `branch="theo/update-13.4.0"`, `branchPullRequest=[#12](https://github.com/pingdotgg/zact/pull/12)`. Actual Git is `theo/update-13.4.0` on both. Both have `worktreePath=null`, `pullRequests=[]`. Sources: [r1-before-matched-transcript.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4e6b06edfb6929bc/r1-before-matched-transcript.json), [r1-after-transcript.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a24be97be53d9021/r1-after-transcript.json).

Diff0: **10,759 pixels**; DiffT: **10,337 pixels**. Outside the exact timing masks, differences are confined to stored branch/sidebar PR badge and details PR presentation. Sheet: [r1-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e67023c46d7e2fb3/r1-sheet.png).

### R2/P2 — later turn, feature → default guard — 1440×900 dark

A completed warmup turn on `theo/update-13.4.0` established this as a later turn before recording (before 09:13:52.600–09:14:05.663, after 09:20:25.879–09:20:45.238). Both started recording with rendered code and feature PR details.

| Step (UTC) | Before | After |
|---|---|---|
| Start recording | 09:14:59.246 | 09:21:28.788 |
| Send second Replay turn; running | 09:14:59.297 | 09:21:28.912 |
| Replay approval pending | 09:15:01.243 | 09:21:30.910 |
| Driver switches actual Git to default `main` | 09:15:08.301 | 09:21:41.410 |
| Accept approval | 09:15:08.369 | 09:21:41.849 |
| Completed / checkpoint ready | 09:15:11.609 | 09:21:45.287 |
| Finalization effect succeeded | 09:15:12.198 | 09:21:46.908 |
| Stored branch adoption | None | None, as required by the revised guard |

Recordings: [r2-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f9250c4b3db0ac51/r2-before.mp4) (30.08 s), [r2-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1efee73d75bd9b6b/r2-after.mp4) (30.94 s).

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| ![r2-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e3b316c86273f1d0/r2-before.png)<br>[cec8d73a1f](https://git.cafe/pingdotgg/t3code/commit/cec8d73a1f0fd3bd9a48df88640436e73a04afa3) | ![r2-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f42ffa7e6aede6a1/r2-after.png)<br>[ae9aad89e1](https://git.cafe/pingdotgg/t3code/commit/ae9aad89e1532694ae52910ec25b1142db23725c) | ![r2-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/eec2b1448264a063/r2-diff0.png)<br>[cec8d73a1f](https://git.cafe/pingdotgg/t3code/commit/cec8d73a1f0fd3bd9a48df88640436e73a04afa3) → [ae9aad89e1](https://git.cafe/pingdotgg/t3code/commit/ae9aad89e1532694ae52910ec25b1142db23725c) | ![r2-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7d23a8143b1ad488/r2-diffT.png)<br>[cec8d73a1f](https://git.cafe/pingdotgg/t3code/commit/cec8d73a1f0fd3bd9a48df88640436e73a04afa3) → [ae9aad89e1](https://git.cafe/pingdotgg/t3code/commit/ae9aad89e1532694ae52910ec25b1142db23725c) |

Final server state on both: `branch="theo/update-13.4.0"`, `branchPullRequest=[#12](https://github.com/pingdotgg/zact/pull/12)`, `worktreePath=null`, `pullRequests=[]`; actual Git `main`. The sidebar retains the feature and PR while the live-Git-first details selector shows `main`. Sources: [r2-before-transcript.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ed345e83a84eb9c6/r2-before-transcript.json), [r2-after-transcript.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6ec77fcae4cd8293/r2-after-transcript.json).

Diff0: **0 pixels**; DiffT: **0 pixels**, after the documented sidebar-age mask. Sheet: [r2-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5e8e4fd825918fc0/r2-sheet.png).

### R3/P3 — app branch picker on a started thread — 1440×900 dark

Each thread already completed a warmup. Start with `theo/edge` and [#2](https://github.com/pingdotgg/zact/pull/2); open the real details-panel branch combobox and choose `theo/update-13.4.0`. The picker dispatches a metadata change for this started project-folder thread. Wait through [#12](https://github.com/pingdotgg/zact/pull/12) discovery.

| Step (UTC) | Before (selected retake) | After |
|---|---|---|
| Start recording fully rendered edge / [#2](https://github.com/pingdotgg/zact/pull/2) | 09:24:22.383 | 09:22:37.975 |
| Picker shows optimistic new branch with old PR [#2](https://github.com/pingdotgg/zact/pull/2) | 09:24:25.316 | 09:22:39.724 |
| Details selector briefly returns to edge | 09:24:25.660 | 09:22:40.032 |
| Metadata event commits new branch | 09:24:25.782, retains [#2](https://github.com/pingdotgg/zact/pull/2) | 09:22:40.104, PR null |
| Sidebar observes new branch | 09:24:26.157, [#2](https://github.com/pingdotgg/zact/pull/2) | 09:22:40.356, no PR |
| Details observes new branch again | 09:24:26.514, [#2](https://github.com/pingdotgg/zact/pull/2) | 09:22:40.769, no PR |
| [#12](https://github.com/pingdotgg/zact/pull/12) persisted | 09:25:06.169 | 09:22:40.676 |
| Both visible locations render [#12](https://github.com/pingdotgg/zact/pull/12) | 09:25:06.344 | 09:22:40.948 |

Recordings: [r3-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d45ed030564cc124/r3-before.mp4) (96.35 s, includes the periodic refresh), [r3-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1f36b5c2261c85f5/r3-after.mp4) (24.08 s). Wall-clock tool start and encoded playback origin differ slightly; use the explicitly verified 00:02.77 head frame for the transient.

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| ![r3-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e8096c782d3616a0/r3-before.png)<br>[cec8d73a1f](https://git.cafe/pingdotgg/t3code/commit/cec8d73a1f0fd3bd9a48df88640436e73a04afa3) | ![r3-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/eda6a466b8bc7b21/r3-after.png)<br>[ae9aad89e1](https://git.cafe/pingdotgg/t3code/commit/ae9aad89e1532694ae52910ec25b1142db23725c) | ![r3-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1f99f1e14f173a8d/r3-diff0.png)<br>[cec8d73a1f](https://git.cafe/pingdotgg/t3code/commit/cec8d73a1f0fd3bd9a48df88640436e73a04afa3) → [ae9aad89e1](https://git.cafe/pingdotgg/t3code/commit/ae9aad89e1532694ae52910ec25b1142db23725c) | ![r3-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/566cfe79004ed538/r3-diffT.png)<br>[cec8d73a1f](https://git.cafe/pingdotgg/t3code/commit/cec8d73a1f0fd3bd9a48df88640436e73a04afa3) → [ae9aad89e1](https://git.cafe/pingdotgg/t3code/commit/ae9aad89e1532694ae52910ec25b1142db23725c) |

Final server state on both: `branch="theo/update-13.4.0"`, `branchPullRequest=[#12](https://github.com/pingdotgg/zact/pull/12)`, `worktreePath=null`, `pullRequests=[]`; actual Git `theo/update-13.4.0`. Sources: [r3-before-settled-transcript.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8693ed45983d2b5d/r3-before-settled-transcript.json), [r3-after-transcript.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/921aa913b782a4ea/r3-after-transcript.json). DOM sequence: [r3-before-retake-picker.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/59d172da50911455/r3-before-retake-picker.json), [r3-after-picker.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d22ab2137970b5c1/r3-after-picker.json).

**Never-stale visual expectation: FAIL.** The head's optimistic details selector shows the new branch beside [#2](https://github.com/pingdotgg/zact/pull/2) from 09:22:39.724 to 09:22:40.032, before the metadata commit clears the PR. This is approximately 308 ms by observer timestamps. The head event correctly has `branchPullRequest=null`, but that does not prevent this earlier client rendering. Full-surface frame extracted at playback 00:02.77:

![r3-after-stale-00-02.77.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/917af39857b24f34/r3-after-stale-00-02.77.png)

Supplemental crop: [r3-after-transition-crop.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6150e83e1106365c/r3-after-transition-crop.png). Final endpoint Diff0: **0 pixels**; DiffT: **0 pixels**, after timing masks. Sheet: [r3-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/de46c1815165d7b3/r3-sheet.png).

### What else changed

- R1 endpoint: stored sidebar branch text and its truncation, sidebar PR number, details PR title/number, and the PR action (`Merge`, blue → `Resolve`, red). The action/color is additional visible PR-data fallout beyond the branch label. The live branch selector already shows the destination on both revisions.
- R2 endpoint: zero visible differences outside the documented age mask.
- R3 endpoint: zero visible differences outside documented age/duration masks. During transition, both revisions optimistically display new branch + old PR; the head then clears the PR before rediscovery, while the baseline retains it until periodic refresh.
- Raw stills and videos have different relative ages and “Worked for” durations; only selected stills receive timing masks. Message timestamps are not visible with the matched pointer position. No content, branch, PR, controls or badges are masked.
- Recordings include replay streaming/approval/working counters, different idle lengths, and transient Git status/action revalidation (`Push` → `Commit`) on both. The final comparable frames wait for `Commit`. Replayed test output is fixture content, not verification.

### Rebuild scripts and raw evidence

Run [seed.sh](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a968d338f980b41d/seed.sh) for a new timestamped scratch clone and follow its per-row instructions. Start each revision with [launch.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/115b60e2f7480abb/launch.py); inject [rpc-driver.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c6d3890a4c45e9c6/rpc-driver.js), [project-driver.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0201ad0b8b47f540/project-driver.js), [scenario-driver.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/57bb40fe5fd9e0ab/scenario-driver.js) into the paired Browser panel. External switching/logging: [switch.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a119668341df5e11/switch.py). Read-only synthetic projection/event extraction: [transcript.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e01425a055bbb393/transcript.py). Endpoint preparation: [capture-endpoint.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/55c27b718a6256a3/capture-endpoint.js). Picker observations: [picker-observer.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7c518a09ab7d4760/picker-observer.js). Image processing: [normalize.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0d7c92fa63606c5a/normalize.py), [make-diffs.sh](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ccb14efe388f8a78/make-diffs.sh), [make-sheets.sh](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f83d521517b64563/make-sheets.sh). Video metadata stripping, first frames and contact sheets: [videos.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/730eb188783c2d42/videos.py). Upload/report builder: [publish.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a926df0fac7c196e/publish.py).

Reused reference scripts **not executed** in this recapture: [freeze-clock.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/06e1a9bb9dab314b/freeze-clock.js), [retake-r2.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/57f5bd8837e20d92/retake-r2.js). No browser clock override was used; timing normalization is exclusively the declared masks.

Raw selected stills: [r1-before-matched-raw.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2334bc2c200344c6/r1-before-matched-raw.png), [r1-after-matched-raw.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b238c757f3710372/r1-after-matched-raw.png), [r2-before-final-raw.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2cd3aaefc355a33a/r2-before-final-raw.png), [r2-after-raw.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/aafddf0090f29dd9/r2-after-raw.png), [r3-before-matched-raw.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/435487455dd3fa18/r3-before-matched-raw.png), [r3-after-raw.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a1a8bfde55383dea/r3-after-raw.png).

Recording first-frame inspection: [first-frames-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6f1dc484da5972f1/first-frames-sheet.png). Every-5-second contact sheets: [r1-before-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9047d840fb8c7efe/r1-before-contact.png), [r1-after-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/867e6e8c9736f28a/r1-after-contact.png), [r2-before-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7e2ae5c4fa157cb0/r2-before-contact.png), [r2-after-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7f5b750292bc4fb7/r2-after-contact.png), [r3-before-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2735c22f8ddfe11e/r3-before-contact.png), [r3-after-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2d5cbca17c6afd12/r3-after-contact.png). Metadata: [recording-metadata.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a5453fd315f0fd1c/recording-metadata.json). Actual external switches: [switches.jsonl](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/afcf6e172256fb5c/switches.jsonl). All uploaded artifact links, pasted verbatim from `ghdrop upload -m`: [uploads.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/38fb7eeb39312cb4/uploads.md).

### Coverage and cleanup

Required: R1, P1, R2, P2, R3, P3 all captured. Supplemental V3 details/picker is covered by the same surface and interaction; the composer strip variant was not separately exercised. Supplemental V1 folder multiline, V2 slim/folder-single/search/hover, and V4 narrow/long-branch/light are unverified because time was spent on required recaptures and transition inspection. G1–G4 are not visual gates and were not executed in this capture pass. No mobile, Electron shell/IPC, relay/tunnel, multi-environment or paid-provider behavior was verified. No test suite was run for this evidence-only task.

Both captured process groups were stopped, all four dev ports were confirmed closed, the owned Browser tab was closed, and the baseline worktree was removed. The lead checkout remains clean at [ae9aad89e1](https://git.cafe/pingdotgg/t3code/commit/ae9aad89e1532694ae52910ec25b1142db23725c); no PR body, tracked file, commit, or forge state was changed. Synthetic scratch/raw logs remain private locally; no database, credential, pairing URL, arbitrary dump, or runtime identifier is uploaded. Cleanup signal transcript: [cleanup.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/03cae6c12e47945d/cleanup.json).

FRICTION:

tool | Preview evaluation rejects surrounding whitespace/top-level await and stale long-page snapshot refs | Trimmed async wrappers and inspected CSS selectors avoided repeat failures.

runbook | Two identical frames 500 ms apart can precede a delayed Git status change | Require the Git action/status milestone too; baseline R2 was retaken after it settled.

brief | Head R3 violates the “never old PR next to new branch” expectation despite correct persisted clearing | Cover optimistic client state in addition to committed metadata.

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