# Fresh v2 typography evidence for [#25396](https://git.cafe/pingdotgg/t3code/issues/25396)

**C1–C5: 5/5 complete. P1: 1/1 complete with clean workspace preview.** All seven requested fresh states were recaptured: C1–C5 after and P1 before/after. Two full frames at least 550ms apart per state. The five unchanged-base before states are retained with their original stability frames. All 24 source PNGs and 12 regenerated full-viewport diffs were inspected individually with view_image. Every primary frame is pixel-identical to its stability frame.

Exact head: [5f0a0cf558](https://git.cafe/pingdotgg/t3code/commit/5f0a0cf55824f0ecff00a65216422a7d3a937cd2) (`5f0a0cf55824f0ecff00a65216422a7d3a937cd2`). Exact base: [0604547a3a](https://git.cafe/pingdotgg/t3code/commit/0604547a3ae7bca2e5cad1c17b40be5de17dd2cc) (`0604547a3ae7bca2e5cad1c17b40be5de17dd2cc`). Branch `fix/issue-25396`; head tree `eea77b79094e0acbe6e935bca5687d49775ae372`. Only source diff: `.chat-markdown strong` weight 600 → 700. The commit metadata corrects the closing reference to [#25395](https://github.com/pingdotgg/t3code/issues/25395), corresponding to GitCafe [#25396](https://git.cafe/pingdotgg/t3code/issues/25396).

Fresh v2 after captures are **not** relabeled old-head images. The old after head was [da6e1e6b07](https://git.cafe/pingdotgg/t3code/commit/da6e1e6b070422435a4542b47d36562413db8245), with the same tree. Each C1–C5 fresh after is pixel-identical to its old accepted after. Matching settings, data, geometry, fonts, and pixels support retaining the original base before PNGs byte-for-byte. P1 before and after are both fresh and replace the rejected attachment-modal images entirely. See provenance.json.

| Row / settings | Before `0604547a3ae7bca2e5cad1c17b40be5de17dd2cc` | Fresh after `5f0a0cf55824f0ecff00a65216422a7d3a937cd2` | Diff0 base → head | DiffT base → head |
|---|---|---|---|---|
| C1 · 1440×900 · light · new on · Inter | [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7c3d6f5bcec20bc0/C1-before.png) | [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9c2c2f869a819832/C1-after.png) | [Diff0](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/033183b2cfd67ca3/C1-diff0.png) | [DiffT](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0045877034f18537/C1-diffT.png) |
| C2 · 390×844 · dark · new on · Inter | [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6c514b7a0c00a1d4/C2-before.png) | [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d1dedb44c12d362d/C2-after.png) | [Diff0](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9abf23994d79573f/C2-diff0.png) | [DiffT](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b44f1fe0d4316eb8/C2-diffT.png) |
| C3 · 1440×900 · dark · new off · Inter | [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/930d64997a58c1cf/C3-before.png) | [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ae84efb5d06a1c6b/C3-after.png) | [Diff0](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e5ccf6cd3ef6877d/C3-diff0.png) | [DiffT](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/30951afc4758b5e4/C3-diffT.png) |
| C4 · 390×844 · light · new off · Inter | [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/417ce051beb39906/C4-before.png) | [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4229d7b011a72144/C4-after.png) | [Diff0](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a8d6d63d1f9ad216/C4-diff0.png) | [DiffT](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9077cafc2f413b8c/C4-diffT.png) |
| C5 · 1440×900 · light · new on · Roboto Flex | [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ed7f43c006be4d5e/C5-before.png) | [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4bf2f519d1ee9679/C5-after.png) | [Diff0](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d946daf9d1fc3391/C5-diff0.png) | [DiffT](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3a9a12b412f7ec17/C5-diffT.png) |
| P1 · 1440×900 · light · new off · workspace Markdown preview | [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f8225131b1c1acd2/P1-before.png) | [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a9c4153c8576f7e7/P1-after.png) | [Diff0](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/29c8f8c693a629a9/P1-diff0.png) | [DiffT](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/592cae6b6c2be5f8/P1-diffT.png) |

Diff0 includes max RGB channel delta >0; DiffT >16/255. Images show absolute RGB deltas amplified ×4, saturated at 255 on black. Counts use unamplified deltas. No crop, content masks, registration, alignment, or post-capture resizing.

| Row | PNG size | Pixels changed >0 | Pixels changed >16 | Stability before / after | Fresh after vs old after |
|---|---:|---:|---:|---|---|
| C1 | 1280×800 | 1671 | 1062 | 0 / 0 | 0 differing pixels |
| C2 | 780×1688 | 5632 | 5025 | 0 / 0 | 0 differing pixels |
| C3 | 1280×800 | 1648 | 1096 | 0 / 0 | 0 differing pixels |
| C4 | 780×1688 | 5618 | 4920 | 0 / 0 | 0 differing pixels |
| C5 | 1280×800 | 1605 | 1044 | 0 / 0 | 0 differing pixels |
| P1 | 1280×800 | 2766 | 2192 | 0 / 0 | New surface; both phases fresh |

## Every visible difference

- C1–C5: strong glyphs in both roles become heavier. The bold sample widens by 1.5 CSS px (Inter 58.5→60; Roboto Flex 56→57.5). The right-aligned user bubble grows 1.5px to the left, shifting its regular prefix left without changing the regular weight. The assistant prefix stays fixed. No sample wraps or clips. Header, composer, colors, and pixels outside the message/bubble region match.
- P1: paragraph, list, italic, quote, table, and link strong glyphs become heavier and generally wider. The table's second column, including its unchanged-weight `Strong` header, shifts left 5.078125 CSS px (bold cell x=785.1875→780.109375) due to automatic column sizing. Plain text, heading, inline-code literal, panel chrome, and remaining pixels match. No clipping, wrapping, modal backdrop, ghosting, or duplicated header/composer appears in either accepted frame.

## Environment and boundaries

Linux x86_64, Chrome 156.0.0.0; DPR 2, visualViewport scale 1, root 16px, message 14px, antialiased smoothing. Desktop viewport 1440×900 CSS is downsampled by the preview service to 1280×800 PNG; narrow 390×844 CSS is 780×1688 PNG. Full actual app surfaces are preserved.

Default resolved family is Inter Variable (100–900); alternative is Roboto Flex (100–1000 tab FontFace, selected through real Appearance settings). C5's font, rectangles, and pixels match the original resolved-font proof. The original font-resolution metrics are retained as supporting provenance; v2 independently rechecked Inter canvas metrics. All sampled strong text is 600 before / 700 after; normal parent text remains 400. Fonts are loaded and sampled active animations are zero. No font-weight override or sample DOM/harness was used. CSS came from the real worktree's Vite stylesheet; its final restored rule was independently read at 700.

Panel animations are 0ms and CSS suppresses motion/transitions/caret. OS reduced-motion remains false because preview offers no reduced-motion API. No clock override was used. Main sidebar is closed so no relative times drift. The composer was empty in these independent capture sessions; no lead draft was cleared or sent.

Shared web CSS is covered on Linux in desktop-width and narrow web. Hosted/local web and Electron share this stylesheet, but native Windows fonts/rasterization and Electron shell/IPC are **unverified**. Native React Native mobile does not consume this CSS and is unaffected; narrow web is not native mobile verification. Other source-equivalent Markdown callers remain source-covered as described in the original matrix, without extra activity. No streaming/interaction claim, recording, tests, product changes, commit, push, PR, or forge write.

## Reproduction and all deliverables

- [reproduce.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b20c9f5971fda83a/reproduce.md)
- [capture-driver.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ad9f5cb55c29d792/capture-driver.js)
- [seed-fixture.sh](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5cb966a872e155c6/seed-fixture.sh)
- [typography-fixture.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/430e359d8bd4e680/typography-fixture.md)
- [diff.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c377961092c69d3e/diff.py)
- [build-index.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a6996727826d07bc/build-index.py)
- [environment.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ebde037e5a6594ed/environment.json)
- [font-resolution.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7b01319e7814db3f/font-resolution.json)
- [revisions.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/22a9a50d0883be6a/revisions.json)
- [provenance.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/943df7bc65b258db/provenance.json)
- [pixel-report.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1f01de5765069ede/pixel-report.json)
- [browser-artifact-paths.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/439b0e3cc23432aa/browser-artifact-paths.txt)
- [discarded-artifacts.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8625dc1a690f3dd3/discarded-artifacts.txt)
- [RobotoFlex.ttf](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3952c1f4494ae8b4/RobotoFlex.ttf)
- [RobotoFlex-ascii.ttf](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/41bee6e4ef179f95/RobotoFlex-ascii.ttf)
- [RobotoFlex-OFL.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5af63efd003b23d/RobotoFlex-OFL.txt)
- [verify-public.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dd5aaa37a1a66f1d/verify-public.py)
- [public-verification.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6107bd85af0bdf75/public-verification.json)
- [SHA256SUMS](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/de0c5da4091f743d/SHA256SUMS)

| Row | Before metadata | Fresh after metadata | Before stability | After stability |
|---|---|---|---|---|
| C1 | [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8445b126060752a5/C1-before.json) | [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0d0141abd2c5df5c/C1-after.json) | [Before +550ms](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ed3c922dd47b50a9/C1-before-settled.png) | [After +550ms](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/773e281b1a441fb7/C1-after-settled.png) |
| C2 | [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7974463cbca1a538/C2-before.json) | [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a9edc8e52484db81/C2-after.json) | [Before +550ms](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9326cd9410545f34/C2-before-settled.png) | [After +550ms](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5686fd6756537fca/C2-after-settled.png) |
| C3 | [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f89d9bf185d43312/C3-before.json) | [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5114ef318cbdfefd/C3-after.json) | [Before +550ms](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1ca84b7d072afa66/C3-before-settled.png) | [After +550ms](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9f1947ea10e4fb41/C3-after-settled.png) |
| C4 | [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7aee8f453a46efa4/C4-before.json) | [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/36c44d3544db6771/C4-after.json) | [Before +550ms](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3abd1d5dcca9c5c6/C4-before-settled.png) | [After +550ms](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f2a77ee4c667e658/C4-after-settled.png) |
| C5 | [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/08cc0a9848347c12/C5-before.json) | [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/26402c326516c5fc/C5-after.json) | [Before +550ms](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/df59bf1d2520bf3e/C5-before-settled.png) | [After +550ms](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9402b8421259d425/C5-after-settled.png) |
| P1 | [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b928d15e195d6fc6/P1-before.json) | [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ae5c20525c9ae750/P1-after.json) | [Before +550ms](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2c0fad3f5fbdc5b4/P1-before-settled.png) | [After +550ms](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/45bd2751c09edf35/P1-after-settled.png) |

## FRICTION and final state

- Fresh default-profile tabs did not share auth or settings. Each was paired through the running app's CLI and real pairing form; credentials are excluded from this package. CSS selectors were used after JavaScript-like role locator strings failed to move the UI. Settings navigation could return to a draft, so the existing seed thread was reopened and verified before capture. An initial C3 frame with the sidebar visible was discarded and recaptured.
- The attachment modal reproduced the rejected duplicated blurred header/composer in a fresh capture tab. Its attempt was discarded, never justified as acceptable evidence. P1 instead uses the actual maximized workspace Markdown preview, with the exact same 321-byte fixture in an external disposable project. Both phases are newly captured cleanly. This does not claim the attachment-modal capture problem was repaired.
- C5 loads the identical font in the tab and selects it through Appearance. Full navigation clears FontFaces, so it was loaded again before capture. This proves an alternate resolved family, not native OS font discovery. No OS font install occurred in v2.
- Python's earlier public HTTP 403 was tool-specific. V2 publication is checked using curl and byte comparison; see public-verification.json. No browser or server was started for publication.

Final worktree is clean on `fix/issue-25396` at the exact head above. Lead-owned web 6241 / server 14281 stayed running throughout; no process was started, stopped, or replaced. Both owned preview tabs are closed. Default font/light/New design off were restored in both tabs. Draft attachment was removed without sending; external disposable project was removed through Settings and its fixture directory deleted. Old evidence remains unchanged for provenance.

Local index: `/home/ubuntu/proof-audits/issue-25396-evidence-v2/index.md`. Source artifacts are listed by exact path/hash for targeted cleanup; do not bulk-clean shared browser-artifacts. Discarded attempts remain identified separately and are not uploaded. Evidence-only scripts and fixture live outside the checkout. This follow-up used about 20 minutes of the remaining 100-minute budget.

## Clean P1 before / after

**Before — exact base, weight 600**

![P1 before: clean full workspace Markdown preview at base, weight 600](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f8225131b1c1acd2/P1-before.png)

**After — exact new head, weight 700**

![P1 after: clean full workspace Markdown preview at new head, weight 700](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a9c4153c8576f7e7/P1-after.png)
