# Native Android setup and static captures

Only the allocated session `pr29548r2` was used. No other machine or live T3 home was accessed.

1. From after checkout: `vp run mobile:install android --prepare`. Native fingerprint 971743703b097b8870b39ff842d130f50b115eeb was a cache hit. `agent-device connect proxy --daemon-base-url "$SIMLOCK_AGENT_DEVICE_URL" --session pr29548r2`; then `agent-device open --platform android --device "Pixel 9" --session pr29548r2`.
2. Run start-metro.py (after 8081) with argument before for the second Metro (8082). Both bind all interfaces. Run proxy-backends.py: after 14344 ->127.0.0.1:14343, before 13820->127.0.0.1:13819. These are plain scratch TCP proxies so the native device can reach localhost-bound isolated servers at the VM tailnet address; no Tailscale serve changes.
3. `vp run mobile:install android --session pr29548r2 --metro http://100.109.139.124:8081`. Both revisions have the same native fingerprint, so the installed cached native shell loads each checkout's own JS from Metro.
4. Use the checkout helper `.agents/skills/test-t3-mobile/scripts/pair-client.sh <backend-port> <take>/home http://100.109.139.124:<proxy-port> agent-device --session pr29548r2`. It reads a fresh private pairing credential and opens the route. Never upload its credential files or URL. Await bundle ready BEFORE pairing.
5. `agent-device settings appearance dark --session pr29548r2`, `settings animations off`, `settings text-size medium`; relaunch after font configuration. Measured RN Dimensions window/screen 411.42857142857144 x 923.4285714285714 logical, scale 2.625, fontScale 0.9399999976158142. Raw screenshots 1080x2424, full display. Pixel 9 Android API36, portrait. No keyboard, no device UI crop, dark on both revisions.
6. Open before Metro with `agent-device open com.t3tools.t3code.dev 't3code-dev://expo-development-client/?url=http%3A%2F%2F100.109.139.124%3A8082&disableAutoLaunch=1&disableFab=1' --session pr29548r2`; similarly 8081 for after. Select the current RN CDP target from `agent-device --session pr29548r2 cdp target list --url http://100.109.139.124:8082` (or 8081), then evaluate mobile-clock.js through cdp runtime eval. Put the global `--session` flag before `cdp`. After the final relaunch, helper discovery stalled; `node native-clock.mjs before` connected directly to that checkout's Metro CDP with its required matching Origin header and confirmed 2026-11-02T21:05:00.000Z. Without that Origin the inspector returned HTTP 401. This fallback reads no credentials. It freezes app Date at 21:05 UTC, without touching native timers. Inspect Dimensions through initialized __r.getModules() exports, not guessed device density.
7. In Settings/Environments enable only the respective scratch backend; both are named fs-32, so distinguish them by displayed ports. Return Chats. M2 shows Generic above Droid, each Failed, one-line error excerpt. Open Droid to show M1 with the complete failure paragraph. Await visible terminal heading/text, not a guessed navigation delay. The original mobile attempt had different OS clock minutes and was retained privately but not used in final evidence.
8. Set `agent-device settings airplane on --session pr29548r2`, then `settings wifi on`, to remove the changing cellular signal glyph while retaining the backend connection. Disabling mobile data alone did not remove cellular signal-strength changes. To make OS chrome comparable, open `com.android.settings` with activity `.Settings$DateTimeSettingsActivity`. Turn off Automatic date and time, keep Nov 2 2026 / UTC, click Time, switch to text-input mode, set hour 9 / minute 00 / PM, OK. Return T3 and take M1 and M2 within that minute. Repeat the clock setup just before the after captures. This changes only the leased emulator's OS time. It is reset automatically when the session is released. Both final status bars display 9:00.
9. Every accepted native still is two `agent-device screenshot` calls >=550 ms apart with Diff0=0. All whole-display images/diffs are inspected. No copy/long-press/transition/navigation performance claim is made, so these are static captures.
10. Close with `agent-device close --session pr29548r2`. Stop both tracked Metro groups and TCP proxy.
