# Android shared-grid font reproduction

Both runs: Pixel 9 emulator, Android API 36, 1080x2424 portrait, light theme, software keyboard visible. Separate fresh servers started with `T3CODE_DEV_SEED=0 vp run dev --host 0.0.0.0`; Metro used `dev:client`. Each checkout's native fingerprint was prepared and installed with `vp run mobile:install android` through the same pooled device session. No agent turn was needed.

Base: d06ba271669e035dd4094497b367072ccc8986be
Head: add6eac8faba0bc4237d4adc104fdffc9c9b6e9c

1. Pair the app, open the default New thread, choose Terminal > Open new terminal (term-1).
2. Set text size to 10.5 pt before beginning; start `driver.mjs CHECKOUT SERVER_PORT PAIRING_OUTPUT_FILE THREAD_ID`. PAIRING_OUTPUT_FILE is private output from `t3 auth pairing create` for the isolated server. The driver exchanges this fresh credential, then connects to the real terminal RPC.
3. Send driver commands `observe`, then `logger`. The Python logger runs in the real PTY, enables ESC[?2048h, and prints each received ESC[48;rows;cols;height;widtht as grid, pixel dimensions and derived cell dimensions. It clears the shell prompt before capture.
4. Start the recording with the Text size submenu open at 10.5 pt. Choose A+ 11.0 pt. Control report on BOTH sides: grid 61x27, pixels 1037x1107, cells 17x41.
5. Send `pin`: a second `terminal.attach` subscription with cols=40 and rows=12. BOTH sides report grid 40x12, pixels 680x492, cells 17x41.
6. Terminal options > Text size > A- 10.5 pt. Repeat for A- 10.0 pt. BASE: no new report; last report remains 680x492 / 17x41. HEAD: report 3 is grid 40x12, pixels 640x468, cells 16x39; report 4 is grid 40x12, pixels 640x456, cells 16x38.
7. Take pinned-state screenshots (two screenshots at least 500 ms apart were byte-identical on each side).
8. Send `unpin`, which interrupts the second attach stream. BOTH sides report grid 64x29, pixels 1024x1102, cells 16x38. Stop recording.

## UI commands used on both sides

With a session already leased and the logger running, the UI interaction was:

```sh
agent-device record start RECORDING --scope device --hide-touches --session SESSION
agent-device press 'text="A+ 11.0 pt"' --session SESSION --settle
# driver: pin
agent-device press 'label="Terminal options"' --session SESSION --settle
agent-device press 'text="Text size"' --session SESSION --settle
agent-device press 'text="A- 10.5 pt"' --session SESSION --settle
agent-device press 'label="Terminal options"' --session SESSION --settle
agent-device press 'text="Text size"' --session SESSION --settle
agent-device press 'text="A- 10.0 pt"' --session SESSION --settle
# capture pinned state, then driver: unpin
agent-device record stop --session SESSION
```

The videos contain the actual app interaction. The stills show the pinned 40x12 state after both font decreases. No test output is used as evidence.
