# Evidence index — Android keyboard repair, blocked capture

PR [#25847](https://git.cafe/pingdotgg/t3code/pull/25847), mirror [#25847](https://github.com/pingdotgg/t3code/pull/25847).

**0/62 matrix rows captured; 0/31 required rows; 0/35 minimum cells. No before/after pair, recording, sheet or diff exists.** The minimum schedule, not an optional full Cartesian product, defines 35 cells. Optional rows are not required. Four platform-excluded rows remain inventoried below.

Before: [8f0b729faf](https://git.cafe/pingdotgg/t3code/commit/8f0b729faf214ad05597d558eaab22b29a8589d7). After: [818a20c2f6](https://git.cafe/pingdotgg/t3code/commit/818a20c2f6d150d2c5376ba522136e7acfc2897a).

**Blocker:** the leased Pixel 9 worker disconnected. Gateway subsequently reported `no worker connected to this gateway can serve agent-device`, including Pixel Tablet allocation and its retry more than one minute later. Stopped after approximately 41 minutes of the 120-minute ceiling because no device work could proceed. All minimum cells are **unverified — tooling**, not budget omissions.

## Environment and limits

VM fs-34, Linux; agent-device 0.21.32 via Simlock. Requested Pixel 9 Android emulator, portrait, full screenshots 1080×2424 pixels. No resized or cropped proof. Android dark system appearance and animations-off applied; `text-size large` restored the category originally reported. Actual DPR, font multiplier after restoration, dp viewport, API/OS version and fixed app theme were not established because the app/worker failed before a JS inspector attached. No accepted capture claims those values. Diagnostic screenshots are setup artifacts only. Their clock is not consistently frozen. No 1440/390 web capture applies to this Android-only request.

The exact matching baseline client fingerprint was prepared and installed: `2d82fecfeae80f0db9c5a70f8b48069fd6a36324`. The after client hit a cache miss and its build was stopped unfinished once the pool was unavailable. Both Metro servers and fresh backends started from their own requested checkouts. Both synthetic projects and stopped threads were created by the same RPC/HTTP script. No live database was copied. No provider run occurred.

The identical uncommitted Probe.tsx and CDP driver were prepared in both own checkouts; no working JS target attached, so these are **not harness captures**. No native didShow-only attempt, successful trace, real terminal PTY interaction, dismissal-order observation, normal-path guard, or K06 observation could be completed. Python driver syntax checks are not substitutes for capture evidence.

## What else changed

- Not assessable: there is no matched app pair. No assertion of visual equivalence or “nothing else changed.”
- The native crash dialog is a setup observation before app JS became available. Its cause was not established and it is not attributed to this PR.
- No sheets or diffs were produced; no blank/splash/error frame is counted as a fixture capture.

## Artifacts (ghdrop output, verbatim)

[seed.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/04f1cb5fd669ee3f/seed.py)
[Probe.tsx](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a37d110e8cb929fc/Probe.tsx)
[install-probe.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cba3542c0a1620a5/install-probe.py)
[cdp.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/51ff4d46c09de8c8/cdp.py)
[capture.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4a64e4e755ad99aa/capture.py)
[diff.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e974c59899ad2465/diff.py)
[session-commands.sh](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bfb41bac6758c3c9/session-commands.sh)
[README-driver.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cf694379cb9b76c3/README-driver.md)
[friction.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/512b8fd0219efd56/friction.md)
![dev-error.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8bffce0234d04620/dev-error.png)
[seed-before.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0adea4425b140ee6/seed-before.json)
[seed-after.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6cd5c1194c8576ff/seed-after.json)
[seed-before.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4ab5e087c91c5479/seed-before.log)
[seed-after.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3897a5104266f3fd/seed-after.log)

[setup-logs.tar.gz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0b642f22cb093b8f/setup-logs.tar.gz)
[matrix.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/db8d627a257b72cf/matrix.md)
![device-initial.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/90839783f63eda40/device-initial.png)
![reload.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e84779d490a91bb3/reload.png)


The log archive redacts startup pairing credentials. Bearer-token files are excluded. All seed output is synthetic. Uploaded scripts are prepared capture tooling; only seeding and native/app setup actually ran. No permission, native capability, hook/cache or terminal implementation was replaced.

## Required cells — no captures

### K01 — hidden→shown repair — MIN P×D; recording + trace

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### K02 — final height differs — MIN N×D; recording + trace

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### K03 — dismissal completion — MIN P×D; recording + ordered transcript

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### K04 — mount after repair — MIN T×D; recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### K05 — normal show / early hide — MIN P×D; recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### K06 — dismissed, no willHide — MIN P×D; recording + trace

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### T01 — editable terminal, hidden — MIN P×D; endpoint in K05 recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### T02 — editable terminal, repaired visible — MIN P×D, N×D, T×D and N×L; recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### T03 — modifier Ctrl active — MIN P×D; endpoint in T02 recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### T04 — modifier Alt / Meta active — MIN P×D; endpoint in T02 recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### T08 — read-only terminal, repaired shown — MIN P×D; recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### T12 — single short session/menu — MIN P×D; recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### T15 — terminal identity / navigation — MIN T×D; merge with K04 recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### C01 — retained composer, resume — MIN N×D; recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### C02 — send, end-follow on — MIN P×D; recording + ordered trace

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### C04 — usage limit overlay — MIN N×D; recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### D01 — scratch draft hero — MIN P×D; recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### D02 — project draft context — MIN N×D; recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### D03 — choose project after repair — MIN P×D; recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### D04 — choose branch after repair — MIN P×D; recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### D05 — choose environment after repair — MIN P×D; recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### S01 — settings focus handoff — MIN P×D; recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### S02 — draft settings / no-focus control — MIN P×D; recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### W01 — compact Home bottom navigation — MIN P×D; recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### W02 — compact Settings bottom navigation — MIN P×D; recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### W03 — wide composer/sidebar — MIN T×D; recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### W04 — wide sidebar preference / rail controls — MIN T×D; recording, can share W03 clip

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### M01 — top short menu, hidden→repair — MIN P×D; recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### M02 — bottom / tall submenu — MIN P×D and N×D; recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### M03 — menu already open during repair — MIN N×D; recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

### P01 — PR discussion reply visible — MIN P×D; recording

| Before | After | Diff0 | DiffT |
|---|---|---|---|
| Unverified — tooling<br>`8f0b729faf` | Unverified — tooling<br>`818a20c2f6` | Not produced | Not produced |

## Complete row inventory

| Row | Requirement | Status/reason |
|---|---|---|
| K01 — hidden→shown repair | MIN P×D; recording + trace | Unverified — tooling (gateway has no connected worker) |
| K02 — final height differs | MIN N×D; recording + trace | Unverified — tooling (gateway has no connected worker) |
| K03 — dismissal completion | MIN P×D; recording + ordered transcript | Unverified — tooling (gateway has no connected worker) |
| K04 — mount after repair | MIN T×D; recording | Unverified — tooling (gateway has no connected worker) |
| K05 — normal show / early hide | MIN P×D; recording | Unverified — tooling (gateway has no connected worker) |
| K06 — dismissed, no willHide | MIN P×D; recording + trace | Unverified — tooling (gateway has no connected worker) |
| T01 — editable terminal, hidden | MIN P×D; endpoint in K05 recording | Unverified — tooling (gateway has no connected worker) |
| T02 — editable terminal, repaired visible | MIN P×D, N×D, T×D and N×L; recording | Unverified — tooling (gateway has no connected worker) |
| T03 — modifier Ctrl active | MIN P×D; endpoint in T02 recording | Unverified — tooling (gateway has no connected worker) |
| T04 — modifier Alt / Meta active | MIN P×D; endpoint in T02 recording | Unverified — tooling (gateway has no connected worker) |
| T05 — mac-host accessory | Optional P×D; recording | Not captured — optional, not required |
| T06 — paste/clear result | Optional P×D; recording | Not captured — optional, not required |
| T07 — read-only terminal, hidden | Optional P×D; still | Not captured — optional, not required |
| T08 — read-only terminal, repaired shown | MIN P×D; recording | Unverified — tooling (gateway has no connected worker) |
| T09 — text fallback surface | Optional P×D; recording | Not captured — optional, not required |
| T10 — capture empty | Optional P×D; recording | Not captured — optional, not required |
| T11 — capture nonempty | Optional P×D; recording | Not captured — optional, not required |
| T12 — single short session/menu | MIN P×D; recording | Unverified — tooling (gateway has no connected worker) |
| T13 — many / long session menu | Optional P×D; recording | Not captured — optional, not required |
| T14 — font bounds | Optional P×D; recording | Not captured — optional, not required |
| T15 — terminal identity / navigation | MIN T×D; merge with K04 recording | Unverified — tooling (gateway has no connected worker) |
| T16 — staged project-script launch | Optional T×D; recording | Not captured — optional, not required |
| T17 — showcase focus gate | Optional P×D; recording | Not captured — optional, not required |
| G01 — no selected thread, connections loading | Optional P×D; recording | Not captured — optional, not required |
| G02 — missing thread, connections ready | Optional P×D; still | Not captured — optional, not required |
| G03 — thread without workspace | Optional P×D; still | Not captured — optional, not required |
| G04 — presentation not initialized | Optional P×D; recording | Not captured — optional, not required |
| G05 — disconnected / retry error | Optional P×D; recording | Not captured — optional, not required |
| G06 — checking permissions | Optional P×D; recording | Not captured — optional, not required |
| G07 — no terminal grants | Optional P×D; still | Not captured — optional, not required |
| G08 — terminal access lookup error | Optional P×D; still | Not captured — optional, not required |
| G09 — operator location loading | Optional P×D; recording | Not captured — optional, not required |
| G10 — terminal list failure | Optional P×D; still | Not captured — optional, not required |
| G11 — observer list loading | Optional; reuse G09 image only, log predicate separately | Not captured — optional, not required |
| G12 — observer no sessions | Optional P×D; still | Not captured — optional, not required |
| G13 — observer target error | Optional P×D; still | Not captured — optional, not required |
| C01 — retained composer, resume | MIN N×D; recording | Unverified — tooling (gateway has no connected worker) |
| C02 — send, end-follow on | MIN P×D; recording + ordered trace | Unverified — tooling (gateway has no connected worker) |
| C03 — send, end-follow off / aborted | Optional P×D; recording | Not captured — optional, not required |
| C04 — usage limit overlay | MIN N×D; recording | Unverified — tooling (gateway has no connected worker) |
| D01 — scratch draft hero | MIN P×D; recording | Unverified — tooling (gateway has no connected worker) |
| D02 — project draft context | MIN N×D; recording | Unverified — tooling (gateway has no connected worker) |
| D03 — choose project after repair | MIN P×D; recording | Unverified — tooling (gateway has no connected worker) |
| D04 — choose branch after repair | MIN P×D; recording | Unverified — tooling (gateway has no connected worker) |
| D05 — choose environment after repair | MIN P×D; recording | Unverified — tooling (gateway has no connected worker) |
| S01 — settings focus handoff | MIN P×D; recording | Unverified — tooling (gateway has no connected worker) |
| S02 — draft settings / no-focus control | MIN P×D; recording | Unverified — tooling (gateway has no connected worker) |
| W01 — compact Home bottom navigation | MIN P×D; recording | Unverified — tooling (gateway has no connected worker) |
| W02 — compact Settings bottom navigation | MIN P×D; recording | Unverified — tooling (gateway has no connected worker) |
| W03 — wide composer/sidebar | MIN T×D; recording | Unverified — tooling (gateway has no connected worker) |
| W04 — wide sidebar preference / rail controls | MIN T×D; recording, can share W03 clip | Unverified — tooling (gateway has no connected worker) |
| M01 — top short menu, hidden→repair | MIN P×D; recording | Unverified — tooling (gateway has no connected worker) |
| M02 — bottom / tall submenu | MIN P×D and N×D; recording | Unverified — tooling (gateway has no connected worker) |
| M03 — menu already open during repair | MIN N×D; recording | Unverified — tooling (gateway has no connected worker) |
| M04 — narrow / hinge placement | Optional S×L; recording | Not captured — optional, not required |
| P01 — PR discussion reply visible | MIN P×D; recording | Unverified — tooling (gateway has no connected worker) |
| P02 — PR discussion without reply | Optional P×D; recording for loading, still if held static | Not captured — optional, not required |
| U01 — undo toast | Optional P×D; recording | Not captured — optional, not required |
| I01 — iOS terminal branches | No Android minimum | Unverified — platform excluded / no Android minimum |
| I02 — iOS root / undo geometry | No Android minimum | Unverified — platform excluded / no Android minimum |
| I03 — iOS V5 vertical header | No Android minimum | Unverified — platform excluded / no Android minimum |
| F01 — generic WorkspaceToolbar fallback | No Android minimum | Unverified — platform excluded / no Android minimum |

## Cleanup

Both backend sessions, both Metro sessions and native preparation were stopped. Own Gradle daemon stopped through Gradle. `agent-device close` failed because no worker was available; both named sessions then successfully disconnected. Remote lease wipe / emulator shutdown cannot be confirmed; pool TTL remains the cleanup path. Own capture worktrees and scratch evidence are removed after these uploads. The lead checkout and PR body were not edited; no commit, push, review, comment or PR link mutation occurred.
