**R5 — popup · 1440×1000 CSS px · DPR 1 · light**

Evidence for [#32921](https://git.cafe/pingdotgg/t3code/pull/32921), comparing [bcee0f5d28](https://git.cafe/pingdotgg/t3code/commit/bcee0f5d2872ba193c66ed9ba979bbe424f89ff9) with [ffc3adaf31](https://git.cafe/pingdotgg/t3code/commit/ffc3adaf3169a63209131dff0f971718efc88611). Both frozen checkouts ran their own server on fresh databases with `T3CODE_DEV_SEED=0`. Synthetic data only; no real provider turn or live database access.

**Observed baseline limitation:** the ordinary link click leaves merge-base’s popup recorded as `Idle`; the web client covers its failed document with the empty-tab view. AFTER automatically loads `child.html` at `http://repro-box.tailnet-repro.ts.net:6135/api/assets/<token>/child.html`. The first table preserves that unmodified popup result. A second table shows the requested DNS-error/loaded-child pair after explicitly confirming the public child URL in the popup address bar **on both sides**. The second table alone does not prove automatic popup recovery.

**Same scripted interaction and recording timestamps**

BEFORE: 00:00.00 Parent popup.html ready; ordinary target=_blank link resolves to public hostname; 00:01.00 Click Open child in integrated browser; 00:01.11 Popup tab created; 00:01.38 Show popup tab; 00:02.88 Initial popup state captured; 00:02.90 Confirm public child URL in popup address bar and press Enter; 00:03.69 Pixel-identical popup end-state still captured; 00:04.70 End recording.

AFTER: 00:00.00 Parent popup.html ready; ordinary target=_blank link resolves to public hostname; 00:01.00 Click Open child in integrated browser; 00:01.29 Popup tab created; 00:01.73 Show popup tab; 00:03.81 Initial popup state captured; 00:03.84 Confirm public child URL in popup address bar and press Enter; 00:05.24 Pixel-identical popup end-state still captured; 00:06.25 End recording.

[R5-before.webm](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/44ec10291cf94844/R5-before.webm)

[R5-after.webm](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/35439a3c976a98cc/R5-after.webm)

Initial popup result — click the ordinary `<a href="child.html" target="_blank">Open child</a>`, then show its new integrated tab:

| Before | After | Diff0 · 0%, amplified | DiffT · 5% |
|---|---|---|---|
| ![Before: popup end state](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/acdd4ba243a22813/R5-initial-before.png)<br>[bcee0f5d28](https://git.cafe/pingdotgg/t3code/commit/bcee0f5d2872ba193c66ed9ba979bbe424f89ff9) | ![After: workspace child at public hostname](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3a981810ee5dad37/R5-initial-after.png)<br>[ffc3adaf31](https://git.cafe/pingdotgg/t3code/commit/ffc3adaf3169a63209131dff0f971718efc88611) | ![Popup still difference: every unequal pixel amplified red](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a2461f39340f4121/R5-initial-Diff0.png)<br>[bcee0f5d28](https://git.cafe/pingdotgg/t3code/commit/bcee0f5d2872ba193c66ed9ba979bbe424f89ff9) → [ffc3adaf31](https://git.cafe/pingdotgg/t3code/commit/ffc3adaf3169a63209131dff0f971718efc88611) | ![Popup still difference at 5 percent tolerance](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e6da6647043a3b35/R5-initial-DiffT.png)<br>[bcee0f5d28](https://git.cafe/pingdotgg/t3code/commit/bcee0f5d2872ba193c66ed9ba979bbe424f89ff9) → [ffc3adaf31](https://git.cafe/pingdotgg/t3code/commit/ffc3adaf3169a63209131dff0f971718efc88611) |

Popup end state after the identical explicit public-URL confirmation step:

| Before | After | Diff0 · 0%, amplified | DiffT · 5% |
|---|---|---|---|
| ![Before: popup end state](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ac306311c8b9c494/R5-before.png)<br>[bcee0f5d28](https://git.cafe/pingdotgg/t3code/commit/bcee0f5d2872ba193c66ed9ba979bbe424f89ff9) | ![After: workspace child at public hostname](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fbcd1f3f30ac3fc5/R5-after.png)<br>[ffc3adaf31](https://git.cafe/pingdotgg/t3code/commit/ffc3adaf3169a63209131dff0f971718efc88611) | ![Popup still difference: every unequal pixel amplified red](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dced36b4aff3dda7/R5-Diff0.png)<br>[bcee0f5d28](https://git.cafe/pingdotgg/t3code/commit/bcee0f5d2872ba193c66ed9ba979bbe424f89ff9) → [ffc3adaf31](https://git.cafe/pingdotgg/t3code/commit/ffc3adaf3169a63209131dff0f971718efc88611) | ![Popup still difference at 5 percent tolerance](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/caaf2f7b1af296da/R5-DiffT.png)<br>[bcee0f5d28](https://git.cafe/pingdotgg/t3code/commit/bcee0f5d2872ba193c66ed9ba979bbe424f89ff9) → [ffc3adaf31](https://git.cafe/pingdotgg/t3code/commit/ffc3adaf3169a63209131dff0f971718efc88611) |

**Preparation and conditions**

The web client uses the client-only public hostname. On both sides, the integrated parent `popup.html` is loaded through localhost with a public-host `<base>` for its relative link; merge-base cannot load the parent through the public hostname. The parent is visibly distinct from the green child. No navigation or response is mocked. Only client Chromium resolves `repro-box.tailnet-repro.ts.net`; server DNS returns `ENOTFOUND`. Exact public client origins are allowed through `T3CODE_DEV_ALLOWED_ORIGINS`. Ports are BEFORE web/server 6134/14174 and AFTER 6135/14175; IPv4-to-IPv6 relays preserve the URLs.

Chromium under Linux/Xvfb; desktop mouse, no device emulation; 1440×1000 CSS px, DPR 1, light theme, 100% zoom and font scaling. Parent integrated viewport 960×640; popup uses the normal fill viewport, approximately 1440×875. Every still waits for network idle and fonts, then requires two pixel-identical screenshots 500 ms apart. Every published still and diff, plus recording contact sheets, was opened and visually inspected. Diff0 amplifies every unequal pixel red on white at 0%; DiffT uses the same ImageMagick command at 5%. [diff-metrics.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/796b7056217bd845/diff-metrics.json) · [capture-provenance.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3c0d1fca53068459/capture-provenance.json) · [R5-transcript.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ca7f203ea1593529/R5-transcript.txt) · [rendering-notes.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/93af03546b94eed7/rendering-notes.txt).

**What else changed — R5**

- The initial BEFORE popup has an empty address bar, generic Browser title, recent-page and local-server choices, and an Idle session. AFTER has the child title, public address, green page background, bordered white article, and all synthetic child text.
- In the explicit-URL pair, BEFORE shows the DNS failure heading, icon, description, `ERR_NAME_NOT_RESOLVED`, Details and Reload controls; AFTER shows the child document instead.
- Both sides retain the parent tab and a second popup tab. The second tab’s title and width differ with the error/loaded document; the adjacent + button moves accordingly. Browser history and navigation control availability reflect each real state.
- The popup uses the normal fill viewport, so the parent’s 960×640 device toolbar is absent on both popup end states. Control-strip placement and page bounds follow the actual client layout.
- Isolated ports and signed token values differ. Tokens are redacted as `<token>` in transcripts. Recordings have normal navigation-timing differences, recorded above.
- No additional unintended difference was found in accepted stills.

**Reproduction scripts and synthetic fixture**

[run-capture.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f63fb2a542b26ad5/run-capture.mjs) · [seed.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/266736bd6d35bd49/seed.py) · [client-loopback-relay.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3fd98436ec7cc7f1/client-loopback-relay.mjs) · [make-diffs.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c73d140630e55fe9/make-diffs.mjs) · [capture-scripts.tar.gz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ddf55baa81175896/capture-scripts.tar.gz) · [synthetic-workspace.tar.gz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/eaaa9d8c9c1bdab2/synthetic-workspace.tar.gz).

Literal missing item: a Chromium error page immediately after the original popup click, with no follow-up navigation, was not reproduced on merge-base; its real integrated-client result is the initial Idle/empty-tab capture above. HTTPS is unverified. Both owned dev servers, client Chromium, Xvfb and relays were stopped and both temporary worktrees removed after capture.
