## Evidence

Capture coverage is **5 / 19 required rows** at [eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5): S2, F1, F3, F4 and G1. The other 14 rows remain unverified or partially recorded; this package is insufficient to close the full proof matrix. This is a capture report, not a merge recommendation.

**Scope and differences outside the inset title:** this comparison spans the supplied merge-base [ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) to the supplied head [eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5), including the LegendList 3.3.5 → 3.7.2 upgrade, native column-width handling and list anchoring changes. Auxiliary sidebar state changed during the actual replay-send tests, and the Expo development overlay differs between some captures. Those pixels must not be attributed to the inset fix.

Environment: real T3 Code native development client, independently served from the before and after checkouts, both native fingerprints `5fa891c99bf29870cc7d56112e3458d95a948393`. Fresh isolated `.t3` homes with `T3CODE_DEV_SEED=0`; synthetic projection fixtures on each side, written only while its server was stopped. Actual sends and search use the server RPC. No live userdata was copied or modified. Device pool simulators: iPad (7th generation), iOS 18, landscape, 1080×810 output at 1×, light for static rows and dark for Search; iPhone Xs, iOS 18, portrait, 375×812 output at 1×, light; iPad Pro 11-inch (M4), iOS 26, landscape, 1210×834 output at 1×, light; iPhone 17 Pro, iOS 26, portrait, 402×874 output at 1×, dark. Reported system text size was `large` on all four (the normal/default setting); no custom app font scale was applied. OS minor versions were not separately recorded. Native videos retain the device encoder's original pixel dimensions; stills are full-screen 1× captures.

Every accepted still has a raw A/B pair taken at least 500 ms apart, pixel-identical after masking **only the status-bar clock**. The final proof manifest verifies all 12 retained frames (five complete row pairs plus the partial glass resting-message pair). Scroll-indicator fades caused earlier attempts to fail; the manifest selects the subsequent stable attempt. Earlier S1/S8 baselines that differed outside the clock were rejected. The clipped history control in the before F1/F3 images is the reproduced defect, not a stale frame. Every retained image, diff and recording contact sheet was opened and inspected.

Diff0: ImageMagick `compare`, fuzz 0%, binary magenta changed pixels on a dark background, so even a one-level difference is amplified. DiffT: the same comparison at **5% fuzz**. Diffs compare complete original screenshots, including clock and other incidental changes; no region is excluded from the before/after diffs.

### S2 — iPad (7th generation), iOS 18, landscape, light — no paired environments / empty sidebar

| Before | After | Diff0 | DiffT (5%) |
|---|---|---|---|
| ![Before: S2 — iPad (7th generation), iOS 18, landscape, light — no paired environments / empty sidebar](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/41e0c6a92b20ec35/before-S2-clean.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) | ![After: S2 — iPad (7th generation), iOS 18, landscape, light — no paired environments / empty sidebar](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2b18f4fd8e6118be/after-S2-clean.png)<br>[eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) | ![S2 zero-threshold amplified full-screen difference](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e5c770a4ff9fc9cd/S2-diff0.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) | ![S2 full-screen difference at five percent fuzz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/329700ceffff9ce2/S2-diffT.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) |

Before: the empty-sidebar text is obscured. After: “No threads yet” is visible below Search. No environment was paired on either side.

### F1 — iPad (7th generation), iOS 18, landscape, light — ordinary parent at loaded-page row 04

| Before | After | Diff0 | DiffT (5%) |
|---|---|---|---|
| ![Before: F1 — iPad (7th generation), iOS 18, landscape, light — ordinary parent at loaded-page row 04](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2a12a236f4c5cb75/before-F1-top-v4.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) | ![After: F1 — iPad (7th generation), iOS 18, landscape, light — ordinary parent at loaded-page row 04](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b3de610ffc626c5b/after-F1-top-final.png)<br>[eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) | ![F1 zero-threshold amplified full-screen difference](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/556ead6cabee2ecb/F1-diff0.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) | ![F1 full-screen difference at five percent fuzz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a1cca0bf3f86dd06/F1-diffT.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) |

Both frames show the same loaded-page row 04. After: the history control and first prompt clear the solid bar. Auxiliary Short conversation visibility/age and the development overlay differ; the sidebar is not a controlled S1 fixture.

### F3 — iPhone Xs, iOS 18, portrait, light — fullscreen native child at loaded-page row 04

| Before | After | Diff0 | DiffT (5%) |
|---|---|---|---|
| ![Before: F3 — iPhone Xs, iOS 18, portrait, light — fullscreen native child at loaded-page row 04](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/545ba28b3e03d686/before-F3-final.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) | ![After: F3 — iPhone Xs, iOS 18, portrait, light — fullscreen native child at loaded-page row 04](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/50a5a6b03a946f27/after-F3.png)<br>[eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) | ![F3 zero-threshold amplified full-screen difference](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/66a8694f010380cb/F3-diff0.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) | ![F3 full-screen difference at five percent fuzz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/639805347b462424/F3-diffT.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) |

Both frames show native child row 04. After: Load earlier activity and the complete first prompt clear the compact header. This still proves final geometry only.

### F4 — iPad (7th generation), iOS 18, landscape, light — existing ready empty thread

| Before | After | Diff0 | DiffT (5%) |
|---|---|---|---|
| ![Before: F4 — iPad (7th generation), iOS 18, landscape, light — existing ready empty thread](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5fd41579d8d92732/before-F4-ready.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) | ![After: F4 — iPad (7th generation), iOS 18, landscape, light — existing ready empty thread](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e247e19c83baa44e/after-F4-ready.png)<br>[eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) | ![F4 zero-threshold amplified full-screen difference](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ad5f8dccbac036d7/F4-diff0.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) | ![F4 full-screen difference at five percent fuzz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/43c486e8c807bebf/F4-diffT.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) |

The existing ready-empty overlay moves down on the solid-bar path. Auxiliary sidebar state and the development overlay also differ.

### G1 — iPad Pro 11-inch (M4), iOS 26, landscape, light — native child inspector at loaded-page row 04

| Before | After | Diff0 | DiffT (5%) |
|---|---|---|---|
| ![Before: G1 — iPad Pro 11-inch (M4), iOS 26, landscape, light — native child inspector at loaded-page row 04](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6b79c3ab0873f3c1/before-G1-top-v4.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) | ![After: G1 — iPad Pro 11-inch (M4), iOS 26, landscape, light — native child inspector at loaded-page row 04](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fa8c5aa08f5d37cd/after-G1-top.png)<br>[eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) | ![G1 zero-threshold amplified full-screen difference](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bed457d2d43933fb/G1-diff0.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) | ![G1 full-screen difference at five percent fuzz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2cb6324a042a1f2b/G1-diffT.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) |

Inspector content at loaded-page row 04 is visually unchanged between the two versions. The sidebar differs because the auxiliary short thread completed during sending; this pair does not count as a controlled S8 capture.

### I3 partial checkpoint — iPhone 17 Pro, iOS 26, portrait, dark — settled replay message, keyboard hidden

| Before | After | Diff0 | DiffT (5%) |
|---|---|---|---|
| ![Before: I3 partial checkpoint — iPhone 17 Pro, iOS 26, portrait, dark — settled replay message, keyboard hidden](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/aa83288978b585ca/before-I3-glass-message-rest.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) | ![After: I3 partial checkpoint — iPhone 17 Pro, iOS 26, portrait, dark — settled replay message, keyboard hidden](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/aa511437f6efba48/after-I3-glass-rest.png)<br>[eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) | ![I3-glass-rest zero-threshold amplified full-screen difference](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b9659468cd133363/I3-glass-rest-diff0.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) | ![I3-glass-rest full-screen difference at five percent fuzz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/764c472e283ac772/I3-glass-rest-diffT.png)<br>[ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) → [eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) |

Same prompt and completed reply, keyboard hidden. Feed geometry is visually unchanged. Clock, reply timestamp, worked duration (5.2 s versus 5.6 s) and the after-only Expo tools overlay differ. The complete two-device I3 sequence remains unverified.

### Interaction recordings — partial proof only

These are recordings of real app interactions, including idle periods caused by automation failures. They do not establish every step of the required matrix. Timestamps are elapsed time in each video, rounded to the nearest sampled checkpoint; the same intended interaction was attempted on both versions, but the scripts did not complete identically.

**F8 / I3, iPhone Xs, iOS 18, portrait, light.** Before: 0–5 s open the seeded short prompt/reply; approximately 5 s focus the composer/software keyboard; approximately 7 s send through RPC; the turn remains working; approximately 40 s return Home; the remainder is idle. After: 0–7 s the same initial short fixture and keyboard; approximately 31 s RPC send; approximately 37 s reply settled with keyboard up; approximately 132 s return Home; approximately 185–190 s reopen the thread with keyboard hidden; final frame rests at the end. Keyboard dismissal used navigation away and back because the automation keyboard-hide command failed. The before sequence did not provide a completed, keyboard-hidden resting counterpart, so neither F8 nor the iOS 18 part of I3 is counted complete.

| Before — [ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) | After — [eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) |
|---|---|
| [before-I3-F8-phone18.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8e958e04a0a536c0/before-I3-F8-phone18.mp4)<br>![Before recording contact sheet](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6762b2d1432b1fa8/before-I3-F8-phone18-contact.png) | [after-I3-F8-phone18.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/26a48660aa4f9d3b/after-I3-F8-phone18.mp4)<br>![After recording contact sheet](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/04cb2fd15a38e0cd/after-I3-F8-phone18-contact.png) |

After-only keyboard-hidden rest checkpoint: [after-I3-solid-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b2750342581797a5/after-I3-solid-rest.png). It has no valid matched before still and does not replace the missing before sequence.

**G2 / I3, iPhone 17 Pro, iOS 26, portrait, dark.** Before main clip: 0 s Home; approximately 2–5 s open the existing empty thread, focus the software keyboard and send through RPC; 9 s working; 19 s complete with keyboard up; 56 s return Home; 66 s reopen with keyboard hidden; 75–113 s resting message. Before long-feed chapter below: 0–2 s resting message; 4–6 s Home; 8 s parent at row 13; 11–21 s scroll through identifiable rows to the loaded-page row 04. After: 0 s existing empty thread; 14 s keyboard up; approximately 40–43 s RPC send/working; 57 s reply complete with keyboard still up; approximately 140 s navigate away/reopen with keyboard hidden; approximately 150 s open parent; 157–169 s scroll from row 11 to loaded-page row 04. A scroll-to-bottom command was attempted, but the required matched blank-space scrolling and jump-to-end checks were not recorded on both sides. The after tools overlay is visible throughout. The matching resting stills are above; the full I3/G2 sequence is conservatively partial.

| Before — [ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) | After — [eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) |
|---|---|
| [before-G2-I3-final.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/569822f9458c1cad/before-G2-I3-final.mp4)<br>![Before recording contact sheet](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3d9e9e4561b7feb9/before-G2-I3-final-contact.png) | [after-G2-I3-recovered.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/00f02d581fdb8090/after-G2-I3-recovered.mp4)<br>![After recording contact sheet](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e01957ba2f066c6e/after-G2-I3-recovered-contact.png) |

Before long-feed chapter: [before-G2-longtop.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9dcf5a3df8aeaf41/before-G2-longtop.mp4)

![Before: iOS 26 compact navigation from resting message to loaded-page top](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/94c4fbb8fad756a3/before-G2-longtop-contact.png)

**I4, iPad Pro 11-inch (M4), iOS 26, landscape, light.** Before first clip: 0 s parent at row 04, child at row 09 (not a matched top); attempted divider gesture; approximately 14 s close inspector and hide sidebar; remaining clip idle. Before end chapter below: 0 s parent at row 13; approximately 3 s open agents; approximately 8 s child inspector at end. After: 0 s parent at row 13 and inspector at row 04; 1–4 s divider resize changes column widths; approximately 7 s inspector scrolls to row 06; 11 s close inspector; 14 s hide sidebar; second reveal press misses. Different reading positions and missing reveal/end-follow mean this is partial, not a successful I4 sequence. No iOS 18 dark width sequence was completed.

| Before — [ca796d5211](https://git.cafe/pingdotgg/t3code/commit/ca796d52119592de771d8ccfa955d70dba84d11e) | After — [eb39186ba6](https://git.cafe/pingdotgg/t3code/commit/eb39186ba693087529323f5e4da65018d8377ad5) |
|---|---|
| [before-I4-glass.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d531651a8c475f7d/before-I4-glass.mp4)<br>![Before recording contact sheet](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8c57bec94ecedd3f/before-I4-glass-contact.png) | [after-I4-glass.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/634f9188bba407b1/after-I4-glass.mp4)<br>![After recording contact sheet](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a46d5fb57cdb3466/after-I4-glass-contact.png) |

Before end chapter: [before-I4-glass-end.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7b139b62ddb307ea/before-I4-glass-end.mp4)

![Before: iPad iOS 26 inspector opened at the end](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/60867ab768935785/before-I4-glass-end-contact.png)

**S5 / S6a / S6b / I5, iPad (7th generation), iOS 18, landscape, dark — after-only attempt.** 0 s parent/sidebar; approximately 6–18 s fill Search with `Stage`, show title matches and software keyboard; approximately 33–55 s hold real message-search response for `needle-sea-glass`, showing “Searching thread messages…”; approximately 73 s release and show a message-only match; approximately 190–201 s select the result and land around older row 02. **The target prompt is partly hidden under the header in the kept end checkpoint.** Do not report I5 as passing. The subsequent attempt to fill a no-match query and clear/cancel did not visibly update within the exported clip. Filling an empty search after stopping restored normal rows, but that action is not in the recording. No matched before Search recording was completed.

[after-search-attempt.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4a1b4214b4fe5114/after-search-attempt.mp4)

![After only: title search, held pending message search, message-only result and partly clipped older target](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/76a0183bb1914219/after-search-attempt-contact.png)

### Required-row accounting

| Row | Status at requested head | Missing proof / reason |
|---|---|---|
| S1 | Unverified | Populated sidebar appears in F1, but auxiliary short-thread lifecycle differs across sides; earlier dedicated baseline failed the clock-only settled-frame criterion. |
| S2 | Captured | Matched full-screen static pair and two diffs above. |
| S5 | Partial, unverified | After-only title/message search; clear/cancel and matched before sequence missing after native iPad coordinate/automation failures. |
| S6a | Partial, unverified | Held pending search visible after; no matching before recording. |
| S6b | Unverified | Zero-match/clear checkpoint not visibly reached in the exported recording. |
| S8 | Unverified | Head sidebar checkpoint exists, but matched before baseline failed settling and G1 auxiliary state differs. |
| F1 | Captured | Matched parent loaded-page top pair above; sidebar differences disclosed. |
| F2 | Unverified | iPad18 inspector staging failed: Open agents taps hit composer / unresolved landscape coordinates, and keyboard dismissal stalled. |
| F3 | Captured | Matched compact native-child loaded-page top pair above. |
| F4 | Captured | Matched existing ready-empty pair above. |
| F5 | Unverified | Narrow unavailable inspector not staged before budget; proxy scaffolding exists but is not proof. |
| F8 | Partial, unverified | Initial short prompt/reply exists in both clips; before send never completed into a matched resting checkpoint. |
| I1 | Unverified | No successful iPad18 inspector/pagination interaction recording; F1/F3 static tops do not prove prepend anchoring. |
| I2 | Unverified | Failure/retry proxy path not exercised in the real inspector before budget. |
| I3 | Partial, unverified | Both phone recordings exist; iOS18 before rest and matched blank-space/jump checks missing. iOS26 resting pair above is valid. |
| I4 | Partial, unverified | iPad26 resize/open/close/hide attempt exists, but positions differ and reveal/end-follow incomplete; iPad18 dark missing. |
| I5 | Partial, unverified | After-only older result lands partly under bar; switch away/back and matched before sequence missing. |
| G1 | Captured | Matched glass inspector loaded-page top pair above; sidebar differences disclosed. |
| G2 | Partial, unverified | Empty/send/keyboard/rest/long-top chapters recorded; complete matched I3 interaction script and initial empty checkpoint timing not established. |

Inventory rows S3, S4a, S4b, S7, F6, F7, F9a, F9b, F10, I6, G3 and source-excluded I7, X1, X2 require no additional captures per the matrix. None is claimed separately verified.

Head-only S8 checkpoint: [after-S8-clean.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1d590f8b2b3489b5/after-S8-clean.png); retained for inspection, not counted as a matched pair.

### What else changed visibly

- Status-bar clock values differ. Full diffs intentionally include them; only the separate A/B settling check masks the clock.
- S2 gains visible “No threads yet” text; populated sidebars move relative to Search/header. In F1/F4/G1, auxiliary Short conversation is waiting/excluded on the before side and completed/visible after; its relative age, row order and selected-parent vertical position differ. These auxiliary changes invalidate using those sidebar regions as controlled S1/S8 proof.
- F1/F3 show the loaded-history control and first prompt lower beneath the header after the change. F4's ready-empty text is lower after. G1's inspector content has no visible geometry change.
- The Expo development FAB/tools overlay is present before in some iPad18 frames and absent after; the after iPhone26 recording/resting still has a tools gear overlay. The iPad26 status bar also differs in its back-to-app label. These are development-client artifacts outside the inset change.
- Actual replay turns have different clock-relative timestamps, working durations and in-progress status. The glass resting pair has 5.2 s versus 5.6 s work duration; reply content is the same. The iOS18 before replay remained working and its sidebar visibility changed, so that turn is not a matched completion proof.
- Recording chapters have different idle durations, initial reading positions and gesture outcomes. They are labeled partial instead of treating those differences as layout regressions or fixes.

### Reproduction scripts and raw proof

- [seed.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e309eb4ab1ed222b/seed.py)
- [replay-templates.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/de0b043d8aa8f052/replay-templates.json)
- [rpc.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ab3995733449262a/rpc.mjs)
- [proxy.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0fdfc5fa9b9b54a2/proxy.mjs)
- [action.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/347d4f22ae239899/action.py)
- [capture.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2afac5b580734db4/capture.py)
- [pair-all-before.sh](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/691564ed699bdd7e/pair-all-before.sh)
- [diff-driver.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c574b47b9a97b654/diff-driver.py)
- [video-review.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2a681d6f94700e6c/video-review.py)
- [cached-health.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/72e77b637b7ea266/cached-health.mjs)
- [fetch-health.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/63b9fd3ba961050c/fetch-health.py)
- [health-proxy.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bfbd7e8c6296b9a7/health-proxy.mjs)
- [download-video.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/453b8059987f9ff8/download-video.mjs)
- [verify-stills.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ebabacf81efcdbe3/verify-stills.py)
- [final-still-proof.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4bbf0ba1e6833dc1/final-still-proof.json)
- [pairs.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6e8239e6190de5e3/pairs.json)
- [seed-sql-and-settled-frames.tar.gz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4fb5ca12e0906136/seed-sql-and-settled-frames.tar.gz)
- [write-evidence.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/446236d35c77bda1/write-evidence.py)

Seed recipes: create the project through RPC, migrate each fresh home with its own server, stop it, run `seed.py` against that checkout's isolated home, then restart. `seed.py` creates 20 ordinary threads, an existing empty thread, a short prompt/reply, and parent/child histories with 13 user turns, leaving the event log untouched. Parent/child row 04 is the first of the initial ten-turn page, not all history. Actual sends use `rpc.mjs` with `orchestration.dispatchCommand`. Pairing and RPC bearer files stay local and were not uploaded. `proxy.mjs` transparently forwards to the matching isolated backend; `/__capture?search=hold` holds search, and `search=pass&release=1` releases it. The history-failure control is scaffolding only. `cached-health.mjs` intercepts only the CLI gateway-health GET using freshly fetched gateway health; all device RPCs remain live. `health-proxy.mjs` was an unsuccessful earlier workaround and is included for completeness.

Cleanup: all seven tracked backend/Metro/proxy process sessions were stopped; their ports have no listeners. Three device sessions explicitly closed successfully. The final iPhone26 close (and force-close) returned “Lease is not active”, indicating its lease had already expired while the recording export was recovered. No new lease was opened to close an expired one. The before worktree was removed; the lead's checkout is clean and retained. Scratch and uploaded evidence remain available as requested. No source edits, commits, pushes, PR comments or PR-state mutations were made. Checks and reviews were not inspected in this capture-only task.

FRICTION:
- infra | Gateway health exceeded the CLI's 3-second discovery deadline; reconnects reset devices and some boot attempts failed | allow a longer gateway-health deadline and preserve active session metadata.
- tool | iPad18 landscape AX coordinates were unresolved; reported taps hit the wrong control, keyboard hide could block the main thread | use a reliable landscape native-coordinate transform and semantic fill/press support.
- tool | Recording exports hit the CLI's 90-second download deadline three times | a longer artifact-download timeout; the final video was recovered with the same gateway SDK using 420 seconds.
- runbook | Native-client install-to-session stalled despite a cache hit; local cache helper lacked its CI-reader credential | expose the prepared artifact through a reachable source/install path. Both checkouts shared the cached fingerprint; no native rebuild was needed.
- infra | Metro initially exhausted file watchers | run Metro with `CI=1` in this constrained host.
- brief | The brief both requires retaining this capture directory and later says remove scratch | retained it according to the explicit lead handoff requirement; only the before worktree was removed.
- other | Recovery and automation failures consumed the 90-minute capture budget | stable device sessions and early scripted interaction checkpoints would leave time for the missing inspector/error cases.

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

### ghdrop output, verbatim

The following is the uploader's unmodified Markdown output for the scripts and artifacts above. `verify-stills.py` was uploaded again after correcting selection among byte-identical B frames; the last link is authoritative.

```markdown
[action.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/347d4f22ae239899/action.py)
[capture.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2afac5b580734db4/capture.py)
[seed.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e309eb4ab1ed222b/seed.py)
[rpc.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ab3995733449262a/rpc.mjs)
[proxy.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0fdfc5fa9b9b54a2/proxy.mjs)
[pair-all-before.sh](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/691564ed699bdd7e/pair-all-before.sh)
[video-review.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2a681d6f94700e6c/video-review.py)
[health-proxy.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bfbd7e8c6296b9a7/health-proxy.mjs)
[cached-health.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/72e77b637b7ea266/cached-health.mjs)
[fetch-health.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/63b9fd3ba961050c/fetch-health.py)
[replay-templates.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/de0b043d8aa8f052/replay-templates.json)
```

```markdown
![before-S2-clean.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/41e0c6a92b20ec35/before-S2-clean.png)
![after-S2-clean.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2b18f4fd8e6118be/after-S2-clean.png)
![S2-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e5c770a4ff9fc9cd/S2-diff0.png)
![S2-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/329700ceffff9ce2/S2-diffT.png)
![before-F1-top-v4.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2a12a236f4c5cb75/before-F1-top-v4.png)
![after-F1-top-final.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b3de610ffc626c5b/after-F1-top-final.png)
![F1-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/556ead6cabee2ecb/F1-diff0.png)
![F1-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a1cca0bf3f86dd06/F1-diffT.png)
![before-F3-final.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/545ba28b3e03d686/before-F3-final.png)
![after-F3.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/50a5a6b03a946f27/after-F3.png)
![F3-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/66a8694f010380cb/F3-diff0.png)
![F3-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/639805347b462424/F3-diffT.png)
![before-F4-ready.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5fd41579d8d92732/before-F4-ready.png)
![after-F4-ready.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e247e19c83baa44e/after-F4-ready.png)
![F4-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ad5f8dccbac036d7/F4-diff0.png)
![F4-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/43c486e8c807bebf/F4-diffT.png)
![before-G1-top-v4.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6b79c3ab0873f3c1/before-G1-top-v4.png)
![after-G1-top.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fa8c5aa08f5d37cd/after-G1-top.png)
![G1-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bed457d2d43933fb/G1-diff0.png)
![G1-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2cb6324a042a1f2b/G1-diffT.png)
![before-I3-glass-message-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/aa83288978b585ca/before-I3-glass-message-rest.png)
![after-I3-glass-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/aa511437f6efba48/after-I3-glass-rest.png)
![I3-glass-rest-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b9659468cd133363/I3-glass-rest-diff0.png)
![I3-glass-rest-diffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/764c472e283ac772/I3-glass-rest-diffT.png)
![after-I3-solid-rest.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b2750342581797a5/after-I3-solid-rest.png)
![after-S8-clean.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1d590f8b2b3489b5/after-S8-clean.png)
[before-G2-I3-final.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/569822f9458c1cad/before-G2-I3-final.mp4)
[before-G2-longtop.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9dcf5a3df8aeaf41/before-G2-longtop.mp4)
[before-I3-F8-phone18.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8e958e04a0a536c0/before-I3-F8-phone18.mp4)
[after-I3-F8-phone18.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/26a48660aa4f9d3b/after-I3-F8-phone18.mp4)
[before-I4-glass.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d531651a8c475f7d/before-I4-glass.mp4)
[before-I4-glass-end.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7b139b62ddb307ea/before-I4-glass-end.mp4)
[after-I4-glass.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/634f9188bba407b1/after-I4-glass.mp4)
![before-G2-I3-final-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3d9e9e4561b7feb9/before-G2-I3-final-contact.png)
![before-G2-longtop-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/94c4fbb8fad756a3/before-G2-longtop-contact.png)
![before-I3-F8-phone18-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6762b2d1432b1fa8/before-I3-F8-phone18-contact.png)
![after-I3-F8-phone18-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/04cb2fd15a38e0cd/after-I3-F8-phone18-contact.png)
![before-I4-glass-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8c57bec94ecedd3f/before-I4-glass-contact.png)
![before-I4-glass-end-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/60867ab768935785/before-I4-glass-end-contact.png)
![after-I4-glass-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a46d5fb57cdb3466/after-I4-glass-contact.png)
[seed-sql-and-settled-frames.tar.gz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4fb5ca12e0906136/seed-sql-and-settled-frames.tar.gz)
[diff-driver.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c574b47b9a97b654/diff-driver.py)
[pairs.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6e8239e6190de5e3/pairs.json)
```

```markdown
[after-G2-I3-recovered.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/00f02d581fdb8090/after-G2-I3-recovered.mp4)
![after-G2-I3-recovered-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e01957ba2f066c6e/after-G2-I3-recovered-contact.png)
[after-search-attempt.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4a1b4214b4fe5114/after-search-attempt.mp4)
![after-search-attempt-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/76a0183bb1914219/after-search-attempt-contact.png)
[download-video.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/453b8059987f9ff8/download-video.mjs)
[verify-stills.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bb6a114e531f539f/verify-stills.py)
```

```markdown
[verify-stills.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ebabacf81efcdbe3/verify-stills.py)
[final-still-proof.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4bbf0ba1e6833dc1/final-still-proof.json)
```

```markdown
[write-evidence.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/446236d35c77bda1/write-evidence.py)
```

