# Evidence sheet — native-actions

Native environment: real T3 Code Expo development clients from each pinned checkout, independently served JS bundles and fresh isolated server homes (T3CODE_DEV_SEED=0); one continuous lease per platform. AP: Pixel 9 Android 16/API 36, 411.43×923.43 logical, 1080×2424 physical, DPR 2.625, fontScale 1, safe area top/bottom 24, portrait. IP: iPhone 17 Pro iOS 27.2, 402×874 logical, 1206×2622 physical, DPR 3, fontScale 1, safe top 62/bottom 34, portrait. L/D are explicit built-in light/dark. Native fingerprints match across revisions: Android ed36a9cc9856c84a322bb71e6d67744f0a00877d; iOS f532a0c5902b69c7f69cc5fe9c807053700a07eb. Android animations disabled/reduced motion; PNG status bar normalized to 9:41, recordings retain native clock. iOS normalized charging battery would not settle, so original native clock/battery retained. No web/device emulation is used for native captures.

Capture conditions: each selected still passed two identical full-screen RGB captures ≥500ms apart and visual review. Native UI has no browser network-idle/font-ready API: route/content readiness and pixel equality were used; independent network-idle/fonts assertions remain unavailable. R01–R05 redo freezes JS Date at 2026-10-27T21:00:00Z; other mobile rows and iOS native clock were not globally frozen. The matrix explicitly narrows widths/themes; no new 1440/390 web screenshots were requested. Android recordings split at 180s and omit static trailing frames. The last table-gesture/remove recording has a truncated static tail; its actions through draft Remove and source return are present, while the later settled still is separate. Written chapter seconds are command elapsed time, not a frame-accurate performance measurement; complete UTC steps and native telemetry are provided.

New ZIP-only rows use the labelled shared generic ZIP Before, not a pixel-comparable image of the new state. Consequently Diff0/DiffT are N/A on those rows as permitted by the matrix; unlike-screen diffs would be misleading. Before asset is proof.zip, 13,258,879 bytes, 28 files after expansion; name/route/draft differences in smaller variants are explicitly contextual. Local drafts retain fixture v1; remote partial.txt was revised to bounded-width lines at identical size in v2. Both manifests/bytes are uploaded. Regular regressions use actual matched assets/routes. N = normal UI; D = production route/RPC/local-store driver; H = controlled external dependency in the real native app, labelled per row.

### M24 · AP-L · 411.43×923.43 — CAPTURED

N. Steps: PNG → native image presentation → zoom → close → reopen.

Checkpoints: 28.7s command-time: M24-AP-native.png in [mobile-AP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5a2f3b99ac3e843/mobile-AP-native-viewers.mp4); 38.0s command-time: M24-AP-closed.png in [mobile-AP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5a2f3b99ac3e843/mobile-AP-native-viewers.mp4); 49.5s command-time: M24-AP-reopened.png in [mobile-AP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5a2f3b99ac3e843/mobile-AP-native-viewers.mp4)

Recording(s): [mobile-AP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5a2f3b99ac3e843/mobile-AP-native-viewers.mp4) · [mobile-AP-native-viewers.part-002.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f59fb0fb548379f5/mobile-AP-native-viewers.part-002.mp4) · [mobile-AP-native-viewers.part-003.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6177a18a1b60a522/mobile-AP-native-viewers.part-003.mp4)

| Before | After | Diff0 | DiffT |
| --- | --- | --- | --- |
| [f3b058cd6a][before] | [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] |
| ![baseline-AP-base-L.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7d2fbe571bc93133/baseline-AP-base-L.png)<br>Shared generic ZIP baseline | ![M24-AP-native.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e3e5eb035668740d/M24-AP-native.png) | N/A — new-only state/context baseline | N/A — new-only state/context baseline |

Additional reviewed checkpoints: [M24-AP-closed.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8b5296eba37940cb/M24-AP-closed.png) · [M24-AP-reopened.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0cd7f0b2e629828b/M24-AP-reopened.png)

### M25 · AP-L · 411.43×923.43 — CAPTURED

N. Steps: Two-page PDF → scroll/page navigation → close → reopen.

Checkpoints: 67.1s command-time: M25-AP-native.png in [mobile-AP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5a2f3b99ac3e843/mobile-AP-native-viewers.mp4); 77.0s command-time: M25-AP-closed.png in [mobile-AP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5a2f3b99ac3e843/mobile-AP-native-viewers.mp4); 86.3s command-time: M25-AP-reopened.png in [mobile-AP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5a2f3b99ac3e843/mobile-AP-native-viewers.mp4)

Recording(s): [mobile-AP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5a2f3b99ac3e843/mobile-AP-native-viewers.mp4) · [mobile-AP-native-viewers.part-002.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f59fb0fb548379f5/mobile-AP-native-viewers.part-002.mp4) · [mobile-AP-native-viewers.part-003.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6177a18a1b60a522/mobile-AP-native-viewers.part-003.mp4)

| Before | After | Diff0 | DiffT |
| --- | --- | --- | --- |
| [f3b058cd6a][before] | [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] |
| ![baseline-AP-base-L.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7d2fbe571bc93133/baseline-AP-base-L.png)<br>Shared generic ZIP baseline | ![M25-AP-native.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/902294b407d1aecf/M25-AP-native.png) | N/A — new-only state/context baseline | N/A — new-only state/context baseline |

Additional reviewed checkpoints: [M25-AP-closed.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b75ea076f26b3d42/M25-AP-closed.png) · [M25-AP-reopened.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/56fc82044dab4280/M25-AP-reopened.png)

### M26 · AP-L · 411.43×923.43 — CAPTURED

N. Steps: MP4 → native document/video presentation → playback → return.

AP actual playback is video-only, part-002 00:03–00:14; return to ZIP by about 00:25. Initial onboarding/loading stills were rejected.

Checkpoints: 201.1s command-time: M26-AP-L-returned.png in [mobile-AP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5a2f3b99ac3e843/mobile-AP-native-viewers.mp4)

Recording(s): [mobile-AP-native-viewers.part-002.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f59fb0fb548379f5/mobile-AP-native-viewers.part-002.mp4) · [mobile-AP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5a2f3b99ac3e843/mobile-AP-native-viewers.mp4) · [mobile-AP-native-viewers.part-003.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6177a18a1b60a522/mobile-AP-native-viewers.part-003.mp4)

| Before | After | Diff0 | DiffT |
| --- | --- | --- | --- |
| [f3b058cd6a][before] | [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] |
| ![baseline-AP-base-L.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7d2fbe571bc93133/baseline-AP-base-L.png)<br>Shared generic ZIP baseline | ![M26-AP-L-returned.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/790c166b1a4054a1/M26-AP-L-returned.png) | N/A — new-only state/context baseline | N/A — new-only state/context baseline |

### M24 · IP-D · 402×874 — CAPTURED

N. Steps: PNG → native image presentation → zoom → close → reopen.

Checkpoints: 127.1s command-time: M24-IP-native.png in [mobile-IP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d0fcb603892b617b/mobile-IP-native-viewers.mp4); 170.3s command-time: M24-IP-D-zoom.png in [mobile-IP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d0fcb603892b617b/mobile-IP-native-viewers.mp4); 178.1s command-time: M24-IP-D-closed.png in [mobile-IP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d0fcb603892b617b/mobile-IP-native-viewers.mp4); 187.3s command-time: M24-IP-D-reopened.png in [mobile-IP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d0fcb603892b617b/mobile-IP-native-viewers.mp4)

Recording(s): [mobile-IP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d0fcb603892b617b/mobile-IP-native-viewers.mp4)

| Before | After | Diff0 | DiffT |
| --- | --- | --- | --- |
| [f3b058cd6a][before] | [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] |
| ![baseline-IP-base-D.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1584ba64a6ae198f/baseline-IP-base-D.png)<br>Shared generic ZIP baseline | ![M24-IP-native.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c4b7ef77f205d474/M24-IP-native.png) | N/A — new-only state/context baseline | N/A — new-only state/context baseline |

Additional reviewed checkpoints: [M24-IP-D-zoom.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a7f2adcd5a908382/M24-IP-D-zoom.png) · [M24-IP-D-closed.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/36bcdeb3612bc020/M24-IP-D-closed.png) · [M24-IP-D-reopened.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7ee8cdafa41b49de/M24-IP-D-reopened.png)

### M25 · IP-D · 402×874 — CAPTURED

N. Steps: Two-page PDF → scroll/page navigation → close → reopen.

Checkpoints: 217.2s command-time: M25-IP-D-native.png in [mobile-IP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d0fcb603892b617b/mobile-IP-native-viewers.mp4); 226.3s command-time: M25-IP-D-page2.png in [mobile-IP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d0fcb603892b617b/mobile-IP-native-viewers.mp4); 234.0s command-time: M25-IP-D-closed.png in [mobile-IP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d0fcb603892b617b/mobile-IP-native-viewers.mp4); 241.6s command-time: M25-IP-D-reopened.png in [mobile-IP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d0fcb603892b617b/mobile-IP-native-viewers.mp4)

Recording(s): [mobile-IP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d0fcb603892b617b/mobile-IP-native-viewers.mp4)

| Before | After | Diff0 | DiffT |
| --- | --- | --- | --- |
| [f3b058cd6a][before] | [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] |
| ![baseline-IP-base-D.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1584ba64a6ae198f/baseline-IP-base-D.png)<br>Shared generic ZIP baseline | ![M25-IP-D-native.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6fdd281008d30716/M25-IP-D-native.png) | N/A — new-only state/context baseline | N/A — new-only state/context baseline |

Additional reviewed checkpoints: [M25-IP-D-page2.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4ebc11678d490a8e/M25-IP-D-page2.png) · [M25-IP-D-closed.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b64e05cd5d45a19b/M25-IP-D-closed.png) · [M25-IP-D-reopened.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/827a0c3dbf1400f5/M25-IP-D-reopened.png)

### M26 · IP-D · 402×874 — CAPTURED

N. Steps: MP4 → native document/video presentation → playback → return.

Checkpoints: 270.6s command-time: M26-IP-D-native.png in [mobile-IP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d0fcb603892b617b/mobile-IP-native-viewers.mp4); 355.5s command-time: M26-IP-D-closed.png in [mobile-IP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d0fcb603892b617b/mobile-IP-native-viewers.mp4)

Recording(s): [mobile-IP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d0fcb603892b617b/mobile-IP-native-viewers.mp4)

| Before | After | Diff0 | DiffT |
| --- | --- | --- | --- |
| [f3b058cd6a][before] | [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] |
| ![baseline-IP-base-D.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1584ba64a6ae198f/baseline-IP-base-D.png)<br>Shared generic ZIP baseline | ![M26-IP-D-native.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3ac14c929cca7791/M26-IP-D-native.png) | N/A — new-only state/context baseline | N/A — new-only state/context baseline |

Additional reviewed checkpoints: [M26-IP-D-closed.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f201c3c8a36d633a/M26-IP-D-closed.png)

### M27 · AP-L · 411.43×923.43 — CAPTURED

N. Steps: Close native image → retained neutral entry → Open in file viewer → close → Back.

Checkpoints: 38.0s command-time: M24-AP-closed.png in [mobile-AP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5a2f3b99ac3e843/mobile-AP-native-viewers.mp4); 49.5s command-time: M24-AP-reopened.png in [mobile-AP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5a2f3b99ac3e843/mobile-AP-native-viewers.mp4)

Recording(s): [mobile-AP-native-viewers.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5a2f3b99ac3e843/mobile-AP-native-viewers.mp4) · [mobile-AP-native-viewers.part-002.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f59fb0fb548379f5/mobile-AP-native-viewers.part-002.mp4) · [mobile-AP-native-viewers.part-003.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6177a18a1b60a522/mobile-AP-native-viewers.part-003.mp4)

| Before | After | Diff0 | DiffT |
| --- | --- | --- | --- |
| [f3b058cd6a][before] | [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] |
| ![baseline-AP-base-L.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7d2fbe571bc93133/baseline-AP-base-L.png)<br>Shared generic ZIP baseline | ![M24-AP-closed.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8b5296eba37940cb/M24-AP-closed.png) | N/A — new-only state/context baseline | N/A — new-only state/context baseline |

Additional reviewed checkpoints: [M24-AP-reopened.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0cd7f0b2e629828b/M24-AP-reopened.png)

### M28 · AP-L · 411.43×923.43 — CAPTURED

H: openAttachmentInViewer rejects. Steps: unknown.zzz → controlled native rejection → fallback → retry → Back.

Checkpoints: 14.3s command-time: M28-AP-L-H-native-rejected.png in [harness-AP-native-failure.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d15a7933dd4a4a21/harness-AP-native-failure.mp4); 20.7s command-time: M28-AP-L-H-retried.png in [harness-AP-native-failure.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d15a7933dd4a4a21/harness-AP-native-failure.mp4)

Recording(s): [harness-AP-native-failure.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d15a7933dd4a4a21/harness-AP-native-failure.mp4)

| Before | After | Diff0 | DiffT |
| --- | --- | --- | --- |
| [f3b058cd6a][before] | [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] |
| ![baseline-AP-base-L.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7d2fbe571bc93133/baseline-AP-base-L.png)<br>Shared generic ZIP baseline | ![M28-AP-L-H-native-rejected.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d3398a9be8a51307/M28-AP-L-H-native-rejected.png) | N/A — new-only state/context baseline | N/A — new-only state/context baseline |

Additional reviewed checkpoints: [M28-AP-L-H-retried.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3fa00a3f4d197602/M28-AP-L-H-retried.png)

### M29 · IP-D · 402×874 — CAPTURED

D. Steps: Real NewTask local draft without environment/thread → README source → File actions Save only.

Checkpoints: 180.6s command-time: M29-IP-D-source.png in [mobile-IP-no-environment.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2ebbc165df3ff183/mobile-IP-no-environment.mp4); 187.8s command-time: M29-IP-D-save-only.png in [mobile-IP-no-environment.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2ebbc165df3ff183/mobile-IP-no-environment.mp4); 195.6s command-time: M29-IP-D-share.png in [mobile-IP-no-environment.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2ebbc165df3ff183/mobile-IP-no-environment.mp4)

Recording(s): [mobile-IP-no-environment.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2ebbc165df3ff183/mobile-IP-no-environment.mp4)

| Before | After | Diff0 | DiffT |
| --- | --- | --- | --- |
| [f3b058cd6a][before] | [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] |
| ![baseline-IP-base-D.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1584ba64a6ae198f/baseline-IP-base-D.png)<br>Shared generic ZIP baseline | ![M29-IP-D-source.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/73cc46339a2ae1db/M29-IP-D-source.png) | N/A — new-only state/context baseline | N/A — new-only state/context baseline |

Additional reviewed checkpoints: [M29-IP-D-save-only.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/885145225e70e4e1/M29-IP-D-save-only.png) · [M29-IP-D-share.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2442db0182cc69c0/M29-IP-D-share.png)

### M30 · AP-L · 411.43×923.43 — CAPTURED

D. Steps: Registered NewTask remote ZIP with environment, no draft/thread → README preview → source → preview.

Two direct actions, no Add.

Checkpoints: 13.6s command-time: M30-AP-L-preview-final.png in [mobile-AP-final-normal.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5002550ac0d9036b/mobile-AP-final-normal.mp4); 19.9s command-time: M30-AP-L-source-final.png in [mobile-AP-final-normal.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5002550ac0d9036b/mobile-AP-final-normal.mp4); 26.2s command-time: M30-AP-L-return-final.png in [mobile-AP-final-normal.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5002550ac0d9036b/mobile-AP-final-normal.mp4)

Recording(s): [mobile-AP-final-normal.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5002550ac0d9036b/mobile-AP-final-normal.mp4) · [mobile-AP-final-normal.part-002.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/eee59d7b330d73df/mobile-AP-final-normal.part-002.mp4)

| Before | After | Diff0 | DiffT |
| --- | --- | --- | --- |
| [f3b058cd6a][before] | [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] |
| ![baseline-AP-base-L.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7d2fbe571bc93133/baseline-AP-base-L.png)<br>Shared generic ZIP baseline | ![M30-AP-L-preview-final.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/56c94b4945695ed4/M30-AP-L-preview-final.png) | N/A — new-only state/context baseline | N/A — new-only state/context baseline |

Additional reviewed checkpoints: [M30-AP-L-source-final.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/24ed93172e169ad8/M30-AP-L-source-final.png) · [M30-AP-L-return-final.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0a896926025fa023/M30-AP-L-return-final.png)

### M31 · AW-L · AW ≥600px header required — UNVERIFIED

N. Steps: Attempt Pixel 9 landscape rotation.

Orientation failed twice with adb timed out after 1ms; app is portrait locked and no measured ≥600px native header or labelled 640px harness was produced. Portrait M31 diagnostic does not satisfy AW.

| Before | After | Diff0 | DiffT |
| --- | --- | --- | --- |
| [f3b058cd6a][before] | [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] |
| ![baseline-AP-base-L.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7d2fbe571bc93133/baseline-AP-base-L.png)<br>Shared generic ZIP baseline | **Unverified** — Orientation failed twice with adb timed out after 1ms; app is portrait locked and no measured ≥600px native header or labelled 640px harness was produced. Portrait M31 diagnostic does not satisfy AW. | N/A — new-only state/context baseline | N/A — new-only state/context baseline |

### M32 · AP-L · 411.43×923.43 — PARTIAL

D/H: actual stores; held generated-file persistence. Steps: Add from committed ZIP → busy → success → thread composer attachment/reference; pending Add → close → release, no late append/alert.

Actual pending-question source was pruned by app because no pending provider question existed; real QuestionAttachments-origin routing and unchanged nonempty question draft remain unverified. Saved before/after composer attachment lists matched for cancelled action.

Checkpoints: 50.9s command-time: M32-AP-L-added.png in [harness-AP-actions-question.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2501b3557e78535e/harness-AP-actions-question.mp4); 44.4s command-time: M32-AP-L-H-busy.png in [harness-AP-actions-question.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2501b3557e78535e/harness-AP-actions-question.mp4); 99.2s command-time: M32-AP-L-composer.png in [harness-AP-actions-question.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2501b3557e78535e/harness-AP-actions-question.mp4); 70.4s command-time: M32-AP-L-cancelled-no-late-alert.png in [mobile-AP-draft-cancel-final.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d39a717f1a40a1f6/mobile-AP-draft-cancel-final.mp4)

Recording(s): [harness-AP-actions-question.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2501b3557e78535e/harness-AP-actions-question.mp4) · [harness-AP-actions-question.part-002.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/553800115e716151/harness-AP-actions-question.part-002.mp4) · [mobile-AP-draft-cancel-final.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d39a717f1a40a1f6/mobile-AP-draft-cancel-final.mp4) · [harness-AP-actions-question.part-003.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/23513244ed662a64/harness-AP-actions-question.part-003.mp4)

| Before | After | Diff0 | DiffT |
| --- | --- | --- | --- |
| [f3b058cd6a][before] | [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] |
| ![baseline-AP-base-L.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7d2fbe571bc93133/baseline-AP-base-L.png)<br>Shared generic ZIP baseline | ![M32-AP-L-added.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bc2b06cf601d95f5/M32-AP-L-added.png) | N/A — new-only state/context baseline | N/A — new-only state/context baseline |

Additional reviewed checkpoints: [M32-AP-L-H-busy.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/155c5328a4c51e10/M32-AP-L-H-busy.png) · [M32-AP-L-composer.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fc1eaa2904cac70e/M32-AP-L-composer.png) · [M32-AP-L-cancelled-no-late-alert.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2c4fdf38683dc607/M32-AP-L-cancelled-no-late-alert.png)

### M33 · AP-L · 411.43×923.43 — CAPTURED

N. Steps: Add zero-byte entry → failure alert → dismiss → Back.

Normal zero-byte failure; no artificial quota failure.

Checkpoints: 273.6s command-time: M33-AP-L-failure.png in [mobile-AP-head-entry-story.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/05643421f3981148/mobile-AP-head-entry-story.mp4)

Recording(s): [harness-AP-actions-question.part-002.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/553800115e716151/harness-AP-actions-question.part-002.mp4) · [mobile-AP-head-entry-story.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/05643421f3981148/mobile-AP-head-entry-story.mp4) · [mobile-AP-head-entry-story.part-002.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/86ee556a88296829/mobile-AP-head-entry-story.part-002.mp4) · [mobile-AP-head-entry-story.part-003.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/aa222f35cbd46280/mobile-AP-head-entry-story.part-003.mp4)

| Before | After | Diff0 | DiffT |
| --- | --- | --- | --- |
| [f3b058cd6a][before] | [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] |
| ![baseline-AP-base-L.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7d2fbe571bc93133/baseline-AP-base-L.png)<br>Shared generic ZIP baseline | ![M33-AP-L-failure.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/955e37d4251f2cb1/M33-AP-L-failure.png) | N/A — new-only state/context baseline | N/A — new-only state/context baseline |

### M34 · AP-L · 411.43×923.43 — PARTIAL

N/H: Android held share for busy visual. Steps: partial.txt Save → share chooser; cancel/return attempts.

Chooser is visual proof only. Full receiver-exported bytes/hash and restoration to the same readable entry are unverified. AP cache file was measured at 1,048,601 bytes, MD5 8c6a3d7cc7ead96dfef0f7c19f4e6fa3; cache evidence is not a receiver export. AP spinner/chooser is recording-only. IP later native share threw a captured error.

Recording(s): [harness-AP-actions-question.part-003.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/23513244ed662a64/harness-AP-actions-question.part-003.mp4) · [mobile-AP-final-normal.part-002.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/eee59d7b330d73df/mobile-AP-final-normal.part-002.mp4)

| Before | After | Diff0 | DiffT |
| --- | --- | --- | --- |
| [f3b058cd6a][before] | [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] |
| ![baseline-AP-base-L.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7d2fbe571bc93133/baseline-AP-base-L.png)<br>Shared generic ZIP baseline | Recording-only chooser; see links above. Still unverified. | N/A — new-only state/context baseline | N/A — new-only state/context baseline |

### M34 · IP-D · 402×874 — PARTIAL

N/H: Android held share for busy visual. Steps: partial.txt Save → share chooser; cancel/return attempts.

Chooser is visual proof only. Full receiver-exported bytes/hash and restoration to the same readable entry are unverified. AP cache file was measured at 1,048,601 bytes, MD5 8c6a3d7cc7ead96dfef0f7c19f4e6fa3; cache evidence is not a receiver export. AP spinner/chooser is recording-only. IP later native share threw a captured error.

Checkpoints: 42.5s command-time: M34-IP-D-share-v2.png in [mobile-IP-partial-v2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0942843318c18149/mobile-IP-partial-v2.mp4); 56.1s command-time: M34-IP-D-real-share-error.png in [mobile-IP-export-check.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f3dde681b9ba1c64/mobile-IP-export-check.mp4)

Recording(s): [mobile-IP-save-export.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/338c03ee62a4774d/mobile-IP-save-export.mp4) · [mobile-IP-export-copy.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/218f9d694a1d9b11/mobile-IP-export-copy.mp4) · [mobile-IP-export-check.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f3dde681b9ba1c64/mobile-IP-export-check.mp4) · [mobile-IP-partial-v2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0942843318c18149/mobile-IP-partial-v2.mp4)

| Before | After | Diff0 | DiffT |
| --- | --- | --- | --- |
| [f3b058cd6a][before] | [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] |
| ![baseline-IP-base-D.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1584ba64a6ae198f/baseline-IP-base-D.png)<br>Shared generic ZIP baseline | ![M34-IP-D-share-v2.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/55569449af9b4942/M34-IP-D-share-v2.png) | N/A — new-only state/context baseline | N/A — new-only state/context baseline |

Additional reviewed checkpoints: [M34-IP-D-real-share-error.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/72635ec2f05297d9/M34-IP-D-real-share-error.png)

### M35 · AP-L · 411.43×923.43 — CAPTURED

H: shareAsync rejection / isAvailable false. Steps: Force native share rejection → Could not save file → dismiss → Back; isAvailable=false → silent return.

False availability does not emit failure alert; that caveat is source-confirmed and observed.

Checkpoints: 256.0s command-time: M35-AP-L-H-thrown.png in [harness-AP-actions-question.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2501b3557e78535e/harness-AP-actions-question.mp4); 272.2s command-time: M35-AP-L-H-unavailable-silent.png in [harness-AP-actions-question.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2501b3557e78535e/harness-AP-actions-question.mp4)

Recording(s): [mobile-AP-final-normal.part-002.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/eee59d7b330d73df/mobile-AP-final-normal.part-002.mp4) · [harness-AP-actions-question.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2501b3557e78535e/harness-AP-actions-question.mp4) · [harness-AP-actions-question.part-002.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/553800115e716151/harness-AP-actions-question.part-002.mp4) · [harness-AP-actions-question.part-003.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/23513244ed662a64/harness-AP-actions-question.part-003.mp4)

| Before | After | Diff0 | DiffT |
| --- | --- | --- | --- |
| [f3b058cd6a][before] | [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] | [f3b058cd6a][before] → [420bc45432][after] |
| ![baseline-AP-base-L.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7d2fbe571bc93133/baseline-AP-base-L.png)<br>Shared generic ZIP baseline | ![M35-AP-L-H-thrown.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cb1be14ee8668ee7/M35-AP-L-H-thrown.png) | N/A — new-only state/context baseline | N/A — new-only state/context baseline |

Additional reviewed checkpoints: [M35-AP-L-H-unavailable-silent.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cde3dce169c346f0/M35-AP-L-H-unavailable-silent.png)


[before]: https://github.com/pingdotgg/t3code/commit/f3b058cd6a737e51894bc265927560b23742f0f0
[after]: https://github.com/pingdotgg/t3code/commit/420bc45432a7560a11dc4d0b710cd4155f716c0f
