# Evidence T1 retry — capture-6

PR [#33680](https://git.cafe/pingdotgg/t3code/pull/33680) ([GitHub mirror](https://github.com/pingdotgg/t3code/pull/33680)); captured [06c360d934](https://git.cafe/pingdotgg/t3code/commit/06c360d934daf28b59cda4efc7616408f2458e32). Historical pass-3 baselines: main [633438d54f](https://git.cafe/pingdotgg/t3code/commit/633438d54f17b99f73f1a09466ecbe4a6aa0d545) and clipped head [c6afa44bc6](https://git.cafe/pingdotgg/t3code/commit/c6afa44bc640c3b6ab0173a87d2dd185c358bb2b). Baselines were reused, not recaptured.

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

**T1 visual check passes:** Objective-C, own Kotlin, and own Diff labels are fully visible vertically, with both actions visible and separated. Two accepted whole-screen sources cover the three headers, each backed by pixel-identical raw screenshots taken at least 500 ms apart. The Kotlin recording shows wrap on/off, long-press, Copy, and automatic context-menu dismissal. **The requested explicit dismissal of Android's copied-text preview is incomplete. Final default restoration is unconfirmed:** a second pool failure ended the attempt. A successful intermediate restore/readback was followed by returning to maximum size for a final recording attempt; the final restore could not reach the worker. This is a partial completion, not an unconditional T1 workflow pass.

## Rendering environment

| Property | Evidence |
|---|---|
| Device | Separate pooled Pixel 9 lease, session cap6-33680. Android 16/API 36 is the pool catalog descriptor; runtime OS version was not independently probed. |
| Resolution | 1080×2424 pixels in both raw sources and recording. No image rescaling in comparisons. |
| Client | Dev client obtained only through `vp run mobile:install android --prepare` then session install with explicit Metro URL. Native fingerprint `832d41716ea2dfac7350605db3fd07914f87d6ef`; cached install succeeded in 122 s. |
| Appearance | Explicit Light appearance; T3 Code theme; Material navigation selected. |
| App text | 22 pt, largest slider endpoint; read back through Settings seekbar accessibility attributes. Settings still has OS scale 1.0; OS maximum was applied and read afterward. |
| OS font scale | `accessibility-extra-extra-extra-large`, platformValue 3.2, read back; app relaunched before T1. |
| Isolation | Detached requested-head worktree `/home/user/wt/pr-33680-cap6`, `vp install`, `T3CODE_DEV_SEED=0`, fresh isolated `.t3`; backend 16316, Metro 8086, both reachable via this VM's tailnet name. Initial port check avoided the other capture's listeners. |
| Fixture | Pass-3 assistant Objective-C, own Kotlin and own diff fences. RPC seed driver only. Persisted user/assistant bodies matched exactly, 232/164 UTF-8 bytes. No live userdata, other lead worktree, migration, or paid provider turn used. |

Supplied archives were downloaded with curl into scratch, checked for absolute paths, parent escapes, and symlinks, unpacked into separate empty directories, and used drivers read before execution. Adapted drivers and synthetic fixture are in the artifact archive. No source edit, commit, PR-body edit, forge comment, or push was made. This was one row on Android; no iOS, desktop, web, default-size U1, or other device claim is made.

## Settled stills and crops

| Source | UTC | Gap after first screenshot call completed | Raw verification |
|---|---|---|---|
| Assistant Objective-C | 13:30:19 | 500.098 ms | raw0a/raw0b pixel-identical |
| Own Kotlin and own Diff | 13:31:07 | 500.089 ms | raw0a/raw0b pixel-identical |
| Settings 22 pt | 13:29:25 | 500.092 ms | raw0a/raw0b pixel-identical |
| Intermediate Settings 16 pt | 13:35:22 | 500.088 ms | raw0a/raw0b pixel-identical; not final restoration proof |

All times are 2026-11-10 UTC. Agent-device normalized status bars; clocks, timestamps, composer and caret are excluded from target crops. The archive includes original whole screens, both raw members, acceptance JSON with hashes, standalone crops, masks and sheets. Every included still/raw pair was visually inspected; all historical inputs and crop/mask columns were inspected in the individual and combined sheets. The recording was reviewed at one frame per second across its full timeline, with full-size action screenshots also inspected.

Coordinates are `(left, top, right, bottom)`, right/bottom exclusive. Each block is independently aligned to its own header top-left, at native pixel size, without scaling. The requested historical crops remain unchanged.

| Target | Historical main rectangle | Historical clipped-head rectangle | Current rectangle | Size |
|---|---|---|---|---|
| Objective-C | (50,1153,1030,1653) | (50,1270,1030,1770) | (50,1165,1030,1665) | 980×500 |
| Own Kotlin | (222,1505,1006,2005) | (222,1505,1006,2005) | (222,695,1006,1195) | 784×500 |
| Own Diff | (222,711,1006,1261) | (222,944,1006,1494) | (222,1529,1006,2079) | 784×550 |

ImageMagick `compare -metric AE -fuzz 0% -highlight-color white -lowlight-color black` amplifies every changed pixel to white. Diff2% uses 2% fuzz. Gray sheet padding and separators are identical in every column and are excluded from metric inputs.

| Target | Main → current Diff0 / Diff2% changed pixels | Clipped head → current Diff0 / Diff2% changed pixels |
|---|---|---|
| Objective-C | 73,457 / 71,377 | 98,544 / 95,982 |
| Own Kotlin | 54,373 / 53,545 | 64,737 / 63,447 |
| Own Diff | 48,316 / 47,685 | 70,897 / 69,684 |

The combined sheets have rows Objective-C, Kotlin and Diff, and columns Before | After | Diff0 | Diff2%. Narrower own-message crops have gray padding; content pixels are never resized.

## Recording

The 38.864-second, 1080×2424 H.264 recording is the completed take at 22 pt / OS 3.2. Semantic actions: own Kotlin Wrap lines → Disable line wrap → long-press own Kotlin body → Copy. The context menu disappears and Android shows the copied Kotlin preview. The preview itself remains open at the end. An attempted replacement take intended to add its explicit Dismiss copied text action landed at a different scroll anchor and was rejected. Capture work stopped on the second pool failure during repositioning; no successful replacement is claimed. Rejected takes are not published as evidence; their action logs remain in the archive.

## What else changed

- Since the clipped head, the only mobile source change is `height: 32` becoming `minHeight: 32` in [CodeBlockFrame.tsx](https://git.cafe/pingdotgg/t3code/blob/06c360d934daf28b59cda4efc7616408f2458e32/apps/mobile/src/native/CodeBlockFrame.tsx#L89). The sampled header grows from about 84 to 190 pixels at maximum text, revealing the label and shifting the following body down about 106 pixels. Icons remain small and move vertically with the enlarged header.
- Versus main, the existing PR also changes plain code to syntax colors, makes header icons smaller, and exposes full Objective-C/Kotlin labels rather than ellipses. These are visible in the main/current masks and predate this one-line height fix.
- Header-aligned crops deliberately remove unrelated feed scroll displacement. Thread timestamps and clocks differ; they are not counted as code styling changes.
- Other large-text surfaces in the whole screen, including navigation and composer text, still have clipping/truncation. This check establishes the three requested code headers only.
- No exact clipboard-byte, performance, hit-target-size, or broader regression claim is made. The visible Copy preview corroborates the Kotlin copy action.

## Pool limit, restoration and cleanup

At 13:25:41 the initial OS text-size read failed with Remote daemon is unavailable. After the single permitted 60-second wait, its retry succeeded and read 1.0. At 13:39:08 another pool command failed with the same error. That second failure ended capture work; there was no further pool capture retry.

OS 1.0 and app 16 pt were successfully restored and read back at the intermediate 13:35 checkpoint. To complete explicit copied-preview dismissal, the app was then set back to 22 pt, OS 3.2 was read back, and the app relaunched. The final cleanup OS restore at 13:39:32 and readback at 13:39:35 both failed with Remote daemon is unavailable. App restoration was consequently inaccessible. **The final confirmed pre-close state remains app 22 pt / OS 3.2.** The pool did not report that the host had ended the lease; `close` succeeded. No device reset or final defaults are inferred from close.

Lease cap6-33680 closed successfully. Backend and Metro were stopped via captured process groups 836588/836605; both groups exited. Final checks showed no listener on 16316, 8086 or the backend's Vite port 6798. The detached worktree was removed, and the git worktree list no longer contains it. Scratch remains at `/tmp/lead-33680-r2/capture-6/`; no evidence or raw logs were deleted. Disk remained above 100 GB free.

The first public archive retained diagnostic session identifiers, was deleted, and was replaced after sanitizing them and rerunning its privacy scan. Only the replacement archive below is current. Authentication, private projections and backend/Metro logs are excluded.

## Upload output, verbatim

![T1-main-vs-06c360d934-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/933b5d8d0facdfe7/T1-main-vs-06c360d934-sheet.png)
![T1-c6afa44bc6-vs-06c360d934-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/16656b1935cb29e2/T1-c6afa44bc6-vs-06c360d934-sheet.png)
![Objective-C-06c360d934-crop.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ecf52bf243cdfacf/Objective-C-06c360d934-crop.png)
![Kotlin-06c360d934-crop.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9becac40a2a91312/Kotlin-06c360d934-crop.png)
![Diff-06c360d934-crop.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6e963b9cf9c58e46/Diff-06c360d934-crop.png)
![T1-Objective-C-06c360d934.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/78322322fdb5fff6/T1-Objective-C-06c360d934.png)
![T1-own-Kotlin-06c360d934.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3a3eeb965b55db7c/T1-own-Kotlin-06c360d934.png)
![Settings-maximum-22pt.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/78f591f7b61b189e/Settings-maximum-22pt.png)
[T1-Kotlin-wrap-copy-22pt-3.2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/376ca7c4c3238b69/T1-Kotlin-wrap-copy-22pt-3.2.mp4)
[capture-6-T1-drivers-raw-and-artifacts.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4c7c5ca982136bea/capture-6-T1-drivers-raw-and-artifacts.zip)

FRICTION:
infra | Pool returned Remote daemon is unavailable twice; the one-minute retry recovered the first failure, but the second ended capture and blocked final restoration/readback | Stable pool worker with bounded command deadlines.
model | Exact-label wait, unsupported swipe flags, stale scroll anchoring, and an incorrect wrapped-action label caused rejected commands/takes | Read command-specific help and verify own Kotlin plus the exact action label before recording.
model | Initial archive retained diagnostic session identifiers; that upload was deleted and replaced after sanitation | Make upload conditional on a successful privacy scan.
infra | System Python lacked Pillow | Scratch-only virtualenv with Pillow, used for settled-pair verification and crops.
