Manual Android reproduction, repeated independently on both commits.

Device: pooled Pixel 9, Android API 36, portrait 1080x2424, light theme.
Base: 121f0cf014dcd6e94327588bf3f1f200a5f07ad7.
Head: d83b5671bc6b5c2c8539de9536091d506e592fe5.

1. Install dependencies in each checkout with vp i. Start each checkout with T3CODE_DEV_SEED=0 vp run dev --host 0.0.0.0 and its own Metro from apps/mobile with vp run dev:client --port 8081. Run sequentially.
2. Prepare and install the Android development client through vp run mobile:install. Use a clean install for each side. Pair using the repository test-t3-mobile pair-client.sh helper and that checkout's fresh server. The default New thread appears. No provider turn is needed.
3. From the checkout root, set CDP_ORIGIN to the device-reachable Metro origin. Run node <evidence>/cdp.mjs "$(cat <evidence>/seed-expr.js)". This uses the real app's ExponentFileSystem module to write a single opening brace to documents/thread-outbox/broken.json. Read __proofSeed with the same CDP helper to confirm the directory contains broken.json and its content is {.
4. Cold-relaunch the client and reopen its Expo development URL. Both sides display Some queued messages could not be loaded. Tap Dismiss.
5. Settings > Environments > Manage the only environment > expand details. For public evidence, change its label to Proof server and save; expand details again. This is the same on both sides.
6. Start recording. Tap Remove environment, then confirm Remove. Capture the resulting screen. Do not dismiss a result overlay.
7. Both sides show This environment is no longer saved on this device. Base additionally displays the environment remove defected error overlay. Head displays no failure overlay and logs a warning for the outbox failure.

The recorded interaction begins at expanded environment details. Connection addresses are blacked out; the removal controls and result remain visible. Final screenshots have no connection addresses and no masking. Stills were accepted only after matching screenshots taken at least 500 ms apart (pixel difference 0). Head's final pair used normalized status-bar chrome after the clock changed during the first pair.

cdp.mjs and seed-expr.js contain the actual runtime injection used, with host and checkout inputs parameterized for public sharing. No application code was changed. No tests were used as evidence.
