## Evidence

Captured at [43ba10ceb3](https://git.cafe/pingdotgg/t3code/commit/43ba10ceb310dabbc201ea2ab5483cee626ce9c9), compared with [f12bb6229c](https://git.cafe/pingdotgg/t3code/commit/f12bb6229c007a12d24fd2e539222733778ac9ea). Real web and Android apps, each checkout’s own isolated backend, fresh databases (`T3CODE_DEV_SEED=0`), disposable Forgejo 11.0.16 and synthetic repositories/inert threads. No agent turns.

**Web viewport 1440x900 CSS (supersedes the matrix's 1280x800).**

Environment W: Linux headless Chromium 157 via T3 preview, no device emulation, DPR2, 2880x1800 PNG/video frames, light, 100% text. Environment A: Pixel9 Android16/API36 x86_64 portrait, 1080x2424 physical / 411.43x923.43 logical, scale2.625, fontScale0.94, light, agent-device0.21.32. [rendering-environment.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/169d7b012ddae493/rendering-environment.md).

R1 pins fixture updates to 12:23 and freezes display time at 2026-11-10T12:24:00Z; all stills and the fresh rebuild show “updated 1m ago”. Real timers run. Reduced motion uses JS preference emulation plus CSS animation/transition suppression because preview has no native media-setting control. Fonts and network settle before each pair; every within-side pair 500ms apart has AE0. Diff0 amplifies every changed pixel to red; DiffT uses ImageMagick fuzz5%, with no masks or alignment.

| R1 state | Before | After | Diff0 | DiffT (5%) |
|---|---|---|---|---|
| FF idle | ![R1-before-1.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/346b4634a35beff6/R1-before-1.png) | ![R1-after-1.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ddf317e4fdf15757/R1-after-1.png) | ![R1-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f2f1d0eafaf77c93/R1-diff0.png) | ![R1-diff5.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/98cfb236b4be2297/R1-diff5.png) |
| FF Actions open | ![R1-before-menu-1.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0440a5e0cfb95c79/R1-before-menu-1.png) | ![R1-after-menu-1.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d2a05bd3060a553f/R1-after-menu-1.png) | ![R1-menu-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fa033597fee3d9c3/R1-menu-diff0.png) | ![R1-menu-diff5.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/efeccfadffb53a5f/R1-menu-diff5.png) |

R1: before has no merge action; after offers Fast-forward merge. The FF-only host enables only that method. Web suppresses its method radio group when only one method exists, so the open Actions menu has no method rows on either side. Idle before/after: 16,613 changed pixels at 0%, 13,925 at 5%; menu: 16,533 /13,921. [pixel-results.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cc7661c1b256f2e1/pixel-results.txt).

Fresh after rebuild from the same seed/driver: **38 changed pixels at 0%, 4 at 5%**, confined to raster edges of the top-right controls; no text/content/layout delta. The open-menu rebuild is **AE0 at both thresholds**. [Rebuilt idle](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6331e98f193f0d95/R1-rebuilt-1.png), [rebuilt menu](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/eb39f67d12c0b87b/R1-rebuilt-menu-1.png), [rebuild Diff0](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e15627c6dae5e860/R1-rebuilt-diff0.png), [rebuild DiffT](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6dd9b7300ad828ea/R1-rebuilt-diff5.png), [pixel results](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7cc3b62e88ec6b94/rebuild-results-final.txt). Second frames and menu rebuild diffs are in [the verbatim upload manifest](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/21a27c0d21a59852/uploads.md).

- **R2 — FF native, unchanged:** [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/22d287f58a2834c6/R2-before.mp4) / [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bf92c2cd2151c3b9/R2-after-final.mp4) — before unavailable; after sole checked FF menu, raw `fast-forward` confirmation, Cancel returns to open PR in final encoded frame (~15.46s).
- **R3 — MIX web, retained:** [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/157856b85f1fa9f7/R3-before.mp4) / [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3e97b649206f0297/R3-after-retake.mp4) — before Rebase only; after choose FF, reopen checked FF, full reload (~3s), restored primary/menu (~5–19s).
- **R4 — MIX native, unchanged:** [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2b33c1ec1eb56f00/R4-before-clock.mp4) / [selection](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f6a3bab9d6cbfc33/R4-after.mp4) / [restart 1](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5708988ffbfc3efe/R4-after-final.mp4) / [restart 2](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c83583c7a7ca5e9d/R4-after-final.part-002.mp4) / [restored menu](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ba36fd553a544251/R4-restored.mp4) — choose FF, preserve app data, actual process relaunch (~25s in chunk 1), recover/reopen (~80s in chunk 2), FF remains; [fresh JS realm proof](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/19239398848d406f/native-restart-realm.json).
- **R5 — FF web, recaptured:** [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8001fa7f8636bb8e/R5-before-accepted.mp4) / [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/652c3e047b62492b/R5-after-proof.mp4) — no before merge control; after arm 1.285s, Escape 1.312s, rearm 2.272s, expiry 5.217s, rearm 6.379s, disabled Merging 7.224s, brief idle 8.557s, Merged 9.962s through 10.880s. Times mark the first encoded frame showing each state. Repository focus is synchronously blurred by the capture driver to dismiss its tooltip; pointer moves to blank content. Every encoded frame is unobstructed. [PTS](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cdc03d0a3930fd89/R5-proof-pts.json); [transition frames](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d9072be885902213/R5-proof-transitions.jpg).
- **R6 — divergent-base refusal, retained:** [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3997aef57d0cc04b/R6-before.mp4) / [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0830a9aba2b35f99/R6-after-retake.mp4) — before unavailable; after arm/confirm, HTTP500 error toast (~2–6s), Actions→Refresh (~16s), enabled FF/open PR at end; host mergeable=true, independent base change prevents FF. [Host before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ae66809980e47a46/R6-host-before.json) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4137e77a03d527f4/R6-host-after.json) / [transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d3ace934a9e12934/forgejo-merge-transcript.log).
- **R7 — compact thread/chat, retained:** [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/514d353d06713c8e/R7-before.mp4) / [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9b4d749f5bbba561/R7-after-retake.mp4) — before no Merge; after raw-method tooltip (~0–2s), confirmation/Cancel (~2–4s), final encoded frame shows the fully loaded chat-panel FF primary.

R5 host [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dafb24e526b63e20/R5-proof-host-before.json) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a59d94b8bc8ac2f5/R5-proof-host-after.json): open→closed/merged and final main/merge_commit_sha equal the captured pre-action head `994300c954c15615cd4d69ba4b43406b2ab4caa2`. Before/after clips use equivalent independent synthetic success PRs, with branch suffixes 2/3. No product data is used.

**What else changed**

- R1’s blue primary occupies empty header space; zero-threshold diffs also pick up small raster-edge differences around the avatar, arrow, stat and Checkout. No body displacement. MIX adds a second choice; native keeps its split control/dialog. Compact FF uses the expanded title/action row.
- R5 intentionally becomes merged; R6 remains open and shows its real error. R5 briefly returns to idle while host details refresh; its tab icon also changes during refresh. R7’s local checkout branch differs after a separate success fixture.
- Native FF’s behind-main annotation reflects another synthetic success advancing main; older before footage can show a stale up-to-date annotation. Relative times, Android status-bar time/signal, pointer/focus and maximization after reload vary in retained recordings. R2 and restart clips have real advancing clocks; R4’s initial selection/before clips are clock-aligned. These recording limitations remain disclosed.
- Every encoded frame of retained R3/R6/R7 was re-inspected: no equivalent stale repository overlay; their advancing clocks do not affect the held R1 comparison. Every new proof frame was inspected before upload. Android R2/R4 links and media are unchanged.

**Reproduction:** [reproduction.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d842a102b53dfc11/reproduction.md); [capture-r1.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f32a2b407cb99284/capture-r1.js); [capture-web.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/12129d3f1f25092d/capture-web.js); [web-prepare.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/85646cfe05fecf59/web-prepare.js); [seed-forgejo.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4bb9e6da09f1d069/seed-forgejo.py); [seed-app.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/27585559b4d42123/seed-app.py); [seed-thread.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/742f6fbaa2a2937d/seed-thread.js); [start-forgejo.sh](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cee7c55e927fa9e2/start-forgejo.sh); [start-app.sh](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c77e1b7c28549154/start-app.sh); [inspect-host.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7da0c5152fb39548/inspect-host.py); [add-success-fixture.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/db345cc16661d0b9/add-success-fixture.py). Native drivers: [capture-native.sh](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e508e26bd5b222d5/capture-native.sh), [native-final.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1b8b49a545c35f9f/native-final.py), [native-restart.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7f052789efb3c8ce/native-restart.py). All new links: [uploads.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/21a27c0d21a59852/uploads.md).

Coverage: all seven rows retained or recaptured. iOS, desktop shell, dark/narrow variants and native completion/error are outside this matrix. No commit or push was made.

AI-assisted; verified with the tests and tools listed above.
