### A2 iPhone 17 Pro 402×874 pt dark

**Status: SUFFICIENT — recapture of the iOS A2 overview only.** All other accepted rows remain untouched.

Actual Simlock pool iPhone 17 Pro, iOS 27.2; agent-device native simulator automation; React Native development client installed through `vp run mobile:install ios`; Metro from the pinned after checkout, compatible with both server revisions. Viewport 402×874 pt, DPR 3, font scale 1; full-screen PNG 402×874 (tool resampled), native recordings 1206×2622; labelled recordings 1206×2658 with a 36-pixel label above the original screen. Dark. JS clock frozen to 2026-11-03T05:00:00Z on both sides; both OS status bars read **9:56** (same-minute capture; no screenshot clock editing).

**What else changed:**

- Create PR changes from enabled white text/icon to disabled grey, and gains “No local commits to include in a PR.”
- The added description increases that row’s height. Review changes, Branches & worktrees, Link pull request and the card bottom move downward by about 18⅓ pt. The entire Link row is visible on both sides.
- Commit/Push, their descriptions and glyphs, the header and status bar are pixel-identical at Diff0. Their maximum channel delta is **0**. There are no residual antialiasing or highlight pixels in unchanged upper rows.
- The background outside the changed row/lower-card area is pixel-identical. No other visible change survives either threshold.

**Playback timestamps:** derived from the encoded labelled MP4s using ffprobe durations and ffmpeg frames at 0.5-second presentation-time intervals. Listed times are observed samples, not driver wall-clock offsets; transitions may fall between samples. Both 12.0-second frames were separately extracted and opened at readable size. Exact seeks at 19.5/19.9 seconds Before and 19.0/19.3 seconds After verify the dismissal wording; the 0.5-second grid is a resampling aid, not an exact transition boundary.

**Before steps:** 00:00 thread; 00:02.5 native Git menu (disabled Commit); 00:04 overview open; 00:06 grabber expansion underway; 00:07 expanded overview; **00:12 settled overview matching the selected still**; 00:19.5 Close pressed; **00:19.9 thread after dismissal**. Encoded labelled duration **20.063977s**; raw duration **20.001667s**.

**After steps:** 00:00 thread; 00:01.5 native Git menu (disabled Commit); 00:03.5 overview open; 00:06 grabber expansion underway; 00:07 expanded overview; **00:12 settled overview matching the selected still**; 00:19 overview dismissing; **00:19.3 thread after dismissal**. Encoded labelled duration **19.460402s**; raw duration **19.403333s**.

| Before recording | After recording |
|---|---|
| [before-labelled.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0cc96b8b709f4b9e/before-labelled.mp4)<br>[71646e0][base] | [after-labelled.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d09e3c6c2fe6fd73/after-labelled.mp4)<br>[0d27d85][head] |

**Overview**

| Before | After | Diff0 (delta ×255) | DiffT (>16/255) |
|---|---|---|---|
| ![Before — iOS A2 overview](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d9175a0c8d609dff/before-options.png)<br>[71646e0][base] | ![After — iOS A2 overview](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7973994f55b32fb6/after-options.png)<br>[0d27d85][head] | ![Diff0 — amplified full-screen difference](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/50911dccee215c0d/options-diff0.png)<br>[71646e0][base]→[0d27d85][head] | ![DiffT — pixels above 16/255](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f5b782277647844a/options-diff16.png)<br>[71646e0][base]→[0d27d85][head] |

**Pixel accounting** (full-screen delivered PNG coordinates, right/bottom exclusive):

- Whole screen: **23,042** changed pixels at Diff0; **19,694** at >16/255; both bounding boxes **[20,308,382,600)**.
- Entire unchanged upper region **[0,0,402,298)**: **0** changed pixels at Diff0 and T16; max channel delta **0**. This includes Commit/Push, separator, header, OS clock and status glyphs. Specifically, Commit/Push **[0,140,402,298)**: **0** changed pixels; max **0**; no residual location.
- Every changed pixel is in the Create PR/lower-card region. Outside **[20,308,382,600)**: **0** changed pixels, max **0** at either threshold.
- Both sides passed two pixel-identical full-screen screenshots 500ms apart after five untouched seconds. No row in the overview was tapped before the still. Native first-row y=**140 pt** on both sides, at the top scroll position; Sheet Grabber reads Expanded on both. Expansion used the grabber, with no content swipe.

| File | SHA-256 |
|---|---|
| before-options.png | `04448e0fabcfc53d1576f4275bf6304d65eee66b03574b3ba3b137f13f3a8d47` |
| after-options.png | `4d4f931eec3e56f6519c48ba9a83831e38cfbe05958a5f2b38814ec72598d43c` |
| options-diff0.png | `342d32509811a0d990956b89e5f664a0f8096d27bd1eda32f1d758eeb423dd4b` |
| options-diff16.png | `fefc0742cda231c72c1286d05868937194497c938df1f0480e0d5ec32847a77a` |

**Fixture and isolation:** same existing real-forge A2 clone on both sides, clean `a2` tracking `origin/a2`, H=[8e409fe](https://github.com/juliusmarminge/t3-evidence-28494-20261103-0245/commit/8e409fe30dc0e4b619b9286396d966009aa70fd0), zero upstream ahead/behind. The fixture repository’s actual default is verified **main**; merged fixture [#2](https://github.com/juliusmarminge/t3-evidence-28494-20261103-0245/pull/2) retains that head and base. Real remote-refresh RPC gives A0/B0/Utrue on both, D1→0. No provider status injection, enabled baseline Create PR, Push or provider turn was triggered.

Fresh databases were created under this recapture’s `/tmp/lead-28494-r2b/capture3/<side>-<ts>/home`, with explicit `--home-dir` and `T3CODE_DEV_SEED=0`. The same synthetic RPC seeding driver created A2 and its stopped history on each side. Both remote refreshes completed before opening the overview. Both servers ran through the pair; all owned servers/Metro are now stopped and the agent-device lease is closed. Worktrees are clean and retained. No PR body edit, comment or push occurred.

The first honest retake using the previous content gesture reproduced the rejected 356 glyph pixels and a ⅓-pt top-row offset (plus 34 separator pixels). The selected second retake expanded from the native grabber and removed all of those differences without image alignment, masking or pixel edits. Original still pixels are delivered unchanged; only the separately labelled recordings and combined comparison sheet add labels outside the captured screen.

**Upload integrity:** all four public MP4s were downloaded back with curl and probed with ffprobe; byte lengths and SHA-256 match the completed local sources. No truncated upload is used.

**Supporting artifacts:**

- [overview-comparison.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ee378e89742e11b7/overview-comparison.png)
- [pixel-comparison.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/662d722236bc393b/pixel-comparison.json)
- [playback-state-matches.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8823e7a0c684e48f/playback-state-matches.json)
- [before-filmstrip.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0dad30afaf60601c/before-filmstrip.png)
- [after-filmstrip.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/180aed1e312e7056/after-filmstrip.png)
- [before-playback-12s.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/083a44ed50038285/before-playback-12s.png)
- [after-playback-12s.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8e0453d669e283e9/after-playback-12s.png)
- [before-options-check.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4c42f21c889a7a94/before-options-check.png)
- [after-options-check.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fa8a37ebe1ec6492/after-options-check.png)
- [before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3976c6adeaf399bf/before.mp4)
- [after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6977ebc5d073eb75/after.mp4)
- [before-ffprobe.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c036704737b7454c/before-ffprobe.json)
- [after-ffprobe.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/172b17c14d7bfaaa/after-ffprobe.json)
- [uploaded-video-verification.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/571fc5dd63e4ada9/uploaded-video-verification.json)
- [before-environment.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/829f2c6ed022626c/before-environment.json)
- [after-environment.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9e847a509061421b/after-environment.json)
- [before-status.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4c5fbdbf0ede5a94/before-status.json)
- [after-status.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/edc1e0ba5e8d2d0e/after-status.json)
- [before-overview-tree.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8b00b9f5836d77a1/before-overview-tree.json)
- [after-overview-tree.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c6782bdbed62dd44/after-overview-tree.json)
- [fixture-default.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0e7371f75ffc2742/fixture-default.json)
- [fixture-forge.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/09f7359ff4b675ac/fixture-forge.json)
- [fixture-git.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f7fb79e7fd9dada4/fixture-git.json)
- [driver-timeline.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/87999543f4f7f5cd/driver-timeline.json)
- [cleanup-final.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3d4fda6324feacc2/cleanup-final.json)

- [upload hash manifest](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/58fe85d199c76b71/upload-links.json)
- [verbatim ghdrop upload output](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/24df4ad6b357a24c/artifact-uploads.md)

- [exact-playback.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/21dd03c0df23092c/exact-playback.py)
- [before-exact-timeline.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5ea18df6ae6d2938/before-exact-timeline.png)
- [after-exact-timeline.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/517c03f8e31ca4dc/after-exact-timeline.png)

**Reproduction and changed scripts:**

- [native-driver.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bc0e8113edef298b/native-driver.py)
- [capture-native-r3.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3abce830b0cf3b17/capture-native-r3.py)
- [rpc.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cdeda8a597a1556f/rpc.mjs)
- [pair-native.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/419dbf8619df2540/pair-native.py)
- [native-runtime.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7a0c46531f9ebbbc/native-runtime.mjs)
- [runtime-freeze.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/baee29372592354d/runtime-freeze.js)
- [prepare-media.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/40f5fd3f05637244/prepare-media.py)
- [playback-state-times.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cc1e77416e399de1/playback-state-times.py)
- [analyze-pixels.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e32e97f8e8fd81e5/analyze-pixels.py)
- [make-comparison.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/362ad4342ed5994a/make-comparison.py)
- [upload-artifacts.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7dae834341cbeb23/upload-artifacts.py)
- [verify-uploads.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/404dc065bca9bf7f/verify-uploads.py)

- [launch-runtime.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/072a657b287917f8/launch-runtime.py)
- [envs.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6f4868e823c00d5e/envs.json)
- [before-seed.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e3c7670b4a3729e9/before-seed.json)
- [after-seed.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8655b8bc1d293197/after-seed.json)
- [build-entry.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d8474ac3e026bd80/build-entry.py)
- [FRICTION.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/59430dc902048d85/FRICTION.md)

All selected stills, diffs, stability-check captures, comparison sheet, playback filmstrips and extracted 12-second frames were opened and inspected before upload. Optional iOS reduced-motion override remains unavailable; stable image pairs are the capture gate. No requested A2 capture is unverified. This statement covers only iOS A2.

Model/harness: gpt-6.1-sol through Codex; agent-device via Simlock, React Native/Metro, RPC, ffmpeg/ffprobe.

[base]: https://github.com/pingdotgg/t3code/commit/71646e031a6dc9db1309b3b9dff597f872cf2fd3
[head]: https://github.com/pingdotgg/t3code/commit/0d27d85707dcdc7de5d0fcd05f5649b030203899
