# Evidence: Claude process exit diagnostics

**Review note for Julius:** longer failure text makes the narrow SIGABRT row wrap and moves its footer; the wider floating thread banner covers more of the underlying user prompt. Native Diff0 also exposes unrelated iOS glass/status-bar pixel changes, and native recording clocks differ. Native coverage is explicitly partial/unverified rather than a clean comparison claim.

PR [#26086](https://git.cafe/pingdotgg/t3code/pull/26086) ([GitHub mirror](https://github.com/pingdotgg/t3code/pull/26086)); branch [fix/issue-26082](https://github.com/pingdotgg/t3code/tree/fix/issue-26082). Before = merge-base [d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99); after = head [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae). Both exact heads were checked again at cleanup; no historical revision pair is substituted.

**Coverage: 6 of 16 matrix rows complete** (F1, F2, F3 runtime, T1 using the authorized web fallback, I1, H1). **One additional row has partial captures (M1)**. Four rows have no accepted capture (M2, M3, D1, D2); five rows are code-only/excluded by the supplied matrix (M4, N1, X1, X2, X3). Of the 10 affected visual rows: 5 complete, 1 partial, 4 unverified. This is not a full-matrix pass.

## Rendering environments and fixture provenance

Web: real dev app from each checkout on Linux x86_64 VM fs-09; Playwright Chromium 148, headless, `--disable-gpu`; DPR 1; 100% font scaling; no device emulation; en-US, UTC; reduced motion reduce. F1/F2: whole 1440×900 and 390×844 viewports, light and dark on both sides. T1: whole 1280×800 dark, explicitly web fallback. I1/H1: whole 390×844 dark. Web and Node Date fixed at 2026-10-27T12:00:00Z after bootstrap, timers real. Fresh databases created by each revision with T3CODE_DEV_SEED=0; no live userdata copied.

Native: real React Native dev client installed with mobile:install from the shared fingerprint cache, separate before/after Metro from their actual checkouts, connected over Tailscale to the isolated servers. iPhone 17 Pro, iOS 27.2 simulator; actual logical 402×874 viewport, 1× screenshot export; physical panel DPR not queried; Large/default system text size. Dark M1. Native Date and recording OS clock were not frozen; still status bar normalized to 9:41. Reduced-motion control was unavailable in the device CLI. Geometry/clock limitations remain unverified.

The provider executable is an auth-free stream-json stub, not real Claude OAuth. It streams a partial reply, emits a synthetic stderr sentinel, then self-signals SIGABRT, exits 7, or exits 0 without result. **The real installed Claude SDK 0.3.276 creates the exit errors** and the real app persists and renders them. Six exact message/code assertions, one error per run, partial retention and stderr exclusion passed: [failure-assertions.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/725006f995d5481a/failure-assertions.json); [runtime-transcript.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c9fb45413bb5f150/runtime-transcript.txt).

## What else changed

- SIGABRT after-side banner is wider; its centered left edge and dismiss button move. It overlaps more of the user prompt. At 390 wide it becomes two lines and 16 px taller.
- The 390-wide SIGABRT timeline message becomes two lines, moving copy/fork/time footer 22 px downward. Exit 7 stays on one line in these viewports; its banner still widens.
- The partial answer, Provider error label, timestamps, composer and other web controls retain their settled geometry outside those affected areas. Zero-threshold web diffs confine changes to the banner/error/footer areas; T1 initial and partial endpoints have zero changed pixels.
- Native M1 changes the failure sentence and copied item failure/code. Its Diff0 additionally changes low-level status-bar battery and glass/composer pixels; Diff16 (>16/255 per channel) confines visible high-amplitude changes to the sentence. Recording status clocks are 1:49 before and 1:56 after. Native pixel isolation and frozen-clock parity are not claimed.
- Real recordings have small scheduling differences in when the same scripted actions/transitions finish; exact per-side timestamps precede each pair. No timing-performance conclusion is drawn.

## Index of sheets

| Row | Evidence sheet | Result |
|---|---|---|
| F1 | [F1.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3dbde1ee4ffdcf85/F1.md) | Complete; current-SHA 1440/390, both themes |
| F2 | [F2.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a9000cb56357c542/F2.md) | Complete; both sides, 1440/390, both themes |
| F3 | [F3.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7bd7f58e72d107ec/F3.md) | Complete runtime control; no extra visual minimum |
| T1 | [T1.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0aa6be7d9193c779/T1.md) | Complete web fallback; desktop unverified |
| I1 | [I1-final.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/94a2b3637b40a01a/I1-final.md) | Complete; final clean sidebar fixture |
| H1 | [H1-final.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fb42b0970fee61cc/H1-final.md) | Complete; final I1 historical endpoint |
| M1 | [M1.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9d9d8fb253f52421/M1.md) | PARTIAL iOS; strict parity and Android unverified |
| M2 | [M2.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a0849ba16913009f/M2.md) | UNVERIFIED; no accepted settled Home pair |
| M3 | [M3.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0dd6e4432b9ab03e/M3.md) | UNVERIFIED; sidebar interaction not produced |
| D1 | [D1.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ff9bc32753cef66a/D1.md) | UNVERIFIED; child stayed preparing |
| D2 | [D2.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/53b7ca1e78e2592e/D2.md) | UNVERIFIED; no real failed-child group |
| M4, N1, X1, X2, X3 | [exclusions.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ee61d6d39eb854d7/exclusions.md) | Excluded/code-only in supplied matrix; not newly runtime verified |

Supplied audit matrix: [matrix.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/181c7bc2a8357d73/matrix.md). The final I1/H1 sheets supersede earlier uploaded navigation attempts; only the final clean-list recordings are counted.

## Rebuild scripts

Canonical current source bundle: [drivers-and-seeds-reviewed.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c3da8834e41b062a/drivers-and-seeds-reviewed.zip). Reproduction instructions: [reproduce-final.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/87bafbb848d82662/reproduce-final.md). Individual script catalog: [scripts.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e706d9aa97e088b1/scripts.md). Final navigation seed: [refresh-interaction-v2.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1d4e4ab9e0714707/refresh-interaction-v2.mjs); final comparison driver: [build-flow-diffs-v2.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/79c128977cda4fd3/build-flow-diffs-v2.py). The bundle also includes attempted/failed drivers for audit; their presence is not evidence that unverified rows passed. No auth caches, real account records, startup pairing URLs or gateway credentials are uploaded.

## Unverified rows and variants

- **D1/D2, web and native:** the real delegated-task child remained preparing and never reached an SDK prompt/failure within the row time box. No failure surface or real two-child group was captured.
- **M1 strict/native parity:** iOS feed/copy artifacts are partial because native clock, exact requested geometry and physical DPR parity were not established, and Diff0 includes unrelated native rendering changes. Android light/exit-7 is unverified: cache-miss Gradle/NDK preparation did not finish under the VM resource budget.
- **M2:** attempted native Home stills failed consecutive-frame equality in normalized battery pixels; later dual-environment filtering also required alignment. Rejected frames are not presented as accepted Home proof. Android dark shares the native build limitation.
- **M3:** the leased phone stayed 402×874 after rotation and showed compact Back/Home navigation. The selected/unselected sidebar pair was not completed; Android dark was not available.
- **T1 desktop:** Electron build preparation did not become runnable within its time box; the requested authorized web fallback is clearly labelled.
- **Optional runtime/source variants:** no new OS notification, slim-row, stop/replaced-query/OOM or unsupported/malformed-metadata harness coverage is claimed beyond the supplied matrix exclusions and F3 clean EOF control.

## Cleanup and scope

Both dev-server process groups were stopped using captured spawn PIDs after confirming their cwd. Both Metro processes were stopped; both leased device sessions were closed/released. The five capture ports are no longer listening. The two literal worktree .t3 directories were removed after server shutdown; auth caches were removed. Both worktrees remain in place at their supplied SHAs, with empty git status. No tracked files edited, commits, pushes, PR comments or PR-body changes. Disk remained above 5 GB (16 GB available at final check). Capture artifacts and raw private logs remain in the scratch directory. Cleanup actions: [cleanup-server-actions.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7d18142f51181533/cleanup-server-actions.json).

FRICTION:

| Category | What happened | What would have avoided it |
|---|---|---|
| infra | Parallel Android/desktop preparation drove a four-core VM to very high load; browser/RPC commands timed out and an initial device lease expired. Scoped Gradle daemon shutdown restored responsiveness. | Cached native clients and serialized heavy preparation. |
| tool | Preview calls to 127.0.0.1 were refused while Vite listened on localhost IPv6; authorized local Playwright on localhost worked. | Use the advertised localhost origin. |
| model | Freezing browser Date before bootstrap prevented boot; unrelated generated titles also spoiled comparisons. Those attempts were rejected; final captures freeze only after boot and use fixed titles / a matched small list. | Freeze after readiness and seed deterministic titles/lists before recording. |
| runbook | Connecting a lease from scratch and installing from the checkout caused a workspace-ownership error. It was closed and re-leased from the checkout. | Connect, install and drive from the same cwd. |
| tool | iOS normalized battery/glass pixels prevented some settled stills; debugger attach attempts returned 401/transport errors, leaving native clock uncontrolled. | Stable native chrome normalization and supported clock/reduced-motion controls. |
| tool | Real delegated child remained preparing, so D1/D2 had no failed child surface. | A fixture that reaches the preparation milestone, or a concrete preparation diagnostic. |
| forge | Initial public readback returned HTTP 403 and DNS failures; delayed curl retry recovered and 21 artifacts passed hash comparison. | Stable artifact-host DNS/egress. |
| infra | Android cache miss required Gradle/NDK work; Electron build preparation did not yield a runnable app in its time box. | Prebuilt native/Electron artifacts matching these revisions. |

## Public readback verification

A delayed curl retry recovered from initial HTTP 403 and DNS failures. The original index, all 12 row/exclusion sheets, canonical driver bundle, summary comparison image, and all six MP4s were downloaded and matched local SHA-256 hashes (21 files). Earlier temporary readback-limit drafts are superseded by this index. Results: [upload-verification-v2.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fa6d410fb9ae1b14/upload-verification-v2.json); driver: [verify-uploads-v2.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5ce6278d68f865a/verify-uploads-v2.py).

## Row evidence tables

# F1: SIGABRT

Real app web dev server in Playwright Chromium 148 on Linux x86_64; DPR 1; font scaling 100%; device emulation none (390 is a resized desktop browser); en-US / UTC; prefers-reduced-motion reduce. Server and browser Date frozen at 2026-10-27T12:00:00Z after bootstrap; real timers. Whole viewport, no crop. Each accepted still waited for network idle and fonts, then matched a second screenshot 500 ms later. Diff0 amplifies every nonzero per-channel difference to magenta; Diff16 highlights max absolute channel difference >16/255 on a dim grayscale before frame. All accepted frames and diffs were opened and inspected.

| Fixture | Before<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) | After<br>[652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff0<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff16<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) |
|---|---|---|---|---|
| F1 · 1440×900 · light | ![signal-1440-light-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d27a0224adc4c5d5/signal-1440-light-before.png) | ![signal-1440-light-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/93b472a200c72c7a/signal-1440-light-after.png) | ![signal-1440-light-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/03ff67e04a061ad9/signal-1440-light-diff0.png) | ![signal-1440-light-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/51bb9c7ae1516d60/signal-1440-light-diff16.png) |
| F1 · 1440×900 · dark | ![signal-1440-dark-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/719439ecd1fabc73/signal-1440-dark-before.png) | ![signal-1440-dark-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3624320331e705e2/signal-1440-dark-after.png) | ![signal-1440-dark-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6d8c9eecc5c55d29/signal-1440-dark-diff0.png) | ![signal-1440-dark-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/80cca3a8823a2bad/signal-1440-dark-diff16.png) |
| F1 · 390×844 · light | ![signal-390-light-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d836476fabadfa84/signal-390-light-before.png) | ![signal-390-light-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f615d4aafaad5737/signal-390-light-after.png) | ![signal-390-light-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c587850148bedafb/signal-390-light-diff0.png) | ![signal-390-light-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dcc2486997e6a3ec/signal-390-light-diff16.png) |
| F1 · 390×844 · dark | ![signal-390-dark-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e3bf75033821a453/signal-390-dark-before.png) | ![signal-390-dark-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c9bb3b1749749483/signal-390-dark-after.png) | ![signal-390-dark-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/338a36b9db6a87f7/signal-390-dark-diff0.png) | ![signal-390-dark-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8144de18bea65126/signal-390-dark-diff16.png) |

One failed root run after a streamed partial reply; no Retry or process-code badge. Exact persisted fields and sentinel exclusion are in [failure-assertions.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/725006f995d5481a/failure-assertions.json) and [runtime-transcript.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c9fb45413bb5f150/runtime-transcript.txt).

Reproduce with [seed.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9c8b5945aee0d2d3/seed.mjs), [claude-exit-stub.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bf067d59deb658eb/claude-exit-stub.mjs) and [capture-stills.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1e5822aaef9a51f9/capture-stills.mjs). Pixel statistics: [diff-stats.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a5bc34bbdb78fa27/diff-stats.json).


---

# F2: exit 7

Real app web dev server in Playwright Chromium 148 on Linux x86_64; DPR 1; font scaling 100%; device emulation none (390 is a resized desktop browser); en-US / UTC; prefers-reduced-motion reduce. Server and browser Date frozen at 2026-10-27T12:00:00Z after bootstrap; real timers. Whole viewport, no crop. Each accepted still waited for network idle and fonts, then matched a second screenshot 500 ms later. Diff0 amplifies every nonzero per-channel difference to magenta; Diff16 highlights max absolute channel difference >16/255 on a dim grayscale before frame. All accepted frames and diffs were opened and inspected.

| Fixture | Before<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) | After<br>[652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff0<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff16<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) |
|---|---|---|---|---|
| F2 · 1440×900 · light | ![exit-1440-light-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/527340534255ac06/exit-1440-light-before.png) | ![exit-1440-light-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a4e1da22f73f4ff5/exit-1440-light-after.png) | ![exit-1440-light-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e02ba3c41f59a86f/exit-1440-light-diff0.png) | ![exit-1440-light-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/263ab62abe3a212e/exit-1440-light-diff16.png) |
| F2 · 1440×900 · dark | ![exit-1440-dark-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/daee830063ccf05b/exit-1440-dark-before.png) | ![exit-1440-dark-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ff0a40c72f01456d/exit-1440-dark-after.png) | ![exit-1440-dark-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ac4bdf28f4ec4b79/exit-1440-dark-diff0.png) | ![exit-1440-dark-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e4e7c4bef5d0a241/exit-1440-dark-diff16.png) |
| F2 · 390×844 · light | ![exit-390-light-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1ea3bdafc4cd5abb/exit-390-light-before.png) | ![exit-390-light-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/75468e1b5eb4dc6b/exit-390-light-after.png) | ![exit-390-light-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f7df041943e20022/exit-390-light-diff0.png) | ![exit-390-light-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4154e291e65f2932/exit-390-light-diff16.png) |
| F2 · 390×844 · dark | ![exit-390-dark-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8c2af99b12178802/exit-390-dark-before.png) | ![exit-390-dark-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ca650770c70dcb4f/exit-390-dark-after.png) | ![exit-390-dark-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ce1accb43941b7c0/exit-390-dark-diff0.png) | ![exit-390-dark-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f506b3af0298dced/exit-390-dark-diff16.png) |

One failed root run after a streamed partial reply; no Retry or process-code badge. Exact persisted fields and sentinel exclusion are in [failure-assertions.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/725006f995d5481a/failure-assertions.json) and [runtime-transcript.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c9fb45413bb5f150/runtime-transcript.txt).

Reproduce with [seed.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9c8b5945aee0d2d3/seed.mjs), [claude-exit-stub.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bf067d59deb658eb/claude-exit-stub.mjs) and [capture-stills.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1e5822aaef9a51f9/capture-stills.mjs). Pixel statistics: [diff-stats.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a5bc34bbdb78fa27/diff-stats.json).


---

# F3: clean EOF fallback control

| Fixture | Before<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) | After<br>[652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff0<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff16<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) |
|---|---|---|---|---|
| F3 · runtime; no extra visual minimum | [failure-assertions.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/725006f995d5481a/failure-assertions.json) | [failure-assertions.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/725006f995d5481a/failure-assertions.json) | Not applicable: runtime-only row | Not applicable: runtime-only row |

[runtime-transcript.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c9fb45413bb5f150/runtime-transcript.txt)

Both app revisions persist one failed error with message `Provider turn failed.` and code null after the stub exits 0 without a result. Partial reply is retained. SIGABRT/exit 7 exact message/code and absence of the stderr sentinel are asserted on both sides in the same driver. This uses the real installed SDK, not an invented error object. Unsupported/malformed metadata harness variants were not repeated.

Driver: [assert-failures.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/715d6ec5dbeef7a3/assert-failures.mjs); seed: [seed.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9c8b5945aee0d2d3/seed.mjs); SDK stub: [claude-exit-stub.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bf067d59deb658eb/claude-exit-stub.mjs).


---

# T1: Partial reply → process death → failed composer ready

Real app web dev server in Playwright Chromium 148 on Linux x86_64; DPR 1; font scaling 100%; device emulation none (390 is a resized desktop browser); en-US / UTC; prefers-reduced-motion reduce. Server and browser Date frozen at 2026-10-27T12:00:00Z after bootstrap; real timers. Whole viewport, no crop. Each accepted still waited for network idle and fonts, then matched a second screenshot 500 ms later. Diff0 amplifies every nonzero per-channel difference to magenta; Diff16 highlights max absolute channel difference >16/255 on a dim grayscale before frame. All accepted frames and diffs were opened and inspected.

**Web fallback, 1280×800 dark; Electron desktop remains UNVERIFIED.** The desktop build did not become runnable within its time box. The typed prompt is submitted through the real RPC without titleSeed to keep an identical fixed thread title; this does not test the Enter submission handler. The real SDK receives it and creates the actual exit error.

Steps and timestamps, seconds from the settled start, before the recording pair:

- before: 0.000s Settled initial state; 0.082s Type user prompt; 1.303s Submit typed prompt through real RPC without titleSeed, preserving fixed fixture title; 1.991s Partial assistant reply is visible while run is active; 9.169s Process death surfaced as Provider error; 9.900s Failed run persisted; composer ready; exactly one Provider error; 11.401s End.
- after: 0.000s Settled initial state; 0.120s Type user prompt; 1.344s Submit typed prompt through real RPC without titleSeed, preserving fixed fixture title; 2.032s Partial assistant reply is visible while run is active; 9.463s Process death surfaced as Provider error; 10.260s Failed run persisted; composer ready; exactly one Provider error; 11.761s End.

| Before · [d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) | After · [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) |
|---|---|
| [T1-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e7efca240a2828df/T1-before.mp4) | [T1-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/85748ec5eba3aa63/T1-after.mp4) |

| Fixture | Before<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) | After<br>[652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff0<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff16<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) |
|---|---|---|---|---|
| T1 · 00-start · 1280×800 · dark | ![00-start.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c01b80c1fd803186/00-start.png) | ![00-start.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3ac8f148f53bd34c/00-start.png) | ![T1-00-start-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bacfe41eee9a6484/T1-00-start-diff0.png) | ![T1-00-start-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b62fa3bba9d87f41/T1-00-start-diff16.png) |
| T1 · 01-partial · 1280×800 · dark | ![01-partial.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/10c628a0f7c08978/01-partial.png) | ![01-partial.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/73dd82084dcb0da3/01-partial.png) | ![T1-01-partial-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/62c5f5472bebe379/T1-01-partial-diff0.png) | ![T1-01-partial-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/97ae06b10c36bdf2/T1-01-partial-diff16.png) |
| T1 · 02-failed · 1280×800 · dark | ![02-failed.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4657906e26259ce7/02-failed.png) | ![02-failed.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/13aff9d836d2dc57/02-failed.png) | ![T1-02-failed-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c6de480cfd1113e0/T1-02-failed-diff0.png) | ![T1-02-failed-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/330f43c823648202/T1-02-failed-diff16.png) |

Driver: [record-flows.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/87d3cdd635ec7919/record-flows.mjs); timestamps/projections: [steps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/485e491ede0b3de6/steps.json), [projection.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dd542331f07d3c5d/projection.json), [steps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e004d8ea1d28065c/steps.json), [projection.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/78570f10fa696f3d/projection.json).


---

# I1: Dismiss banner → navigate → next turn

Real app web dev server in Playwright Chromium 148 on Linux x86_64; DPR 1; font scaling 100%; device emulation none (390 is a resized desktop browser); en-US / UTC; prefers-reduced-motion reduce. Server and browser Date frozen at 2026-10-27T12:00:00Z after bootstrap; real timers. Whole viewport, no crop. Each accepted still waited for network idle and fonts, then matched a second screenshot 500 ms later. Diff0 amplifies every nonzero per-channel difference to magenta; Diff16 highlights max absolute channel difference >16/255 on a dim grayscale before frame. All accepted frames and diffs were opened and inspected.

390×844 dark web. This also captures H1; the second run is deliberately held active by the stub. Working/Thinking in the historical endpoint is the requested active-run state. Dismissal persistence is within one app session, not across reloads.

Steps and timestamps, seconds from the settled start, before the recording pair:

- before: 0.000s Settled initial state; 1.084s Dismiss latest failure banner; 2.601s Navigate to signal failure thread; 3.556s Navigate back to exit-7 thread; 4.356s Expand narrow composer; 4.445s Type next-turn prompt; 5.605s Submit next held run; 6.708s New active run; historical failed row remains and latest-error banner is absent; 8.210s End.
- after: 0.000s Settled initial state; 1.077s Dismiss latest failure banner; 2.656s Navigate to signal failure thread; 3.704s Navigate back to exit-7 thread; 4.514s Expand narrow composer; 4.607s Type next-turn prompt; 5.707s Submit next held run; 6.834s New active run; historical failed row remains and latest-error banner is absent; 8.335s End.

| Before · [d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) | After · [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) |
|---|---|
| [I1-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ac5e627f799b26e6/I1-before.mp4) | [I1-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5b8aa4de8c238172/I1-after.mp4) |

| Fixture | Before<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) | After<br>[652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff0<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff16<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) |
|---|---|---|---|---|
| I1 · 00-start · 390×844 · dark | ![00-start.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/554624f73256b0f0/00-start.png) | ![00-start.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5c0db228e6ae366f/00-start.png) | ![I1-00-start-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e62111a5a91af561/I1-00-start-diff0.png) | ![I1-00-start-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/68f0cc0334969662/I1-00-start-diff16.png) |
| I1 · 01-dismissed · 390×844 · dark | ![01-dismissed.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b1951673e5fde435/01-dismissed.png) | ![01-dismissed.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bad53cf25859d726/01-dismissed.png) | ![I1-01-dismissed-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4852deb5022c55c7/I1-01-dismissed-diff0.png) | ![I1-01-dismissed-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f7b3554f6cb84f97/I1-01-dismissed-diff16.png) |
| I1 · 02-returned · 390×844 · dark | ![02-returned.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5e16624899738ba4/02-returned.png) | ![02-returned.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/20bb573afe767a2e/02-returned.png) | ![I1-02-returned-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/76d2aa4ef1402229/I1-02-returned-diff0.png) | ![I1-02-returned-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/166e21fb2c8f5c05/I1-02-returned-diff16.png) |
| I1 · 03-history · 390×844 · dark | ![03-history.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cb2d9706f02e5071/03-history.png) | ![03-history.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c249353019471c00/03-history.png) | ![I1-03-history-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e7bcf514c988a289/I1-03-history-diff0.png) | ![I1-03-history-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c01d06d094bb846e/I1-03-history-diff16.png) |

Driver: [record-flows.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/87d3cdd635ec7919/record-flows.mjs); timestamps/projections: [steps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/26ee54597b84741a/steps.json), [projection.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e2f91382d99a7230/projection.json), [steps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/98ad1126383a4870/steps.json), [projection.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2e5decd6aba193a6/projection.json).


---

# H1: historical failed row during a later active run

Real app web dev server in Playwright Chromium 148 on Linux x86_64; DPR 1; font scaling 100%; device emulation none (390 is a resized desktop browser); en-US / UTC; prefers-reduced-motion reduce. Server and browser Date frozen at 2026-10-27T12:00:00Z after bootstrap; real timers. Whole viewport, no crop. Each accepted still waited for network idle and fonts, then matched a second screenshot 500 ms later. Diff0 amplifies every nonzero per-channel difference to magenta; Diff16 highlights max absolute channel difference >16/255 on a dim grayscale before frame. All accepted frames and diffs were opened and inspected.

Same I1 recording and its timestamped navigation/new-turn steps; see the I1 sheet. No extra fork was seeded. The old error remains readable, while the latest-failure banner is absent.

| Fixture | Before<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) | After<br>[652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff0<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff16<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) |
|---|---|---|---|---|
| H1 · 390×844 · dark | ![03-history.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cb2d9706f02e5071/03-history.png) | ![03-history.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c249353019471c00/03-history.png) | ![I1-03-history-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e7bcf514c988a289/I1-03-history-diff0.png) | ![I1-03-history-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c01d06d094bb846e/I1-03-history-diff16.png) |

Recordings: [I1-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ac5e627f799b26e6/I1-before.mp4); [I1-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5b8aa4de8c238172/I1-after.mp4).


---

# M1: native feed and long-press copy — PARTIAL / strict conditions UNVERIFIED

Real React Native dev client from the native fingerprint cache; Metro served each revision from its own checkout. iPhone 17 Pro simulator, iOS 27.2, remote Simlock pool; logical viewport 402×874, screenshot export 1 pixel per logical point; physical panel DPR not queried; iOS Large default text size, no accessibility enlargement. Dark theme. This is a device geometry deviation from 390×844. Server timestamps frozen at noon UTC; native Date/OS recording clock was not frozen. Still chrome normalized to 9:41; reduced-motion emulation unavailable in the device CLI. Full viewport; feed anchored at the same bottom position. The empty upper area is the actual bottom-anchored short conversation, not missing content.

Both 00-start stills matched a second decoded-RGB capture after at least 500 ms; both were inspected. End frames that failed settling were rejected. Diff0 additionally detects small status-bar and native glass/composer changes; Diff16 is confined to the failure sentence. Therefore this is qualitative native proof, not a clean pixel-isolation claim, and does not satisfy the full frozen-clock requirement.

Steps and timestamps above the recording pair (seconds after record-start returns):

- before: 0.000s recording active; 3.009s longpress label="Provider error: Provider turn failed." completed; 3.611s clipboard read completed; 6.651s record stop completed. The same script waits 1s, long-presses the failed row, reads clipboard, waits 2s, then stops. Copied appears around 2.5–3s in both videos.
- after: 0.000s recording active; 2.943s longpress label="Provider error: Claude Code process terminated by signal SIGABRT." completed; 3.570s clipboard read completed; 6.510s record stop completed. The same script waits 1s, long-presses the failed row, reads clipboard, waits 2s, then stops. Copied appears around 2.5–3s in both videos.

| Before · [d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) | After · [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) |
|---|---|
| [M1-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a33778289cce3524/M1-before.mp4) | [M1-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fbda5e0a9941065c/M1-after.mp4) |

| Fixture | Before<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) | After<br>[652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff0<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff16<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) |
|---|---|---|---|---|
| M1 · iOS · 402×874 · dark · partial | ![00-start.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c55194a4cb26c37e/00-start.png) | ![00-start.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/30f17b74d2565817/00-start.png) | ![M1-native-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/48a61d2248912104/M1-native-diff0.png) | ![M1-native-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cd3bd4a1c580eaa9/M1-native-diff16.png) |

Clipboard text includes the full failure sentence and the actual error-item JSON (generic/null before; SIGABRT/process_killed_by_signal after): [clipboard.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/73efe5525b970d51/clipboard.txt); [clipboard.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f69cced11d48b974/clipboard.txt). Driver step logs: [steps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fe6b37928b413d2b/steps.json); [steps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9b7e540bb019b799/steps.json).

Android light / exit-7 native variant: **UNVERIFIED**. Native cache miss launched a Gradle/NDK build; resource pressure prevented completion within the capture budget, so it was stopped. No web screenshot substitutes for Android.

Device metadata: [native-environment.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/77a5d229eba7c77d/native-environment.json). Scripts: [native-capture.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e86f84d22216caaa/native-capture.py), [pair-native.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/793878a96c4a1311/pair-native.mjs), [clean-native-list-v2.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/11388a65d49a95f8/clean-native-list-v2.mjs).


---

# M2: Native Home card, unselected, one-line preview

UNVERIFIED: native Home captures were attempted, but consecutive frames did not pass the zero-difference settled check (iOS normalized battery pixels changed). After pairing both environments, filter state also needed realignment. Rejected frames are not presented as accepted evidence. Android dark additionally lacks a completed native client build.

| Fixture | Before<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) | After<br>[652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff0<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff16<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) |
|---|---|---|---|---|
| M2 · required native/web variants | UNVERIFIED | UNVERIFIED | No accepted pair | No accepted pair |

Native driver: [native-capture.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e86f84d22216caaa/native-capture.py).


---

# M3: Native sidebar selected ↔ unselected card

UNVERIFIED: the leased iPhone remained in its 402×874 compact layout after a landscape request and exposed Back/Home navigation, not the required selected sidebar state. No matching before/after sidebar recording was completed. Android dark client build did not complete.

| Fixture | Before<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) | After<br>[652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff0<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff16<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) |
|---|---|---|---|---|
| M3 · required native/web variants | UNVERIFIED | UNVERIFIED | No accepted pair | No accepted pair |

Native driver: [native-capture.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e86f84d22216caaa/native-capture.py).


---

# D1: One delegated child result, tooltip, relationships and Agents sheet

UNVERIFIED on web and native: real delegated_task.request created the child, but the child stayed preparing and never reached the stub SDK turn within the row time box. No app-owned child failure surface was available. The attempted seed is uploaded; it is not substituted for a capture.

| Fixture | Before<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) | After<br>[652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff0<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff16<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) |
|---|---|---|---|---|
| D1 · required native/web variants | UNVERIFIED | UNVERIFIED | No accepted pair | No accepted pair |

Attempted real-app seed: [delegate-seed.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d32a2e9e2bcafafd/delegate-seed.mjs); RPC driver: [rpc.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/996439045e00eeb8/rpc.mjs).


---

# D2: Two-child collapsed/expanded group

UNVERIFIED on web and native: D1 never reached a failed child result, so the required real two-child state and interaction were not produced within the time box.

| Fixture | Before<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) | After<br>[652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff0<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff16<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) |
|---|---|---|---|---|
| D2 · required native/web variants | UNVERIFIED | UNVERIFIED | No accepted pair | No accepted pair |

Attempted real-app seed: [delegate-seed.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d32a2e9e2bcafafd/delegate-seed.mjs); RPC driver: [rpc.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/996439045e00eeb8/rpc.mjs).


---

# Excluded / code-only matrix rows

These statuses come from the supplied audit matrix; this evidence round does not claim a new independent source audit.

## M4 — Settled/snoozed slim row

Excluded from visual minimum by supplied matrix: slim rows omit this content. Not newly runtime verified.

| Fixture | Before<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) | After<br>[652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff0<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff16<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) |
|---|---|---|---|---|
| M4 | Not required | Not required | Not applicable | Not applicable |

## N1 — In-app/OS notifications

Code-only minimum in supplied matrix; no runtime notification/focus proof captured. Floating thread banner evidence is not notification-toast evidence.

| Fixture | Before<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) | After<br>[652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff0<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff16<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) |
|---|---|---|---|---|
| N1 | Not required | Not required | Not applicable | Not applicable |

## X1 — Usage/retry/resetAt/workspace branches

Excluded by reachable failure shape in supplied matrix; no synthetic impossible metadata seeded.

| Fixture | Before<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) | After<br>[652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff0<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff16<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) |
|---|---|---|---|---|
| X1 | Not required | Not required | Not applicable | Not applicable |

## X2 — Alternate inspectors/native workflows/generic sidebar hover

Excluded by supplied matrix; no alternate harness or unreachable event layout manufactured.

| Fixture | Before<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) | After<br>[652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff0<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff16<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) |
|---|---|---|---|---|
| X2 | Not required | Not required | Not applicable | Not applicable |

## X3 — Stop/open/replaced-query/OOM guards

Source-only exclusion in supplied matrix; no new guard transcript or OOM exercise. The clean EOF control does not establish these guards.

| Fixture | Before<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) | After<br>[652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff0<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) | Diff16<br>[d1c4b52b7c](https://github.com/pingdotgg/t3code/commit/d1c4b52b7c7c7e1b7637ec47e4c959ff0c2d8d99) → [652e9c18ce](https://github.com/pingdotgg/t3code/commit/652e9c18cee800df7e255916365967ba211097ae) |
|---|---|---|---|---|
| X3 | Not required | Not required | Not applicable | Not applicable |



---

