# Timestamp capture procedure

Each checkout starts with T3CODE_DEV_SEED=0 and its own newly created database.
Run the source dev server with NODE_OPTIONS=--import=<clock.mjs> and EVIDENCE_CLOCK=<scratch-clock-file>.
Run seed.sh with CLOCK_FILE and SAMPLE_PROJECT pointing to synthetic scratch data.
The Date shim affects only the seeding server and its child processes. It moves the first replay turn to 2026-11-06 02:30 UTC, waits for completion, then returns to real time before creating the switch-target thread.
Stop that server. Build each checkout with vp run build:desktop. Start its bundled Electron app under headless-desktop with --no-sandbox --disable-gpu and T3CODE_HOME set to the same isolated home. No Date shim runs during captures.
Run desktop-proof.mjs through the checkout's playwright-core module against the app's local CDP port, passing the synthetic thread and environment IDs.
The viewport is 1280x800, light theme. Each recording starts in America/New_York. The driver changes the real Linux system zone to Asia/Bangkok without reloading the client, sends a message, switches threads and returns, then hovers the timestamps.
The older timestamp is 11/5 9:30 PM in New York and 11/6 9:30 AM in Bangkok. A current message changes from afternoon New York time to early-morning Bangkok time.
The base and head each use the same seed and capture driver. The provider is a free synthetic replay fixture; no paid agent or real user data is used.
Public captures crop the bottom 70 pixels to omit provider controls. Timestamp pixels are unmodified. Stills are captured only after two screenshots 500ms apart match byte-for-byte. Recordings are reviewed through a sampled contact sheet and their proving frames before upload.

The packaged Linux comparison uses each checkout's normal packaging script with --platform linux --target dir --arch x64 --skip-build, then runs the resulting packaged executable under headless-desktop. It includes the bundled backend and packaged application resources. Both sides had the same number of preceding synthetic turns. The driver scrolls the first prompt into view before its final tooltip still.
Web uses the checkout's Vite dev renderer connected to its own backend and the same interaction via the shared preview browser, as described in web-driver.js. Browser output is captured at device scale 2 and resized to the 1280x800 CSS viewport before the 70-pixel bottom crop.
Videos also mask the environment's identifying label in a fixed upper-right rectangle; no timestamp or tooltip is masked. Desktop video frames are collected at a target of five per second; rendering and screenshot overhead can shorten the exported timeline relative to wall-clock waits.
