Manual performance proof for shell snapshot reads The scenario documentation excludes performance regressions. This driver uses the real development server's authenticated HTTP, WebSocket RPC and MCP transports. It does not mock the read methods or insert database rows. Prepare two fresh worktrees, install each with vp i, and run each with T3CODE_DEV_SEED=0 vp run dev, capturing its server log privately. Add a project titled "Synthetic shell benchmark" with the app CLI and complete one Replay (dev) multi-turn turn, as a startup sanity check. Do not use any production database. Arguments below are placeholders for each checkout and its private server log: node driver.mjs CHECKOUT SERVER_LOG seed node history.mjs CHECKOUT SERVER_LOG SIDE OUTPUT_DIRECTORY/history.json 1536 Stop the dev stack after seeding; confirm the port owners have stopped. For final server-only measurements, start the real server CLI directly with serve --host 127.0.0.1 --port PORT --base-dir .t3 --dev-url DEV_URL --no-browser, preserving the development configuration. Its own migrations create its database and indexes. Repeat the same procedure on the other commit. node driver.mjs CHECKOUT SERVER_LOG before OUTPUT_DIRECTORY/base.json node driver.mjs CHECKOUT SERVER_LOG after OUTPUT_DIRECTORY/head.json Keep issue-mcp.mjs beside the drivers. It issues a local MCP credential using the same app service the thread CLI uses. Tokens and pairing links are never printed in evidence. The thread fixture creates 7,524 deterministic synthetic thread IDs using thread.create commands. There are 4,070 archived threads, 2,980 active threads sharing one worktree path, and two active threads on a second path. The title filler brings each thread payload to approximately 3.7 KB. The history fixture uses t3_thread_send and t3_thread_wait to complete 1,536 real Replay turns in synthetic-03000. It counts existing runs read-only to resume fixture creation. It sets the project's workspace to a tiny synthetic git repository through the real project-update API. It creates no paid model turns. The measurement driver sends the identical ordered sequence of full shell HTTP, trimmed shell HTTP, two-thread worktree RPC, t3_thread_list MCP (100-row page), and single-root family RPC requests to each server. JSON records every elapsed wall-clock request duration and returned cardinality. Terminal casts record actual output at the time each response completes; these are server runtime recordings, not browser videos. Measurements include transport and decoding. They do not measure browser rendering or a cold disk cache. Scope limit: the full 7,352-run fixture was attempted, but serial fixture creation slowed to roughly 1.5 seconds per turn and would exceed the budget. Both sides were equalized at 1,536 completed runs. The reporter's 49 GB database, 7-second app opening, and 10-second thread listing were not reproduced. Browser rendering and cold-storage performance are unverified. The final measurement contains 25 rounds. The summary discards the first five as warmup and reports the median of the following twenty; raw records retain every round. Final recordings and charts describe runtime server requests, not a browser or desktop recording. Payload filler is in the title, so full snapshots carry large titles too. Those full-read measurements are context, not a representative browser-open benchmark. Worktree and family measurements return two and one threads respectively.