# Native follow-up R2 — partial evidence, M1 unverified

Replacement [#24583](https://github.com/pingdotgg/t3code/pull/24583), original [#19570](https://git.cafe/pingdotgg/t3code/pulls/19570). Only `/home/ubuntu/wt/pr-19570`; head [e810a33cf8](https://github.com/pingdotgg/t3code/commit/e810a33cf8114e5c4e76eeffe8ea299ef8466b71), base [3cc31ed27c](https://github.com/pingdotgg/t3code/commit/3cc31ed27c8956b36cee35a50509fb7c6869592b). 2026-10-25 00:16–00:38 UTC. No source/config/policy changes, commits, pushes, PR comments or watches. No live userdata, other machines or environment links.

## Result

EAS availability true for pingdotgg. Existing development profile has APP_VARIANT=development, developmentClient=true, internal distribution; existing finished artifacts are APKs. Profile fingerprint `236efefcbaa2b185e07a10dfcd520ec6d1027f20`; no finished development build matched, so none was reused.

Exact fresh build command from apps/mobile:

```sh
npx --yes eas-cli@latest build --platform android --profile development --non-interactive --no-wait --message 'Thread sync recovery 19570 e810a33cf8 native r2' --json
```

[Owned development build](https://expo.dev/accounts/pingdotgg/projects/t3-code/builds/2abc38fa-b7f9-4587-b8ac-bccf048360be) recorded requested gitCommitHash and matching fingerprint. Metadata upload warned `Failed to upload metadata to EAS Build`, `Request failed: 400 (Bad Request)` but archive uploaded and build proceeded. It passed CONFIGURE_EXPO_UPDATES without the prior preview-profile runtime mismatch and entered RUN_GRADLEW. At capture cutoff 00:37:27 UTC, status remained IN_PROGRESS, artifacts empty, no terminal error. Latest observed work included gesture-handler CMake builds across architectures. This is a time-budget limit, not a demonstrated build defect. Build cancellation command succeeded with `✔ Build canceled`.

No cloud simulator session was started because no installable APK existed within the run window. Requested session name `Thread sync recovery 19570` and 25-minute maximum were never applied to a session; there is no active session or dotenv.

## External fixture preparation, not native evidence

Two owned Expo Metro tunnels on ports 18083 (head) and 18084 (paired base component modules). External Node preload intercepts index.ts reads to render a declared static component fixture: retained text plus the real FloatingWorkingControl and status helper, failed/connection/recovered chapters. Base intercept uses git-show copies of two base modules; this is a component comparison, not a complete base application. It does not implement or claim actual recovery. No tracked entry, config, renderer or policy edited.

First bundle probe failed HTTP 500: `SyntaxError ... apps/mobile/index.ts: Unexpected token, expected "," (19:14)` because scratch JSX was injected into a .ts entry. Corrected only scratch fixture by transpiling JSX to React.createElement and restarting the owned Metro before any device connection. Corrected head bundle 25,279,943 bytes; base 25,278,566 bytes. Both contain the declared fixture entry. Original module reads SHA256-match checkout head or git-show base respectively. This demonstrates local bundle provenance only; neither bundle was loaded on a native device. No static fixture chapter can stand in for foreground/new-session recovery.

Two EAS status-query processes exited with signal 143 without JSON; subsequent direct invocation of the same current cached CLI recovered IN_PROGRESS state. No remote build failure inferred from those local interruptions. No blind rebuilds.

## Coverage and cleanup

M1 cached ready content + failed sync nonbutton semantics, actual connection-error button control, foreground and new-session recovery, creation/content/connection precedence: **all unverified natively**. Android/iOS screenshots, recordings, native accessibility trees, base/head image pairs and pixel diffs: **none**. No stale binary used as proof.

Both Metro PIDs were stopped after verifying cwd; both owned ports have no listener. Shell sessions exited 143 as expected after SIGTERM. No app server started. No simulator dotenv created. Worktree clean. Public artifact set excludes EAS raw responses/logs, bundles, manifests, credentials and dotenv. Partial trace and module-read provenance uploaded before cleanup; final audit and scratch fixture sources uploaded separately.

## Partial public records

[Attempt trace](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/026ace90528cf503/attempt-public.ndjson), [source provenance](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f26587757eda4a0d/provenance-public.json), [head bundle provenance](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f4391b3c760e41ab/bundle-provenance-public.json), [base bundle provenance](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d24b7e7ba253eb13/base-bundle-provenance-public.json).

FRICTION: development profile resolves the observed preview updates-configuration blocker, but fresh multi-architecture native compilation exceeded this bounded evidence run. No final-head native visual or recovery certification.
