# Issue 8963 — evidence index v2

Issue [#8963](https://git.cafe/pingdotgg/t3code/issues/8963). Implementation base [8d3b061121](https://git.cafe/pingdotgg/t3code/commit/8d3b061121), tested head [476597e33b](https://git.cafe/pingdotgg/t3code/commit/476597e33b). No PR or public forge write. Reusable synthetic fixture/replay/probe committed locally as [05169b8e48](https://git.cafe/pingdotgg/t3code/commit/05169b8e4802ec46b6f2e86dbe31a8ae3da74814) (unpublished; link becomes available after a future authorized push). Implementation files unchanged. Correction fixture-only commit [14549e55d0](https://git.cafe/pingdotgg/t3code/commit/14549e55d020d0b79e16248402cd97f1bf5c76e6) is local/unpublished. Production remains [476597e33b](https://git.cafe/pingdotgg/t3code/commit/476597e33b); original fixture provenance remains [05169b8e48](https://git.cafe/pingdotgg/t3code/commit/05169b8e4802ec46b6f2e86dbe31a8ae3da74814).

8/8 matrix rows represented; **4/8 real behavioral rows verified with stated setup deviations (R1, R3, R5, R8), 2/8 partial real captures (R2, R7), 2/8 hook-probe-only (R4, R6)**. Full R2/R4/R6/R7 requirements remain unverified. There are 21 continuous recordings and 23 image pairs with two diffs each in this index. Superseded/discarded attempts are not evidence below.

## Environment and capture controls

Linux x86_64, T3 Code Browser panel only; desktop UA `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36`. DPR 2. Body/editor computed family `-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif`; editor 14px; `document.fonts` has no registered webfonts. Hook probe textareas deliberately use 16px monospace and are visibly labeled.

CSS viewports are **1440×900** and **390×900**, measured with `innerWidth/innerHeight`; `preview_resize` independently returned the same viewport values. Desktop recordings are **2880×1800**, narrow recordings **780×1800** (ffprobe). The Browser panel saves desktop screenshots at **1280×800**, a whole-surface scaled export; narrow screenshots are **780×1800**. No screenshot was resized or cropped for these comparisons. The snapshot API exposes no output-resolution option. Raster dimensions are listed per capture below; 1280×800 is never represented as a 1440px PNG.

HEAD web7602/server15642 and BASE web6707/server14747 are separate empty synthetic environments supplied by runtime lead. Project `Proof workspace` uses `/tmp/issue8963-proof-project` (README only). B/C each have synthetic provider messages. E2 is the genuine connected BASE environment, linked through HEAD Connections UI. No copied personal data, pairing tokens, or credentials are in the media. Codex GPT-6-Astra, Medium, Full access, intended machine-local provider/hub configuration.

R1 uses a **fresh thread per capture**, identical fixture prompt/title/answer, top-of-thread scroll, matching theme and CSS viewport. Browser Date/Date.now is frozen at `2026-10-22T12:00:00Z` during each R1 clip and restored afterward. Server creation times and provider wording are not rewritten. Sidebar history accumulated differently between environments, so the screenshots are behavioral comparisons, not a claim of pixel identity outside the composer. Other rows are head-only live interaction captures with real advancing clocks; elapsed labels and scroll changes are visible and are included in the diffs.

**R1 setup deviation, approved by runtime lead:** final R1 uses native blocking `request_user_input` in legacy Plan mode, with a real `live` response capability, instead of an async question followed by sleep. Each final request was checked as the only request in its fresh thread and persisted as `cancelled` after Stop. R3 has its original async/queue clip plus a fresh native blocking repeat to make the revisit visible. R5 uses real native blocking requests. None of these are projection fixtures.

**Narrow Stop deviation, approved by runtime lead:** at 390×900 the pending-question footer hides Stop (DOM button rect 0×0) on base and head. Stop is clicked in a second 1440-wide Browser-panel client while the narrow editor remains alive. These clips prove narrow-client recovery from **remote Stop**, not a direct narrow Stop affordance. No hidden element was forced.

## Coverage and limits

| Row | Result | Limits |
|---|---|---|
| R1 | Real base loses answer; real head restores it exactly and remains editable in all four combinations. | Native-live setup deviation; narrow remote Stop. |
| R2 | Real three-question navigation, long text, prior ordinary draft and existing structured B chip retained on cancellation. | Question editor is literal: its @ picker does not open, so question B/C chips/removing C and their transfer are unverified. The original clip establishes the existing ordinary B chip only; the v2 fresh real repeat establishes restored-END scrolling and A→B→A without duplicate append. Question-context transfer remains unverified. |
| R3 | Real queue edit remains a temporary destination; ordinary draft receives answer; queue unchanged; fresh repeat returns A with exact answer once. | Narrow remote Stop. Original async clip ends with sidebar overlay; fresh native repeat supplies visible revisit. |
| R4 | Hook probe carries only Seed edited. | Native tool schemas lack initialAnswer; controlled projection, native textarea, real hook/store. Full ChatView/provider behavior unverified. |
| R5 | Real submit, pending navigation, separate fresh blank cancellation all show expected results. | Three distinct real requests; generated thread titles differ from Proof A in this row. |
| R6 | Hook probe preserves both custom drafts in request order. | Real app renders only first pending request, no request navigator; synthetic request ordering controls in probe. The light v2 hook unmount/remount preserves the ordered draft exactly once. Full ChatView and real multi-request navigation/revisit remain unverified. |
| R7 | Fresh real A/B and genuine E1/E2 isolation: first client stays B during second-client Stop; B/E2 remain untouched, A recovers once and remains once on revisit. | Controlled null-detail/loading and same-ID cross-environment collision not exercised; full row partial. |
| R8 | Real backend recovery expires live request without tab reload; Expired answer restored. Later visible A→B→A repeat retains it once. | Revisit supplement was recorded later after development HMR; it is not an unbroken continuation of the restart clip. |

macOS Electron shell/IPC is **unverified** on Linux. Web/shared React behavior is observed. Native mobile is unaffected by these two changed web files; no native mobile behavior is claimed. Other providers, tunnel transport, attachment preservation, and independent Settings/command-palette behavior are not inferred from these clips.

## Persisted status evidence

[verified-request-statuses.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f40c440721ee97de/verified-request-statuses.json)

[fresh-blank-status.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fc66f4a4007b0b92/fresh-blank-status.json)

[fresh-r3-status.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f96eea97405e2823/fresh-r3-status.json)

[R8-persisted-status.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/92c34e5b2e850f04/R8-persisted-status.json)

R8 exact transcript: runtime request `runtime-request:provider:codex:provider-turn:provider-turn%3Aprovider%3Acodex%3Anative-turn%3A01a1635c-968c-7a93-9944-cc276f9be273:native-request:call_687c9350dbb54399b16b2ccf0a69e1c0:fa6aa4bd-7664-4b4d-8b0c-86edb760879e`; `status=expired`; `resolvedAt=2026-10-22T11:27:55.340Z`; response capability `not_resumable`, reason **The server restarted before this runtime request was resolved.** Runtime lead reported `closedRequests=1`, Vite PID338198 stayed alive. Browser `performance.timeOrigin=1792668159807.9` before and after recovery; same tab; exact restored ordinary draft `Expired answer`. Later HMR is outside this preservation claim.

## Scripted steps, timestamps, and recordings

Times below are approximate offsets verified against sampled clip frames; clips are continuous, without cuts across a transition. Each recording is a plain link. Still images are supplementary and do not replace the interaction evidence.

### R1-base-1440-dark

CSS 1440×900, dark; video 2880×1800; duration 10.49s.

0:00 pending real native question, empty ordinary draft; ~0:00–0:03 type Purple please. Keep this unsent answer.; ~0:03–0:05 click visible Stop in the recorded client; ~0:06 settled ordinary composer is empty and displays its normal placeholder.

[R1-base-1440-dark-video.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d7f0e7de00615a6c/R1-base-1440-dark-video.mp4)

Before — exported PNG 1280×800:

![R1-base-1440-dark-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4089af12edc5fec0/R1-base-1440-dark-before.png)

After — exported PNG 1280×800:

![R1-base-1440-dark-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/338fec0b3b2cbe87/R1-base-1440-dark-after.png)

### R1-base-1440-light

CSS 1440×900, light; video 2880×1800; duration 8.60s.

0:00 pending real native question, empty ordinary draft; ~0:00–0:03 type Purple please. Keep this unsent answer.; ~0:03–0:05 click visible Stop in the recorded client; ~0:06 settled ordinary composer is empty and displays its normal placeholder.

[R1-base-1440-light-video.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f837343e29a57601/R1-base-1440-light-video.mp4)

Before — exported PNG 1280×800:

![R1-base-1440-light-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2e16fb3826514931/R1-base-1440-light-before.png)

After — exported PNG 1280×800:

![R1-base-1440-light-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a3ccbbbefc9455f7/R1-base-1440-light-after.png)

### R1-base-390-dark-remote-stop

CSS 390×900, dark; video 780×1800; duration 9.35s.

0:00 pending real native question, empty ordinary draft; ~0:00–0:03 type Purple please. Keep this unsent answer.; ~0:03–0:05 remote Stop in paired 1440 client; ~0:06 settled ordinary composer is empty and displays its normal placeholder.

[R1-base-390-dark-remote-stop-video.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6f6e77f5b813d2a2/R1-base-390-dark-remote-stop-video.mp4)

Before — exported PNG 780×1800:

![R1-base-390-dark-remote-stop-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5ac1e3a924c9fafc/R1-base-390-dark-remote-stop-before.png)

After — exported PNG 780×1800:

![R1-base-390-dark-remote-stop-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a04752714126655e/R1-base-390-dark-remote-stop-after.png)

### R1-base-390-light-remote-stop

CSS 390×900, light; video 780×1800; duration 9.16s.

0:00 pending real native question, empty ordinary draft; ~0:00–0:03 type Purple please. Keep this unsent answer.; ~0:03–0:05 remote Stop in paired 1440 client; ~0:06 settled ordinary composer is empty and displays its normal placeholder.

[R1-base-390-light-remote-stop-video.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6d2fc846073f4383/R1-base-390-light-remote-stop-video.mp4)

Before — exported PNG 780×1800:

![R1-base-390-light-remote-stop-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3c5e2fd25277085d/R1-base-390-light-remote-stop-before.png)

After — exported PNG 780×1800:

![R1-base-390-light-remote-stop-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b2c8bd3a1c1cde30/R1-base-390-light-remote-stop-after.png)

### R1-head-1440-dark

CSS 1440×900, dark; video 2880×1800; duration 10.58s.

0:00 pending real native question, empty ordinary draft; ~0:00–0:03 type Purple please. Keep this unsent answer.; ~0:03–0:05 click visible Stop in the recorded client; ~0:06 settled ordinary composer retains exact answer; final seconds replace it with the same answer plus Edited. to demonstrate editing.

[R1-head-1440-dark-video.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/57cba379b94e8d99/R1-head-1440-dark-video.mp4)

Before — exported PNG 1280×800:

![R1-head-1440-dark-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dca84449557c947c/R1-head-1440-dark-before.png)

After — exported PNG 1280×800:

![R1-head-1440-dark-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/20325b256d6bcfbd/R1-head-1440-dark-after.png)

### R1-head-1440-light

CSS 1440×900, light; video 2880×1800; duration 10.90s.

0:00 pending real native question, empty ordinary draft; ~0:00–0:03 type Purple please. Keep this unsent answer.; ~0:03–0:05 click visible Stop in the recorded client; ~0:06 settled ordinary composer retains exact answer; final seconds replace it with the same answer plus Edited. to demonstrate editing.

[R1-head-1440-light-video.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e8339375a6e03de1/R1-head-1440-light-video.mp4)

Before — exported PNG 1280×800:

![R1-head-1440-light-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/409478266b6d1d33/R1-head-1440-light-before.png)

After — exported PNG 1280×800:

![R1-head-1440-light-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/21bb6b3fe751fc3b/R1-head-1440-light-after.png)

### R1-head-390-dark-remote-stop

CSS 390×900, dark; video 780×1800; duration 9.87s.

0:00 pending real native question, empty ordinary draft; ~0:00–0:03 type Purple please. Keep this unsent answer.; ~0:03–0:05 remote Stop in paired 1440 client; ~0:06 settled ordinary composer retains exact answer; final seconds replace it with the same answer plus Edited. to demonstrate editing.

[R1-head-390-dark-remote-stop-video.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/072d41b8173039aa/R1-head-390-dark-remote-stop-video.mp4)

Before — exported PNG 780×1800:

![R1-head-390-dark-remote-stop-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/df23b9abaff819f6/R1-head-390-dark-remote-stop-before.png)

After — exported PNG 780×1800:

![R1-head-390-dark-remote-stop-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/265f1a7cf84d0b73/R1-head-390-dark-remote-stop-after.png)

### R1-head-390-light-remote-stop

CSS 390×900, light; video 780×1800; duration 9.05s.

0:00 pending real native question, empty ordinary draft; ~0:00–0:03 type Purple please. Keep this unsent answer.; ~0:03–0:05 remote Stop in paired 1440 client; ~0:06 settled ordinary composer retains exact answer; final seconds replace it with the same answer plus Edited. to demonstrate editing.

[R1-head-390-light-remote-stop-video.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e21b30941eeb2c31/R1-head-390-light-remote-stop-video.mp4)

Before — exported PNG 780×1800:

![R1-head-390-light-remote-stop-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3163a80a13e598a0/R1-head-390-light-remote-stop-before.png)

After — exported PNG 780×1800:

![R1-head-390-light-remote-stop-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/730573ac5dd5b23b/R1-head-390-light-remote-stop-after.png)

### R2-head-partial-no-question-chips

CSS 390×900, light; video 780×1800; duration 93.87s.

0:00 running fixture; ~0:15 prior Earlier draft plus structured B chip; ~0:30 Q1 First answer; ~0:40 Q2 30-line answer; ~0:45–1:30 question navigation, long-answer scrolling and attempted @ picker (literal text, not a chip); ~1:32 remote Stop; end ordinary draft with prior B and ordered answers. The unsuccessful literal @ attempts were removed before cancellation. Question-editor chip cases remain unverified; use the v2 repeat below for restored END and revisit. This retained original clip is supplementary evidence of the existing ordinary B chip, not evidence of restored-END/revisit.

[R2-head-partial-no-question-chips-video.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/57ebd7f457618174/R2-head-partial-no-question-chips-video.mp4)

After — exported PNG 780×1800:

![R2-head-partial-no-question-chips-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9fb82cdbf144a739/R2-head-partial-no-question-chips-after.png)

### R3-head-390-dark-remote-stop

CSS 390×900, dark; video 780×1800; duration 42.14s.

0:00 queued edit Queued original; ~0:25 question arrives; ~0:34 type Answer belongs to Proof A; ~0:36 remote Stop; ~0:37 temporary queued edit still Queued original; ~0:38 cancel edit reveals Earlier draft + blank line + answer, queue unchanged; ~0:39–end navigation sidebar overlays the editor. Use fresh repeat below for visible revisit.

[R3-head-390-dark-remote-stop-video.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/72496826ea967c7a/R3-head-390-dark-remote-stop-video.mp4)

Before — exported PNG 780×1800:

![R3-head-390-dark-remote-stop-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/499a60325e6c7295/R3-head-390-dark-remote-stop-before.png)

After — exported PNG 780×1800:

![R3-head-390-dark-remote-stop-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ecc5c17ff0aa669d/R3-head-390-dark-remote-stop-after.png)

### R3-head-390-dark-fresh-remote-stop

CSS 390×900, dark; video 780×1800; duration 105.07s.

0:00 queue Queued original, type Earlier draft and open Edit while provider sleeps25; ~0:25 native blocking question arrives; ~1:06 type Answer belongs to Proof A; ~1:09 remote Stop and cancel queue edit; ~1:14 B untouched; ~1:39 return A; final seconds hold exact Earlier draft + two newlines + Answer belongs to Proof A with Queued original still queued. The recording includes an idle interval and one detached-locator retry during automatic sidebar close; no transition is cut.

[R3-head-390-dark-fresh-remote-stop-video.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e210362858923365/R3-head-390-dark-fresh-remote-stop-video.mp4)

Before — exported PNG 780×1800:

![R3-head-390-dark-fresh-remote-stop-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/932287388c41fecd/R3-head-390-dark-fresh-remote-stop-before.png)

After — exported PNG 780×1800:

![R3-head-390-dark-fresh-remote-stop-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3824e118d0504233/R3-head-390-dark-fresh-remote-stop-after.png)

### R5-head-submit

CSS 1440×900, light; video 2880×1800; duration 8.20s.

0:00 type Submitted answer in live question; ~0:03 Submit through question UI; ~0:05–end question closes and ordinary composer remains empty while provider continues. Read-only request audit records resolved.

[R5-head-submit-video.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/52a0effb75d3ca17/R5-head-submit-video.mp4)

Before — exported PNG 1280×800:

![R5-head-submit-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/83d0cd1c7357a4f0/R5-head-submit-before.png)

After — exported PNG 1280×800:

![R5-head-submit-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/664fd03a289af496/R5-head-submit-after.png)

### R5-head-pending-navigation

CSS 1440×900, light; video 2880×1800; duration 11.34s.

0:00 Still pending in question editor; ~0:03 search/select B (B untouched); ~0:06 search/select owning A; ~0:09–end same live question still contains Still pending, without closing it. No reload.

[R5-head-pending-navigation-video.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c74b6dc40edcd634/R5-head-pending-navigation-video.mp4)

Before — exported PNG 1280×800:

![R5-head-pending-navigation-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e75c465254e40726/R5-head-pending-navigation-before.png)

After — exported PNG 1280×800:

![R5-head-pending-navigation-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/03acf1a163894c7f/R5-head-pending-navigation-after.png)

### R5-head-blank-fresh

CSS 1440×900, light; video 2880×1800; duration 6.70s.

0:00 type three spaces in a third fresh live request; ~0:03 Stop; ~0:05–end question closes and ordinary composer stays empty. This replaces the earlier reused-request blank clip.

[R5-head-blank-fresh-video.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0c480d001198d4f4/R5-head-blank-fresh-video.mp4)

Before — exported PNG 1280×800:

![R5-head-blank-fresh-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8e55f6b8afa1fa40/R5-head-blank-fresh-before.png)

After — exported PNG 1280×800:

![R5-head-blank-fresh-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f6957ba426d2b2d9/R5-head-blank-fresh-after.png)

### R8-real-native-expiry

CSS 1440×900, light; video 2880×1800; duration 101.22s.

0:00 Expired answer in live blocking question; first minute pending while waiting for runtime lead; ~1:05 backend-only disconnect/reconnect, Vite remains; ~1:12 persisted expiry at 11:27:55.340Z; ~1:20–end ordinary composer contains Expired answer and question is closed. Exact timeOrigin remains unchanged across restart.

[R8-real-native-expiry-video.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a94d63fc22ad9899/R8-real-native-expiry-video.mp4)

Before — exported PNG 1280×800:

![R8-real-native-expiry-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b4a5f470b9a70bc1/R8-real-native-expiry-before.png)

After — exported PNG 1280×800:

![R8-real-native-expiry-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e0dac7bd2849fe77/R8-real-native-expiry-after.png)

### R8-real-revisit-fresh-supplement

CSS 1440×900, light; video 2880×1800; duration 12.15s.

0:00 hold previously restored Expired answer; ~0:04 navigate B with B untouched; ~0:08 return original A; final seconds hold Expired answer exactly once. This later development-session replay supplements, rather than extends, the no-reload restart clip.

[R8-real-revisit-fresh-supplement-video.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/17608250abc86c56/R8-real-revisit-fresh-supplement-video.mp4)

Before — exported PNG 1280×800:

![R8-real-revisit-fresh-supplement-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1df7ef85245d11b2/R8-real-revisit-fresh-supplement-before.png)

After — exported PNG 1280×800:

![R8-real-revisit-fresh-supplement-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6471372d10cb311b/R8-real-revisit-fresh-supplement-after.png)

### R2-v2 — corrected evidence

CSS 390×900, light; video 780×1800; duration 182.83s. Fresh real native three-question fixture in thread titled UI Evidence Fixture (owning A). This fresh client had no old drafts, so no old pending-memory preservation is claimed. Original R2 clip above retains the ordinary B-chip observation; this fresh repeat has prior text but no structured B chip.

Sampled frames: 0s starts the running fixture; 15s shows the ordinary Earlier draft and an unsuccessful ordinary @ search, removed before the question; 45s shows Q1; 59s Q2; 61–79s show long Q2 ending END-8963. Around 80–83s the real UI visits Q3 untouched, returns Q2→Q1 (First answer), then Q2. Remote Stop is persisted at 12:24:19.280Z (82.22s from recording start); 85s shows restored Earlier draft, First answer and start of ordered long answer. The restored editor is scrolled to END and back to top before navigation. The continuous recording includes sidebar-search waiting/retry time: 105–135s search overlay; 150s shows B; 171–173s select the owning A; 175–179s hold restored top; 181s shows restored END again. Final seconds hold END with controls visible. No reload, no duplicate append. Read-only store observation confirms exact `Earlier draft\n\nFirst answer\n\n` + the 30-line fixture, with one First answer and one END-8963.

Question-editor B/C picker/chip removal remains explicitly unverified; literal @ text is not a chip. The fresh repeat does not replace the old ordinary B-chip observation.

[R2-v2-video.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e6b87388c5d2f5c4/R2-v2-video.mp4)

Before — whole-surface export 780×1800:

![R2-v2-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0bd3ac98b1508db0/R2-v2-before.png)

After — whole-surface export 780×1800:

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

Restored END after revisit:

![R2-v2-end.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4a7150ca5a071a59/R2-v2-end.png)

### R4-v2 — corrected evidence

CSS 1440×900, dark; video 2880×1800; duration 9.88s. CLIENT HOOK PROBE ONLY: synthetic projection, real hook/store, native textarea, not ChatView and not provider Stop.

Sampled frames: 0–1s untouched Q1 Seed unchanged; 2s next-question transition; 3–4s Q2 Seed edited; 4.5s Q3 whitespace; 5s Q4 selected-option-only; 5.5s Question closed with ordinary Seed edited only. Result remains visible through the 9.5s sample (over four seconds settled). The previous 8.75s clip and its inaccurate offset narration are superseded and excluded.

Both html and body backgrounds are explicitly owned by the fixture and measured rgb(10,10,10). Before/after raster corners are (10,10,10); no inherited margin background. Native tool initialAnswer is unsupported; this does not establish full ChatView/provider behavior.

[R4-v2-video.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/73b674832c3e81b3/R4-v2-video.mp4)

Before — whole-surface export 1280×800:

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

After — whole-surface export 1280×800:

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

### R6-v2 — corrected evidence

CSS 1440×900, light; video 2880×1800; duration 15.65s. CLIENT HOOK PROBE ONLY: synthetic request selection and hook unmount/remount, not real ChatView thread navigation.

Sampled frames: 0s request-one empty; 2s Request one entered; 4–4.5s request-two contains Request two; 5s projected cancellation produces Request one + two newlines + Request two, in original request order. Result holds through 9s; 9.5–10.5s hook is visibly unmounted; 11–15s remounted hook shows exactly the same ordered draft once. The final settled hold exceeds four seconds. Request selection reorders synthetic pending projection iteration, and close restores original request order.

Explicit light palette, html/body background measured rgb(255,255,255); Browser-panel exported raster corners are (254,254,254) in both images. Old dark R6 media is superseded/excluded. Real multi-request navigation remains unverified because the real app exposes only the first pending request.

[R6-v2-video.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/585dbc8db110259d/R6-v2-video.mp4)

Before — whole-surface export 1280×800:

![R6-v2-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/45633f2c3852011f/R6-v2-before.png)

After — whole-surface export 1280×800:

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

### R7-v2 — corrected evidence

CSS 1440×900, dark; main video 2880×1800; duration 46.03s. Real native question, genuine connected BASE E2, and actual second paired client Stop. The second-client supplemental video is 1440×900 CSS / 2880×1800 video, light, 12.02s; its empty local composer is not the recovery subject. It also shows an incidental provider-update notification.

Main sampled frames: 0s pending A; 4s A only; 8s first recorded client already on B untouched. Second client starts recording at 12:32:15.867Z, 1.489s after main start 12:32:14.378Z. Its actual Stop click is about 6.8s into its clip, about 8.3s into main; persisted cancelled resolvedAt is 12:32:23.688Z (9.31s into main). The main client remains on B at Stop and at the 12s sample. 16s E2 untouched; 20s first return A still briefly shows pending projection; 24–28s actual ordinary A only, closed question. 32s revisit B untouched; 36s revisit E2 untouched; 40–44s return A again, ordinary A only exactly once, held to the end. The transient pending frame is explicitly not called restored.

B and E2 were prepared through normal UI before recording; no reload in the recorded first client. Read-only store observation after the final revisit confirms B untouched, E2 untouched and A only. Forced null-detail/loading shell and same-ID cross-environment collision remain unverified: natural navigation does not force either condition. The old 19.86s R7 and its wrong narration, plus intermediate correction attempts, are superseded and excluded.

[R7-v2-video.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5889198fce25922e/R7-v2-video.mp4)

Actual second-client Stop (synchronized supplemental recording):

[R7-v2-remote-stop.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a79059089c042184/R7-v2-remote-stop.mp4)

Before — whole-surface export 1280×800:

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

After — whole-surface export 1280×800:

![R7-v2-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/75b14b818f4e9698/R7-v2-after.png)

Genuine linked E2 held untouched:

![R7-v2-e2.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4e194f61cc82c81c/R7-v2-e2.png)

## Visible differences and image diffs

Diff method: compare the entire exported RGB images with no crop/alignment/normalization. **Zero threshold**: absolute per-channel difference, amplified ×8 with saturation at255; all nonzero source differences retained. **Threshold16**: a red pixel means the maximum RGB channel delta is **greater than16/255**; black means at or below16. Thresholded images do not assert pixel identity. Pixel counts/bounds for the initial pairs are linked below; the two supplemental pairs and fresh blank are calculated in the table here. There is no claim that nothing else changed.

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

Visible difference inventory, including incidental state changes:

- R1 within each revision: pending question header, explanatory choices and Submit controls disappear; the working indicator stops, Input requested becomes a closed timeline summary and Run interrupted appears; the composer changes height and location; Stop/Submit becomes normal send/resume controls. Head displays the carried answer and caret; base displays the ordinary empty placeholder. Sidebar Input status becomes idle/draft indicators and relative-time labels; cursor/hover/focus/selection can change. Subsequent head-only editing adds Edited. in the clip, after the after-still was taken.
- R1 base/head after comparisons: answer versus placeholder and corresponding enabled-state/send affordance; desktop sidebars differ in row count, row ordering, visible synthetic titles, project-icon positions, input/draft badges and relative times because each environment has its own accumulated synthetic history. Pointer/caret/focus tints differ. Native question descriptions and server timestamps may differ in the pending before-stills; those are real provider output, not normalized. Narrow after comparisons show composer text/wrapping/caret/send-state differences and a small disclosure/pointer highlight in the timeline.
- R2 v2: fresh prior text has no B chip; original retained R2 clip alone establishes ordinary B chip. Fresh A is titled UI Evidence Fixture. Search overlays, attempted ordinary @ picker, Q1/Q2/Q3 navigation, provider elapsed labels, input panel removal/interruption, restored composer height and vertical scroll, B/A headings and histories, caret/focus/pointer and selected search row all visibly change. Restored END and top are both held, with footer controls visible. The before-still shows Q2 at top; after-still shows restored top after revisit. Original R2: prior ordinary editor is replaced by per-question editor and then returns with concatenated text; question counter/options/navigation change; long editor scroll moves between top and END-8963, timeline scroll and run labels change; B chip remains. No question B/C chip was actually created.
- R3: queue Edit changes to a temporary queued editor, pending question temporarily replaces it, remote Stop closes the question, cancel Edit restores the ordinary draft; queue retains Queued original while its actions change from Cancel to Edit/Send now/Remove. Timeline, Working/Run interrupted, scroll, sidebar/search overlays and editor collapsed/expanded states change during revisit. The fresh after-still shows the exact ordinary draft and unchanged queue.
- R4/R6 v2: fixture uses explicit dark/light backgrounds respectively; main layout now includes a labeled hook-unmount control. R6 also visibly removes the hook subtree and restores it without changing the draft. Textarea focus border/selection/caret and pointer hover differ. R4/R6 probes: question heading, textarea and synthetic control selections change; Project cancelled replaces the question with Question closed; status JSON changes pending→cancelled; ordinary textarea/JSON gains Seed edited or the ordered Request one/Request two values. These controls and fonts differ intentionally from ChatView.
- R5 submit: question/choices/Submit disappear, response appears in timeline, provider Working/Stop may remain, ordinary composer is empty. Pending navigation changes thread heading/history/search selection and shows B untouched, then the same question/Still pending returns. Blank cancellation removes question/options/Submit, adds interrupted status and empty ordinary placeholder; no answer text appears.
- R7 v2: a prior synthetic request/interruption remains in the same A timeline; the new pending question closes, new interruption appears, ordinary A only replaces pending A only, composer position/height/footer controls change, Working/Input sidebar state clears and relative clock advances. Before/after both have empty sidebar search; selected A/hover/caret differ. Main dark and supplemental Stop-client light are explicitly separate, not a pixel pair. R7: thread/environment selection, header/history, scroll and sidebar status change; B displays B untouched, E2 displays E2 untouched, A displays A only; pending panel closes after remote Stop and interruption timeline appears. Different destinations intentionally show different synthetic histories.
- R8: recovery removes pending panel/choices and Working state, updates run history/status and scroll position, replaces pending editor with ordinary Expired answer, changes sidebar Input/draft/time indicators and footer controls. Revisit changes B/A history and search/sidebar highlights while restoring the same ordinary text. Clock/elapsed labels advance in these head-only clips.

| Pair | Raster | Pixels changed at >0 | Pixels changed at >16 |
|---|---|---:|---:|
| R1-base-1440-dark | 1280×800 | 114275 | 11106 |
| R1-base-1440-light | 1280×800 | 114562 | 10999 |
| R1-base-390-dark-remote-stop | 780×1800 | 255660 | 40237 |
| R1-base-390-light-remote-stop | 780×1800 | 248082 | 42491 |
| R1-head-1440-dark | 1280×800 | 113424 | 10398 |
| R1-head-1440-light | 1280×800 | 113612 | 10215 |
| R1-head-390-dark-remote-stop | 780×1800 | 254502 | 38417 |
| R1-head-390-light-remote-stop | 780×1800 | 245965 | 40656 |
| R3-head-390-dark-remote-stop | 780×1800 | 357942 | 93906 |
| R3-head-390-dark-fresh-remote-stop | 780×1800 | 249784 | 41630 |
| R5-head-submit | 1280×800 | 115067 | 11901 |
| R5-head-pending-navigation | 1280×800 | 544 | 290 |
| R5-head-blank-fresh | 1280×800 | 114267 | 10538 |
| R8-real-native-expiry | 1280×800 | 269084 | 40452 |
| R8-real-revisit-fresh-supplement | 1280×800 | 6540 | 2523 |
| R1-base-vs-head-1440-light | 1280×800 | 66024 | 7099 |
| R1-base-vs-head-1440-dark | 1280×800 | 64665 | 6279 |
| R1-base-vs-head-390-light | 780×1800 | 10177 | 8410 |
| R1-base-vs-head-390-dark | 780×1800 | 9933 | 8339 |

### R1-base-1440-dark — whole-surface diffs

Left: R1-base-1440-dark-before.png. Right: R1-base-1440-dark-after.png.

Zero threshold, ×8 amplification:

![R1-base-1440-dark-diff-zero-amplified.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/13020a9a6260206a/R1-base-1440-dark-diff-zero-amplified.png)

Maximum channel delta >16/255, red mask:

![R1-base-1440-dark-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7276d5bb0b528f05/R1-base-1440-dark-diff-threshold16.png)

### R1-base-1440-light — whole-surface diffs

Left: R1-base-1440-light-before.png. Right: R1-base-1440-light-after.png.

Zero threshold, ×8 amplification:

![R1-base-1440-light-diff-zero-amplified.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6ddcf28786025e5c/R1-base-1440-light-diff-zero-amplified.png)

Maximum channel delta >16/255, red mask:

![R1-base-1440-light-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4a5ac50341f1abb4/R1-base-1440-light-diff-threshold16.png)

### R1-base-390-dark-remote-stop — whole-surface diffs

Left: R1-base-390-dark-remote-stop-before.png. Right: R1-base-390-dark-remote-stop-after.png.

Zero threshold, ×8 amplification:

![R1-base-390-dark-remote-stop-diff-zero-amplified.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ffbbcd6e6c7b8a3a/R1-base-390-dark-remote-stop-diff-zero-amplified.png)

Maximum channel delta >16/255, red mask:

![R1-base-390-dark-remote-stop-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a08056f898801cd4/R1-base-390-dark-remote-stop-diff-threshold16.png)

### R1-base-390-light-remote-stop — whole-surface diffs

Left: R1-base-390-light-remote-stop-before.png. Right: R1-base-390-light-remote-stop-after.png.

Zero threshold, ×8 amplification:

![R1-base-390-light-remote-stop-diff-zero-amplified.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0862e18f9eeddcc6/R1-base-390-light-remote-stop-diff-zero-amplified.png)

Maximum channel delta >16/255, red mask:

![R1-base-390-light-remote-stop-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b337e336472c816a/R1-base-390-light-remote-stop-diff-threshold16.png)

### R1-head-1440-dark — whole-surface diffs

Left: R1-head-1440-dark-before.png. Right: R1-head-1440-dark-after.png.

Zero threshold, ×8 amplification:

![R1-head-1440-dark-diff-zero-amplified.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f7ee0393e1d6ee8f/R1-head-1440-dark-diff-zero-amplified.png)

Maximum channel delta >16/255, red mask:

![R1-head-1440-dark-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dd21ddc69453965c/R1-head-1440-dark-diff-threshold16.png)

### R1-head-1440-light — whole-surface diffs

Left: R1-head-1440-light-before.png. Right: R1-head-1440-light-after.png.

Zero threshold, ×8 amplification:

![R1-head-1440-light-diff-zero-amplified.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/73477fd8886d9fb6/R1-head-1440-light-diff-zero-amplified.png)

Maximum channel delta >16/255, red mask:

![R1-head-1440-light-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fa6e2be5eafb1a49/R1-head-1440-light-diff-threshold16.png)

### R1-head-390-dark-remote-stop — whole-surface diffs

Left: R1-head-390-dark-remote-stop-before.png. Right: R1-head-390-dark-remote-stop-after.png.

Zero threshold, ×8 amplification:

![R1-head-390-dark-remote-stop-diff-zero-amplified.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6c1f8e544883dc81/R1-head-390-dark-remote-stop-diff-zero-amplified.png)

Maximum channel delta >16/255, red mask:

![R1-head-390-dark-remote-stop-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f239dd757469f208/R1-head-390-dark-remote-stop-diff-threshold16.png)

### R1-head-390-light-remote-stop — whole-surface diffs

Left: R1-head-390-light-remote-stop-before.png. Right: R1-head-390-light-remote-stop-after.png.

Zero threshold, ×8 amplification:

![R1-head-390-light-remote-stop-diff-zero-amplified.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4a80c5df53f2cdd4/R1-head-390-light-remote-stop-diff-zero-amplified.png)

Maximum channel delta >16/255, red mask:

![R1-head-390-light-remote-stop-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/56364a0ddd29f219/R1-head-390-light-remote-stop-diff-threshold16.png)

### R3-head-390-dark-remote-stop — whole-surface diffs

Left: R3-head-390-dark-remote-stop-before.png. Right: R3-head-390-dark-remote-stop-after.png.

Zero threshold, ×8 amplification:

![R3-head-390-dark-remote-stop-diff-zero-amplified.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/409dcd8672b7d041/R3-head-390-dark-remote-stop-diff-zero-amplified.png)

Maximum channel delta >16/255, red mask:

![R3-head-390-dark-remote-stop-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3f842806049c0a2c/R3-head-390-dark-remote-stop-diff-threshold16.png)

### R3-head-390-dark-fresh-remote-stop — whole-surface diffs

Left: R3-head-390-dark-fresh-remote-stop-before.png. Right: R3-head-390-dark-fresh-remote-stop-after.png.

Zero threshold, ×8 amplification:

![R3-head-390-dark-fresh-remote-stop-diff-zero-amplified.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8f39cd3cd32a991d/R3-head-390-dark-fresh-remote-stop-diff-zero-amplified.png)

Maximum channel delta >16/255, red mask:

![R3-head-390-dark-fresh-remote-stop-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/33f7d84a4969e762/R3-head-390-dark-fresh-remote-stop-diff-threshold16.png)

### R5-head-submit — whole-surface diffs

Left: R5-head-submit-before.png. Right: R5-head-submit-after.png.

Zero threshold, ×8 amplification:

![R5-head-submit-diff-zero-amplified.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/57881745fbe718ee/R5-head-submit-diff-zero-amplified.png)

Maximum channel delta >16/255, red mask:

![R5-head-submit-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/691d83fd552dd555/R5-head-submit-diff-threshold16.png)

### R5-head-pending-navigation — whole-surface diffs

Left: R5-head-pending-navigation-before.png. Right: R5-head-pending-navigation-after.png.

Zero threshold, ×8 amplification:

![R5-head-pending-navigation-diff-zero-amplified.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/73f72deba4f993a0/R5-head-pending-navigation-diff-zero-amplified.png)

Maximum channel delta >16/255, red mask:

![R5-head-pending-navigation-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5784c775491ba983/R5-head-pending-navigation-diff-threshold16.png)

### R5-head-blank-fresh — whole-surface diffs

Left: R5-head-blank-fresh-before.png. Right: R5-head-blank-fresh-after.png.

Zero threshold, ×8 amplification:

![R5-head-blank-fresh-diff-zero-amplified.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e6c4b6c9d9266850/R5-head-blank-fresh-diff-zero-amplified.png)

Maximum channel delta >16/255, red mask:

![R5-head-blank-fresh-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/79c7a5065095eb6f/R5-head-blank-fresh-diff-threshold16.png)

### R8-real-native-expiry — whole-surface diffs

Left: R8-real-native-expiry-before.png. Right: R8-real-native-expiry-after.png.

Zero threshold, ×8 amplification:

![R8-real-native-expiry-diff-zero-amplified.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9e81290ef18e5c81/R8-real-native-expiry-diff-zero-amplified.png)

Maximum channel delta >16/255, red mask:

![R8-real-native-expiry-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fb3a06fec9956600/R8-real-native-expiry-diff-threshold16.png)

### R8-real-revisit-fresh-supplement — whole-surface diffs

Left: R8-real-revisit-fresh-supplement-before.png. Right: R8-real-revisit-fresh-supplement-after.png.

Zero threshold, ×8 amplification:

![R8-real-revisit-fresh-supplement-diff-zero-amplified.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/80c8c955658d49cc/R8-real-revisit-fresh-supplement-diff-zero-amplified.png)

Maximum channel delta >16/255, red mask:

![R8-real-revisit-fresh-supplement-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a22e32de3ea9dbfe/R8-real-revisit-fresh-supplement-diff-threshold16.png)

### R1-base-vs-head-1440-light — whole-surface diffs

Left: R1-base-1440-light-after.png. Right: R1-head-1440-light-after.png.

Zero threshold, ×8 amplification:

![R1-base-vs-head-1440-light-diff-zero-amplified.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/38e6bbb657bb8b19/R1-base-vs-head-1440-light-diff-zero-amplified.png)

Maximum channel delta >16/255, red mask:

![R1-base-vs-head-1440-light-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6ee48f888681b48c/R1-base-vs-head-1440-light-diff-threshold16.png)

### R1-base-vs-head-1440-dark — whole-surface diffs

Left: R1-base-1440-dark-after.png. Right: R1-head-1440-dark-after.png.

Zero threshold, ×8 amplification:

![R1-base-vs-head-1440-dark-diff-zero-amplified.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/69541ca094f88911/R1-base-vs-head-1440-dark-diff-zero-amplified.png)

Maximum channel delta >16/255, red mask:

![R1-base-vs-head-1440-dark-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c5812b54ab02d7ef/R1-base-vs-head-1440-dark-diff-threshold16.png)

### R1-base-vs-head-390-light — whole-surface diffs

Left: R1-base-390-light-remote-stop-after.png. Right: R1-head-390-light-remote-stop-after.png.

Zero threshold, ×8 amplification:

![R1-base-vs-head-390-light-diff-zero-amplified.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cca71b95f35afef1/R1-base-vs-head-390-light-diff-zero-amplified.png)

Maximum channel delta >16/255, red mask:

![R1-base-vs-head-390-light-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/11861ee013f77b96/R1-base-vs-head-390-light-diff-threshold16.png)

### R1-base-vs-head-390-dark — whole-surface diffs

Left: R1-base-390-dark-remote-stop-after.png. Right: R1-head-390-dark-remote-stop-after.png.

Zero threshold, ×8 amplification:

![R1-base-vs-head-390-dark-diff-zero-amplified.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f01c5c30237a2f32/R1-base-vs-head-390-dark-diff-zero-amplified.png)

Maximum channel delta >16/255, red mask:

![R1-base-vs-head-390-dark-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/16e5c6fdb3be4b99/R1-base-vs-head-390-dark-diff-threshold16.png)

## Corrected-row pairs, counts and SHA-256

Whole surface; no crop, alignment, scaling or normalization. Diff0 is all absolute RGB deltas ×8 clipped at255. DiffT red means max channel delta >16/255. Each cell includes the complete SHA-256 of its uploaded artifact; production is 476597e33b, original fixtures 05169b8e48, correction fixture 14549e55d0.

| Row | Before | After | Diff0 | DiffT |
|---|---|---|---|---|
| R2 | [R2-v2-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0bd3ac98b1508db0/R2-v2-before.png)<br>`619fa194e07366e16c02e33531959fd68901c930dddf5ec6e965ad478a8d3123` | [R2-v2-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f580659f58ff1193/R2-v2-after.png)<br>`017305689438d23a9fd461e8c60dbcff225c329e5907431d4c509ad8377e3b75` | [R2-v2-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2397ee8c0ae25072/R2-v2-diff0.png)<br>`5d5172aa5a9bb68ac0cec724b4edf23d46bafe04126532a56cb8a41619c9ce7d` | [R2-v2-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/96b6476dfdc3397a/R2-v2-diffT.png)<br>`927e271526bcd467316c4785ce1a62995a7172d5214d7cc8e29a5cc8a91c7d67` |
| R4 | [R4-v2-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bc0a864bf1caa635/R4-v2-before.png)<br>`7f9110babb5efbdea678e3fccff350b786b7b13d5ea4a1a3301665eac3a35dcf` | [R4-v2-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c4b71b27f62a3ec1/R4-v2-after.png)<br>`27be86090d51f7cdcffa7c5bc101e74c8f491a34e3e17a4dd5e5c4e764f24759` | [R4-v2-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/90bafa2e9e33a97d/R4-v2-diff0.png)<br>`c341e6d84266e8f090b08ed091ba51659b6ec7ef4e66817035b9675f3b0cb2bd` | [R4-v2-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/600379c725c784b6/R4-v2-diffT.png)<br>`c6ff497871e033fe5a819b775bf7c755fd5c14ae47849f4f287cbc5acb2f94da` |
| R6 | [R6-v2-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/45633f2c3852011f/R6-v2-before.png)<br>`e9a1fa93a7fe6ac8f8b7479b449ddb7758f06b2c60f954099dce6a897f8dbcb7` | [R6-v2-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7d1007bfe78e4a56/R6-v2-after.png)<br>`c66271e1e6905d6b6fed2034a410ecba18056fd1f737100170a8352ab63f0ec4` | [R6-v2-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7f372ca157e967c4/R6-v2-diff0.png)<br>`101e5be507976317db20e32d5bb79f9c6ade1cb700f2c278420d1e44d56b62d9` | [R6-v2-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/028e6228f90e2f82/R6-v2-diffT.png)<br>`5c914525e19fbc177f685be06511228ac3b5348f94d18307f814b3962e325a18` |
| R7 | [R7-v2-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8fca319b0189bc37/R7-v2-before.png)<br>`ab2e3660925e68a81db0c22a597f56c7646cf9048b8ed087de832ab0d128e129` | [R7-v2-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/75b14b818f4e9698/R7-v2-after.png)<br>`02f20174d235b71594aed9057c40600db88ac28e127652e14801885907917cc3` | [R7-v2-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/669b85006cc511ff/R7-v2-diff0.png)<br>`8b31f74f1b8efa643b0bc617be4e425d6dfdefdc2e8a40602a8ee5482b8446ae` | [R7-v2-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/891d914a39b32259/R7-v2-diffT.png)<br>`50429c794f208c81f76986fbe9f0ab0b70c80f39739d51dbd2ddf09489a9eda7` |

| Pair | Raster | Changed >0 | Changed >16 |
|---|---|---:|---:|
| R2-v2 | 780×1800 | 369653 | 120872 |
| R4-v2 | 1280×800 | 223533 | 222009 |
| R6-v2 | 1280×800 | 216719 | 31807 |
| R7-v2 | 1280×800 | 111829 | 8777 |

[sha256-v2.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/960dc39b4baee0ff/sha256-v2.json)

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

[observed-drafts-v2.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/92b9d7f7381fce95/observed-drafts-v2.json)

[request-statuses-v2.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/799c2fe4c9db3254/request-statuses-v2.json)

### R2-v2 — whole-surface diffs

Zero threshold, ×8:

![R2-v2-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2397ee8c0ae25072/R2-v2-diff0.png)

Threshold >16/255:

![R2-v2-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/96b6476dfdc3397a/R2-v2-diffT.png)

### R4-v2 — whole-surface diffs

Zero threshold, ×8:

![R4-v2-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/90bafa2e9e33a97d/R4-v2-diff0.png)

Threshold >16/255:

![R4-v2-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/600379c725c784b6/R4-v2-diffT.png)

### R6-v2 — whole-surface diffs

Zero threshold, ×8:

![R6-v2-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7f372ca157e967c4/R6-v2-diff0.png)

Threshold >16/255:

![R6-v2-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/028e6228f90e2f82/R6-v2-diffT.png)

### R7-v2 — whole-surface diffs

Zero threshold, ×8:

![R7-v2-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/669b85006cc511ff/R7-v2-diff0.png)

Threshold >16/255:

![R7-v2-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/891d914a39b32259/R7-v2-diffT.png)

## Reuse and validation

Committed files: `scripts/fixtures/issue-8963.json`, `scripts/replay-issue-8963.mjs`, `scripts/fixtures/issue-8963-client-probe.mjs`. `replayR1(tools, {tabId, stopTabId, width, theme, expected, frozenTime})` consumes the owning Browser-panel tools and requires a fresh UI-created empty draft, safe pairing and legacy Plan mode enabled. `seedContextThread` creates B/C through UI. `mountProbe("R4"|"R6", "dark"|"light")` imports the existing test projection helper and real hook/store in the Vite browser; its controls never call the backend. The harness is not ChatView and cannot substantiate provider, queue, context-picker or backend behavior.

Validation passed: targeted `vp lint` for the two scripts; `vp fmt --check` for the three fixture files; `node --check` on both modules; JSON import/30-line END-8963 boundary/export checks; actual Browser-panel replay of the eight R1 combinations and both probes; read-only persisted request audit. No repository-wide checks, server lifecycle actions or SQLite writes by the evidence child. Only fixture/replay files committed; no media, plans or implementation changes.

Correction validation: `vp lint scripts/fixtures/issue-8963-client-probe.mjs`, `vp fmt --check scripts/fixtures/issue-8963-client-probe.mjs`, and `node --check scripts/fixtures/issue-8963-client-probe.mjs` passed on correction commit. Git working tree clean. Only fixture probe changed; no production changes, pushes, PRs, direct database writes, server start/stop/restart, or changes to other worktrees. Authorized pairing used existing isolated HEAD and BASE runtimes. Browser artifact files are app-owned exports; no live userdata database was touched.

## FRICTION

| Category | What | Prevention |
|---|---|---|
| Narrow affordance | Pending question hides Stop at390; base and head. | Approved second-client Stop; label remote recovery; never force a hidden button. |
| Capture export | Screenshot API saves desktop at1280×800 despite measured CSS1440×900/DPR2; video is2880×1800. | Report CSS and raster separately; preserve whole surface and full-resolution recordings. |
| Capture timing | Prior R4/R6 clips barely held final states; R7 narration preceded visible frames. | Sample actual clip frames; hold final result at least3s; distinguish pending from restored and label synchronized remote Stop. |
| Probe background | App inline html/body backgrounds override ordinary stylesheet declarations. | Fixture sets both inline backgrounds and explicit theme CSS; inspect computed values and whole-raster corners. |
| Pairing | Fresh Browser-panel session had no auth or saved E2 connection. | Mint authorized isolated-runtime tokens privately; connect E2 through web6707 (backend14747 cross-origin fetch fails). |
| Navigation | Search result has role=option; narrow sidebar auto-closes and invalidates controls. | Use observed role/key, wait for destination, reopen sidebar after close; retain continuous recording and explain idle retry time. |
| Provider shape | Native schemas do not expose initialAnswer; real multi-request composer exposes only the first request. | Use explicitly labeled real-hook projection probe; keep full-app requirements unverified. |
| Context picker | Pending editor treats @ text literally. | Do not fabricate structured chips; report R2 question-context cases unverified. |
| Recovery infrastructure | First coordinated dev-runner restart also stopped Vite and reloaded. | Discard preservation attempt; lead restarts standalone backend while Vite stays alive; measure timeOrigin. |
| Browser interaction | Narrow navigation auto-closes sidebar, invalidating an immediate old locator. | Reinspect destination and use fresh controls; recording remains continuous and final result held visible. |
| Fidelity | Separate provider sessions/history produce visible sidebar/time/prose differences. | Identical fresh R1 scripts, frozen browser clock, whole-surface zero and threshold diffs; enumerate differences. |
| Authority | Evidence child cannot stop runtimes or edit running SQLite. | Runtime lead owns recovery and cleanup; all DB operations read-only. |
| Platform | Linux Browser panel does not exercise macOS Electron shell. | Explicitly unverified; no inferred shell or native mobile evidence. |
