# E04 robustness protocol E04 evaluates the frozen H000, H008, and H010 retrieval harnesses on all 15 held-out GitLab Runner tasks. It runs with only the pinned LM Studio embedding model resident. Qwen is not loaded during E04; H010 reuses its blinded query reformulation from the completed E02 model phase at code revision `1a7066f6c7682793b6f04445c776a93cc4fac895`. ## Experimental unit and the 135-cell plan The preregistered grid has 15 tasks × 3 harnesses × 3 seed coordinates = 135 composite cells. Each cell contains an unperturbed baseline, S001, and one S002 dose: | Seed coordinate | S002 synthetic files | | ---: | ---: | | 0 | 1 | | 1 | 5 | | 2 | 10 | These coordinates encode nested dose levels, not stochastic replicates. The same deterministic first distractor appears at all three levels, and the first five appear at levels 5 and 10. S001 builds all retrieval structures at the first parent of the task's base commit and evaluates them against the task labels at the base commit. Its result does not depend on the S002 dose. The artifact is therefore copied into the three composite cells with an explicit `shared_key`. Statistical analysis must de-duplicate S001 by that key, yielding 45 task–harness units, and must never treat the three copies as independent trials. S002 adds 1, 5, or 10 valid Go source files to the in-memory retrieval corpus. The repository checkout and build are not modified. Distractors contain task-relevant vocabulary but are placed under the reserved, non-gold `__harness_distractors__/` prefix. Every generated source, path, and SHA-256 is saved with the cell. ## Outcomes For baseline and each perturbation, E04 records file recall at 1/5/10, MRR, nDCG@10, first-gold rank, function recall, token-budget coverage, query time, and index statistics. Paired robustness outcomes include recall/MRR/nDCG deltas, top-10 gold retention, loss of all top-10 gold, and rank displacement. If the gold file is absent from the returned list, the predeclared censored rank is `candidate_limit + 1` (201 under the default limit). The uncensored rank delta remains null unless both ranks are observed. ## Resource isolation The runner refuses to start unless the embedding model is the only loaded LM Studio model. Dense vectors use the same pinned SQLite cache as E01/E02/E05, and FAISS FlatIP is rebuilt for each perturbed corpus. No torch workload is used by the Python runner.