## Evidence

**6/12 matrix rows have complete controlled interaction recordings; F4 has incomplete attempts and F6 is qualified by a one-native-pixel offset (8/12 with paired media).** These counts describe capture coverage, not passing acceptance. The additional live F1 variant is reported separately.

**What else changed / limits:** unfolded composer is hidden on both sides; F4 cannot switch to the covered input. Live after field clears the header, but its heading remains clipped, its field-to-composer gap is about 156 pt, and Working/scroll-to-end overlaps Thinking; minimum shift is not established. Native clock/island presentation, caret phase, keyboard predictions, glass/video rasterization and live timers vary independently of this patch. No regression is inferred from those pixels.

Environment for every capture: real iOS app on Simulator 27.2, light, default Large text, English QWERTY, native 3× and full-device PNG/video exports at 1×. DF = iPhone Duo folded 466×678 pt; DU = same Duo unfolded 951×669 pt; P = iPhone 17 Pro 402×874 pt (retained pass 1). Odd DU video bounds have one pixel of H.264 padding. Both native clients use SDK 27.1; each revision has its own fingerprint and isolated server/database.

Fresh DBs were created with `T3CODE_DEV_SEED=0`, then the same uploaded Replay/SQLite driver seeded synthetic cards. Long fixtures have 30 fixed lines before and 30 after; the Worked group is expanded. Live F1 uses the same prompt on both sides through OpenCode and the hub, without a secret submission. No real database was read/copied.

Two screenshot brackets are separated by at least 500 ms (remote command latency adds time). Static new screenshot rest brackets match exactly within each side; F6 has a cross-side one-native-pixel offset, so its broadly lit text diffs are marked non-comparable; focused brackets can differ by the caret. Live Working timers prevent literal screenshot-bracket equality; supplementary 500 ms video brackets have exact rest matches but 95–518 changed pixels at keyboard-up (caret/timer/Thinking/compression), so live frames are qualified rather than strictly settled. Every included still and red diff was visually inspected; stills come from recordings near brackets. Diff0 is exact-pixel differences amplified to red; DiffT uses `compare -fuzz 5%`, with no crop or alignment transform. Driver times include command/transport latency; frame manifests carry extraction times.

### F1-DF — DF 466×678, iOS 27.2, light

Retained pass 1: mild synthetic difference only, field about 19 pt lower after; this fixture does not reproduce the reported heading occlusion.

Steps (seconds after record-start returned), before: 13.0s press role=securetextfield; 15.6s type abc; 24.5s press "Dismiss keyboard"; 33.6s press role=securetextfield; 42.6s press "Dismiss keyboard"; after: 8.6s press role=securetextfield; 11.8s type abc; 22.0s press "Dismiss keyboard"; 31.5s press role=securetextfield; 43.4s press "Dismiss keyboard".

[F1-DF-before-final.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e702b99b1f5830c4/F1-DF-before-final.mp4) | [F1-DF-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d352cb1a58b96509/F1-DF-after.mp4)

| State | Before<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) | After<br>[703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) | Diff0<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) → [703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) | DiffT 5%<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) → [703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) |
|---|---|---|---|---|
| rest | ![F1-DF-before-final-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/79ecea3e89793e99/F1-DF-before-final-rest.png) | ![F1-DF-after-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/846c75e932b460fd/F1-DF-after-rest.png) | ![F1-DF-rest-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/413a1ccfaa34253c/F1-DF-rest-diff0.png) | ![F1-DF-rest-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/538224371253b977/F1-DF-rest-diffT.png) |
| keyboard-up | ![F1-DF-before-final-keyboard-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b94a028e83c26c9c/F1-DF-before-final-keyboard-up.png) | ![F1-DF-after-keyboard-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3ca1ad8c92aed232/F1-DF-after-keyboard-up.png) | ![F1-DF-keyboard-up-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/23ba1ede764c0c2c/F1-DF-keyboard-up-diff0.png) | ![F1-DF-keyboard-up-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9ee5ff2b3092e47a/F1-DF-keyboard-up-diffT.png) |
| final-rest | ![F1-DF-before-final-final-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/72df71ef1fc412f3/F1-DF-before-final-final-rest.png) | ![F1-DF-after-final-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0f84d46ff9c203c1/F1-DF-after-final-rest.png) | ![F1-DF-final-rest-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/079f867295efae0f/F1-DF-final-rest-diff0.png) | ![F1-DF-final-rest-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3cd107d276052dc4/F1-DF-final-rest-diffT.png) |

Frame extraction / screenshot brackets: after: rest 1.588s / 0 bracket pixels, keyboard-up 15.241s / 66 bracket pixels, final-rest 46.006s / 0 bracket pixels.

### F1-P — P 402×874, iOS 27.2, light

Retained pass 1: field, header and composer align; after has a disclosed transport gap during the second focus cycle.

Steps (seconds after record-start returned), before: 13.5s press role=securetextfield; 16.2s type abc; 31.3s fill role=securetextfield ; 36.0s keyboard dismiss; 48.8s press role=securetextfield; 51.3s type abc; 61.1s fill role=securetextfield ; 65.7s keyboard dismiss; after: 13.9s press role=securetextfield; 17.0s type abc; 27.2s fill role=securetextfield ; 32.6s keyboard dismiss; 41.4s press role=securetextfield; 43.8s type abc; 173.2s fill role=securetextfield ; 177.2s keyboard dismiss.

[F1-P-before-final.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2ff9b5e8b8088067/F1-P-before-final.mp4) | [F1-P-after-final.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/34e752b678b19d6d/F1-P-after-final.mp4)

| State | Before<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) | After<br>[703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) | Diff0<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) → [703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) | DiffT 5%<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) → [703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) |
|---|---|---|---|---|
| rest | ![F1-P-before-final-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2d382db27f3e060a/F1-P-before-final-rest.png) | ![F1-P-after-final-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cf3db39b7db31e64/F1-P-after-final-rest.png) | ![F1-P-rest-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/68dcfe76bde83fd9/F1-P-rest-diff0.png) | ![F1-P-rest-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/115ff4d451a26f85/F1-P-rest-diffT.png) |
| keyboard-up | ![F1-P-before-final-keyboard-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a49e6d48d33343c1/F1-P-before-final-keyboard-up.png) | ![F1-P-after-final-keyboard-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/79957f680c8b57e4/F1-P-after-final-keyboard-up.png) | ![F1-P-keyboard-up-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5fb809dbb6e8982/F1-P-keyboard-up-diff0.png) | ![F1-P-keyboard-up-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e1b4cbf4b3287810/F1-P-keyboard-up-diffT.png) |
| final-rest | ![F1-P-before-final-final-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/17566530b4742428/F1-P-before-final-final-rest.png) | ![F1-P-after-final-final-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f1b7b23fa5aac39c/F1-P-after-final-final-rest.png) | ![F1-P-final-rest-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d32394fc978be2c3/F1-P-final-rest-diff0.png) | ![F1-P-final-rest-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/71aefe54252e071c/F1-P-final-rest-diffT.png) |

Pass 1 timestamps/brackets retained from the linked original sheet.

### F2-DF — DF 466×678, iOS 27.2, light

Composer geometry unchanged; draft retained and rest restored.

Steps (seconds after record-start returned), before: 8.6s press role=text-view; 13.1s type Draft deployment note; 23.2s press "Dismiss keyboard"; after: 7.9s press role=text-view; 11.9s type Draft deployment note; 20.1s press "Dismiss keyboard".

[F2-DF-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/717b301c196f3932/F2-DF-before.mp4) | [F2-DF-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4a8c3a6fff64358b/F2-DF-after.mp4)

| State | Before<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) | After<br>[703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) | Diff0<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) → [703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) | DiffT 5%<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) → [703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) |
|---|---|---|---|---|
| rest | ![F2-DF-before-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/714283d2331ae25a/F2-DF-before-rest.png) | ![F2-DF-after-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/998baaa6d0b7e65e/F2-DF-after-rest.png) | ![F2-DF-rest-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5df32329bd0224b9/F2-DF-rest-diff0.png) | ![F2-DF-rest-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/483c1adfedf912cd/F2-DF-rest-diffT.png) |
| keyboard-up | ![F2-DF-before-keyboard-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/90f020911e290327/F2-DF-before-keyboard-up.png) | ![F2-DF-after-keyboard-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6ffe4a8e297eda72/F2-DF-after-keyboard-up.png) | ![F2-DF-keyboard-up-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e30c1173ea2060c7/F2-DF-keyboard-up-diff0.png) | ![F2-DF-keyboard-up-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a7b11c6fc7648ce7/F2-DF-keyboard-up-diffT.png) |
| final-rest | ![F2-DF-before-final-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8e0d87e41a3c5bc7/F2-DF-before-final-rest.png) | ![F2-DF-after-final-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/136cdadcca57ce0d/F2-DF-after-final-rest.png) | ![F2-DF-final-rest-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0e3710ae8b1f94aa/F2-DF-final-rest-diff0.png) | ![F2-DF-final-rest-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b4cfebd8cb96b4da/F2-DF-final-rest-diffT.png) |

Frame extraction / screenshot brackets: before: rest 1.423s / 0 bracket pixels, keyboard-up 16.518s / 75 bracket pixels, final-rest 26.638s / 0 bracket pixels; after: rest 1.453s / 0 bracket pixels, keyboard-up 13.88s / 0 bracket pixels, final-rest 22.007s / 2 bracket pixels.

### F3plus-DF — DF 466×678, iOS 27.2, light

Feed field about 19 pt lower after; composer geometry matches; final rest restored.

Steps (seconds after record-start returned), before: 19.0s press role=securetextfield; 29.5s press role=text-view; 40.1s press role=securetextfield; 43.3s press role=text-view; 46.2s press "Dismiss keyboard"; after: 7.8s press role=securetextfield; 16.8s press role=text-view; 25.2s press role=securetextfield; 27.7s press role=text-view; 30.0s press "Dismiss keyboard".

[F3plus-DF-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8e8ae298b3ac75fb/F3plus-DF-before.mp4) | [F3plus-DF-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c87657ae054a2756/F3plus-DF-after.mp4)

| State | Before<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) | After<br>[703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) | Diff0<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) → [703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) | DiffT 5%<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) → [703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) |
|---|---|---|---|---|
| rest | ![F3plus-DF-before-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a7d8619e270ad3f6/F3plus-DF-before-rest.png) | ![F3plus-DF-after-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0795a21bee573f25/F3plus-DF-after-rest.png) | ![F3plus-DF-rest-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/54d9998de31af299/F3plus-DF-rest-diff0.png) | ![F3plus-DF-rest-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/65afd03f29810302/F3plus-DF-rest-diffT.png) |
| keyboard-up | ![F3plus-DF-before-keyboard-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f9cc1f16211ebc63/F3plus-DF-before-keyboard-up.png) | ![F3plus-DF-after-keyboard-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9c6760ce37e38006/F3plus-DF-after-keyboard-up.png) | ![F3plus-DF-keyboard-up-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6b0b86080b497147/F3plus-DF-keyboard-up-diff0.png) | ![F3plus-DF-keyboard-up-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2b4d362dd99e9419/F3plus-DF-keyboard-up-diffT.png) |
| composer | ![F3plus-DF-before-composer.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7c1306b33fa95119/F3plus-DF-before-composer.png) | ![F3plus-DF-after-composer.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/16009faac6133a29/F3plus-DF-after-composer.png) | ![F3plus-DF-composer-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4d62282107b6e310/F3plus-DF-composer-diff0.png) | ![F3plus-DF-composer-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a08c9f8fec822d1d/F3plus-DF-composer-diffT.png) |
| final-rest | ![F3plus-DF-before-final-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/09e703af54e096d8/F3plus-DF-before-final-rest.png) | ![F3plus-DF-after-final-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cf1280249d303baf/F3plus-DF-after-final-rest.png) | ![F3plus-DF-final-rest-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ebbe3739c9ac7d0d/F3plus-DF-final-rest-diff0.png) | ![F3plus-DF-final-rest-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ca90e22d47af90f8/F3plus-DF-final-rest-diffT.png) |

Frame extraction / screenshot brackets: before: rest 12.102s / 0 bracket pixels, keyboard-up 22.399s / 68 bracket pixels, final-rest 49.622s / 0 bracket pixels, composer 33.014s / 0 bracket pixels; after: rest 1.39s / 2 bracket pixels, keyboard-up 9.83s / 0 bracket pixels, final-rest 31.966s / 0 bracket pixels, composer 18.661s / 0 bracket pixels.

### F1-DU — DU 951×669, maximized content, iOS 27.2, light

Same fresh Reading→Staging mount then maximize content. Composer remains hidden behind keyboard on both sides during feed focus; both focus cycles and return complete.

Steps (seconds after record-start returned), before: 14.2s press role=securetextfield; 17.3s type abc; 28.4s press "Dismiss keyboard"; 39.3s press role=securetextfield; 50.2s press "Dismiss keyboard"; after: 8.6s press role=securetextfield; 11.8s type abc; 22.5s press "Dismiss keyboard"; 33.0s press role=securetextfield; 49.4s press "Dismiss keyboard".

[F1-DU-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/71836c8cdfb069e3/F1-DU-before.mp4) | [F1-DU-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6cc87a21b2cb948c/F1-DU-after.mp4)

| State | Before<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) | After<br>[703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) | Diff0<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) → [703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) | DiffT 5%<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) → [703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) |
|---|---|---|---|---|
| rest | ![F1-DU-before-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7c2f2b7b461a685d/F1-DU-before-rest.png) | ![F1-DU-after-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/48651c19afde3e40/F1-DU-after-rest.png) | ![F1-DU-rest-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d3c827f886acbc53/F1-DU-rest-diff0.png) | ![F1-DU-rest-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4f1cfc75028163b7/F1-DU-rest-diffT.png) |
| keyboard-up | ![F1-DU-before-keyboard-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/46cafac29a352dfa/F1-DU-before-keyboard-up.png) | ![F1-DU-after-keyboard-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/880985f0700303f6/F1-DU-after-keyboard-up.png) | ![F1-DU-keyboard-up-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d745a5c471691ee4/F1-DU-keyboard-up-diff0.png) | ![F1-DU-keyboard-up-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cf469f150abd71be/F1-DU-keyboard-up-diffT.png) |
| final-rest | ![F1-DU-before-final-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bac0efa91ee5a4cf/F1-DU-before-final-rest.png) | ![F1-DU-after-final-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0b20d9f0e0be606e/F1-DU-after-final-rest.png) | ![F1-DU-final-rest-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4ebe90e65096377a/F1-DU-final-rest-diff0.png) | ![F1-DU-final-rest-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4170dd08ce79414c/F1-DU-final-rest-diffT.png) |

Frame extraction / screenshot brackets: before: rest 6.965s / 0 bracket pixels, keyboard-up 20.949s / 0 bracket pixels, final-rest 53.903s / 0 bracket pixels; after: rest 1.499s / 0 bracket pixels, keyboard-up 15.234s / 0 bracket pixels, final-rest 52.93s / 0 bracket pixels.

### F4-DF — DF 466×678, iOS 27.2, light — incomplete attempt

From input top y439, composer focus covers the field and the driver refuses the next tap on both sides. Dismissal restores this attempted reading position; the full round trip remains unverified. Pass 1 lost position on its smaller-content fixture.

Steps (seconds after record-start returned), before: 9.1s press role=text-view; 25.4s press role=securetextfield; 25.4s tap refused: field behind keyboard; dismiss; 27.3s press "Dismiss keyboard"; after: 9.4s press role=text-view; 25.5s press role=securetextfield; 25.5s tap refused: field behind keyboard; dismiss; 27.4s press "Dismiss keyboard".

[F4-DF-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9103fef65db91fa6/F4-DF-before.mp4) | [F4-DF-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d9dafd11f8a6ef41/F4-DF-after.mp4)

| State | Before<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) | After<br>[703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) | Diff0<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) → [703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) | DiffT 5%<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) → [703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) |
|---|---|---|---|---|
| rest | ![F4-DF-before-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7b32ff0a2614871a/F4-DF-before-rest.png) | ![F4-DF-after-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/95233418809c61a6/F4-DF-after-rest.png) | ![F4-DF-rest-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2caed02c6d0b0daf/F4-DF-rest-diff0.png) | ![F4-DF-rest-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/22928b0a8e59114e/F4-DF-rest-diffT.png) |
| composer | ![F4-DF-before-composer.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cf0454da623b35ac/F4-DF-before-composer.png) | ![F4-DF-after-composer.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8287add120d3046b/F4-DF-after-composer.png) | ![F4-DF-composer-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ca3d48b2c83998b8/F4-DF-composer-diff0.png) | ![F4-DF-composer-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a4c416ba554f9fa2/F4-DF-composer-diffT.png) |
| final-rest | ![F4-DF-before-final-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c7b6a9206fad8fa9/F4-DF-before-final-rest.png) | ![F4-DF-after-final-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/62370cfceafd6f9d/F4-DF-after-final-rest.png) | ![F4-DF-final-rest-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3d0546244fd95490/F4-DF-final-rest-diff0.png) | ![F4-DF-final-rest-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7c97b01c7d2fc212/F4-DF-final-rest-diffT.png) |

Frame extraction / screenshot brackets: before: rest 1.702s / 0 bracket pixels, final-rest 30.961s / 0 bracket pixels, composer 18.477s / 50 bracket pixels; after: rest 2.222s / 0 bracket pixels, final-rest 30.983s / 0 bracket pixels, composer 18.705s / 0 bracket pixels.

### F5-DF — DF 466×678, iOS 27.2, light

Already visible field stays at about y200 on focus; dismissal restores the reading position.

Steps (seconds after record-start returned), before: 9.0s press role=securetextfield; 25.6s press "Dismiss keyboard"; after: 8.6s press role=securetextfield; 25.0s press "Dismiss keyboard".

[F5-DF-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/449fd3e35d84bf65/F5-DF-before.mp4) | [F5-DF-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4361e27c201d40de/F5-DF-after.mp4)

| State | Before<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) | After<br>[703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) | Diff0<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) → [703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) | DiffT 5%<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) → [703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) |
|---|---|---|---|---|
| rest | ![F5-DF-before-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/12a847c6c6da779b/F5-DF-before-rest.png) | ![F5-DF-after-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f1d810814228bbc5/F5-DF-after-rest.png) | ![F5-DF-rest-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/faad6f3e769d5180/F5-DF-rest-diff0.png) | ![F5-DF-rest-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e1112842e11d068c/F5-DF-rest-diffT.png) |
| keyboard-up | ![F5-DF-before-keyboard-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8b4c856ae961e56c/F5-DF-before-keyboard-up.png) | ![F5-DF-after-keyboard-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ca6b34eeba727c7f/F5-DF-after-keyboard-up.png) | ![F5-DF-keyboard-up-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/968f7cd6d773c337/F5-DF-keyboard-up-diff0.png) | ![F5-DF-keyboard-up-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/54ecda2f08f031a3/F5-DF-keyboard-up-diffT.png) |
| final-rest | ![F5-DF-before-final-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/27e3712516b3394b/F5-DF-before-final-rest.png) | ![F5-DF-after-final-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2673959ec4695898/F5-DF-after-final-rest.png) | ![F5-DF-final-rest-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/50469218a8a930e1/F5-DF-final-rest-diff0.png) | ![F5-DF-final-rest-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b306cc6a894f801d/F5-DF-final-rest-diffT.png) |

Frame extraction / screenshot brackets: before: rest 1.655s / 0 bracket pixels, keyboard-up 18.589s / 0 bracket pixels, final-rest 29.328s / 0 bracket pixels; after: rest 1.526s / 0 bracket pixels, keyboard-up 18.036s / 63 bracket pixels, final-rest 28.53s / 0 bracket pixels.

### F6-DF — DF 466×678, iOS 27.2, light — incomplete attempt

QUALIFIED: same expanded 30+30 content, header visible; input y73.33 before vs y73.67 after. Focus leaves overlap before and clears it after; dismissal reverses correction. One native pixel offset lights text throughout tolerant rest/final diffs, so these are not a strict pixel-comparable pair.

Steps (seconds after record-start returned), before: 9.0s press role=securetextfield; 19.8s press "Dismiss keyboard"; after: 10.8s press role=securetextfield; 22.0s press "Dismiss keyboard".

[F6-DF-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cf80a00aa94510ad/F6-DF-before.mp4) | [F6-DF-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/125ab2df8395554e/F6-DF-after.mp4)

| State | Before<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) | After<br>[703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) | Diff0<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) → [703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) | DiffT 5%<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) → [703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) |
|---|---|---|---|---|
| rest | ![F6-DF-before-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6dd31d94306b1c81/F6-DF-before-rest.png) | ![F6-DF-after-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/08a3ccc03632fd56/F6-DF-after-rest.png) | ![F6-DF-rest-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/261e0a2a77befbcc/F6-DF-rest-diff0.png) | ![F6-DF-rest-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a7f3fbf95ae89c07/F6-DF-rest-diffT.png) |
| keyboard-up | ![F6-DF-before-keyboard-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/aa642b056cb919c9/F6-DF-before-keyboard-up.png) | ![F6-DF-after-keyboard-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/684cc4887e3938b7/F6-DF-after-keyboard-up.png) | ![F6-DF-keyboard-up-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a5bd7a7efe4b2fb2/F6-DF-keyboard-up-diff0.png) | ![F6-DF-keyboard-up-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/84370d9666f6c769/F6-DF-keyboard-up-diffT.png) |
| final-rest | ![F6-DF-before-final-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a8c3f680518d1567/F6-DF-before-final-rest.png) | ![F6-DF-after-final-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/59b3564578eb1f68/F6-DF-after-final-rest.png) | ![F6-DF-final-rest-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8061682d6e06e117/F6-DF-final-rest-diff0.png) | ![F6-DF-final-rest-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7361eb3fb3b383b6/F6-DF-final-rest-diffT.png) |

Frame extraction / screenshot brackets: before: rest 1.673s / 0 bracket pixels, keyboard-up 12.737s / 65 bracket pixels, final-rest 23.453s / 0 bracket pixels; after: rest 1.867s / 0 bracket pixels, keyboard-up 14.635s / 69 bracket pixels, final-rest 25.648s / 0 bracket pixels.

### F1-live-DF — DF 466×678, iOS 27.2, light

Live Working + pending card reproduces overlap: before input top is under y82 header; after field y117–164 clears it. Heading remains partly clipped and about 156 pt remains above composer y320: minimum shift is not established. After Working/scroll-to-end controls overlap Thinking. Live timer brackets are qualified, not literally settled.

Steps (seconds after record-start returned), before: 9.6s press role=securetextfield; 12.9s type abc; 23.3s press "Dismiss keyboard"; 35.4s press role=securetextfield; 47.0s press "Dismiss keyboard"; after: 9.2s press role=securetextfield; 12.3s type abc; 23.9s press "Dismiss keyboard"; 36.3s press role=securetextfield; 46.9s press "Dismiss keyboard".

[F1-live-DF-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9985b1d92e3f71be/F1-live-DF-before.mp4) | [F1-live-DF-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/70cc99be3ac042a1/F1-live-DF-after.mp4)

| State | Before<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) | After<br>[703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) | Diff0<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) → [703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) | DiffT 5%<br>[80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412) → [703f28f7a3](https://github.com/pingdotgg/t3code/commit/703f28f7a31eacc55d8e5b0b9ed2eb7c5ce2c890) |
|---|---|---|---|---|
| rest | ![F1-live-DF-before-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d22ff91cf25db176/F1-live-DF-before-rest.png) | ![F1-live-DF-after-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fe45e9589a755bd7/F1-live-DF-after-rest.png) | ![F1-live-DF-rest-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f233f13ae18d0ef9/F1-live-DF-rest-diff0.png) | ![F1-live-DF-rest-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/27cb0580816ba829/F1-live-DF-rest-diffT.png) |
| keyboard-up | ![F1-live-DF-before-keyboard-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4cb99851af9c0301/F1-live-DF-before-keyboard-up.png) | ![F1-live-DF-after-keyboard-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c6cd3d8e85ba0aa8/F1-live-DF-after-keyboard-up.png) | ![F1-live-DF-keyboard-up-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2862049e4dbe8496/F1-live-DF-keyboard-up-diff0.png) | ![F1-live-DF-keyboard-up-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/573de9dcc556c2bd/F1-live-DF-keyboard-up-diffT.png) |
| final-rest | ![F1-live-DF-before-final-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9cbfb1ef13a7d268/F1-live-DF-before-final-rest.png) | ![F1-live-DF-after-final-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/087f7f4ab744ee8b/F1-live-DF-after-final-rest.png) | ![F1-live-DF-final-rest-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1ac472d924e7803d/F1-live-DF-final-rest-diff0.png) | ![F1-live-DF-final-rest-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0e51fd798062f016/F1-live-DF-final-rest-diffT.png) |

Frame extraction / screenshot brackets: before: rest 1.77s / 356 bracket pixels, keyboard-up 16.368s / 268 bracket pixels, final-rest 51.425s / 65 bracket pixels; after: rest 1.459s / 460 bracket pixels, keyboard-up 15.907s / 1071 bracket pixels, final-rest 50.39s / 350 bracket pixels.


Unverified: strict F6 pixel comparison (one-native-pixel offset), F3− (at-end header geometry), full F4 focus sequence, F7 send, F9 reference entry: not completed within the capture budget. F8: deliberately unit-test-only; public APIs cannot seed it. iOS <26: pool inventory forwarding rejects `devices`; only the warm 27.2 runtime was available, so the header-spacer path remains unverified.

Pass 1 F1-P after has a 34–166s transport gap; native status/island circles differ on some first-pass frames. Dummy `abc` enables Save and leaves bullets; P clears it before dismissal. Keyboard Passwords/predictions follow focus target. These are disclosed input/native differences, not patch effects.

Scripts: [bootstrap.sh](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/61fbd12dd8c939e4/bootstrap.sh) · [seed.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ac8ad634691093a4/seed.py) · [capture.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/576bfc1bc6a85eea/capture.py) · [postprocess.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/51a4d9961625afdf/postprocess.py) · [position-right.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dc6027059a71a178/position-right.py) · [plan.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3730d4cb6e559d7b/plan.json) · [live.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/863f6623bf41dbb3/live.py) · [live-prompt.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0f3d3973a5ca34de/live-prompt.txt) · [build-evidence.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/78523c16710431c4/build-evidence.py)

Original recordings/brackets, actions and frame manifests: [accepted-native-before.tar.gz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a475d13997a1c547/accepted-native-before.tar.gz) · [accepted-native-after.tar.gz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0fe85aea200b0a67/accepted-native-after.tar.gz) · [live-brackets.tar.gz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bac09857d860a86c/live-brackets.tar.gz) · [frame-manifests.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/04fef6d5520cf678/frame-manifests.json). Full script bundle: [capture-scripts-r2.tar.gz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/feb8459dd1eb39d0/capture-scripts-r2.tar.gz).

Cleanup verified: lease closed, owned dev/Metro ports stopped, before helper restored and worktree removed, after checkout clean. No edits, commits or PR comments. AI-assisted; verified with the tests and tools listed above.
