Email-link evidence driver

Environment: Linux x86_64, real Electron 44.10.1 desktop builds, Xvfb 1920x1080 under headless-desktop, Openbox, light theme, Thunderbird 159 as the mailto handler. Each commit uses its own worktree, server, T3 home, and database. No production data is copied.

Build each worktree with vp i, install Electron using node apps/desktop/node_modules/electron/install.js, then vp run build:desktop. Linux builds need libsecret-1-dev. A default mail client is required; this run used the Thunderbird installation at the path shown in mail-launch.sh.

Place the scripts in one scratch directory. Run seed.py WORKTREE NODE_EXECUTABLE for each side before desktop startup. It copies the repository's local replay agent and supplies a three-frame synthetic assistant response, registering the provider in isolated settings. It does not edit application source.

Start each app with headless-desktop ./launch.sh WORKTREE SERVER_PORT SIDE DEBUG_PORT. The mail-launch.sh wrapper preserves the isolated display when opening the real configured mail client. Start Openbox with the supplied openbox.xml in each captured DISPLAY and XAUTHORITY; its empty mouse bindings let Alt+click reach the app. Start Thunderbird on both sides before recording, then bring T3 forward. Set the T3 window fullscreen. Dismiss onboarding with import unchecked.

Create a synthetic empty git project once. On each server, run:
node apps/server/src/bin.ts project add --base-dir .t3desktop --title 'Email links' SYNTHETIC_PROJECT
node apps/server/src/bin.ts thread start --base-dir .t3desktop --provider evidence --model showcase --title 'Email links' --wait SYNTHETIC_PROJECT 'Reply with **To:** someone@example.com outside a code span, followed by [Compose with subject](mailto:someone@example.com?subject=Hello&body=Message).'

Open that thread, close thread details, then run:
node drive.cjs WORKTREE DEBUG_PORT SIDE DISPLAY XAUTHORITY

The identical driver performs normal click, Alt+click, normal click and Alt+click with subject/body parameters, and right-click. It closes compose windows between steps and discards the synthetic draft if prompted. Each run goes to a new timestamped directory. ffmpeg records the real X display, including native menus and Thunderbird. Before saved stills, image pixels are compared 500ms apart. render-video.py adds environment and action captions below the recorded viewport.

Observed: base ignores the three mailto handoffs; head opens Thunderbird each time, preserving recipient, subject and body. Both sides show Copy Email Address, without Copy Link. Therefore the brief's additional full-URL Copy Link claim is not verified and is contradicted by the native menu on this head.

AI-assisted; verified with the tests and tools listed above. No tests were used as proof; evidence is from the running desktop apps.
