# Environment and reproduction

Worktree `/home/ubuntu/wt/issue-24113`, branch `fix/issue-24113`. Product capture head [2e7b0091fd](https://git.cafe/pingdotgg/t3code/commit/2e7b0091fd3b44a4a01912c055c3294fc09fc53e), base [eb1510d249](https://git.cafe/pingdotgg/t3code/commit/eb1510d249). The worktree was detached at the exact base for capture and restored to the fix branch before head capture. Fixture-only commits happened after product capture; final fixture SHA is in the index.

Browser: own preview tab `tab_1g_718af28e-b901-447a-834c-af7f6f2e4896`, default profile, no lead tab operated. Browser DPR 2, root font 16px (scale 1), UTC. Light/dark emulated with preview_set_appearance. Client panel animation duration was 0ms. Hourly static fixtures used 12-hour timestamps; R03 changed to 24-hour. Cost/90 days, Cost/24h, Tokens/30 days, Tokens/24h, Limits/30 days. Limits intentionally credential-free/unavailable.

Server reused: lead session 16025, web port 7771 (PID 2093610), backend port 15811 (PID 2093623). `/proc/<pid>/cwd` verified as this worktree's apps/web and apps/server respectively. Neither lead process was stopped. All runtime data stayed under this worktree's `.t3`; no live userdata database or config was read or changed. T3 preview itself wrote its app-managed screenshots/recordings under its normal browser-artifact/attachment paths; those files were copied/read as tool-returned artifacts only.

Synthetic provider data: six assistant-only Claude records with unique request/message IDs, one synthetic session, model claude-sonnet-4-5, fixed timestamp anchor 2026-10-23T12:00:00Z and earlier daily records. No prompt content, tokens/credentials or personal usage was uploaded. Explicit Claude/Codex homePath and OpenCode OPENCODE_DATA_DIR isolate transcript scans. Other providers were disabled; usageLimitSources empty. Cursor account reader is host-scoped: this host had no Cursor login, so screenshots show only its unavailable diagnostic. The fixture script now prints `HOME=<sandbox>/usage-fixtures XDG_CONFIG_HOME=<sandbox>/usage-fixtures/config AGENT_CLI_CREDENTIAL_STORE=memory` for stronger reproducibility on another host. Its instance homePath alone cannot isolate Cursor account history.

Run the committed script with `node scripts/seed-issue-24113-usage.mjs /absolute/isolated/t3-home 2026-10-23T12:00:00Z`. It intentionally replaces that sandbox's settings with capture fixtures. Use the printed host environment settings when starting a new verifier server. It refuses the default live T3 home. Then pair your own browser tab, navigate `/usage`, set preference key `t3code:usage-page-preferences:v1` to the fixture metric/windowDays, and select the specified theme/viewport/sidebar. Sidebar width uses `chat_thread_sidebar_width` and the existing `--sidebar-width` variable. All captures are the real route with the real server, not a component harness.

## Verification

The seed script was formatted, checked with `node --check`, run twice against `/tmp/issue-24113-fixture-check`, and its guard was exercised against the default live-home path (it threw before filesystem writes). Scoped lint status and final fixture commit are recorded in the index. No repository-wide check was run. Real app captures independently showed synthetic totals: 90d Cost $1.26 / 252K tokens, 30d Tokens 180K, past-24h Cost $0.06 / 12K. The current 24h window crosses midnight Oct 22–23, not a month boundary.

## Owned processes and teardown

- Installer session 15787: completed. Desktop build session 73511: completed. Server bundle build session 56109: completed.
- Headless desktop attempts: sessions 12743, 54444 and 5102; stopped through retained sessions. Third wrapper PID 2135683, Electron child 2135698. Failed attempts used ports 19313/19314/19315 and scratch XDG config paths. Debug ports were confirmed no longer listening after teardown.
- Temporary Electron inspection session 85264 and bounded log/curl session 38506: stopped through retained sessions.
- Build-proof sessions 96507 and 89418: completed. Temporary image/narration generation remains outside the repo. Upload sessions are allowed to complete before this report is finalized.
- Original lead web/backend remain available for pass 2. No PID found by process-name/path matching was killed.

The only repository addition is the fixture script. Desktop/server builds and Electron installation produced ignored build/runtime files. Settings, synthetic transcripts and caches remain in the isolated `.t3`. No PR or push was performed.

Final fixture branch head [b26c26e20e](https://git.cafe/pingdotgg/t3code/commit/b26c26e20e4f85574be5fca8b62c1059ed8351e9). Product capture head remains [2e7b0091fd](https://git.cafe/pingdotgg/t3code/commit/2e7b0091fd3b44a4a01912c055c3294fc09fc53e). Only scripts/seed-issue-24113-usage.mjs differs from product head. `vp fmt scripts/seed-issue-24113-usage.mjs`, `vp lint scripts/seed-issue-24113-usage.mjs`, `node --check` and sandbox seeding passed.

Additional fixture changes after reviewer snapshot [f6c9cde345](https://git.cafe/pingdotgg/t3code/commit/f6c9cde3459bf478b0ddcc56e80978bbeb8e3a7f): namespace NodeFSP/NodePath imports and uses; create empty scratch config/OpenCode directories; print required Cursor host-environment isolation launch settings with a short explanatory comment. No product behavior changes.

Final review-2 correction: the script explicitly creates the sandbox provider home and prints HOME=<sandbox>/usage-fixtures in addition to XDG_CONFIG_HOME and AGENT_CLI_CREDENTIAL_STORE=memory. It does not change this running server environment or retroactively change captured evidence. Usage scans can ignore enabled and Grok/Pi/Antigravity can fall back to host HOME. The lead reported review-2 verification that host Grok and Pi had zero usage files and Antigravity was absent; all observed evidence values matched the synthetic Claude fixture. Thus no existing-image leak was identified, but existing captures did not run with the final HOME startup isolation. This is a provenance limitation, not a claim of complete isolation during capture.

After reviewer snapshot [f6c9cde345](https://git.cafe/pingdotgg/t3code/commit/f6c9cde3459bf478b0ddcc56e80978bbeb8e3a7f), fixture changes are NodeFSP/NodePath namespace imports/usages, explicit scratch home/config/OpenCode directories, and the host-reader startup hint/comment. Product files are untouched. The HOME correction was a new commit, not an amend.
