# Evidence — Unicode relative Markdown links

Issue [#16096](https://github.com/pingdotgg/t3code/issues/16096). Before [6e79211743](https://github.com/pingdotgg/t3code/commit/6e792117436662208bf2b6eb71ee8d0d88817e43); after [6ab7d74c21](https://github.com/pingdotgg/t3code/commit/6ab7d74c21397f3cc230c58d38161450f8b4be70). No PR created or modified.

11 matrix rows addressed: A–I in paired whole-app recordings, J in paired component DOM assertions, K in paired parser assertions. Four paired viewport/theme still sets, eight diff images, four recordings. PDF contents remain unverified; routing is verified. [Full proof matrix](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b91bbfede1afb2ae/proof-matrix-pass-1.md).

Environment: Linux x86_64; Chromium 154.0.0.0; isolated worktree `.t3`; web localhost:6262/server14302; CSS viewports 1440×1000 and 390×1000, DPR2. Screenshot service exports wide stills at1280×889 and narrow at780×2000; paired exports match dimensions. Videos retain2880×2000 and780×2000. Whole app run with `vp run dev --no-seed`, same synthetic projection fixture bytes for both revisions, no provider turn. Date frozen to2026-10-24T11:50:00Z before capture. Same Noto Sans CJK font fallback injected from ignored `.t3/evidence-cjk.otf`, including file-panel shadow roots; no product content masked. CSS animation/transition disabled and existing animations finished (this is a capture override, not emulation of the OS reduced-motion preference). Fonts loaded/ready and network activity settled before stills.

## Settled stills and pixel diffs

Each final still has an identical partner captured550ms later (all8 comparisons pixel equal). Pointer moved to blank space, menus/tooltips dismissed, file panel closed, same empty expanded composer and scroll. The stale sidebar tooltip identified by the lead is absent in final replacements. All8 final stills and8 diffs were opened and inspected. No spinner, ghosting, or unrelated overlay remains in stills.

Zero diff = absolute RGB difference amplified4× and clipped, threshold0. Threshold diff = magenta where maximum absolute RGB channel delta is greater than16/255; black otherwise. Neither is a perceptual similarity score.

| CSS viewport/theme | Before | After | Zero amplified | Threshold16 | Changed pixels >0 / >16 |
|---|---|---|---|---|---|
| 1440-light | [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4a8d2a61d705c866/before-1440-light.png) | [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bef21ebad5270d94/after-1440-light.png) | [Zero ×4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1388e5cc7cdc2673/diff-zero-1440-light.png) | [Threshold16](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e5c831b8201c4971/diff-threshold16-1440-light.png) | 61,394 / 55,187 |
| 1440-dark | [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2122f2221ccb5023/before-1440-dark.png) | [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2749b783650531cc/after-1440-dark.png) | [Zero ×4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/17637c1d9cf44b06/diff-zero-1440-dark.png) | [Threshold16](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/326712058ef3bdaf/diff-threshold16-1440-dark.png) | 60,830 / 55,326 |
| 390-light | [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/299247f35a2bd6fd/before-390-light.png) | [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/370521821b16b3c6/after-390-light.png) | [Zero ×4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a6c44c7ca0a012c4/diff-zero-390-light.png) | [Threshold16](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5e83a03cf6fcd707/diff-threshold16-390-light.png) | 225,876 / 213,443 |
| 390-dark | [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f9265635ea4efa1e/before-390-dark.png) | [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3a9b4db75d21ada9/after-390-dark.png) | [Zero ×4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9a740d189d7f460a/diff-zero-390-dark.png) | [Threshold16](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5cd07b54e1232ebb/diff-threshold16-390-dark.png) | 225,807 / 210,384 |

Before —1440/light:

![before-1440-light.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4a8d2a61d705c866/before-1440-light.png)

After —1440/light:

![after-1440-light.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bef21ebad5270d94/after-1440-light.png)

## What else changed

- A/B/C/E/G ordinary blue anchors become descriptive text plus file/folder chips; F matching-label anchor becomes only a chip. Inline F changes from code to a chip with L2:C1. The bare inline basename remains plain code.
- Newly recognized links participate in shared basename collision disambiguation. Directory suffixes therefore appear on A/B and E/F, and also on the pre-existing `./` PDF control D. This is a visible consequence of the classification fix. ASCII D and fixture.md retain their chip appearance.
- Chip widths, additional suffixes, and descriptive text change wrapping and downstream vertical positions, including unchanged controls and the timestamp/action row. At390px long chips ellipsize within the viewport, and G spans another line. No unrelated region outside the message timeline changes in the static diffs.
- Interaction surfaces intentionally differ: previously ordinary anchors do not open the local file panel or product context menu; newly recognized chips do. Find text changes from baseline1/2 to after1/3 for 試卷.txt. Opened panels, selected line, folder listing, clipboard scratch, and find highlights are action results, not comparable settled-state pixels.

## Row results

| Row | Before → after result | Evidence |
|---|---|---|
| A | Bare Unicode path ordinary anchor/no local surface → correct named PDF surface and return | R1 0s; R2 0s. PDF contents unverified. |
| B | Encoded ordinary anchor → same PDF destination as A | R1 before1.37s/after2.60s; contents unverified. |
| C | Bare Unicode basename ordinary anchor → root 線性代數.pdf surface | R1 before2.59s/after4.99s; contents unverified. |
| D | ./ and ASCII controls open PDF surfaces on both revisions | R1 before8.69/11.13s, after7.41/9.82s; suffix change above; contents unverified. |
| E | Ordinary anchor → actual Unicode relative file opened successfully marker | R1 before3.79s/after12.21s; R2 before1.34s/after2.27s. |
| F | Matching ordinary anchor and inline plain code → matching-label chip and inline chip; actual text and workspace-relative line2 highlight | R1 before5.03s/after14.80–19.9s; stable stills preserve bare-code control. |
| G | Ordinary anchors → folder listing and actual extensionless-file marker | R1 before6.28/7.48s, after19.99/22.60s. |
| H | No product file menu → Copy relative path pasted into unsent composer scratch, then cleared; filename find matches and dismiss | R1 before13.37/14.69s, after35.29/39.01s. R2 menu before2.93s/after4.85s. |
| I | Nested Markdown anchor and inline code remain non-file → anchor shows document-relative file, inline shows workspace-relative file | R1 before23.90s/after41.15–48s. |
| J | Undefined cwd preserves ordinary target=_blank anchor, no file chip, on both revisions | Paired DOM assertions below; detached component harness. |
| K | Unicode L/N/M, encoded path, folder/extensionless, positions accepted after; exclusions/no-cwd/bare inline gate and absolute paths preserved | Paired focused assertions below. No normalization behavior claimed. |

## Interaction recordings and timestamp narration

These are silent recordings with written step narration below. All four videos decoded successfully and were visually reviewed at1fps plus full-resolution action frames (including actual marker contents and line2). The recordings retain asynchronous transitions; static comparisons use separately settled frames. Responsive390px is web evidence, not native mobile.

### beforeR1 — [Open recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/99394d16685f4aa3/beforeR1.mp4)

- 0.00s — A ordinary anchor click → no local file surface
- 1.37s — B ordinary anchor click → no local file surface
- 2.59s — C ordinary anchor click → no local file surface
- 3.79s — E ordinary anchor click → no local file surface
- 5.03s — F matching ordinary anchor click → no local file surface
- 6.28s — G folder ordinary anchor click → no local file surface
- 7.48s — G extensionless ordinary anchor click → no local file surface
- 8.69s — D workaround file chip opens PDF surface → close/return
- 11.13s — D ASCII file chip opens PDF surface → close/return
- 13.37s — H E ordinary anchor context click: no product copy menu
- 14.69s — H thread find 試卷.txt in baseline
- 23.90s — I nested Markdown rendered anchor and inline code remain non-file

### beforeR2 — [Open recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4d6ffbcd99790b07/beforeR2.mp4)

- 0.00s — A ordinary anchor click → no local file surface
- 1.34s — E ordinary anchor click → no local file surface
- 2.93s — H no product file menu

### afterR1 — [Open recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a3ebbaab401b74e7/afterR1.mp4)

- 0.00s — A activate → inspect → close/return
- 2.60s — B activate → inspect → close/return
- 4.99s — C activate → inspect → close/return
- 7.41s — D workaround activate → inspect → close/return
- 9.81s — D ASCII activate → inspect → close/return
- 12.21s — E text activate → inspect → close/return
- 14.80s — F matching label activate → inspect → close/return
- 17.46s — F inline L2:C1 activate → inspect → close/return
- 19.99s — G folder activate → inspect → close/return
- 22.60s — G extensionless activate → inspect → close/return
- 35.29s — H context menu → copy relative path → unsent composer scratch
- 39.01s — H thread find 試卷.txt → 1/3 matches → dismiss
- 41.15s — I rendered Markdown → anchor document-relative → return → inline workspace-relative → return

### afterR2 — [Open recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/86142302422c7c52/afterR2.mp4)

- 0.00s — A long PDF chip activate → PDF surface → close/return
- 2.27s — E text chip activate → visible actual text → close/return
- 4.85s — H narrow chip context menu accessible → dismiss

## Unverified and FRICTION

- A–D PDF contents: the collaborative preview reports “This PDF is displayed in the connected client” and cannot load its PDF plugin. Named surface/routing is proven; PDF bytes/render validity and actual pages are not. E/F/G/I text contents are separately visible and do not substitute for PDF proof.
- Narrow text preview opens, but its file explorer leaves a very cramped text pane; retained in R2 rather than replaced with wide footage. Menu remains accessible. PDF preview surface has a white canvas in dark mode on both control paths.
- Native macOS/Electron, iOS/Android, external editor/reveal/modifier actions, save/share, remote/relay/tunnel and multi-environment transport remain unverified. They are outside this local web evidence matrix, not inferred from shared parsing.
- IndexedDB thread cache required clearing before reloading synthetic SQL projection data. Fixture writes occurred only with this isolated server stopped. This proves rendering/navigation, not event-sourced command ingestion.
- Vite served a cached module after an initial checkout switch. Both own dev-server runs were restarted by revision and served regex checked; stale captures were replaced. System CJK font installation alone still produced tofu; explicit identical font fallback fixed capture glyphs. No implementation edits were made.
- Lead identified an unmatched sidebar tooltip in an earlier after still. Both revisions were retaken with pointer away, all diff images/stats regenerated, and only corrected artifacts are linked here.
- Public uploads contain synthetic evidence and drivers only. No database, auth credential, startup pairing URL, .env, or private server log was uploaded. Drivers stay outside the repository; no scripts belong in a PR.

## Assertions and reproducibility traces

- [boundaries-before.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/31d454d891c46ace/boundaries-before.json)
- [boundaries-after.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9d880d8c4026d6fb/boundaries-after.json)
- [j-before.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5b3a18429f776e0d/j-before.json)
- [j-after.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/816875aaafbd2da2/j-after.json)
- [diff-stats.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/df5771ff4fc6e56c/diff-stats.json)
- [recordings.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cd1189d3c62d5aef/recordings.json)
- [extend-fixture.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fbc28d7dd0c57ebd/extend-fixture.mjs)
- [boundary-harness.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c8cd82e0cf022258/boundary-harness.mjs)
- [j-harness.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/583f423c7bf8906c/j-harness.js)
- [render-environment.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/724ddabf9cc8329d/render-environment.js)
- [make-diffs.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bcc9de1c4438339c/make-diffs.py)

Cleanup: own dev terminal session71692 stopped with Ctrl+C; ports6262/14302 confirmed no longer listening. Branch restored to `fix/issue-16096` at6ab7d74c21397f3cc230c58d38161450f8b4be70, tracked working tree clean. No push, commit, merge, issue or PR write. Completed within the30-minute evidence budget.
