# Terminal link delimiter performance capture

Real web client, real server and terminal PTY, synthetic project/thread created through T3's CLI with its replay provider. Linux x86_64; headless Chromium 156.0.8078.4; light theme; 1920×1280 viewport; terminal drawer 1050 px high. No CPU throttling. Both commits ran sequentially on the same machine with fresh databases and identical files.

Base: [fc480ea66a](https://github.com/pingdotgg/t3code/commit/fc480ea66a7c189bb83556c327eca0a161fca7b4).
Head: [a2739b87ad](https://github.com/pingdotgg/t3code/commit/a2739b87ad22555fd2c1ba7f30d92569f6f1836c).

The uploaded driver uses the scenario framework as a browser/fixture driver. The automatic two-commit proof was abandoned after setup/instrumentation failures; the final measurements are separate invocations against explicit base/head checkouts. Assertions are not the evidence: before.json and after.json contain every in-page observation, and the recordings show the actual interaction.

## Reproduce

Use a checkout of current main for the scenario harness and its dependencies. Copy terminal-delimiter-performance.e2e.ts into scripts/scenarios/. Set the web viewport in scripts/e2e.config.ts to `{ width: 1920, height: 1280 }`. Install each app checkout with `vp i`. From the harness's scripts directory, run the following once with APP_CHECKOUT pointing at the base and once at the head, preserving the output from each invocation:

```sh
EVIDENCE_OUTPUT_DIR="$OUTPUT_DIRECTORY" T3_SCENARIO_APP_DIR="$APP_CHECKOUT" T3CODE_DEV_SEED=0 T3_SCENARIO_INHERIT_ENV='SHELL,T3CODE_DEV_SEED' vp exec e2e run scenarios/terminal-delimiter-performance.e2e.ts --target web
```

The base is expected to exceed the driver's unchanged 100 ms threshold; the head should pass it. The driver creates paren.txt and control.txt, opens a replay thread and its terminal, suppresses the shell prompt, runs `clear; cat <file>; echo`, and moves the pointer over the URL in 8 passes of 7 moves, 5 runs per file. Each move is followed by two animation frames. A capture-phase pointermove listener measures performance.now() at dispatch to the second requestAnimationFrame; PerformanceObserver records long tasks. The observer starts after rendering the file. The 700 ms wait is only for PTY output before measurement, never part of the measured latency.

Seven direct extraction samples per length run in that same Chrome through Vite's actual `/src/terminal-links.ts` module. The JSON includes the extracted text and character ranges. The screenshots show the balanced `(v2)` underline ending before the excess parentheses on both commits.

Statistics use the conventional median (mean of the middle pair for even sample counts). The driver's threshold uses the upper middle element; both definitions yield the same before/after verdict. The videos omit initialization and pairing, preserving only the synthetic terminal interaction at original speed. No Chrome Performance trace was collected.
