# Six-row evidence repair

[PR #32936](https://git.cafe/pingdotgg/t3code/pull/32936) · [GitHub #32936](https://github.com/pingdotgg/t3code/pull/32936). Target head [4980e33628](https://git.cafe/pingdotgg/t3code/commit/4980e3362893ef185de653a8c2350e3b034f9013). **6/6 requested rows repaired.**

Environment for every capture: AgentDevice iOS simulator PNGs, capture pixel ratio **1 image pixel per device point (1×)**, default system text size **large**, light theme. The row labels specify device, OS, viewport and fixed crop/mask. Coordinates are half-open source pixels, without scaling. Original iOS 18 minor/tool versions were not recorded. Fresh F3/G1 use agent-device 0.21.32, actual OS verified through capabilities, identical native fingerprint `5fa891c99bf29870cc7d56112e3458d95a948393`, and the same simulator per pair.

F2/F5/F8/I2 reuse the accepted original capture builds; actual build SHAs appear under each column. They are not relabelled as current head. Fresh F3/G1 use before [ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) and after [4980e33628](https://git.cafe/pingdotgg/t3code/commit/4980e3362893ef185de653a8c2350e3b034f9013) UI bundles. Both use the same isolated before backend with the same synthetic public-RPC seed, persisted timestamps, free Replay (dev) turns, viewport, loaded-page scroll position, theme and text size. No live userdata, migration, direct database edits or paid provider turns.

Diff0: every pixel with any nonzero RGB delta is full magenta (#ff00ff), amplifying a one-level change, on #151515. DiffT: ImageMagick `compare -metric AE -fuzz 5% -highlight-color #ff00ff -lowlight-color #151515 -compose src`. No registration, resampling, colour normalization or per-pixel noise cleanup. Only F8 has the disclosed identical timestamp masks. Every published crop and diff was opened and visually inspected before upload.

Rejected comparisons: the original F3 y24 crop retains clock pixels through y28; even y30 leaves nine one-level back-arrow pixels. Run1’s actual before/after G1 inspector leaves three one-level native-control differences. Raw alternatives agree. Both were replaced by real-app recaptures. Run3’s two BEFORE G1 images are not used for code comparison.

The supplied checkout and original scratch were removed externally near 15:08 UTC. Five already-uploaded rows were recovered from immutable public artifacts with their pixel counts reproduced. G1 completed from the surviving before/after bundles and the same running synthetic backend, after provider icons settled. Original unuploaded scripts/logs were lost; the attached reproduction scripts were reconstructed from recorded commands. No source was changed.

## F2 — narrow inspector top; iPad (7th generation), iOS 18, light; viewport 1080×810 landscape; crop (820,24)–(1080,764), 260×740

| Before | After | Diff0 (zero threshold) | DiffT (5% fuzz) |
|---|---|---|---|
| ![Before F2](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8463abc83984cae0/F2-before-crop.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e)<br>[Source full screen](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0fa27d0aeffa7fd2/before-F2.png) | ![After F2](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/98083fc915f6945a/F2-after-crop.png)<br>[eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5)<br>[Source full screen](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/92d1e9a06b0f6379/after-F2.png) | ![Diff0 F2](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b667066fb167d1b2/F2-Diff0.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) | ![DiffT F2, 5% fuzz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/90ef8d20d39631bd/F2-DiffT-5pct.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) |

Changed pixels: Diff0 **73,363**, DiffT **59,545**.

**What else changed:** The feed moves down 70px: the history control becomes visible below the native inspector header; wrapped ROW04 and following content move with it, changing lower-edge clipping. The native header is identical at zero threshold. Parent duration labels are outside the fixed comparison scope.

## F3 — fullscreen child; iPhone Xs, iOS 18.6, light; viewport 375×812 portrait; crop (0,30)–(375,812), 375×782; top 30px status strip excluded, full navigation header retained

| Before | After | Diff0 (zero threshold) | DiffT (5% fuzz) |
|---|---|---|---|
| ![Before F3](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fea9e540aadd4469/F3-before-crop.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e)<br>[Source full screen](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/eb1c39fc4b561e40/F3-before-source.png) | ![After F3](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8430a135223f4888/F3-after-crop.png)<br>[4980e33628](https://git.cafe/pingdotgg/t3code/commit/4980e3362893ef185de653a8c2350e3b034f9013)<br>[Source full screen](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/59beacb26313c3e2/F3-after-source.png) | ![Diff0 F3](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ebaf0d82eb28f1e3/F3-Diff0.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [4980e33628](https://git.cafe/pingdotgg/t3code/commit/4980e3362893ef185de653a8c2350e3b034f9013) | ![DiffT F3, 5% fuzz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/980426c7790639e8/F3-DiffT-5pct.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [4980e33628](https://git.cafe/pingdotgg/t3code/commit/4980e3362893ef185de653a8c2350e3b034f9013) |

Changed pixels: Diff0 **169,872**, DiffT **141,079**.

**What else changed:** The history control and complete loaded-page ROW04 become visible below the unchanged navigation header. Feed content moves down, changing lower row visibility and the content seen through the composer blur. The composer frame stays in place. Navigation-header pixels are identical at zero threshold.

Within-build stability: {"before": {"full_pixels": 0, "crop_pixels": 0}, "after": {"full_pixels": 0, "crop_pixels": 0}}.
[Before stability full screen](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/05af2521ffd5f8a7/F3-before-stability.png) · [After stability full screen](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a3bcce7851492a31/F3-after-stability.png). These establish temporal repeatability, separately from the code comparison above.

## F5 — uncached unavailable narrow inspector; iPad (7th generation), iOS 18, light; viewport 1080×810 landscape; crop (820,24)–(1080,764), 260×740

| Before | After | Diff0 (zero threshold) | DiffT (5% fuzz) |
|---|---|---|---|
| ![Before F5](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/27fcc08173af40f8/F5-before-crop.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e)<br>[Source full screen](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cd7988e5de8eb89c/before-F5.png) | ![After F5](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5511d414d465e553/F5-after-crop.png)<br>[f76e21be6c](https://git.cafe/pingdotgg/t3code/commit/f76e21be6cdcf0936a28521badaf66e4a85bb9cc)<br>[Source full screen](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/308a25d0002c96dd/after-F5.png) | ![Diff0 F5](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/635d24e8fa29e446/F5-Diff0.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [f76e21be6c](https://git.cafe/pingdotgg/t3code/commit/f76e21be6cdcf0936a28521badaf66e4a85bb9cc) | ![DiffT F5, 5% fuzz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a4f7e72dc404226e/F5-DiffT-5pct.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [f76e21be6c](https://git.cafe/pingdotgg/t3code/commit/f76e21be6cdcf0936a28521badaf66e4a85bb9cc) |

Changed pixels: Diff0 **6,284**, DiffT **5,420**.

**What else changed:** The wrapped Messages not cached placeholder moves down 35px. Header, background and pixels outside the old/new placeholder footprint are identical at zero threshold.

## F8 — short settled end-aligned feed; iPhone Xs, iOS 18, light; viewport 375×812 portrait; full frame with timestamp masks (276,605)–(329,622) and (77,677)–(128,695)

| Before | After | Diff0 (zero threshold) | DiffT (5% fuzz) |
|---|---|---|---|
| ![Before F8](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c5d7c48579070292/F8-before-timestamp-masked.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e)<br>[Source full screen](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3930bac3299ccc9c/before-I3.png) | ![After F8](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d709ccbf7e946efa/F8-after-timestamp-masked.png)<br>[eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5)<br>[Source full screen](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d7a85e326a0745e4/after-I3.png) | ![Diff0 F8](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6238dd5042f75728/F8-Diff0.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) | ![DiffT F8, 5% fuzz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/776a173c13a44a43/F8-DiffT-5pct.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) |

Changed pixels: Diff0 **0**, DiffT **0**.

**What else changed:** The original two timestamp regions contain 3:37/3:38 changes. Exactly the two labelled rectangles are covered by opaque #888888 on both sides; bubble, reply and composer geometry remain visible. Outside those masks, nothing else changed at zero threshold. This is settled geometry proof, not a new sending interaction.

## I2 — before unreachable control / after wrapped history error; iPad (7th generation), iOS 18, light; viewport 1080×810 landscape; crop (820,24)–(1080,764), 260×740

| Before | After | Diff0 (zero threshold) | DiffT (5% fuzz) |
|---|---|---|---|
| ![Before I2](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/772dd53ca4fca77f/I2-before-crop.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e)<br>[Source full screen](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8a712e861ddeb568/before-I2.png) | ![After I2](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/29a78086cc748c8e/I2-after-crop.png)<br>[f76e21be6c](https://git.cafe/pingdotgg/t3code/commit/f76e21be6cdcf0936a28521badaf66e4a85bb9cc)<br>[Source full screen](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/75246e3afd71530c/after-I2-final.png) | ![Diff0 I2](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e19ff8f0ba53d517/I2-Diff0.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [f76e21be6c](https://git.cafe/pingdotgg/t3code/commit/f76e21be6cdcf0936a28521badaf66e4a85bb9cc) | ![DiffT I2, 5% fuzz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2d621e15075fb0ce/I2-DiffT-5pct.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [f76e21be6c](https://git.cafe/pingdotgg/t3code/commit/f76e21be6cdcf0936a28521badaf66e4a85bb9cc) |

Changed pixels: Diff0 **117,806**, DiffT **103,478**.

**What else changed:** Before: the history control is hidden under the header; no before error is claimed. After: the control is reachable and its wrapped history-error text appears below it. Feed content moves down with the spacer/error header, changing lower clipped content. The native header is identical at zero threshold. Existing retry motion remains linked below.

[Existing retry recording: wrapped error → loading → success/ROW01](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e2d9bf4d0b750666/after-I2-retry.mp4) · [Existing success still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/64d20c06c22ddcd0/after-I2-retry.png).

## G1 — glass inspector control; iPad Pro 11-inch (M4), iPadOS 26.0, light; viewport 1210×834 landscape; crop (726,34)–(1210,834), 484×800

| Before | After | Diff0 (zero threshold) | DiffT (5% fuzz) |
|---|---|---|---|
| ![Before G1](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/946cc22013dc058d/G1-before-crop.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e)<br>[Source full screen](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8d2f53e5dd9e15d6/G1-before-source.png) | ![After G1](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1442bda165c44b63/G1-after-crop.png)<br>[4980e33628](https://git.cafe/pingdotgg/t3code/commit/4980e3362893ef185de653a8c2350e3b034f9013)<br>[Source full screen](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/abcb8069f1400c6f/G1-after-source.png) | ![Diff0 G1](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bf0750bce2bafbfd/G1-Diff0.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [4980e33628](https://git.cafe/pingdotgg/t3code/commit/4980e3362893ef185de653a8c2350e3b034f9013) | ![DiffT G1, 5% fuzz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b58ed2e672944fa0/G1-DiffT-5pct.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [4980e33628](https://git.cafe/pingdotgg/t3code/commit/4980e3362893ef185de653a8c2350e3b034f9013) |

Changed pixels: Diff0 **0**, DiffT **0**.

**What else changed:** Nothing else changed in the inspector crop at zero threshold: native glass header, history control, ROW04, following rows, timestamps and composer are pixel-identical. Both sides retain the same complete inspector. Global status icons lie outside that fixed scope.

Within-build stability: {"before": {"full_pixels": 910, "crop_pixels": 0}, "after": {"full_pixels": 340, "crop_pixels": 0}}.
[Before stability full screen](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8dc26d98e7e93e79/G1-before-stability.png) · [After stability full screen](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/082c5629137516f0/G1-after-stability.png). These establish temporal repeatability, separately from the code comparison above.

## Reproduction and validation artifacts

- [repair-comparisons.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/38d5ded03dd79506/repair-comparisons.py)
- [repair-recaptures.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a3b85f8e7c12f47d/repair-recaptures.py)
- [recapture-seed.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/790675301260a023/recapture-seed.mjs)
- [simlock-runtime-compat.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d0ab7056dc2df44e/simlock-runtime-compat.mjs)
- [restore-public-artifacts.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9a60a0af59082f1a/restore-public-artifacts.py)
- [write-evidence.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/12223269d6f8640d/write-evidence.py)
- [recapture-driver.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/77c092801aa7fe28/recapture-driver.md)
- [recapture-environments.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f861a9a0c9c95f15/recapture-environments.json)
- [final-comparison-manifest.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8ce0d9d57c651734/final-comparison-manifest.json)

The final manifest records actual uploaded PNG SHA256 hashes, build SHAs, source/artifact URLs, comparison scope, changed-pixel counts and stability counts. The scripts reproduce the same pixels; PNG encoding may differ from the earlier Pillow output.

**Unverified requested rows:** none. Other matrix inventory remains outside this request. Checks/reviews, merge readiness, Android, web, desktop and additional interaction lifecycles were not assessed.

**Cleanup:** All three opened leases were closed (iPhone Xs iOS 18.6, unused iPad 27.2, iPadOS 26.0). Owned backend/Metro terminal sessions were stopped and ports 16238, 18181 and 18182 verified closed. The task-created before checkout was removed. The supplied checkout had already been removed externally; it was not modified by this task. No commits, pushes or PR edits were made. Only this task's scratch subdirectory will be removed after the evidence upload; the parent scratch is preserved.

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

## Verbatim ghdrop output

![F2-before-crop.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8463abc83984cae0/F2-before-crop.png)
![F2-after-crop.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/98083fc915f6945a/F2-after-crop.png)
![F2-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b667066fb167d1b2/F2-Diff0.png)
![F2-DiffT-5pct.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/90ef8d20d39631bd/F2-DiffT-5pct.png)
![F5-before-crop.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/27fcc08173af40f8/F5-before-crop.png)
![F5-after-crop.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5511d414d465e553/F5-after-crop.png)
![F5-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/635d24e8fa29e446/F5-Diff0.png)
![F5-DiffT-5pct.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a4f7e72dc404226e/F5-DiffT-5pct.png)
![F8-before-timestamp-masked.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c5d7c48579070292/F8-before-timestamp-masked.png)
![F8-after-timestamp-masked.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d709ccbf7e946efa/F8-after-timestamp-masked.png)
![F8-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6238dd5042f75728/F8-Diff0.png)
![F8-DiffT-5pct.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/776a173c13a44a43/F8-DiffT-5pct.png)
![I2-before-crop.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/772dd53ca4fca77f/I2-before-crop.png)
![I2-after-crop.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/29a78086cc748c8e/I2-after-crop.png)
![I2-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e19ff8f0ba53d517/I2-Diff0.png)
![I2-DiffT-5pct.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2d621e15075fb0ce/I2-DiffT-5pct.png)

![F3-before-source.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/eb1c39fc4b561e40/F3-before-source.png)
![F3-after-source.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/59beacb26313c3e2/F3-after-source.png)
![F3-before-crop.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fea9e540aadd4469/F3-before-crop.png)
![F3-after-crop.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8430a135223f4888/F3-after-crop.png)
![F3-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ebaf0d82eb28f1e3/F3-Diff0.png)
![F3-DiffT-5pct.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/980426c7790639e8/F3-DiffT-5pct.png)
![F3-before-stability.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/05af2521ffd5f8a7/F3-before-stability.png)
![F3-after-stability.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a3bcce7851492a31/F3-after-stability.png)

![G1-before-source.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8d2f53e5dd9e15d6/G1-before-source.png)
![G1-after-source.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/abcb8069f1400c6f/G1-after-source.png)
![G1-before-crop.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/946cc22013dc058d/G1-before-crop.png)
![G1-after-crop.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1442bda165c44b63/G1-after-crop.png)
![G1-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bf0750bce2bafbfd/G1-Diff0.png)
![G1-DiffT-5pct.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b58ed2e672944fa0/G1-DiffT-5pct.png)
![G1-before-stability.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8dc26d98e7e93e79/G1-before-stability.png)
![G1-after-stability.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/082c5629137516f0/G1-after-stability.png)

[repair-comparisons.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/38d5ded03dd79506/repair-comparisons.py)
[repair-recaptures.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a3b85f8e7c12f47d/repair-recaptures.py)
[recapture-seed.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/790675301260a023/recapture-seed.mjs)
[simlock-runtime-compat.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d0ab7056dc2df44e/simlock-runtime-compat.mjs)
[restore-public-artifacts.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9a60a0af59082f1a/restore-public-artifacts.py)
[write-evidence.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/12223269d6f8640d/write-evidence.py)
[recapture-driver.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/77c092801aa7fe28/recapture-driver.md)
[recapture-environments.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f861a9a0c9c95f15/recapture-environments.json)
[final-comparison-manifest.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8ce0d9d57c651734/final-comparison-manifest.json)

FRICTION:
- brief | F3's proposed y24 crop retains clock glyphs through y28; after excluding them, nine one-level back-arrow pixels remain. The real G1 crop retains three one-level glass-control pixels. Raw alternatives agree, requiring two real-app recaptures | audit suggested scopes at zero threshold, including native controls.
- tool | Pillow/NumPy were absent; initial processing needed a task-local virtualenv. The recovered reproduction uses ImageMagick and Python's standard library | include capture-processing dependencies.
- tool | The pool proxy recommends a devices inventory command that Simlock refuses | align proxy guidance with the catalog API.
- tool | Unqualified iPad allocation picked 27.2; CLI --os-version sends providerOsVersion, refused by Simlock. A task-local compatibility script added the supported plain allocate osVersion field, and capabilities confirmed 26.0. The unused 27.2 lease was closed | expose the gateway OS selector in agent-device and the pool runbook.
- tool | Native Open in T3 Code Dev alerts and Back commands timed out; iPad landscape alert coordinates did not land. Portrait acceptance worked. Two screenshot calls briefly reported Remote daemon is unavailable; reconnecting the existing proxy/session recovered it | report settled navigation and reliable native alert/screenshot status.
- model | An incremental unpinned ref and two improperly quoted text selectors were rejected; current pinned refs/coordinates worked | retain snapshot pins and use the documented quoted selector syntax.
- tool | Native provider icons initially had different loading states on G1. Reopening the before bundle after assets settled produced an exact controlled pair | await native asset settlement before selecting captures.
- infra | Near 15:08 UTC, the supplied checkout and task scratch were removed externally during capture. Already-uploaded artifacts were restored from public URLs; G1 completed from surviving before/after bundles and the same running synthetic backend. Unuploaded original scripts/logs were lost; reproduction scripts were reconstructed from recorded commands | retain child scratch and checkouts until its evidence report is delivered.
