# Final Android supplementary evidence — PR 21088

[PR #21088](https://git.cafe/pingdotgg/t3code/pulls/21088). Baseline [3cc31ed](https://git.cafe/pingdotgg/t3code/commit/3cc31ed27c8956b36cee35a50509fb7c6869592b), HEAD [0b08666](https://git.cafe/pingdotgg/t3code/commit/0b086662f350c79b19295e6ceec12169a6422bdf).

**Partial repair, not an overall matrix pass.** Device released at01:04 UTC; exact HEAD restored at00:58, git status clean. No implementation changes, commits, pushes, or live userdata writes.

## Coverage

| Requirement | Result |
|---|---|
| M3 connected generic fullscreen, missing synthetic file | Paired PASS, independently accepted |
| M3 disconnected fullscreen | Both causes executed continuously: generic fullscreen during scoped backend loss, then close to visible Failed to connect banner before restoration. Baseline independently accepted; final HEAD recording supplied for final audit |
| M4 direct decoded pause/resume | Paired PASS, independently accepted; frozen fixture time/play glyph followed by resumed advancing time |
| M4 unsent local draft preview | Paired PASS, independently accepted; loading→decoded, close→visible unsent draft, reopen→decoded |
| M4 loading→loaded | Executed in paired local recordings; observed decoded fixture frames, not merely controls during loading |
| M4 resource-link complete open/play/pause/close/reopen | INSUFFICIENT. Earlier HEAD resource recording proves decoded pause/resume only; close/reopen not proved. Baseline replacement attempt rejected |
| M4 retained player with actual props.uri null | INSUFFICIENT. Transport interruption alone does not prove null URI; no such claim made |

M1/M2 were already accepted and were not recaptured. M5 source collapse and iOS/Linux exception remain as previously accepted.

## Environment and controlled differences

Same native APK com.t3tools.t3code.dev, Android16/API36 Pixel7 emulator-5572, physical1080×2400, density420, font scale1, light, animations0, clock12:00. Native screenrecord preserves full surface at540×1200. Same isolated backend15734, Vite7694, fixture HTTP18088. Full filesystem grant for playback controls. Only the four authorized mobile files were temporarily replaced byte-for-byte for baseline; exact sources and provenance below. Metro cache was cleared for baseline.

Generic cause: temporarily rename synthetic demo.mp4, open real resource link under full filesystem grant; restore identical bytes. For both disconnected sequences fixture existence was restored before backend cut. HEAD used published restore-on-still.py concurrently with generic-head.py. SHA25644baa5b4c19eec840a5ddfaad0f8fc6d709a67150ff7a87e27f1722915c11dbe. TCP15734 alone rejected with emulator root iptables, retaining Metro8089 and fixture18088; exact rule removed in finally. This is a real connection failure and is not claimed as proof of null URI.

No runtime component harness or injected app state. Local fixture copied into Android Movies and selected through real composer picker, never sent. Draft removed and Android copy deleted at handoff. Full grant changed to a fresh denied-scope pairing through private deep link; token/credential files excluded from uploads.

All four M3 stills have byte-identical500ms successors. Raw, unamplified difference and threshold20 difference supplied. Paired differences2689 pixels (2152 above20) are confined to unavailable text glyph styling; generic wording remains identical and no permission explanation appears. Final contact sheets decoded and opened. Caption timing follows visible footage; original command timestamps are separately preserved and must not be treated as UI assertions. Baseline local presentation trimmed at48s to exclude a later unrelated navigation sheet; full raw source retained.

## Generic fullscreen before / after

![m3-generic-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/498298348b3c5ceb/m3-generic-before.png)

![m3-generic-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a7e20befd921e59b/m3-generic-after.png)

## Disconnected fullscreen before / after

![m3-disconnected-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d4daa5409048ffba/m3-disconnected-before.png)

![m3-disconnected-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/439069e6cf59ca9a/m3-disconnected-after.png)

## Captioned recordings

- Before — disconnected: [before-generic-offline.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/179dd2da4aedc84e/before-generic-offline.mp4)
- After — disconnected: [after-generic-offline.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1b2037d2a1960ff9/after-generic-offline.mp4)
- Before — direct controls: [before-direct-ready.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2b54fd46a85d54e5/before-direct-ready.mp4)
- After — direct controls: [after-direct-ready.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/09a0730637841851/after-direct-ready.mp4)
- Before — local draft: [before-local-ready.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/44e2cf5ec1a3b8f9/before-local-ready.mp4)
- After — local draft: [after-local-ready.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/533711490b6a8939/after-local-ready.mp4)

## Raw sources, decoded contacts, assertions, drivers and frozen fixture

- [before-provenance.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ea985d410179d9c2/before-provenance.json)
- [after-provenance.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8248605103b54c27/after-provenance.json)
- [before-direct-ready-raw.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4ffb21d068ce7d1d/before-direct-ready-raw.mp4)
- [before-generic-offline-raw.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9754ee0d2ba63de9/before-generic-offline-raw.mp4)
- [before-local-ready-raw.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cc597701c2b2b59e/before-local-ready-raw.mp4)
- [after-local-ready-raw.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4e7387046b034ebe/after-local-ready-raw.mp4)
- [after-direct-ready-raw.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ae6e753171c2a50a/after-direct-ready-raw.mp4)
- [before-local-ready-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6ef64b028f4ca28f/before-local-ready-contact.png)
- [before-direct-ready-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/642471abbef4b6c9/before-direct-ready-contact.png)
- [before-generic-offline-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fc139455a1cad8de/before-generic-offline-contact.png)
- [sources-drivers-fixture.tar.gz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/441e7f80b46dadce/sources-drivers-fixture.tar.gz)
- [m3-generic-diff-zero.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8b9dd64af6ddc66a/m3-generic-diff-zero.png)
- [m3-generic-diff-threshold20.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/69b1cbe00c7916be/m3-generic-diff-threshold20.png)
- [generic-diff.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bdc40496fd457529/generic-diff.json)
- [after-generic-offline-raw.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d78edb8afaa20a9c/after-generic-offline-raw.mp4)
- [after-generic-offline-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2d4bbfef074a9710/after-generic-offline-contact.png)
- [m3-disconnected-diff-zero.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/341ab332fbf54307/m3-disconnected-diff-zero.png)
- [m3-disconnected-diff-threshold20.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/44e6001ab5c2a1c4/m3-disconnected-diff-threshold20.png)
- [disconnected-diff.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5ee3c8500a1af333/disconnected-diff.json)
- [final-drivers-assertions.tar.gz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9daab086461a138b/final-drivers-assertions.tar.gz)
- [after-local-ready-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/54e03d8a11d047e2/after-local-ready-contact.png)
- [after-direct-ready-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/40b5ac2169263061/after-direct-ready-contact.png)
- [final-recording-metadata.tar.gz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7a30a79f87bc922e/final-recording-metadata.tar.gz)

## Handoff / friction

Metro8089 PID1166576 (session35031) replaced original1137187. Backend15734 PID1030314 and fixture18088 PID1074722 preserved. No processes remain capturing. All three adb reverses remain ready and scoped firewall rule removed. Auditor owns device after01:04 UTC. Private denied-pair switch procedure delivered directly; no tokens published.

Cold loads took60–100s; stale UIAutomator XML initially made some drivers act on old locators. Driver now removes remote XML before dumping. Earlier after-direct.mp4, before-local-raw.mp4, incomplete resource reopen and reverse-loss attempts are excluded. Native command timing differed from recording time, so captions were corrected from decoded footage. No implementation defect was established. Required M4 resource-reopen/null-URI evidence gaps remain unresolved.
