# Manual proof driver

Linux, real Chromium web client, 1280 x 800 CSS pixels, light theme.
Base and head each ran `T3CODE_DEV_SEED=0 vp run dev` in their own checkout.
No database was copied. The normal dev startup created a project and draft thread.
The external OpenCode process used disposable XDG directories and an isolated npm-global prefix.

For each side, start with CLI 2.2.5 and an independently running OpenCode 2.2.5 server.
Use `reproduce.sh install-old` and `reproduce.sh start`, with PROOF_DIR and a disposable
OPENCODE_SERVER_PASSWORD set in the environment.

1. Pair the browser with that checkout's dev server.
2. Open Settings > Providers > Add provider > OpenCode > Next > Next.
3. Set Binary path to `$PROOF_DIR/cli/bin/opencode`, Server URL to `http://127.0.0.1:14099`,
   and the disposable Server password. Add instance.
4. Refresh provider status. Select OpenCode. Click its update icon and Update now.
   Keep the independent server running throughout the npm update.
5. Run `reproduce.sh verify`. Observe installed CLI 2.2.7 and running server 2.2.5.
6. Capture provider status, then press Escape to close Settings and observe the sidebar notice.
   Base says it still needs an update; head says OpenCode updated: v2.2.7.
7. Reopen Providers. Base's update details say the command completed but the provider is outdated.
   Head retains runtime v2.2.5 and says to restart the configured local server.
8. Stop only the external server process started for this proof and start it again using the updated CLI.
   Refresh provider status on both sides. Observe runtime v2.2.7; head's restart instruction disappears.

The CLI was reset to 2.2.5 between the two update runs. Capture retries also reset it; they did
not change the reproduction or substitute a fake executable/server. No agent turns were needed.
Static Settings captures were accepted only after two screenshots 500 ms apart were pixel-identical.
The sidebar notice is transient, so its evidence is the update recording.
Videos retain elapsed time; the base recording includes an extra idle interval before closing Settings.
Opaque rectangles redact the host name, local executable paths/commands, and unrelated model selector.
The product's status, version, update result, and restart guidance are unmodified.

AI-assisted; verified with the tests and tools listed above.
