# Final proof — stalled preview startup

Before: [62245d8](https://git.cafe/pingdotgg/t3code/commit/62245d8e3ad5858abe6c5c0e2e8fba42ed245e9f). After: [0b58d07](https://git.cafe/pingdotgg/t3code/commit/0b58d077e9428d05faceff544d4a0a902d97c6f2). Baseline was run by replacing only the two changed runtime files with their current-main content, then restoring the committed head; the remaining runtime source is identical. No evidence scripts or captures are committed.

Environment: native Android shared-pool emulator, T3 SDK 58 dev client, Linux server in an isolated scratch home, 1080 × 2424 whole-surface captures, light appearance, font scale 1.0 (prior measured value), default DPR not remeasured. Real server CDP screenshots are held indefinitely and all screencast frames are suppressed while the marker exists. Native app remains connected; this is not a network/auth failure. Clock was not frozen; minute changes are visible. No layout or pixel-equivalence claim.

## Timed sequence

Before recording: open thread/compact preview, hold every first screenshot and suppress live frames. At 50.697s tap compact opener. Full Connecting remains at 67.5s and until the recording ends. Compact spinner also continues beyond 15s.

After recording: compact spinner is visible by 14.5s and gone by 29s. At 34.589s tap its outer opener. Full sheet is Connecting at 43.5s and shows startup error/Reconnect by 58s. Remove fault and tap Reconnect at 69.780s; actual page visible at 72.5s. Tap page button at 91.739s; Button works is visible at 101.5s and 116s. The viewer remains healthy beyond its 15s bootstrap window. This covers A1/A2/A3 with one continuous sequence.

The proof video is the first 130s of the original 148.9965s recording, reencoded at 10fps. The raw recording later enters a reconnect near 143s; its cause was not established, and this proof makes no claim about subsequent mid-session reconnect behavior. No frames were reordered or omitted inside the 130s proof interval. Android records changed frames, so original timestamps are retained and recorded gesture offsets corroborate actions.

Before: [current-base-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/92261d24369faa45/current-base-before.mp4)

After: [current-after-proof.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/91afd7dbc2dbdea5/current-after-proof.mp4)

![current-base-before-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e7b828fcf14ad3a5/current-base-before-contact.png)

![current-after-proof-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/51159520ba9d43f0/current-after-proof-contact.png)

## Before/after state pairs

Diff0 is absolute RGB difference amplified ×8 with zero threshold; Diff16 marks channel changes above 16/255. Both pairs are whole-surface, without masks or alignment. Visible differences: full-sheet Connecting spinner/text become existing error text/Reconnect; compact spinner disappears; status-bar clock advances. Styles, geometry and surrounding controls remain as shown; no claim that nothing else changed.

| Fixture | Before [62245d8](https://git.cafe/pingdotgg/t3code/commit/62245d8e3ad5858abe6c5c0e2e8fba42ed245e9f) | After [0b58d07](https://git.cafe/pingdotgg/t3code/commit/0b58d077e9428d05faceff544d4a0a902d97c6f2) | Diff0 ×8 | Diff16 |
| --- | --- | --- | --- | --- |
| Full sheet, no first frame beyond deadline | ![current-base-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c1a8b721b057b838/current-base-sheet.png) | ![current-after-error.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/42eade0763105cab/current-after-error.png) | ![sheet-diff0-8x.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b7c2520c991f340f/sheet-diff0-8x.png) | ![sheet-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/020d95acf9d98db4/sheet-diff16.png) |
| Compact, no first frame beyond deadline | ![current-base-before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b25f954f6fc7d06f/current-base-before.png) | ![current-after-compact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/95c715b42b77fa44/current-after-compact.png) | ![compact-diff0-8x.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/30deb9c55743b071/compact-diff0-8x.png) | ![compact-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b76e1db306d48862/compact-diff16.png) |

Recovered page and working interaction:

![current-after-button.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/79de617d6d9f12aa/current-after-button.png)

## Server proof

Actual WebSocket driver: first viewer upgrades in 73ms with no binary frame after 3000ms. Remove fault while the first screenshot promise remains unresolved: second viewer upgrades in 12ms and receives a frame in 45ms. [driver-after.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/af259cdba2607c3e/driver-after.log)

Focused tests: 31 ServerBrowser and 11 ServerBrowserStream passed. Regression tests establish attach-before-still and capture-lock release after virtual 2000ms. Both hung on the pre-fix attach; the tests were committed before the implementation. Scoped check:changed passed format/lint/knip/GraphQL/typecheck/focused tests with only pre-existing untracked app.json excluded from the invocation.

## Rebuild trace

[fault-held-marker.cjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/abbc13d003cfd682/fault-held-marker.cjs) [native-seed.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5d87a2805bb25e4/native-seed.mjs) [reveal-bearer.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/63027e5aa504f2a2/reveal-bearer.mjs) [driver-after.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/645725e6cc9e6dd3/driver-after.mjs) [make-final-diffs.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ceb855da9f894163/make-final-diffs.py) [make-contact-sheets.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5c449de321bb1671/make-contact-sheets.py)

[current-base-fault.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/03c012cae99b6f08/current-base-fault.log) [current-after-fault.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/257732fd6464262d/current-after-fault.log) [current-base-before.gesture-telemetry.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bb6dc1b63ead1a3f/current-base-before.gesture-telemetry.json) [current-after-compact.gesture-telemetry.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1a2cd0750509a30b/current-after-compact.gesture-telemetry.json)

Limits: iOS native execution and macOS/Windows desktop hosts were not exercised. No styles or platform WebView props changed. Exact pixel-stability under frozen clock/DPR was not certified; these recordings establish state/timing behavior. No full theme/viewport cross-product is claimed.
