# Reproduction drivers

Only synthetic fixture data is included. Never reuse real secrets.

Run seed.py once on a clean /tmp/issue24504-proof-fixtures. It creates large (205 anchor folders), small, empty and matching local bare remotes. Each candidate is seedNNN plus newline (8 B); .env is FIXTURE_ONLY=1 plus newline (15 B); oversize is 1 MiB + 1 byte of x.

Serve bare remotes with:
`git daemon --reuseaddr --export-all --base-path=/tmp/issue24504-proof-fixtures --listen=127.0.0.1 --port=19454 /tmp/issue24504-proof-fixtures`
Set source origin to `git://127.0.0.1:19454/large.git`; filesystem path origins intentionally do not create clone targets. Before each additional clone, create another bare clone named large-proof.git, large-cap.git or large-ui.git and update source origin. Restart source dev server to refresh repository identity. Both servers run on the same machine with separate isolated homes.

Source: `vp run dev --home-dir /tmp/issue24504-proof-source --no-seed`
Target: `T3CODE_PORT_OFFSET=12000 vp run dev:server --home-dir /tmp/issue24504-proof-target --port 15838 --dev-url http://localhost:7797 --no-seed`
Source actual ports 7797/15837. Pair through source Settings > Connections using fresh target startup code. The dev-url aligns credentialed CORS with source Vite; it does not bake an HTTP/WS origin into a build. No auth data is in this bundle.

Main UI driver: Add project > source This device > Local folder > fixture path with trailing slash; wait for directory response before Add. Draft > Run context > Add to another machine > target. All/None operate on shown rows. Select default .env, query folder-205, select row, query folder-204, select row, clone with filtered view to /tmp/issue24504-proof-clone-three. Read clone-three.json for exact destination contents.

Cap driver: new clone identity large-cap.git. Select 205; query 204 All then None; clear; All initial results reaches 200 (199 shown eligible + hidden 205). Query 204: disabled; All does not exceed 200. Query candidate-001 and uncheck: 199, cap notice removed. Query 204 and select: 200. Clone filtered to /tmp/issue24504-proof-clone-cap. clone-cap.json records all 200 paths and contents.

Theme driver uses localStorage t3code:theme-appearance-mode plus a StorageEvent with that key, the app's actual theme subscription. Viewports are CSS 1440x900 and 390x844. Wide screenshot transfer downsizes to 1280x800; narrow transfer is DPR2 780x1688. Base/head initial captures use identical fixture and defaults, remote large-cap.git.

Synthetic H driver: synthetic-query-driver.js replaces the exported projectEnvironment.listIgnoredFiles factory in browser memory with writable AsyncResult atoms. After opening dialog, registry.set controls initial pending/success/failure and search pending/failure. This is a UI query-result fixture, not a real transport failure. Original factory restored after recording. Initial error must be set after mounting because unmounted atoms reset. Initial success fixture has only .env and truncated=true to expose search deterministically.

Synthetic I driver: read source serverEnvironment.configValueAtom via appAtomRegistry and delete ignoredFileSearch, then ignoredFileListing on its capability object. Keep target untouched. Reopen dialog each time. Restore both values to true afterward. This is a synthetic source capability override, not an actual old binary. Older-listing clone uses None after All (zero ignored files); no-listing clone uses small fixture (zero ignored files). clone-compatibility.json verifies destinations.

Final variant large-final copies large repository/ignored data, creates large-final.git remote, adds folder-001/exact.secret (1 MiB x), zero.secret (0 B), whole-ignored.secret/hidden.txt. Wire observer wraps WebSocket.prototype.send, retains only ignored-file/clone requests, and is restored. Native input events set folder-203 then folder-204 in one task to verify debounce coalescing. final-runtime.json records trimmed uppercase query, no clone request after Enter, final query only, zero-byte selection summary, exact-size enabled row and whole-directory exclusion.

Pixel diff driver: PIL ImageChops.difference for raw Diff0; luminance threshold >20 for binary threshold images. Whole frame includes changing sidebar relative times and changed dialog geometry. These are comparison aids, not a zero-diff acceptance assertion.
