# Corrected full-viewport evidence

For [#13413](https://git.cafe/pingdotgg/t3code/pulls/13413) ([GitHub mirror](https://github.com/pingdotgg/t3code/pull/13413)). Evidence only: no repo changes, commits, pushes, forge writes, watches, or delegation.

## Correction

The [prior evidence index](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7ddb6851e20f40ce/evidence-index.md) published only a 650×220 sidebar crop. **That violated the original explicit whole-surface instruction.** It is supplementary only. These native **1440×1000 full app viewport** sources replace it as primary proof. Main pane visibly renders the normal “What should we build in server?” empty state and composer. Dark theme alone meets the narrowed one-still requirement.

Replacement takeover/pr-13413 at [95c8f6b](https://github.com/pingdotgg/t3code/commit/95c8f6b2250479002501e44ac03560d1ba747a90), full SHA 95c8f6b2250479002501e44ac03560d1ba747a90.
Base [7fd2e09](https://github.com/pingdotgg/t3code/commit/7fd2e09e381a61f427da09dd7a8f2c9c1558fe59), full SHA 7fd2e09e381a61f427da09dd7a8f2c9c1558fe59.
Original ValeraZSD/fix/shared-truncate-surrogate [ca8b37b](https://github.com/ValeraZSD/t3code/commit/ca8b37b67b6c03c7f4e62060ae58a637222e5831).

Only /home/ubuntu/wt/pr-13413 used for code execution, clean before and after. Base diff remains String.ts and String.test.ts, 31 insertions/1 deletion.
[Fixture matrix](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b6fad5004504bd62/matrix.md).

## Scope and exact fixture

Visual row T1/R1: real web sidebar. Both states use the **same replacement app runtime**, seeded with actual deriveThreadTitleSeed outputs generated with base versus replacement helper. **Not a base app build**, send/provider/persistence proof, or desktop/mobile/remote/relay/tunnel test. Other caller UIs were not captured.

Input: 49 ASCII a + 😀 more, limit 50 UTF-16 units, suffix three literal dots. Before DOM: 49×U+0061, **U+D83D**, 3×U+002E. After: 49×U+0061, 3×U+002E. Capture asserts exact code units. Seeder uses JSON.stringify to preserve escaped U+D83D in authoritative payload_json. The separate UTF-8 title column normalizes lone surrogate to U+FFFD; actual DOM confirms JSON payload retained D83D. Do not use SQLite json_set/json_extract on this fixture: it emits invalid surrogate UTF-8. Public exact SQL and seed driver are included.

## Environment

2026-10-24 UTC; Linux 6.1.102 x86_64; Node v26.12.1; Playwright 1.60.0; headed Chromium 148.0.7778.96 on Xvfb :136, screen1600×1100×24; CDP19343, own fresh profile. App viewport **1440×1000**, DPR1, dark theme, reduced motion. Native OS/browser chrome is outside the app viewport.

Identical browser fixed time 2026-10-24T23:40:00.000Z gives 9m age in both states. Identical capture CSS disables transitions, animations and caret; document.fonts.ready and network idle awaited. Title font 14px/20px product system stack (Linux system-ui/Noto Sans); title span x18 y134 width614 without scroll overflow. Sidebar boundary x650. Source PNGs are unscaled whole-viewport screenshots. Composite only adds labels and stacks native sources vertically.

New home /tmp/ev-13413-full/home copied from prior **isolated synthetic** /tmp/ev-13413/userdata, never live data. No ~/.t3/userdata read/copy/write. New scratch solely /tmp/ev-13413-full; prior artifacts untouched. Auditor display/CDP/profile/home untouched. Own dev runner shifted to server15246/web7206 around occupied auditor15245/7205. No VITE_HTTP_URL/VITE_WS_URL.

## Pixel result and what else changed

Both states have two frames **500ms apart, pixel-identical**. All four frames, composite, Diff0 and DiffT were visually inspected. Chosen source is each exact frame2 copy.

**123 raw changed pixels**, all in (403,138)–(427,151), the 24×13 glyph/dots region. Threshold >16: **103 pixels**. Every other pixel of the whole app viewport is identical, including main pane. Diff0: absolute RGB difference ×8, no threshold. DiffT: maximum-channel difference >16 marked magenta. Metadata, dimensions, hashes, counts and bounds are public.

Between final states only the synthetic projection title fields select base versus replacement output. Same app source/runtime, thread, timestamps, home, draft/main empty state, viewport, theme, fonts, fixed clock and capture CSS. No messages or provider turns sent. Fresh profile selected the normal draft, so the title is an unselected sidebar row. This differs from the prior crop's selected font weight and explains this round's 123 changed pixels versus prior 125. Within this round styling is identical.

![Before (top) and after (bottom), full 1440×1000 app viewport with rendered main pane](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b4eeb38935c1e092/before-after.png)

Sources: [before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a785b70ad8d7ef4f/before.png) · [after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a3c530d72bf58b0c/after.png)

Diffs: [Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ef091353fb61b622/Diff0.png) · [DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c30ffba98ae53c51/DiffT.png) · [pixel-checks.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a117742044268ce4/pixel-checks.json)

## Verification, friction and cleanup

- Fresh generator rebuild: 13 helper/plan checks, 5 actual caller checks, 51 cut checks passed. Focused vp test run packages/shared/src/String.test.ts: 1 file, 3 tests passed. No full suite, lint/typecheck or native client claims.
- Startup navigation beat server readiness and produced splash/stale shell; one capture was invalidated by concurrent recovery navigation, another timed out waiting for Threads. Reload after listening resolved it. Only final stable frames are published.
- Nonfatal Xvfb keymap and Chromium D-Bus/GPU/Vulkan warnings did not prevent rendering. No preview recorder used.
- All owned dev, Chromium and Xvfb terminal sessions stopped with Ctrl+C. Verified owned15246/7206/19343 absent. No pattern-based PID kill; auditor processes untouched. Worktree clean. Private logs, browser profile/auth and full DB are excluded.
- Reproduction instructions include exact setup, seeding, capture, comparison and cleanup. Public drivers/SQL are below. Existing isolated synthetic state reused, never live state.

## Public artifact inventory

- [Diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ef091353fb61b622/Diff0.png)
- [DiffT.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c30ffba98ae53c51/DiffT.png)
- [after-frame1.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ffe7470c8fe01f16/after-frame1.png)
- [after-frame2.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/78931d5044692ebf/after-frame2.png)
- [after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a3c530d72bf58b0c/after.png)
- [before-after.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b4eeb38935c1e092/before-after.png)
- [before-frame1.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a6ae956e1e971b5e/before-frame1.png)
- [before-frame2.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/359f23bc93c523bf/before-frame2.png)
- [before.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a785b70ad8d7ef4f/before.png)
- [browser.cjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8e685c273361bba5/browser.cjs)
- [capture.cjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/03683ff438cde5bd/capture.cjs)
- [rebuild.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/38a1599e717b9168/rebuild.mjs)
- [seed.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/24b8c04945128135/seed.mjs)
- [compose.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1ae59f2eea394f5d/compose.py)
- [after-exact.sql](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/174ff0bd3aaae9de/after-exact.sql)
- [before-exact.sql](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c27b2e36f638eb68/before-exact.sql)
- [after-metadata.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dc79d52e7a2f1536/after-metadata.json)
- [before-metadata.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cd143f79ec84401a/before-metadata.json)
- [pixel-checks.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a117742044268ce4/pixel-checks.json)
- [fixtures.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/41c8f66b9525f0e7/fixtures.json)
- [reproduce.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7fc1c012972972f9/reproduce.md)
- [rebuild.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c514be1c117709ea/rebuild.log)
- [tests.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3050bd9462de5460/tests.log)

Uploaded using the ghdrop skill. Model/harness: GPT-6.1-Sol via Codex in T3 Code.
