# Evidence for [#33223](https://git.cafe/pingdotgg/t3code/pull/33223)

**What else changed:** The captures include clock/status-icon changes and small iOS native scroll-offset/translucency differences beyond the Android scroll fix. The failed overflow-menu attempt leaves different sheet states; it is not evidence that overflow refresh succeeded. Details follow before the capture tables.

Captured **7/7 required rows**, plus optional C05. **Six required rows are fully covered; F11 is partial.** F11 has paired pull-to-refresh recordings through completion after the fix, but overflow “Refresh files” could not be activated reliably. I01 has paired compact header/insets, long-tree scrolling and a direct compact-root pull-to-refresh supplement through spinner completion. An additional expanded-detent refresh pair is retained. An overflowing Git overview could not be produced: thirty dirty fixture files appear in its summary, but its overview controls fit after expansion.

Before [4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63); after [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe). Same native development client per platform, JavaScript served by Metro from each matching checkout. The after tracked tree was not edited. No paid agent turn was run.

## What else changed / visible differences

- Android and iOS status-bar clocks differ between sessions; Android cellular-signal indicator fill also varies. L01 has 923 differing pixels at fuzz 0 and 854 at fuzz 2%, confined to the clock/status icons. Header, search, list, sheet geometry and light colors match.
- F01 and the Files portions of P01/P02 differ in list offset, sheet height, backdrop dimming and how much underlying thread is visible. These follow directly from the intended change: tree gestures scroll the list after the fix, while before they drag the sheet. The explicit header drag still expands it on both commits.
- At equal detents some native backdrop pixels differ by only one RGB level. Diff0 deliberately amplifies even that one-level change to solid white. This can make a nearly identical background look large in Diff0; consult DiffT and the source frames.
- The iOS compact-scroll captures have a few-pixel difference in the final scroll offset and the corresponding content beneath the native translucent header/search field. Header and inset geometry match. The expanded refresh supplement has clock and tiny native backdrop-tone differences; list/header geometry matches. The direct compact-root refresh supplement differs only in the clock at fuzz 2%, with a few isolated antialiasing pixels added at fuzz 0.
- F11 overflow attempt: before the coordinate tap dismisses the sheet; after the expanded sheet remains. The popup item is outside/behind the native sheet and absent from its accessibility snapshot. This is an unsuccessful interaction and an unverified action, not an additional PR fix.
- The tablet recording is after-only, so it cannot establish a before/after visual change. Its relative-age text advances during capture. The Git overview fits; the recording shows its response to gestures rather than overflow scrolling.
- Rows touching the bottom edge of a scrolling viewport are naturally clipped; iOS list content under the translucent search field is native blur, not duplicated/ghosted elements. The stopped synthetic thread has no chat messages, so its exposed background is intentionally empty.

## Method and limits

The same seed driver creates a synthetic repository with forty folders, six files per folder, a nested `needle-match.txt`, thirty modified files, and one stopped thread. Each checkout’s own server created a fresh database with `T3CODE_DEV_SEED=0`; no live database was used. Each paired recording starts from the same device, theme, fixture and requested sheet/list state. F01 resets to the medium detent before its header drag. iOS compact and expanded supplements are labeled separately.

All captures show the whole device. Every selected still was opened for visual review. Every paired still has an opened Diff0 and DiffT. The settling driver requests two screenshots with a 500 ms wait and accepts only pixel-identical frames (ImageMagick AE=0). Pool round-trip latency makes actual screenshot dispatch intervals usually 3–5 seconds, rather than approximately 500 ms. No spinner/loading frame is selected as a settled endpoint. Spinner motion is retained in recordings.

Diff0 uses ImageMagick `compare -metric AE -fuzz 0 -highlight-color white -lowlight-color black -compose src`; every changed pixel, including a one-level change, is white. DiffT uses the same command with `-fuzz 2%`. AE is the count of differing pixels at the stated threshold. No registration, cropping or normalization was applied.

Timestamps below are command-dispatch seconds from the recording-start request, as preserved in the sanitized transcripts, not exact encoded-video timestamps. The recorder starts after remote command latency (about 2–4 seconds); pan duration is the last argument in milliseconds. Agent-device records only changed Android frames, so encoded duration can be shorter than the command window. The scripts and transcripts preserve exact coordinates and durations.

## F01 — Pixel 9, dark — Android Files sheet

Environment: Pixel 9 emulator, Android 16, 1080×2424 whole-device frames/video; dev client com.t3tools.t3code.dev, native fingerprint `832d41716ea2dfac7350605db3fd07914f87d6ef`; text-size medium, Android font scale 0.94; dark theme.

Verified. Repeated tree swipes scroll the tree after the fix; before they move the sheet. Header drag expands both. The final downward tree swipe keeps the expanded sheet after the fix.

Scripted steps and timestamps, above the recording pair:

- **Before**: 3.127s: `gesture pan 540 2100 0 -600 500`; 14.361s: `gesture pan 540 2100 0 -600 500`; 24.692s: `gesture pan 540 1450 0 500 500`; 35.273s: `press label="Close inspector"`; 38.075s: `press label="Open files"`; 41.357s: `gesture pan 540 1000 0 -800 600`; 58.183s: `gesture pan 540 800 0 600 600`. [F01-before-steps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a2194137982fc244/F01-before-steps.json)
- **After**: 3.306s: `gesture pan 540 2100 0 -600 500`; 13.484s: `gesture pan 540 2100 0 -600 500`; 23.619s: `gesture pan 540 1450 0 500 500`; 40.983s: `press label="Close inspector"`; 44.059s: `press label="Open files"`; 47.607s: `gesture pan 540 1000 0 -800 600`; 58.953s: `gesture pan 540 800 0 600 600`. [F01-after-steps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0d375bd9e7bda3ea/F01-after-steps.json)

| Capture | Before<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) | After<br>[23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) | Diff0: fuzz 0<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) → [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) | DiffT: fuzz 2%<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) → [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) |
|---|---|---|---|---|
| Whole-device recording | [F01-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/269a142fac022ed5/F01-before.mp4) | [F01-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1d1cd01c655cb6db/F01-after.mp4) | — | — |
| step-1 | ![F01-before-step-1.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6a7ed3ffea527abf/F01-before-step-1.png) | ![F01-after-step-1.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5907404c914633a1/F01-after-step-1.png) | ![F01-step-1-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0d17f1f31868c163/F01-step-1-Diff0.png)<br>AE=1.27026e+06 | ![F01-step-1-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d9c79ce3c8bd67e4/F01-step-1-DiffT.png)<br>AE=615601 |
| step-2 | ![F01-before-step-2.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ab857606f87cdf1d/F01-before-step-2.png) | ![F01-after-step-2.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c44a032fa42d1d6e/F01-after-step-2.png) | ![F01-step-2-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d4d76994905183b9/F01-step-2-Diff0.png)<br>AE=1.2692e+06 | ![F01-step-2-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d9cc66eaa5fac3f3/F01-step-2-DiffT.png)<br>AE=614532 |
| step-3 | ![F01-before-step-3.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/12eb7c30f590b7ab/F01-before-step-3.png) | ![F01-after-step-3.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/84800e93eea9865b/F01-after-step-3.png) | ![F01-step-3-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8643444685af95f9/F01-step-3-Diff0.png)<br>AE=51072 | ![F01-step-3-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/90caa4433aa889fc/F01-step-3-DiffT.png)<br>AE=49161 |
| step-4 | ![F01-before-step-4.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/179b8abfbcd57ef9/F01-before-step-4.png) | ![F01-after-step-4.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5fc44643ee0c6659/F01-after-step-4.png) | ![F01-step-4-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/78c9cb88e295b1ee/F01-step-4-Diff0.png)<br>AE=754 | ![F01-step-4-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fbee8e37bda008e4/F01-step-4-DiffT.png)<br>AE=709 |
| step-5 | ![F01-before-step-5.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6cf6a4dc6fb66471/F01-before-step-5.png) | ![F01-after-step-5.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1aca652810a33612/F01-after-step-5.png) | ![F01-step-5-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b2409d716d602ba5/F01-step-5-Diff0.png)<br>AE=1.2715e+06 | ![F01-step-5-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/458091a98defbba3/F01-step-5-DiffT.png)<br>AE=616732 |

## F11 — Pixel 9, dark — refresh (partial)

Environment: Pixel 9 emulator, Android 16, 1080×2424 whole-device frames/video; dev client com.t3tools.t3code.dev, native fingerprint `832d41716ea2dfac7350605db3fd07914f87d6ef`; text-size medium, Android font scale 0.94; dark theme.

Pull-to-refresh: after shows the spinner and returns to the settled tree; before the same pull moves/collapses the sheet. **Unverified: overflow “Refresh files” execution**, for the native-sheet menu reason above. The overflow endpoint is retained transparently as a failed attempt.

Scripted steps and timestamps, above the recording pair:

- **Before**: 2.978s: `gesture pan 540 1400 0 650 700`; 22.902s: `press label="More actions"`; 25.802s: `press 600 280`. [F11-before-steps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fa4f501880f86088/F11-before-steps.json)
- **After**: 3.370s: `gesture pan 540 1400 0 650 700`; 25.909s: `press label="More actions"`; 29.098s: `press 600 280`. [F11-after-steps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7ddd3ec1e2a887c6/F11-after-steps.json)

| Capture | Before<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) | After<br>[23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) | Diff0: fuzz 0<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) → [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) | DiffT: fuzz 2%<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) → [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) |
|---|---|---|---|---|
| Whole-device recording | [F11-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4d2c8fd17d5b18e3/F11-before.mp4) | [F11-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3842bcfeda3604e7/F11-after.mp4) | — | — |
| pull-refresh-end | ![F11-before-pull-refresh-end.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bbde925671d0078b/F11-before-pull-refresh-end.png) | ![F11-after-pull-refresh-end.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e5bb18887a4905cd/F11-after-pull-refresh-end.png) | ![F11-pull-refresh-end-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c3178f44d6ca65e8/F11-pull-refresh-end-Diff0.png)<br>AE=1.27135e+06 | ![F11-pull-refresh-end-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fa9324c50f5734e7/F11-pull-refresh-end-DiffT.png)<br>AE=616606 |
| overflow-refresh-end | ![F11-before-overflow-refresh-end.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d35557400d1334b6/F11-before-overflow-refresh-end.png) | ![F11-after-overflow-refresh-end.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/99655bc7861f4fa0/F11-after-overflow-refresh-end.png) | ![F11-overflow-refresh-end-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/50e8d2ef4c2cbab9/F11-overflow-refresh-end-Diff0.png)<br>AE=558117 | ![F11-overflow-refresh-end-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7f801ffd229f678d/F11-overflow-refresh-end-DiffT.png)<br>AE=552267 |

## P01/P02 — Pixel 9, dark — Files → Git → Files

Environment: Pixel 9 emulator, Android 16, 1080×2424 whole-device frames/video; dev client com.t3tools.t3code.dev, native fingerprint `832d41716ea2dfac7350605db3fd07914f87d6ef`; text-size medium, Android font scale 0.94; dark theme.

Verified switching and touch ownership after prewarming. Files scrolls before/after visiting Git after the fix. Git controls respond to the same pans on both commits; its overview fits, so this does not prove overflowing Git-list scrolling.

Scripted steps and timestamps, above the recording pair:

- **Before**: 3.501s: `press label="Open files"`; 7.374s: `gesture pan 540 2100 0 -600 500`; 18.099s: `press label="Close inspector"`; 21.559s: `press label="Git controls"`; 26.639s: `press label="More"`; 31.544s: `gesture pan 540 2100 0 -650 500`; 42.207s: `gesture pan 540 1500 0 500 500`; 52.854s: `press label="Close inspector"`; 56.293s: `press label="Open files"`; 60.134s: `gesture pan 540 2100 0 -600 500`. [P01-before-steps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dcf616aa8fb92892/P01-before-steps.json)
- **After**: 4.060s: `press label="Open files"`; 8.502s: `gesture pan 540 2100 0 -600 500`; 22.354s: `press label="Close inspector"`; 26.034s: `press label="Git controls"`; 31.164s: `press label="More"`; 36.132s: `gesture pan 540 2100 0 -650 500`; 60.465s: `gesture pan 540 1500 0 500 500`; 73.591s: `press label="Close inspector"`; 77.047s: `press label="Open files"`; 80.956s: `gesture pan 540 2100 0 -600 500`. [P01-after-steps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7034e87dd5f3ed6c/P01-after-steps.json)

| Capture | Before<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) | After<br>[23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) | Diff0: fuzz 0<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) → [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) | DiffT: fuzz 2%<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) → [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) |
|---|---|---|---|---|
| Whole-device recording | [P01-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a0acd5de91f8609c/P01-before.mp4) | [P01-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5fdb2cc4282ee0f7/P01-after.mp4) | — | — |
| files-prewarm | ![P01-before-files-prewarm.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4285d7059ea83d91/P01-before-files-prewarm.png) | ![P01-after-files-prewarm.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e83acc760dbb00e0/P01-after-files-prewarm.png) | ![P01-files-prewarm-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f325fe12bc0a27ba/P01-files-prewarm-Diff0.png)<br>AE=1.27101e+06 | ![P01-files-prewarm-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e29245a3d04062b7/P01-files-prewarm-DiffT.png)<br>AE=616335 |
| git-scroll-up | ![P01-before-git-scroll-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/24d2b8e76295df65/P01-before-git-scroll-up.png) | ![P01-after-git-scroll-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fb6d1d1f6d941947/P01-after-git-scroll-up.png) | ![P01-git-scroll-up-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/693d0c2805813d72/P01-git-scroll-up-Diff0.png)<br>AE=646 | ![P01-git-scroll-up-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/78d29581c8e7ea4d/P01-git-scroll-up-DiffT.png)<br>AE=627 |
| git-scroll-down | ![P01-before-git-scroll-down.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/82ab5a8b3c20d003/P01-before-git-scroll-down.png) | ![P01-after-git-scroll-down.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d6fb0f8e1a4e4050/P01-after-git-scroll-down.png) | ![P01-git-scroll-down-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2f1657303ac30c58/P01-git-scroll-down-Diff0.png)<br>AE=648 | ![P01-git-scroll-down-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b40ae708fefb6259/P01-git-scroll-down-DiffT.png)<br>AE=627 |
| files-after-git | ![P01-before-files-after-git.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5ead65e7d62c5f6/P01-before-files-after-git.png) | ![P01-after-files-after-git.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a5fa549ef93398ae/P01-after-files-after-git.png) | ![P01-files-after-git-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/489df648565eefc4/P01-files-after-git-Diff0.png)<br>AE=1.27128e+06 | ![P01-files-after-git-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f7554d13ad95cc15/P01-files-after-git-DiffT.png)<br>AE=616615 |

## F04 — Pixel 9, dark — search and real keyboard

Environment: Pixel 9 emulator, Android 16, 1080×2424 whole-device frames/video; dev client com.t3tools.t3code.dev, native fingerprint `832d41716ea2dfac7350605db3fd07914f87d6ef`; text-size medium, Android font scale 0.94; dark theme; Gboard visible, invisible test IME disabled.

Verified after-only. Search opens with the real keyboard, typing `needle-match` finds the nested file, clear restores the tree and close removes search. The header remains at the top. This is the retake with Gboard, not the discarded invisible-IME attempt.

Scripted steps and timestamps, above the recording pair:

- **After**: 3.611s: `press label="Search files"`; 34.089s: `fill label="Search files" needle-match`; 71.919s: `press label="Clear search"`; 88.944s: `press label="Close search"`. [F04-after-steps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8b3dbfaa004fd92f/F04-after-steps.json)

| Capture | Before<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) | After<br>[23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) | Diff0: fuzz 0<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) → [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) | DiffT: fuzz 2%<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) → [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) |
|---|---|---|---|---|
| Whole-device recording | — (after-only scope) | [F04-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f99014f1f6bac4e0/F04-after.mp4) | — | — |
| search-closed | — (after-only scope) | ![F04-after-search-closed.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3001641aa580bb09/F04-after-search-closed.png) | — (no before required) | — (no before required) |
| keyboard-open | — (after-only scope) | ![F04-after-keyboard-open.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5d3a0f64f54c9db6/F04-after-keyboard-open.png) | — (no before required) | — (no before required) |
| nested-match | — (after-only scope) | ![F04-after-nested-match.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8c4008369d54d1d3/F04-after-nested-match.png) | — (no before required) | — (no before required) |
| cleared | — (after-only scope) | ![F04-after-cleared.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3f240dba0010583a/F04-after-cleared.png) | — (no before required) | — (no before required) |

## C01/C03 — Pixel 9, dark — full-screen Files

Environment: Pixel 9 emulator, Android 16, 1080×2424 whole-device frames/video; dev client com.t3tools.t3code.dev, native fingerprint `832d41716ea2dfac7350605db3fd07914f87d6ef`; text-size medium, Android font scale 0.94; dark theme.

Verified after-only. Full-screen Files scrolls twice and pull-to-refresh completes; settled endpoint contains no spinner.

Scripted steps and timestamps, above the recording pair:

- **After**: 22.973s: `gesture pan 540 2100 0 -700 500`; 34.485s: `gesture pan 540 2100 0 -700 500`; 53.982s: `scroll top`; 59.576s: `gesture pan 540 650 0 900 800`. [C01-after-steps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3d8315e61bee465d/C01-after-steps.json)

| Capture | Before<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) | After<br>[23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) | Diff0: fuzz 0<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) → [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) | DiffT: fuzz 2%<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) → [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) |
|---|---|---|---|---|
| Whole-device recording | — (after-only scope) | [C01-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cb00438255efe296/C01-after.mp4) | — | — |
| initial | — (after-only scope) | ![C01-after-initial.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c96e22da4b8fe224/C01-after-initial.png) | — (no before required) | — (no before required) |
| scroll-up | — (after-only scope) | ![C01-after-scroll-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a2edb8eb91c5eb91/C01-after-scroll-up.png) | — (no before required) | — (no before required) |
| refresh-end | — (after-only scope) | ![C01-after-refresh-end.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e6a77087ba96c586/C01-after-refresh-end.png) | — (no before required) | — (no before required) |
| scroll-up-again | — (after-only scope) | ![C01-after-scroll-up-again.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a62c4774bce908b1/C01-after-scroll-up-again.png) | — (no before required) | — (no before required) |

## L01 — Pixel 9, light — unchanged static layout

Environment: Pixel 9 emulator, Android 16, 1080×2424 whole-device frames/video; dev client com.t3tools.t3code.dev, native fingerprint `832d41716ea2dfac7350605db3fd07914f87d6ef`; text-size medium, Android font scale 0.94; light theme.

Verified paired static layout. Differences are clock and cellular status icon only.

| Capture | Before<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) | After<br>[23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) | Diff0: fuzz 0<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) → [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) | DiffT: fuzz 2%<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) → [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) |
|---|---|---|---|---|
| L01 | ![L01-before-L01.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2148faf641965867/L01-before-L01.png) | ![L01-after-L01.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/48a3363e94c78307/L01-after-L01.png) | ![L01-L01-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3db960c0f8c71e85/L01-L01-Diff0.png)<br>AE=923 | ![L01-L01-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2290db98c5950a3a/L01-L01-DiffT.png)<br>AE=854 |

## I01 — iPhone 17 Pro, light — compact sheet

Environment: iPhone 17 Pro simulator, iOS 27.2; light theme; medium text size, unchanged between sides; same dev client com.t3tools.t3code.dev, version 2.2.0 build 1, native fingerprint `5fa891c99bf29870cc7d56112e3458d95a948393`; whole-device stills 402×874 logical pixels, recording 1206×2622.

Verified paired compact header/insets and long-tree scrolling. The I01C supplement below directly pulls from the freshly opened compact tree root and shows spinner completion on both revisions. The original recording’s `scroll top` dismissed the sheet on both commits, so its misleadingly named `pull-refresh-end` frame remains labeled as a failed first attempt.

Scripted steps and timestamps, above the recording pair:

- **Before**: 14.137s: `gesture pan 200 720 0 -220 500`; 24.215s: `gesture pan 200 720 0 -220 500`; 34.165s: `gesture pan 200 500 0 250 700`; 44.343s: `scroll top`; 50.737s: `gesture pan 200 500 0 250 800`. [I01-before-steps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f4e8d5570eaaacaa/I01-before-steps.json)
- **After**: 14.276s: `gesture pan 200 720 0 -220 500`; 24.947s: `gesture pan 200 720 0 -220 500`; 35.533s: `gesture pan 200 500 0 250 700`; 46.429s: `scroll top`; 54.521s: `gesture pan 200 500 0 250 800`. [I01-after-steps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1c79d7ddbe596570/I01-after-steps.json)

| Capture | Before<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) | After<br>[23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) | Diff0: fuzz 0<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) → [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) | DiffT: fuzz 2%<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) → [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) |
|---|---|---|---|---|
| Whole-device recording | [I01-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/67577260e9011bf3/I01-before.mp4) | [I01-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4646ab0bffcbc61c/I01-after.mp4) | — | — |
| initial | ![I01-before-initial.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e5f74393dbd58363/I01-before-initial.png) | ![I01-after-initial.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4f3bb6e5129f6185/I01-after-initial.png) | ![I01-initial-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fd24c7a4085ffaf3/I01-initial-Diff0.png)<br>AE=253 | ![I01-initial-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b6fd825edc163eeb/I01-initial-DiffT.png)<br>AE=200 |
| scroll-up | ![I01-before-scroll-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9da058a7134bd48a/I01-before-scroll-up.png) | ![I01-after-scroll-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/12116dc77c77b83b/I01-after-scroll-up.png) | ![I01-scroll-up-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7f8734a76c8b0aff/I01-scroll-up-Diff0.png)<br>AE=11869 | ![I01-scroll-up-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/007a8e35d0964dd9/I01-scroll-up-DiffT.png)<br>AE=6572 |
| scroll-up-again | ![I01-before-scroll-up-again.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/04dfcab3757b9ec7/I01-before-scroll-up-again.png) | ![I01-after-scroll-up-again.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/99c65ec1f17116ef/I01-after-scroll-up-again.png) | ![I01-scroll-up-again-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bc5b36d6e29d53cc/I01-scroll-up-again-Diff0.png)<br>AE=11752 | ![I01-scroll-up-again-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/070f4b96f3c104b6/I01-scroll-up-again-DiffT.png)<br>AE=7253 |
| scroll-down | ![I01-before-scroll-down.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/629756e46165356f/I01-before-scroll-down.png) | ![I01-after-scroll-down.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8e41dc295217bfeb/I01-after-scroll-down.png) | ![I01-scroll-down-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d410fc703f0a56dd/I01-scroll-down-Diff0.png)<br>AE=12240 | ![I01-scroll-down-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/503a291798bffc78/I01-scroll-down-DiffT.png)<br>AE=7172 |
| pull-refresh-end | ![I01-before-pull-refresh-end.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6eb391ada4e9bb0c/I01-before-pull-refresh-end.png) | ![I01-after-pull-refresh-end.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9f52a298825cd55c/I01-after-pull-refresh-end.png) | ![I01-pull-refresh-end-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/37a222a9b79da543/I01-pull-refresh-end-Diff0.png)<br>AE=549 | ![I01-pull-refresh-end-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/13a1167a34544a68/I01-pull-refresh-end-DiffT.png)<br>AE=250 |

### I01C — same iPhone, light — compact-root refresh

Environment: iPhone 17 Pro simulator, iOS 27.2; light theme; medium text size, unchanged between sides; same dev client com.t3tools.t3code.dev, version 2.2.0 build 1, native fingerprint `5fa891c99bf29870cc7d56112e3458d95a948393`; whole-device stills 402×874 logical pixels, recording 1206×2622. Both recordings start with folder 01 at the compact sheet root. A single `(200,600,0,180,800)` pull shows the spinner and returns to the same compact detent. The before database was freshly recreated with the same seed driver after the temporary checkout had initially been cleaned up.

Scripted steps and timestamps, above the recording pair:

- **Before**: 16.177s: `gesture pan 200 600 0 180 800`. [I01C-before-steps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d34a971df11ff2f9/I01C-before-steps.json)
- **After**: 14.351s: `gesture pan 200 600 0 180 800`. [I01C-after-steps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bad7f5728754923e/I01C-after-steps.json)

| Capture | Before<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) | After<br>[23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) | Diff0: fuzz 0<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) → [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) | DiffT: fuzz 2%<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) → [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) |
|---|---|---|---|---|
| Whole-device recording | [I01C-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bcac1dc6c330c05a/I01C-before.mp4) | [I01C-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d442a8f4f337a9ca/I01C-after.mp4) | — | — |
| compact-initial | ![I01C-before-compact-initial.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b171ac5f127ab247/I01C-before-compact-initial.png) | ![I01C-after-compact-initial.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6a9cc5fe56f4a3d8/I01C-after-compact-initial.png) | ![I01C-compact-initial-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a8341d56aa736ef1/I01C-compact-initial-Diff0.png)<br>AE=118 | ![I01C-compact-initial-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b2a4b01ca9741708/I01C-compact-initial-DiffT.png)<br>AE=108 |
| compact-refresh-end | ![I01C-before-compact-refresh-end.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3f7df860a9783d87/I01C-before-compact-refresh-end.png) | ![I01C-after-compact-refresh-end.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/eb8516d0a106cc4a/I01C-after-compact-refresh-end.png) | ![I01C-compact-refresh-end-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d36eb50dfd51e8f0/I01C-compact-refresh-end-Diff0.png)<br>AE=117 | ![I01C-compact-refresh-end-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/694d9028f3357e0d/I01C-compact-refresh-end-DiffT.png)<br>AE=108 |

### I01 supplement — same iPhone, light — expanded refresh

Environment: iPhone 17 Pro simulator, iOS 27.2; light theme; medium text size, unchanged between sides; same dev client com.t3tools.t3code.dev, version 2.2.0 build 1, native fingerprint `5fa891c99bf29870cc7d56112e3458d95a948393`; whole-device stills 402×874 logical pixels, recording 1206×2622. The header was dragged upward from the compact detent with `(200,393,0,-300,600)` before each recording, leaving the list at its root. The same subsequent list pull shows the native spinner and completion on both revisions. This is additional coverage; I01C above supplies the required compact-detent refresh.

Scripted steps and timestamps, above the recording pair:

- **Before**: 14.846s: `gesture pan 200 500 0 250 800`. [I01R-before-steps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8451d61700489ad3/I01R-before-steps.json)
- **After**: 14.032s: `gesture pan 200 500 0 250 800`. [I01R-after-steps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/009f9b6ca0776a0a/I01R-after-steps.json)

| Capture | Before<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) | After<br>[23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) | Diff0: fuzz 0<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) → [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) | DiffT: fuzz 2%<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) → [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) |
|---|---|---|---|---|
| Whole-device recording | [I01R-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/647d776b289ede16/I01R-before.mp4) | [I01R-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2c2076f6e4aaa364/I01R-after.mp4) | — | — |
| expanded-initial | ![I01R-before-expanded-initial.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b9b7ab2ecfd6e183/I01R-before-expanded-initial.png) | ![I01R-after-expanded-initial.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9dc27554ee515a6e/I01R-after-expanded-initial.png) | ![I01R-expanded-initial-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/adaa439c96d8f3af/I01R-expanded-initial-Diff0.png)<br>AE=25232 | ![I01R-expanded-initial-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/81c71cb85f836001/I01R-expanded-initial-DiffT.png)<br>AE=362 |
| expanded-refresh-end | ![I01R-before-expanded-refresh-end.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d4665f31c0149cc5/I01R-before-expanded-refresh-end.png) | ![I01R-after-expanded-refresh-end.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fbc87a0cc6f3e66a/I01R-after-expanded-refresh-end.png) | ![I01R-expanded-refresh-end-Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7c3208d033150e8c/I01R-expanded-refresh-end-Diff0.png)<br>AE=25197 | ![I01R-expanded-refresh-end-DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/87553a48d008a1fb/I01R-expanded-refresh-end-DiffT.png)<br>AE=302 |

## C05 — Pixel Tablet, dark — optional wide inspector

Environment: Pixel Tablet emulator, Android 16, landscape 2560×1600 whole-device recording/stills; dark theme; text-size medium, Android font scale 0.94; same Android dev client fingerprint `832d41716ea2dfac7350605db3fd07914f87d6ef`.

Captured after-only. The wide Files side pane scrolls, Git opens and receives up/down pans, then Files receives scrolling again. Git’s overview fits; overflowing Git scrolling remains outside this evidence.

Scripted steps and timestamps, above the recording pair:

- **After**: 16.961s: `gesture pan 2300 1350 0 -800 600`; 30.778s: `press label="Git controls"`; 35.100s: `press label="More"`; 39.047s: `gesture pan 2300 1350 0 -800 600`; 60.373s: `gesture pan 2300 500 0 700 600`; 92.154s: `press label="Open files"`; 96.283s: `gesture pan 2300 1350 0 -800 600`. [C05-after-steps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/874c20439843d78e/C05-after-steps.json)

| Capture | Before<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) | After<br>[23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) | Diff0: fuzz 0<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) → [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) | DiffT: fuzz 2%<br>[4c361199f4](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) → [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) |
|---|---|---|---|---|
| Whole-device recording | — (after-only scope) | [C05-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f27bc6fea19ece62/C05-after.mp4) | — | — |
| git-scroll-down | — (after-only scope) | ![C05-after-git-scroll-down.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9acbcf5438078f93/C05-after-git-scroll-down.png) | — (no before required) | — (no before required) |
| git-scroll-up | — (after-only scope) | ![C05-after-git-scroll-up.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/17f56a7788596e50/C05-after-git-scroll-up.png) | — (no before required) | — (no before required) |
| files-initial | — (after-only scope) | ![C05-after-files-initial.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/35f7e7fd53974b74/C05-after-files-initial.png) | — (no before required) | — (no before required) |
| files-return | — (after-only scope) | ![C05-after-files-return.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e975df2eda11b3ae/C05-after-files-return.png) | — (no before required) | — (no before required) |
| files-scroll | — (after-only scope) | ![C05-after-files-scroll.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a80b5be58d0feccf/C05-after-files-scroll.png) | — (no before required) | — (no before required) |

## Seed, capture and processing scripts

- [C01-plan.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/982f5bf586474904/C01-plan.json)
- [C05-plan.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f9b76e471a90f17c/C05-plan.json)
- [F04-plan.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/05827d2abe106e7f/F04-plan.json)
- [FRICTION.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1cf31039c42da9eb/FRICTION.md)
- [I01-plan.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a7ad1171f17567ad/I01-plan.json)
- [I01-refresh-plan.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e4462c996b913f5c/I01-refresh-plan.json)
- [P01-plan.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a35136964bd7eb09/P01-plan.json)
- [capture.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/79154fdec4e6fc71/capture.py)
- [device-ios.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/825db0dab5166f0c/device-ios.py)
- [device.sh](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/09de004c23f1e920/device.sh)
- [diffs.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/43bda6f510ce5c71/diffs.py)
- [package-evidence.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/76cb36d6bdc5b047/package-evidence.py)
- [pairs.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8e4088c23950ea0e/pairs.json)
- [seed.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a52e3d7ea5c9c7fa/seed.mjs)
- [upload-evidence.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ad9ce1da8495d0aa/upload-evidence.py)
- [supplement.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e36b1a5672af8e69/supplement.py)
- [index-evidence.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/13a712e319c7ff4d/index-evidence.py)
- [verify-evidence.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d83d50d3d5cd7ab3/verify-evidence.py)
- [finalize-evidence.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f459b2c1c6a0e899/finalize-evidence.py)
- [I01-compact-refresh-plan.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/39ad301832bade6d/I01-compact-refresh-plan.json)
- [append-capture.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ff5a759438c9ef97/append-capture.py)

## Integrity and cleanup

All linked files were uploaded with `ghdrop upload -m`; its returned Markdown is reproduced verbatim. A SHA-256 manifest accompanies the report. The original unsanitized tool output, pairing credentials and runtime configuration remain in private scratch and are not uploaded.

[settling-verification.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a90b9a56b62f3794/settling-verification.json)

[public-asset-manifest.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4e82801ecc50a7cb/public-asset-manifest.json)

All servers and Metro started for this capture were stopped using their captured process sessions. Pixel and iOS sessions were closed. The expired tablet session was disconnected after the documented retry. The temporary before worktree was removed. The lead’s after worktree remains at [23310d1489](https://git.cafe/pingdotgg/t3code/commit/23310d14893fba4b420c4ff0b0c5ae73fe39bbbe) with a clean tracked tree.

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

## FRICTION

- tool | Agent-device leases are scoped to the opening working directory; the first mobile install from the after worktree refused the lease opened at the main checkout. | Open the lease from the same directory used for mobile:install; use a wrapper for before pairing.
- runbook | Dev backend defaults to loopback; the first device pairing could not reach it. | Specify `--host 0.0.0.0` for pooled mobile captures.
- tool | Pool commands intermittently return “Remote daemon is unavailable”; commands are retried once after at least one minute. | Reliable gateway/daemon health or a retriable structured busy response.
- tool | Android overflow menu is visible in screenshots but excluded from the accessibility snapshot. Its item appears above the native sheet; a coordinate tap dismisses the sheet. | Sheet-aware overlay anchoring and accessibility; tracked as an observed limitation, not a claimed refresh success.
- other | Initial dependency install ran before worktree checkout completed, leaving no dependencies. | Await worktree creation before installation.
- tool | Normal agent-device open hit duplicate in-flight request IDs during its preflight; batch open bypassed it. | Fix unique request IDs in preflight.
- tool | Batch open defaulted to the invisible test IME despite the local testIme=false configuration. | Pass structured testIme:false explicitly, disable the helper in Android Settings, verify Gboard, and retake search.
- tool | The tablet lease expired before cleanup, and the initial iOS lease expired before the supplemental before capture. | Longer renewable capture leases; tablet was disconnected after the documented retry, iOS was reacquired, reinstalled and paired for the same before fixture.
- tool | Screenshot round trips through the pool take several seconds. The driver waits 500 ms between screenshots, but the actual screenshot dispatch interval is usually 3–5 seconds. | A remote atomic two-frame capture API would meet the requested approximately 500 ms separation precisely; every selected pair is nevertheless pixel-identical at zero threshold.
- tool | iOS `scroll top` on the compact native sheet dismissed it in both revisions. | A reliable list-targeted scroll-to-top command; a direct compact-root pull without scroll top was captured subsequently on both revisions; the failed first attempt remains labeled.
- other | The second iOS install began before lease-open completed and the newly leased simulator lacked the app. | Await lease-open completion before installing; the client was reinstalled and the direct compact refresh retaken.

