# Recording export reproduction

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

Run each commit in its own checkout with `vp i`, then `T3CODE_DEV_SEED=0 T3CODE_SERVER_BROWSER_SANDBOX=0 vp run dev`. Use fresh databases; no copied application data.

Serve the supplied motion.html on 127.0.0.1 port 18763 using Python http.server. Create a project rooted in each checkout using `node apps/server/src/bin.ts project add <checkout> --base-dir .t3`.

For an in-app transcript, set PROOF_DRIVER to the absolute path of record-driver.py and run `python3 enable-proof-agent.py <base-checkout> <head-checkout>`. This replaces only the development replay script with a deterministic ACP driver that calls the real MCP tools and streams its measured output into chat. No browser, encoder, transfer, or attachment implementation is changed.

Start a new thread with `node apps/server/src/bin.ts thread start <checkout> "Record continuous motion for 30 seconds, interact every 5 seconds, then stop and report the saved-file delay." --title "Recording export demonstration" --provider devReplay --model multi-turn --base-dir .t3 --json`. Open that thread in the paired web client. The driver opens the supplied motion page, resizes to 1280x800, starts recording, clicks the interaction control every five seconds, stops recording, measures stop-to-result time, copies the returned video, and computes SHA-256. Repeat with a prompt containing "short" for the five-second control.

The UI recordings are cropped to the chat column to remove private environment labels. Exported motion videos are original bytes, with no transcoding. Playback was inspected in Chromium at the beginning and near the end, showing advancing frames and interactions. UI timing runs also include the overhead of recording the app itself. Independent runs without that outer recording are included in measurements.json. Output sizes differ because these are separately encoded real-time recordings; this is not a controlled microbenchmark.

Not exercised: a recording above 50 MiB, deliberately truncated transfers, or byte-for-byte comparison against an encoder-side original. The saved-file SHA-256 identifies the uploaded original video but does not prove encoder-to-file byte identity.
