# Windows Git status performance proof

Run on one leased Windows Server 2025 machine, with both revisions installed before any measured batch. No browser, real provider, mocked server, or test harness was used. The source server, replay ACP adapter, orchestrator, checkpoint capture and status services ran normally.

Prepare an experiment directory with these three subdirectories:

- `base`: installed worktree at `8bd7f466ccdb3f53e46aed9ec084c015f45811d6` (the merge-base).
- `head`: installed worktree at `0b033150462900d076428508ba0af4e0dbe5f0a7`.
- `bench`: a depth-1 clone made from the base worktree using `git clone --no-local --depth 1 file:///<base-worktree> <benchmark-directory>`. Create branch `main`, set `refs/remotes/origin/main` to HEAD, and set origin to the public repository. No branch upstream was configured. No dependency installation in this benchmark clone. It contains 32,282 tracked files and no untracked files.

Install both worktrees with `vp i`. Then run `node measure.mjs <experiment-directory> full`. The driver creates a new timestamped output directory, uses one server at a time, creates a fresh T3 database per batch, disables real providers, and registers the replay provider through dev mode. Its output is `measurement.json` plus a JSON-line console transcript. Raw server logs contain local paths and credentials and are deliberately not public evidence; the driver captures span names, timestamps, durations and success tags without those private fields. The working-tree root in returned status is replaced with `<benchmark-repository>`.

Predeclared order is base, head, head, base. Each batch runs two excluded warm-ups and nine measured turns. All warm-up rows remain in the JSON. Each iteration launches one `todo-list` replay turn through the real CLI, waits for finalization to be recorded, reads thread completion and assistant output through the CLI, measures `vcs.refreshStatus` with `localOnly:true` over the real authenticated WebSocket, and checks raw Git status. Timings exclude setup and trace-export delay.

The finalization trace's contained spans give the local-refresh duration, Git subprocess count, cumulative Git duration, and full-untracked-scan count. They are selected by timestamps within that finalization interval. These are interval-contained process counts, not a claim that unrelated concurrent activity is impossible. The primary end-to-end status RPC is measured separately with `performance.now()`.

Generate the numerical summary with `python summarize.py measurement.json > summary.json` and the side-by-side report with `python make_report.py <output-directory>`. A median improvement must exceed the larger of the two complete sample ranges (max minus min), without outlier removal. Returned status payloads, assistant replies, completed runs and successful finalizations are compared across revisions.

The experiment demonstrates the clean working-tree optimization. It does not measure browser focus handling, Linux/WSL parity, idle CPU, or the fallback behavior for untracked files and configurations hiding them.
