# T3 Connect client-label reproduction

Base: eb14ddb79924a6cbcb6c26d1b97c9816c9732c55
Head: 02f4d9787e624984ae405b1681be0ceef8fd653e

## Setup and driver

Build and run each commit's desktop app from its own checkout and fresh T3 home.
Use the test-stage relay and Clerk configuration supplied by the test environment.
Never use production Connect. Disable project-history import during onboarding.
Use separate XDG_CONFIG_HOME directories for simultaneous Electron instances.

Start with `T3CODE_DEV_SEED=0 T3CODE_DESKTOP_REMOTE_DEBUGGING_PORT=<port> headless-desktop vp run dev:desktop`.
Sign in with a supplied test account in each desktop. In Sharing & access, enable
T3 Connect and install its relay client when prompted. Do not enable agent activity.
No agent turn or copied database is needed.

1. In the other desktop's Settings > Environments, add the target environment from
   T3 Connect. Wait for Connected. This creates a new proof-bound Connect session.
2. On the target desktop, open Settings > Sharing & access and expand Authorized clients.
3. Base shows `T3 Connect connect`; head shows `T3 Connect`.
4. Run the capture driver against each target's CDP port:
   `node capture.mjs <checkout>/scripts <port> <output-directory>`.

The same Linux Electron desktop setup was used on both sides: content viewport
1100 x 780, light theme. Each final capture has exactly two clients: the local
T3 Code Desktop owner and one newly minted remote Connect session. A temporary
browser setup session on base was revoked before the final capture.

The capture driver reads the actual app DOM, requires identical screenshots
500 ms apart, captures the Authorized clients section, then records the same
collapse/expand interaction on each side. Cropping excludes host names and accounts.
The MP4s contain actual captured frames encoded at 10 fps; they are not timing measurements.

The two desktop instances exchanged roles: head desktop connected to the base
server for Before; base desktop connected to the head server for After. The
server under test determines the stored label. Both apps use the same unchanged
client code for this flow.

No source changes, tests, mocks, manually inserted client labels, or database
fixtures were used as evidence. Existing-session preservation across an upgrade
was not exercised.
