# Android Mermaid evidence refresh

Issue [#24223](https://git.cafe/pingdotgg/t3code/issues/24223). Final [ca1d44b14e](https://git.cafe/pingdotgg/t3code/commit/ca1d44b14e017e01c0e219c088db6e50dc7afa08); baseline [bfc7177f9f](https://git.cafe/pingdotgg/t3code/commit/bfc7177f9f54b0a4b9d3571d30723a51cd4b31bd). All after images/recordings were recaptured after the final merge and a real Metro WebSocket reload. The directory's historical 03db name is not its provenance. Fresh baseline captures were made afterward by detaching at the actual merged base, reloading, and restoring the final branch. No old after artifacts are used.

Capture window: 2026-10-26 07:36–07:47 UTC.

One existing pooled Android session `issue-24223-final`, portrait 1080×2424 physical pixels. Exact logical density/content width unmeasured. Cached native fingerprint 0328f4ec326e7e4bf1bf87625118f3ff2f7a18d7, Metro8081, backend13773 at fs-19.tail131df4.ts.net, explicit isolated home /tmp/t3-issue-24223-runtime. Same schema-validated synthetic projection fixtures; no runtime database writes during capture. Full-phone stills, no crops, rescale or alignment. OS clock was not frozen: screenshot status bar normalized to 9:41; videos keep real clock and temporary normalized chrome during stills. Pairs use two screenshot commands separated by an explicit 500ms wait, plus transport latency. Exact RGB acceptance is zero changed pixels.

Visible result: native Mermaid source/code controls become centered diagrams for assistant, plan, lone/grouped reasoning, syntax variants and artifact-adjacent text. Small Start→Finish graphs now occupy compact intrinsic-height space; following prose is directly below, with no large internal blank gap. Large empty space ABOVE short conversations is existing bottom-aligned feed positioning, not a diagram gap. Wide LR graphs scale to available width with four labels and arrows visible; their labels are small. Assistant heading/prose/list/TypeScript remain in order. Invalid syntax retains native code and wrap/copy controls between two valid diagrams. Plan title occurs once; checklist and copy/save controls fit. User Mermaid stays code. Reference Guide remains blue and numbering 1→2 persists.

## Coverage against the 15-row proof matrix

|Row|Observed on final|Remaining gap|
|---|---|---|
|1|Assistant small/wide diagrams, stable light/dark, theme change and re-entry recording|Portrait only; exact dp unmeasured; landscape not repeated because prior rotation failed and app locks portrait|
|2|Plan title once, two diagrams, checklist, copy preview with original Markdown fences, save dialog opened/canceled on video|Clipboard API readback unsupported; no saved-file byte comparison|
|3|Lone reasoning expanded; wide diagram; nested scroll from paragraphs0–4 to4–10 on video|Copy and every gesture boundary unverified|
|4|Actual Thought(×2) group; wide first diagram, second small graph plus following tail, nested scroll on video|Every parent/nested gesture boundary unverified|
|5|No runtime proof|No deterministic provider/event streaming harness; stopped projection snapshots cannot prove open→closed transition|
|6|No runtime proof|Same missing live-stream harness for proposed plan|
|7|Invalid native fallback between valid graphs, compact settled still|Text selection/copy not exercised|
|8|No runtime fault proof|No approved controlled import-rejection/nonpositive-size fixture; successful render cannot prove guards|
|9|Uppercase tilde CRLF, long closer, info suffix, four diagrams, tail; top/bottom stills|Parser tests carry exact source offsets|
|10|Empty,2-space-indented,nested,inline,Python and unclosed controls remain native code|1-/3-space variants not separately seeded|
|11|Reference link blue, list numbering 1→2, tail; Guide tap opens Chrome onboarding on video|Destination page blocked by Chrome onboarding; no browser preferences changed|
|12|Artifact card, prose, graph, file chip and tail preserve order|No image/skill seed; template/chip callbacks unexercised|
|13|User source stays native code; plain assistant stays text|No module-import instrumentation|
|14|HTML-looking label renders bold HTML label; destination tap does not navigate; feed stays intact|Literal tag escaping not claimed; no image syntax/network instrumentation. Gesture MP4 contains only one encoded frame because screen did not change; at-edge scroll cannot prove gesture passthrough|
|15|Theme/re-entry recording; accessibility snapshot exposes image Mermaid diagram|No screen-reader session, recycling instrumentation or stable return-position assertion. Row1 fits viewport, so at-edge scroll cannot show offscreen recycling|

All 12 reproducible fixture rows have new final stills; this is not 15 complete passes. iOS unverified. Web/desktop/provider adapters/contracts/backend feature behavior is unchanged; this is a native Android visual pass, not provider-streaming or orchestration verification.

## Differences and inspection

`compare.py` computes absolute RGB deltas at native full-phone size. Diff0 shows all nonzero deltas amplified 4× (saturated at255); Diff16 shows raw deltas only where max channel difference >16/255. No alignment, cropping or scaling. Before/after share fixture/theme/device and bottom feed boundary; changed content heights naturally move elements. Both raw images and generated maps were opened for review. All accepted pair images have identical RGB pixels; opening the a-image therefore inspects the b-image's content too. Recordings reviewed with 16 evenly spaced contact-sheet frames; this is sampled review and cannot rule out every transient. The unchanged labels recording has one frame only and is not claimed as motion proof.

## FRICTION

Pool intermittently returned ECONNRESET, worker-not-connected and remote-daemon errors. Same session recovered; failed still pairs were retried. After merge reload, backend restart and VM overload temporarily showed reconnect/sync screens; these were rejected and overwritten. The first dark capture after theme transition had a gray native header and failed exact stability; it was replaced after settling. No source edits, new servers/checkouts, fixture writes, PR, push, merge or watch performed by capture step. Existing untracked app.json preserved. Primary owns cleanup; runtimes and device retained.

All 18 accepted still pairs (14 final, 4 baseline) have exact RGB changed-pixel count **0**.

|Comparison|Changed pixels|Pixels >16/255|
|---|---:|---:|
|before-after-01-dark|476,103|67,292|
|before-after-01-light|553,229|73,994|
|before-after-02-dark|129,775|54,294|
|before-after-07-dark|607,473|55,658|

## Before / after

Assistant dark, Before — bfc7177f9f:

![Assistant dark, Before — bfc7177f9f](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/21e8def6f90f8ae5/base-01-dark-a.png)

Assistant dark, After — ca1d44b14e:

![Assistant dark, After — ca1d44b14e](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7f37d7e3534685e6/after-01-dark-a.png)

Assistant light, Before — bfc7177f9f:

![Assistant light, Before — bfc7177f9f](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/de06b151799b3da1/base-01-light-a.png)

Assistant light, After — ca1d44b14e:

![Assistant light, After — ca1d44b14e](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/82a93591dc0e222b/after-01-light-a.png)

Proposed plan, Before — bfc7177f9f:

![Proposed plan, Before — bfc7177f9f](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/583f640329e4543e/base-02-dark-a.png)

Proposed plan, After — ca1d44b14e:

![Proposed plan, After — ca1d44b14e](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3d0f15e552c145fe/after-02-dark-a.png)

Invalid fallback, Before — bfc7177f9f:

![Invalid fallback, Before — bfc7177f9f](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8f08af2a59d510fd/base-07-dark-a.png)

Invalid fallback, After — ca1d44b14e:

![Invalid fallback, After — ca1d44b14e](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2bb0b7a9118bc32e/after-07-dark-a.png)

## Recordings

- [after-01-theme-reentry.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/825a944ce73bb45e/after-01-theme-reentry.mp4) — 36.906s, dark→light→dark, at-edge scroll attempts, navigate away/back; last frame inspected separately.
- [after-02-controls.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6a58ddb3611ff5e8/after-02-controls.mp4) — 11.587s, copy Markdown preview and save dialog open/cancel.
- [after-03-04-reasoning.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/efae0734d5406c46/after-03-04-reasoning.mp4) — 49.038s, lone/grouped expansion and nested scrolling.
- [after-11-link.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7e74b1d3ae89b779/after-11-link.mp4) — 7.931s, Guide opens Chrome onboarding, return to thread.
- [after-14-gestures.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/857ef6bf31f4c771/after-14-gestures.mp4) — one encoded frame, no usable motion timeline; unchanged screen only.

## Every uploaded artifact

- [after-01-dark-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7f37d7e3534685e6/after-01-dark-a.png)
- [after-01-dark-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a72932d84d4543b4/after-01-dark-b.png)
- [after-01-light-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/82a93591dc0e222b/after-01-light-a.png)
- [after-01-light-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/80ec25f3ee02f903/after-01-light-b.png)
- [after-01-reentry-last.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/398a641831358f9d/after-01-reentry-last.png)
- [after-01-theme-reentry-review.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bd124da6d70c901d/after-01-theme-reentry-review.png)
- [after-01-theme-reentry.gesture-telemetry.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8922f7564d5c11a8/after-01-theme-reentry.gesture-telemetry.json)
- [after-01-theme-reentry.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/825a944ce73bb45e/after-01-theme-reentry.mp4)
- [after-02-controls-review.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0bb804117738e225/after-02-controls-review.png)
- [after-02-controls.gesture-telemetry.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7af16caff220af72/after-02-controls.gesture-telemetry.json)
- [after-02-controls.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6a58ddb3611ff5e8/after-02-controls.mp4)
- [after-02-dark-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3d0f15e552c145fe/after-02-dark-a.png)
- [after-02-dark-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6375dc54bb7d5b15/after-02-dark-b.png)
- [after-03-04-reasoning-review.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/201bc69060d20507/after-03-04-reasoning-review.png)
- [after-03-04-reasoning.gesture-telemetry.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8321b03d3e6bbd6a/after-03-04-reasoning.gesture-telemetry.json)
- [after-03-04-reasoning.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/efae0734d5406c46/after-03-04-reasoning.mp4)
- [after-03-expanded-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6a27030a77968add/after-03-expanded-a.png)
- [after-03-expanded-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f734cdc11c1cefa6/after-03-expanded-b.png)
- [after-04-expanded-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/56dee4c291a24297/after-04-expanded-a.png)
- [after-04-expanded-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a285c43946344a40/after-04-expanded-b.png)
- [after-04-tail-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9ac6b8be305c2579/after-04-tail-a.png)
- [after-04-tail-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a120bd45ac73f488/after-04-tail-b.png)
- [after-07-dark-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2bb0b7a9118bc32e/after-07-dark-a.png)
- [after-07-dark-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e6f6f99e529c836b/after-07-dark-b.png)
- [after-09-bottom-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3a87dc52c996e510/after-09-bottom-a.png)
- [after-09-bottom-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0cc326c0ebbe3091/after-09-bottom-b.png)
- [after-09-top-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1928570a5fd3b8ca/after-09-top-a.png)
- [after-09-top-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/05e1bb970fa21087/after-09-top-b.png)
- [after-10-dark-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d23b7a77806c46ce/after-10-dark-a.png)
- [after-10-dark-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fef7807b7f65b871/after-10-dark-b.png)
- [after-11-dark-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/49790071d35e3704/after-11-dark-a.png)
- [after-11-dark-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4da0f55a92d3e9ce/after-11-dark-b.png)
- [after-11-destination.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4712cabe967a16fb/after-11-destination.png)
- [after-11-link-review.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/88e3120952a23a70/after-11-link-review.png)
- [after-11-link.gesture-telemetry.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e7a8452f72d5e43f/after-11-link.gesture-telemetry.json)
- [after-11-link.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7e74b1d3ae89b779/after-11-link.mp4)
- [after-12-dark-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/69ee495110eebeec/after-12-dark-a.png)
- [after-12-dark-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ad8de73093d4fc5e/after-12-dark-b.png)
- [after-13-dark-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cdf37612eee7ee83/after-13-dark-a.png)
- [after-13-dark-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3134b4da2d2ef9a9/after-13-dark-b.png)
- [after-14-dark-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cc0b17c35e50bfce/after-14-dark-a.png)
- [after-14-dark-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bd8f1d2a4af6faab/after-14-dark-b.png)
- [after-14-gestures-review.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3d36277269c8807a/after-14-gestures-review.png)
- [after-14-gestures.gesture-telemetry.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f4625e703d48ee58/after-14-gestures.gesture-telemetry.json)
- [after-14-gestures.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/857ef6bf31f4c771/after-14-gestures.mp4)
- [base-01-dark-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/21e8def6f90f8ae5/base-01-dark-a.png)
- [base-01-dark-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4714b93afbf6ebd9/base-01-dark-b.png)
- [base-01-light-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/de06b151799b3da1/base-01-light-a.png)
- [base-01-light-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a91d772f716c74c2/base-01-light-b.png)
- [base-02-dark-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/583f640329e4543e/base-02-dark-a.png)
- [base-02-dark-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3eee9a47ae3df0d5/base-02-dark-b.png)
- [base-07-dark-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8f08af2a59d510fd/base-07-dark-a.png)
- [base-07-dark-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/08b2a0c714846c05/base-07-dark-b.png)
- [before-after-01-dark-diff0-x4.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0b3e02acb77808f6/before-after-01-dark-diff0-x4.png)
- [before-after-01-dark-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/afca1c37caa1309f/before-after-01-dark-diff16.png)
- [before-after-01-light-diff0-x4.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/78636dc92d826376/before-after-01-light-diff0-x4.png)
- [before-after-01-light-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/edaa1c31315b6232/before-after-01-light-diff16.png)
- [before-after-02-dark-diff0-x4.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/61bc1aeea25ed702/before-after-02-dark-diff0-x4.png)
- [before-after-02-dark-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9fb43674191f7de1/before-after-02-dark-diff16.png)
- [before-after-07-dark-diff0-x4.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5f0bfa3f5226b06/before-after-07-dark-diff0-x4.png)
- [before-after-07-dark-diff16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/864dab8dbc983227/before-after-07-dark-diff16.png)
- [capture.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/32fb5f3027cde5c4/capture.py)
- [compare.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f2afde984303138c/compare.py)
- [diff-stats.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0c7dce5a812931ae/diff-stats.json)
- [evidence-hashes.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2ea6a7c5f25dc387/evidence-hashes.json)
- [expanded-seed.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3e4f07997ed682be/expanded-seed.py)
- [report.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/464c6866cf252466/report.md)
- [review-recording.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bff70e0eebf08e68/review-recording.py)
