# PR guide MCP reproduction

Run the same procedure on base 7fb6098cfd6bff09304d0963597c06668e7a26ea and head 84f0ab93cfeac8817efb4f0aeb8b24ab4114c659, in separate worktrees (`$WT`) with fresh T3 homes. Do not seed from an existing database.

1. Install with `vp i`, start `T3CODE_DEV_SEED=0 vp run dev`.
2. In the new home's `userdata/settings.json`, set `providerInstances.devReplay.config.commandArgs` to `["<scratch>/capture-agent.mjs", "<worktree>/apps/server/scripts/dev-replay-agent.ts", "<scratch>/private-config.json"]`. This transparent relay forwards the replay agent protocol unchanged and saves its session/new MCP transport configuration privately. Never upload private-config.json: it contains a credential.
3. From `apps/server`, add the worktree itself with `node src/bin.ts project add "$WT" --base-dir "$WT/.t3" --title 'PR guide proof'`. Its origin is https://github.com/pingdotgg/t3code.git. Add no Effect project.
4. Start an actual free replay thread: `node src/bin.ts thread start "$WT" 'Synthetic PR guide evidence' --provider devReplay --model showcase --base-dir "$WT/.t3" --wait --json`.
5. Run `node prove.mjs <scratch>/private-config.json <scratch> <side> <commit>`. It authenticates to the real server's /mcp with the server-issued thread credential, initializes a short-lived MCP session, calls read_pull_request_guide for the project's own PR and then the unrelated public Effect PR, prints the actual results, saves a timestamped transcript, and closes its session.

The relay changes no application or server code. Both app commits were clean; only isolated development settings differed to name each checkout's replay script. The same driver and relay were used on both sides. No model was asked to infer or simulate the tool response.

Observed: the own-repository control succeeds on both commits. The unrelated public PR is refused on base with the exact missing-checkout error; head returns isError:false, guide:null, run:null, stale:false, and currentHeadSha 46f78576843b3ee8d706337d8c4fe23ccf8db516.
