# Evidence recapture, round 3

Only R01, R02 and direct native R04 for [#27954](https://git.cafe/pingdotgg/t3code/pull/27954). Before [80a2351](https://git.cafe/pingdotgg/t3code/commit/80a2351fcb909034e65a512dfabeb3cdfd367762); after [f9e4eae](https://git.cafe/pingdotgg/t3code/commit/f9e4eae7d71f4abbdd80dbe66e4406a7a5e65727). No code edits, commits, pushes or PR-body changes.

Environment: fs-20 Linux; Chromium web 390×844 CSS / DPR2; pooled iPhone 17 Pro, iOS 27.2, RN 0.88, 402×874 logical / DPR3 / fontScale1. Dark theme on both sides. Real Claude Haiku 5.5; synthetic fixtures and separate fresh server databases, T3CODE_DEV_SEED=0.

## R01 native dark, absent-file pending

The complete unavailable card, bottom edge and native.png caption are visible. Head shows path only. Same inner scroll request y=84, with native content clamping on the shorter head. The separate long absolute-path body below the base caption remains constrained by the work-list viewport; this is not a claim that every line of that body is visible.

| Before [80a2351](https://git.cafe/pingdotgg/t3code/commit/80a2351fcb909034e65a512dfabeb3cdfd367762) | After [f9e4eae](https://git.cafe/pingdotgg/t3code/commit/f9e4eae7d71f4abbdd80dbe66e4406a7a5e65727) | Diff0 | DiffT |
|---|---|---|---|
| ![Before: full unavailable card and native.png caption while pending](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/de77f83d0d339f79/R01-before-pending84.png) | ![After: pending Read path without image](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1b40bcf8fad9ea98/R01-after-pending84.png) | ![R01 amplified maxRGB greater than zero](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5598ef77d562e4c3/R01-native-pending-Diff0.png) | ![R01 maxRGB greater than 16](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/45cd80296336f22b/R01-native-pending-DiffT.png) |

## R02 web 390×844 dark preview round trip

Finished row reopened without reload. Base remains unavailable after tapping; head opens and dismisses back inline.

| Before [80a2351](https://git.cafe/pingdotgg/t3code/commit/80a2351fcb909034e65a512dfabeb3cdfd367762) | After [f9e4eae](https://git.cafe/pingdotgg/t3code/commit/f9e4eae7d71f4abbdd80dbe66e4406a7a5e65727) | Diff0 | DiffT |
|---|---|---|---|
| ![Before: reopened finished unavailable card](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/188579b6408b801c/R02-before-inline.png) | ![After: inline image returned after dismissal](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/273f6ccb437358a5/R02-after-return.png) | ![R02 amplified maxRGB greater than zero](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/254c4eb753a67138/R02-web-finished-Diff0.png) | ![R02 maxRGB greater than 16](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/661dda00090734ce/R02-web-finished-DiffT.png) |

[Before recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8cf28291eadd65b4/R02-before-cfr.mp4): 00:03 pending unavailable; 00:10 completed/collapsed; 00:20 reopened finished unavailable; 00:27 tap leaves unavailable; 00:30 final hold.

[After recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ab8f67029d5dbcad/R02-after-cfr.mp4): 00:03 pending path; 00:08 completed/collapsed; 00:16 reopened inline image; 00:31 open preview; 00:39 dismissed and returned inline (final hold). [Open-preview still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f049e722dba31675/R02-after-preview.png).

## R04 native direct existing-file case

The orange 160×120 PNG already exists before the turn. The Read itself is inProgress, not merely the surrounding turn. Same inner scroll request y=60. Exact per-Read projection JSON and IDs are in the verification archive and beside each recording. No fixture rows or lifecycle props were overridden. This recapture covers the direct case; portrait sizing/copy controls are not claimed.

Pending:

| Before [80a2351](https://git.cafe/pingdotgg/t3code/commit/80a2351fcb909034e65a512dfabeb3cdfd367762) | After [f9e4eae](https://git.cafe/pingdotgg/t3code/commit/f9e4eae7d71f4abbdd80dbe66e4406a7a5e65727) | Diff0 | DiffT |
|---|---|---|---|
| ![Before: existing orange image while its Read is pending](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ab1f132d015c1488/R04-before-pending60.png) | ![After: existing image path only while its Read is pending](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ee84c1741088a8c4/R04-after-pending2.png) | ![R04 pending amplified maxRGB greater than zero](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/61e26c2a4d989300/R04-native-pending-Diff0.png) | ![R04 pending maxRGB greater than 16](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bd8eec1f0a3dc16f/R04-native-pending-DiffT.png) |

Same entry completed:

| Before [80a2351](https://git.cafe/pingdotgg/t3code/commit/80a2351fcb909034e65a512dfabeb3cdfd367762) | After [f9e4eae](https://git.cafe/pingdotgg/t3code/commit/f9e4eae7d71f4abbdd80dbe66e4406a7a5e65727) | Diff0 | DiffT |
|---|---|---|---|
| ![Before: same completed Read shows orange image](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a9450ad340866a01/R04-before-finished-open.png) | ![After: same completed Read shows full orange image](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cc17f86b84bc1399/R04-after-finished2.png) | ![R04 completed amplified maxRGB greater than zero](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0ad8869c944c88e2/R04-native-finished-Diff0.png) | ![R04 completed maxRGB greater than 16](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/094ff0f848b6bcbc/R04-native-finished-DiffT.png) |

[Before continuous native recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c0a7541944d6c55a/R04-before-native-cfr.mp4): 00:40 pending image/path; 00:44 completed/collapsed; 01:15 reopened; 01:20 full image/path; 01:25 final hold. Read pending observed 06:18:20.075Z with completedAt=null; persisted completion 06:18:20.268Z, same ID.

[After continuous native recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/214151a621a05a02/R04-after-native-cfr.mp4): 00:10 pending path only; 00:17 completion/image transition; 00:19 collapsed; 00:36 reopened image; 00:42 full image/path; 00:46 final hold. Read pending observed 06:20:32.975Z with completedAt=null; persisted completion 06:20:43.040Z, same ID.

## Verification and what else changed

All eight selected stills have pixel-identical companions ≥500ms apart. Diff0 is full-frame max absolute RGB delta >0, amplified to magenta; DiffT uses >16. No masks or crops. Changed pixels Diff0/DiffT: R01 96,766/12,966; R02 310,496/273,579; R04 pending 48,908/30,017; R04 finished 899/657.

All 1,439 source frames were decoded from the start, indexed into contact sheets and opened for review. Milestone frames were inspected at readable size. Videos are continuous 30fps re-encodes; they append three seconds holding the last frame. Native copies scale the entire device frame beside a timestamped transcript of actual observed projections. Original VFR recordings are preserved. Timestamps above were checked using sequential frame decoding, not seeking.

Provider wording, reasoning rows, tool ordering, response timing, duration labels, system clock and media-dependent content heights differ. These are retained in the unmasked diffs. Native-harness.js is included only as an unused reference; no prop override was run. Scratch adjustments: session/paths, current Metro Origin and native onToggle callback; direct-case seed uses the smaller pre-existing orange PNG. Pinned source diff is only the 2-line guard/comment plus 19 test lines in two client-runtime files; this task changed no repository files.

[Exact scripts](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/827b18cb6cfed314/exact-scripts.zip) · [Original recordings, settling companions, lifecycle JSON, frame inspection and detailed notes](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d7ee7d1b08aac819/verification-and-originals.zip) · [SHA-256 manifest](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9973d047bb93fee1/manifest.json). All 24 uploads were downloaded with curl and matched local hashes.

Cleanup verified: owned browser tabs and native lease closed; every tracked server/Metro/proxy process and descendant stopped; eight owned ports unbound; detached before worktree removed; head worktree clean and left in place. 14 GB free. No evidence deleted.

## ghdrop output, verbatim

```markdown
![R01-before-pending84.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/de77f83d0d339f79/R01-before-pending84.png)
![R01-after-pending84.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1b40bcf8fad9ea98/R01-after-pending84.png)
![R01-native-pending-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5598ef77d562e4c3/R01-native-pending-Diff0.png)
![R01-native-pending-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/45cd80296336f22b/R01-native-pending-DiffT.png)
![R02-before-inline.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/188579b6408b801c/R02-before-inline.png)
![R02-after-return.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/273f6ccb437358a5/R02-after-return.png)
![R02-web-finished-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/254c4eb753a67138/R02-web-finished-Diff0.png)
![R02-web-finished-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/661dda00090734ce/R02-web-finished-DiffT.png)
![R04-before-pending60.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ab1f132d015c1488/R04-before-pending60.png)
![R04-after-pending2.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ee84c1741088a8c4/R04-after-pending2.png)
![R04-native-pending-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/61e26c2a4d989300/R04-native-pending-Diff0.png)
![R04-native-pending-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bd8eec1f0a3dc16f/R04-native-pending-DiffT.png)
![R04-before-finished-open.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a9450ad340866a01/R04-before-finished-open.png)
![R04-after-finished2.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cc17f86b84bc1399/R04-after-finished2.png)
![R04-native-finished-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0ad8869c944c88e2/R04-native-finished-Diff0.png)
![R04-native-finished-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/094ff0f848b6bcbc/R04-native-finished-DiffT.png)
![R02-after-preview.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f049e722dba31675/R02-after-preview.png)
[R02-before-cfr.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8cf28291eadd65b4/R02-before-cfr.mp4)
[R02-after-cfr.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ab8f67029d5dbcad/R02-after-cfr.mp4)
[R04-before-native-cfr.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c0a7541944d6c55a/R04-before-native-cfr.mp4)
[R04-after-native-cfr.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/214151a621a05a02/R04-after-native-cfr.mp4)
[exact-scripts.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/827b18cb6cfed314/exact-scripts.zip)
[verification-and-originals.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d7ee7d1b08aac819/verification-and-originals.zip)
[manifest.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9973d047bb93fee1/manifest.json)
```

FRICTION:
- tool | IPv4 dev URL refused while Vite listened on loopback; localhost worked | use the reachable local origin.
- runbook | Prior Hermes Origin and callback name were stale; fixed scratch helpers | derive current Origin/props before replay.
- tool | First head direct run failed to settle while syncing; rejected and reseeded | wait for synchronization before freezing Date.
- tool | psutil absent in cleanup helper; used standard-library /proc ancestry | avoid undeclared cleanup dependencies.

PR [#27954](https://git.cafe/pingdotgg/t3code/pull/27954), head [f9e4eae](https://git.cafe/pingdotgg/t3code/commit/f9e4eae7d71f4abbdd80dbe66e4406a7a5e65727), checks and reviews not queried (evidence-only).
