# Delegation MCP runtime evidence

Manual server/CLI comparison for PR 31045; the documentation is not a web-client feature. A canned replay response cannot prove MCP routing, so the supplied deterministic ACP provider makes actual HTTP MCP calls during an active app-owned turn. The app code is unmodified.

Run the same procedure in checkouts of base b9bbfda08713b2f68403ffd98f28a5e45d317ed7 and head 16cb5254fc0b2da01913bd18a6027b5b3104e8c5. Install each with `vp i`. Use a fresh home for every run, and set `T3CODE_DEV_SEED=0`.

1. Create a synthetic git repository with a committed `tracked.txt` containing `committed content`, then change it to `uncommitted parent edit` without committing; add an untracked `untracked.txt`.
2. In the isolated home's userdata/settings.json register `contractProbe` with driver `acpRegistry`, enabled true, config source `local`, commandPath `node`, and commandArgs containing the absolute path to the supplied probe.mjs. Disable real providers. Set defaultModelSelection to instanceId `contractProbe`, model `probe`.
3. Set defaultProjectScripts to a single script with id `setup`, name `Prepare synthetic checkout`, command `node -e "require('fs').writeFileSync('setup-ran.txt','prepared')"`, icon `configure`, runOnWorktreeCreate true, and async false.
4. Set PROBE_OUTPUT to a new capture filename and PROBE_REPO to the synthetic repository. Run `vp run dev --home-dir <isolated-home> --port <free-port>` from each checkout with those variables and T3CODE_DEV_SEED=0, T3CODE_AUTO_BOOTSTRAP_PROJECT_FROM_CWD=0. Retain the process.
5. Run `node apps/server/src/bin.ts project add <synthetic-repository> --title "Delegation contract evidence" --base-dir <isolated-home>`.
6. Run `node apps/server/src/bin.ts thread start <synthetic-repository> BOOTSTRAP_CONTRACT_PROBE --provider contractProbe --model probe --title "Delegation contract evidence" --base-dir <isolated-home> --wait --json`.
7. The probe bootstraps a parent with effort high through t3_thread_launch, reads orchestrator_capabilities, delegates with advertised effort low and worktree/default isolation, clears options with {} and [], checks inherited options, and requests worktree isolation for a nonlocal target. It creates a thread with remote target fields and reads it back to compare project, branch, checkout and lineage against the parent. Children report real cwd contents and received ACP options. The probe does no task_status polling; it continues independent calls, ends its turn, and records completion wakeups.
8. Read the timestamped NDJSON after completion. The text captures are a readable projection of those actual recorded responses; the NDJSON preserves full inputs and results, with local filesystem roots redacted. No test outcomes are used as evidence.

The provider holds each child prompt for seven seconds so a 1 ms wait times out before completion. This controls the fixture, not the server. Startup status and wakeup batching are timing-dependent; option values, next instruction, checkout content, rejection error and routing results agree.

Successful linked-environment execution was not exercised; only its worktree-isolation rejection was reached. No remote machine or production data was used.

Prepared through Codex with gpt-6.1-sol.
