Environment for both sides: Linux x64, each commit in its own checkout, `vp i` then `T3CODE_DEV_SEED=0 vp run dev`; real server and web client in the shared browser, light theme, 1280x800 CSS viewport. Separate fresh databases, no live data copied. The free development replay selection was used for an idle thread; no paid agent turn was needed.

1. Initialize a synthetic Git repository on main with an empty commit (git init -b main; git -c user.name=Evidence -c user.email=evidence@example.invalid commit --allow-empty -m 'Synthetic project'). Use a new timestamped scratch directory per run.
2. In the paired browser load browser-rpc.js, call connectEvidenceRpc(), and seedEvidence(projectRoot, replaySelection). This creates the project via projects.mutate, a managed linked worktree via vcs.createWorktree, and the thread via orchestration.dispatchCommand, then settles it.
3. Run prepare-folder.py with projectRoot and the worktree.path returned by seedEvidence. It uses git worktree remove, recreates the directory, writes yarn.lock and makes empty node_modules. The thread record stays intact.
4. Call enableImmediatePolicy(). This sets worktreeSettledAfterDays=0. Wait for the real server's 60-second settlement grace to pass. The report's 30-day example was replaced by the immediate policy on BOTH commits to avoid aging or changing persisted timestamps.
5. Navigate to /settings/maintenance; reconnect the scratch RPC driver after navigation. Load capture-driver.js and call prepareCapture(). Its MutationObserver redacts only local paths and the environment label in displayed text, including error toasts. No outcome, count, thread title, or error category is changed.
6. Record clickDeleteNow(), then expandLastRun(), retaining the resulting report. Run cleanup twice more over RPC to show repeat behavior. Capture stills only after two screenshots separated by a 500 ms wait compare byte-identical.
7. Run verify-folder.py with the worktree path and side label. Both sides preserve the identical yarn.lock contents/hash and empty node_modules; .git stays absent.

Observed base: 0 removed, 0 kept, 1 failed; NotFound: FileSystem.stat ([managed worktree]/cleanup-proof/.git). Repeated sweeps log 'storage cleanup failed for worktree'.
Observed head: 0 removed, 1 kept, 0 failed; Not a linked worktree. Repeated sweeps keep the folder; no matching warning in its server log.

The uploaded browser-rpc.js parameterizes the replay selection rather than publishing operational model identifiers. The capture script is also the complete privacy-redaction code. Still PNGs are 2560x1600 pixels; recording MP4s are 2560x1600 pixels, both from the same 1280x800 CSS viewport.

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