cuber12 commited on
Commit
d61821a
·
verified ·
1 Parent(s): a57ee6b

Publish agent harness research code and paper artifacts

Browse files

Validated publication snapshot from local revision bda038e. Includes 650 tracked files, the canonical paper PDF, immutable configurations, task manifests, analysis code, derived Study 5 evidence, tests, licensing, and reproducibility documentation. Raw trajectories, model weights, repository checkouts, indexes, caches, and local environments are excluded.

This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +2 -0
  2. .gitignore +25 -0
  3. .zenodo.json +25 -0
  4. CITATION.cff +24 -0
  5. LICENSE +26 -0
  6. LICENSE-DATA +16 -0
  7. README.md +202 -1
  8. README_ZENODO.md +77 -0
  9. REPRODUCING.md +92 -0
  10. THIRD_PARTY_NOTICES.md +23 -0
  11. configs/agent_systems/A001_agentless_controlled.toml +12 -0
  12. configs/agent_systems/A002_swe_agent_style.toml +12 -0
  13. configs/backends/B001_faiss_flat.toml +10 -0
  14. configs/backends/B002_faiss_approximate.toml +13 -0
  15. configs/backends/B003_vector_database.toml +10 -0
  16. configs/context/E12_context_cells.json +23 -0
  17. configs/edit_interfaces/P001_unified_diff.toml +6 -0
  18. configs/edit_interfaces/P002_exact_replace.toml +6 -0
  19. configs/edit_interfaces/P003_whole_file.toml +6 -0
  20. configs/embeddings/emb001_qwen3_embedding_0_6b.toml +24 -0
  21. configs/embeddings/emb002_qwen3_code_generic.toml +24 -0
  22. configs/experiments/E00_development_pilot.toml +15 -0
  23. configs/experiments/E01_retrieval_factorial.toml +15 -0
  24. configs/experiments/E02_interaction_and_packing.toml +15 -0
  25. configs/experiments/E03_end_to_end_repair.toml +15 -0
  26. configs/experiments/E04_robustness.toml +15 -0
  27. configs/experiments/E05_index_backend.toml +16 -0
  28. configs/experiments/E06_llm_localization_pilot.toml +15 -0
  29. configs/experiments/E07_live_agent_repair.toml +15 -0
  30. configs/experiments/E08_study2_live_agent.toml +17 -0
  31. configs/experiments/E09_protocol_interface.toml +17 -0
  32. configs/experiments/E10_fresh_retrieval.toml +17 -0
  33. configs/experiments/E11_study4_reliability.toml +17 -0
  34. configs/experiments/E12_study4_context.toml +17 -0
  35. configs/experiments/E13_component_factorial.toml +17 -0
  36. configs/experiments/E14_retrieval_action_factorial.toml +17 -0
  37. configs/experiments/E15_navigation_factorial.toml +17 -0
  38. configs/experiments/E16_heldout_validation.toml +17 -0
  39. configs/gates/E09_model_interface_gate.json +22 -0
  40. configs/harnesses/H000_exact_raw.toml +15 -0
  41. configs/harnesses/H001_lexical.toml +15 -0
  42. configs/harnesses/H002_syntax.toml +15 -0
  43. configs/harnesses/H003_dense.toml +15 -0
  44. configs/harnesses/H004_lexical_syntax.toml +15 -0
  45. configs/harnesses/H005_lexical_dense.toml +15 -0
  46. configs/harnesses/H006_syntax_dense.toml +15 -0
  47. configs/harnesses/H007_full_retrieval.toml +15 -0
  48. configs/harnesses/H008_graph_one_hop.toml +15 -0
  49. configs/harnesses/H009_graph_two_hop.toml +15 -0
  50. configs/harnesses/H010_iterative_unified.toml +15 -0
.gitattributes CHANGED
@@ -33,3 +33,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ output/pdf/dissecting_repository_scale_code_agent_harnesses.pdf filter=lfs diff=lfs merge=lfs -text
37
+ results/derived/study5/figure_e13_funnel.png filter=lfs diff=lfs merge=lfs -text
.gitignore ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ __pycache__/
2
+ *.py[cod]
3
+ .DS_Store
4
+ .venv/
5
+ dist/
6
+ build/
7
+ *.egg-info/
8
+ tmp/
9
+ output/releases/
10
+
11
+ # Experiment outputs are immutable local artifacts and can be large.
12
+ results/raw/*
13
+ results/derived/*
14
+ results/reports/*
15
+ results/staging/*
16
+ results/infrastructure_attempts/*
17
+ !results/raw/.gitkeep
18
+ !results/derived/.gitkeep
19
+ !results/reports/.gitkeep
20
+ !results/staging/.gitkeep
21
+ !results/infrastructure_attempts/.gitkeep
22
+
23
+ # Local benchmark checkouts and indexes are not source artifacts.
24
+ data/
25
+ indexes/
.zenodo.json ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "title": "Dissecting Repository-Scale Code-Agent Harnesses: Retrieval, Context, and Action Interfaces Under Model-in-the-Loop Evaluation",
3
+ "upload_type": "publication",
4
+ "publication_type": "preprint",
5
+ "publication_date": "2026-07-21",
6
+ "description": "A five-study controlled evaluation of repository-navigation and editing harnesses for local LLM coding agents. The release reports 5,453 audited experimental cells across three public repositories and three local models. Study 5 contributes 2,826 model-in-the-loop cells covering lexical, syntax, and dense retrieval components; retrieval-by-action interactions; graph, query, tool, and packing ablations; and a 17-task held-out validation. No universal harness winner is claimed: quality ranks transfer weakly, token-cost ranks transfer strongly, and only one held-out cell resolves. The deposit includes the manuscript, source, immutable configurations and task manifests, derived cell-level evidence, preregistrations, audit records, and deterministic checksums. Raw trajectories are distributed separately because of size; model weights and repository checkouts are not redistributed.",
7
+ "creators": [
8
+ {
9
+ "name": "Sidhu, Mandeep",
10
+ "affiliation": "Independent Researcher"
11
+ }
12
+ ],
13
+ "access_right": "open",
14
+ "license": "cc-by-4.0",
15
+ "keywords": [
16
+ "code agents",
17
+ "repository-scale code editing",
18
+ "retrieval-augmented generation",
19
+ "LLM evaluation",
20
+ "software engineering",
21
+ "agent harnesses",
22
+ "reproducibility"
23
+ ],
24
+ "notes": "Software is MIT licensed. Original paper, documentation, figures, tables, and derived research artifacts are CC BY 4.0. Third-party benchmark patches retain their upstream licenses."
25
+ }
CITATION.cff ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ cff-version: 1.2.0
2
+ message: "If you use this paper, software, or saved experimental evidence, please cite the archived preprint snapshot."
3
+ title: "Dissecting Repository-Scale Code-Agent Harnesses: Retrieval, Context, and Action Interfaces Under Model-in-the-Loop Evaluation"
4
+ authors:
5
+ - family-names: Sidhu
6
+ given-names: Mandeep
7
+ version: "1.0.0-preprint"
8
+ date-released: "2026-07-21"
9
+ license: MIT
10
+ keywords:
11
+ - code-agents
12
+ - repository-retrieval
13
+ - large-language-models
14
+ - software-engineering
15
+ - empirical-evaluation
16
+ - reproducibility
17
+ preferred-citation:
18
+ type: article
19
+ title: "Dissecting Repository-Scale Code-Agent Harnesses: Retrieval, Context, and Action Interfaces Under Model-in-the-Loop Evaluation"
20
+ authors:
21
+ - family-names: Sidhu
22
+ given-names: Mandeep
23
+ year: 2026
24
+ notes: "Preprint; Zenodo DOI to be added after reservation."
LICENSE ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Mandeep Sidhu
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
23
+ This license covers original software in src/, scripts/, and tests/. Paper,
24
+ documentation, and original derived research artifacts are licensed separately
25
+ under LICENSE-DATA. Benchmark patches and excerpts remain subject to the
26
+ upstream notices in THIRD_PARTY_NOTICES.md.
LICENSE-DATA ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Creative Commons Attribution 4.0 International (CC BY 4.0)
2
+
3
+ Copyright (c) 2026 Mandeep Sidhu
4
+
5
+ The original manuscript, documentation, figures, tables, and derived research
6
+ artifacts in this repository are licensed under the Creative Commons
7
+ Attribution 4.0 International license unless a file states otherwise.
8
+
9
+ You may share and adapt this material for any purpose, including commercially,
10
+ provided that you give appropriate credit, link to the license, and indicate
11
+ whether changes were made. The full legal code is available at:
12
+
13
+ https://creativecommons.org/licenses/by/4.0/legalcode
14
+
15
+ This license does not relicense third-party source excerpts, benchmark patches,
16
+ model weights, or upstream repositories. See THIRD_PARTY_NOTICES.md.
README.md CHANGED
@@ -1,3 +1,204 @@
1
  ---
2
- license: mit
 
 
 
 
 
3
  ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ license: other
3
+ tags:
4
+ - code-agents
5
+ - software-engineering
6
+ - llm-evaluation
7
+ - reproducibility
8
  ---
9
+
10
+ # Agent Harness Research
11
+
12
+ **Author:** Mandeep Sidhu, Independent Researcher
13
+
14
+ **Release:** 1.0.0 preprint candidate
15
+
16
+ **Paper:** [Dissecting Repository-Scale Code-Agent Harnesses](output/pdf/dissecting_repository_scale_code_agent_harnesses.pdf)
17
+
18
+ This repository is an experimental platform for a scientific study of how
19
+ repository-navigation harnesses affect an LLM coding agent on codebases that do
20
+ not fit in the model context window.
21
+
22
+ Study 1 fixes **Qwen3.6-35B-A3B** (35B total parameters, 3B active parameters).
23
+ The completed Studies 2--5 evaluate that model, **GPT-OSS-20B**, and
24
+ **Qwen3-Coder-30B-A3B-Instruct**,
25
+ served locally by LM Studio on port `1234`. Experiments abort if the exposed
26
+ model, variant, quantization, context, or reasoning default does not match. The
27
+ canonical model is documented by the [Qwen release](https://qwen.ai/blog?id=qwen3.6-35b-a3b)
28
+ and [official model repository](https://huggingface.co/Qwen/Qwen3.6-35B-A3B).
29
+
30
+ LM Studio exposes model discovery through `/api/v1/models` and OpenAI-compatible
31
+ inference and tool calling through `/v1/chat/completions`. See the
32
+ [LM Studio server documentation](https://lmstudio.ai/docs/developer/core/server),
33
+ [model listing documentation](https://lmstudio.ai/docs/developer/rest/list), and
34
+ [tool-use documentation](https://lmstudio.ai/docs/developer/openai-compat/tools).
35
+
36
+ ## Completed research program
37
+
38
+ - 21 immutable harness specifications (`H000` through `H020`)
39
+ - Fifteen completed experiment families (`E01`--`E05` and `E07`--`E16`)
40
+ - 5,453 audited cells: 965 Study 1, 912 Study 2, 540 Study 3, 210 Study 4,
41
+ and 2,826 Study 5
42
+ - Separate robustness scenarios and vector-index backend profiles
43
+ - Strict local-model discovery with no silent model fallback
44
+ - Append-only JSONL telemetry and deterministic run identities
45
+ - Confirmatory statistical analysis with paired exact tests, task bootstrap
46
+ intervals, Holm correction, and a mixed-effects factorial model
47
+ - A reproducible research paper with generated figures/tables, checksums, and
48
+ page-by-page rendered-PDF quality assurance
49
+
50
+ ## Powered Study 2
51
+
52
+ - 60 validated real-change tasks across GitLab Runner, GitLab CLI, and python-gitlab
53
+ - Go and Python repositories whose full source exceeds the 65,536-token treatment cap
54
+ - Five component harnesses plus controlled Agentless-style and SWE-agent-style baselines
55
+ - Qwen3.6-35B-A3B and GPT-OSS-20B under identical local-runtime controls
56
+ - 840 deterministic main cells plus 72 preregistered stochastic reliability cells
57
+ - Exact paired testing, task-cluster intervals, multiplicity control, and hierarchical analysis
58
+ - Primary result: H007 hybrid and H000 lexical both resolved 2/60 Qwen tasks
59
+ (risk difference 0.000, 95% task-bootstrap CI [-0.050, 0.050], exact p=1)
60
+ - No secondary contrast survived correction; GPT-OSS produced no accepted
61
+ repair and exposed a strong model/tool-protocol compatibility limitation
62
+
63
+ ## Protocol-normalized Studies 3--4
64
+
65
+ - E09: 60 tasks x 3 models x 3 edit interfaces = 540 real local-LLM cells
66
+ - GPT-OSS exact replacement accepted edits on 27/60 tasks versus 0/60 for raw
67
+ diff (RD +0.450, 95% CI [0.333, 0.583], exact p=1.49e-8)
68
+ - Resolution-blind gate: P002 for Qwen3.6; P003 for GPT-OSS and Qwen3-Coder
69
+ - E10: 20 fresh tasks x 3 gated models x exact/hybrid/oracle retrieval = 180
70
+ - Hybrid resolved 1/60 model-task pairs versus exact 0/60 (RD +0.0167,
71
+ task-cluster CI [0, 0.05], exact p=1); oracle file names resolved 4/60
72
+ - E11/E12: 30 prespecified stochastic and context-scarcity sensitivity cells
73
+
74
+ ## Harness-design Study 5
75
+
76
+ - E13: 60 tasks x 8 lexical/syntax/dense combinations x 3 models = 1,440 cells
77
+ - E14: 20 tasks x 3 retrievers x 3 edit interfaces x 3 models = 540 cells
78
+ - E15: 20 tasks x 9 graph/query/interface/packing harnesses x 3 models = 540 cells
79
+ - E16: six deterministically selected archetypes x 17 fresh tasks x 3 models = 306 cells
80
+ - No E13 component main effect survives correction; E14 finds no adjusted
81
+ retrieval-by-action interaction
82
+ - Iteration and whole-file packing reliably increase cost without a demonstrated
83
+ applicable-patch benefit
84
+ - E16 quality-rank transfer is weak (accepted Spearman rho 0.04; applicable
85
+ rho -0.21), while token-cost rank is stable (rho 0.94)
86
+ - Only one E16 cell resolves, so the study reports stage-aware trends and
87
+ Pareto candidates rather than a universal winning harness
88
+
89
+ ## Repository layout
90
+
91
+ ```text
92
+ configs/
93
+ harnesses/ one immutable file per H000-H020 treatment
94
+ experiments/ staged E00-E16 experiment manifests
95
+ models/ fixed Qwen/LM Studio runtime policy
96
+ embeddings/ independently pinned dense-retrieval model
97
+ scenarios/ robustness perturbations
98
+ backends/ dense-index systems profiles
99
+ src/agent_harness/ schemas, LM Studio client, interfaces, metrics, telemetry
100
+ tasks/ task manifests and frozen split lists
101
+ results/ immutable local raw artifacts, analyses, and reports
102
+ docs/ protocol, catalog, metrics, runtime, and paper plan
103
+ tests/ standard-library unit tests
104
+ paper/ LaTeX manuscript and bibliography
105
+ output/pdf/ stable rendered research paper
106
+ ```
107
+
108
+ Dense retrieval uses the separately pinned **Qwen3 Embedding 0.6B** model
109
+ (`text-embedding-qwen3-embedding-0.6b`) through LM Studio. The local GGUF Q8_0
110
+ model produces 1,024-dimensional normalized vectors and exposes a 32,768-token
111
+ maximum context. The generative Qwen agent and embedding model remain separate
112
+ experimental components.
113
+
114
+ ## Quick start
115
+
116
+ Create a clean Python 3.11 environment and install the harness plus its pinned
117
+ research dependencies:
118
+
119
+ ```bash
120
+ python3.11 -m venv .venv
121
+ .venv/bin/python -m pip install --upgrade pip
122
+ .venv/bin/python -m pip install -r requirements.lock
123
+ .venv/bin/python -m pip install -e . --no-deps
124
+ ```
125
+
126
+ For the saved-evidence reproduction path, LM Studio and model weights are not
127
+ required. See [`REPRODUCING.md`](REPRODUCING.md) for the exact artifact and
128
+ inference workflows.
129
+
130
+ ```bash
131
+ PYTHONPATH=src python3 -m agent_harness.cli validate
132
+ PYTHONPATH=src python3 -m agent_harness.cli list-harnesses
133
+ PYTHONPATH=src python3 -m agent_harness.cli plan --experiment E03
134
+ PYTHONPATH=src python3 -m agent_harness.cli probe-model
135
+ PYTHONPATH=src python3 -m agent_harness.cli probe-embedding --infer
136
+ PYTHONPATH=src python3 -m agent_harness.cli run-pilot --experiment E00
137
+ PYTHONPATH=src .venv/bin/python -m agent_harness.cli run-live-agent --experiment E07
138
+ PYTHONPATH=src .venv/bin/python scripts/preflight_study2.py
139
+ PYTHONPATH=src .venv/bin/python -m agent_harness.cli run-study2
140
+ PYTHONPATH=src .venv/bin/python -m agent_harness.cli run-study2-reliability
141
+ PYTHONPATH=src .venv/bin/python scripts/analyze_confirmatory.py
142
+ MPLCONFIGDIR=/tmp/agent-harness-mpl PYTHONPATH=src .venv/bin/python scripts/analyze_live_agent.py
143
+ MPLCONFIGDIR=/tmp/agent-harness-mpl PYTHONPATH=src .venv/bin/python scripts/analyze_study2.py
144
+ MPLCONFIGDIR=/tmp/agent-harness-mpl PYTHONPATH=src .venv/bin/python scripts/analyze_study3.py
145
+ MPLCONFIGDIR=/tmp/agent-harness-mpl PYTHONPATH=src .venv/bin/python scripts/analyze_study4.py
146
+ PYTHONPATH=src .venv/bin/python scripts/analyze_study4_ancillary.py
147
+ MPLBACKEND=Agg MPLCONFIGDIR=/tmp/agent-harness-mpl PYTHONPATH=src .venv/bin/python scripts/analyze_study5.py
148
+ PYTHONPATH=src .venv/bin/python scripts/check_study5_paper_consistency.py
149
+ PYTHONPATH=src .venv/bin/python -m pytest -q
150
+ ```
151
+
152
+ `probe-model` discovers and validates the exact model key, MLX 4-bit variant,
153
+ 262,144-token loaded context, and reasoning default. Add `--infer` to perform a
154
+ small completion and verify the response semantics after discovery.
155
+
156
+ ## Scientific protocol
157
+
158
+ Start with the [scientific protocol](docs/SCIENTIFIC_PROTOCOL.md),
159
+ [harness catalog](docs/HARNESS_CATALOG.md), [LM Studio policy](docs/LM_STUDIO.md),
160
+ [metric and artifact schema](docs/METRICS_AND_ARTIFACTS.md), observed
161
+ [runtime baseline](docs/RUNTIME_BASELINE.md), [pilot dataset](docs/PILOT_DATASET.md),
162
+ [pilot results](docs/PILOT_RESULTS.md), [memory-safety protocol](docs/MEMORY_SAFETY.md),
163
+ and [paper plan](docs/PAPER_PLAN.md).
164
+ Study 2 is governed by its [preregistration](docs/STUDY2_PREREGISTRATION.md),
165
+ [implementation contract](docs/STUDY2_IMPLEMENTATION.md),
166
+ [design audit](docs/STUDY2_DESIGN_AUDIT.json), and
167
+ [preflight procedure](docs/STUDY2_PREFLIGHT.md).
168
+ Study 3 and 4 use [Study 3 preregistration](docs/STUDY3_PREREGISTRATION.md),
169
+ [Study 4 preregistration](docs/STUDY4_PREREGISTRATION.md), and their frozen
170
+ design audits, compatibility gate, preflights, and ancillary manifest audit.
171
+ Study 5 uses its [prospective preregistration](docs/STUDY5_PREREGISTRATION.md),
172
+ frozen cell manifests, and sequential E16 selection ledger.
173
+ Configuration files are part of the experimental treatment and become immutable
174
+ once a recorded run uses them. Any treatment change receives a new harness ID
175
+ or experiment version.
176
+
177
+ The completed manuscript is
178
+ [`output/pdf/dissecting_repository_scale_code_agent_harnesses.pdf`](output/pdf/dissecting_repository_scale_code_agent_harnesses.pdf).
179
+ Its source and build instructions are under [`paper/`](paper/). The immutable
180
+ local analysis used by the paper is
181
+ `results/derived/confirmatory_analysis_174ce71bcbce` plus
182
+ `results/derived/e07`, `results/derived/study2`, `results/derived/study3`,
183
+ `results/derived/study4`, `results/derived/study4_ancillary`, and
184
+ `results/derived/study5`.
185
+
186
+ ## Citation and release
187
+
188
+ Citation metadata is provided in [`CITATION.cff`](CITATION.cff), and the exact
189
+ Zenodo record fields are in [`.zenodo.json`](.zenodo.json). The canonical DOI
190
+ will be inserted after it is reserved; do not invent or reuse a DOI from
191
+ another project. Publication upload instructions are in
192
+ [`README_ZENODO.md`](README_ZENODO.md).
193
+
194
+ The repository intentionally contains one canonical PDF. Raw trajectories,
195
+ repository checkouts, index caches, and model weights are excluded from Git and
196
+ from the compact release; raw trajectories belong in a separate
197
+ checksum-addressed Zenodo archive.
198
+
199
+ ## Licensing
200
+
201
+ Original software is MIT licensed under [`LICENSE`](LICENSE). The manuscript,
202
+ documentation, figures, tables, and original derived research artifacts are CC
203
+ BY 4.0 under [`LICENSE-DATA`](LICENSE-DATA). Benchmark patches retain their
204
+ upstream licenses; see [`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md).
README_ZENODO.md ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Zenodo publication instructions
2
+
3
+ This repository is prepared for an open **Publication / Preprint** deposit.
4
+ Machine-readable record metadata is in `.zenodo.json`; citation metadata is in
5
+ `CITATION.cff`.
6
+
7
+ ## Record metadata
8
+
9
+ - **Title:** Dissecting Repository-Scale Code-Agent Harnesses: Retrieval,
10
+ Context, and Action Interfaces Under Model-in-the-Loop Evaluation
11
+ - **Creator:** Mandeep Sidhu (Independent Researcher)
12
+ - **Resource type:** Publication / Preprint
13
+ - **Access:** Open
14
+ - **Paper and derived-data license:** CC BY 4.0
15
+ - **Software license:** MIT
16
+ - **Version:** 1.0.0-preprint
17
+ - **Keywords:** code agents; repository-scale code editing; retrieval-augmented
18
+ generation; LLM evaluation; software engineering; agent harnesses;
19
+ reproducibility
20
+
21
+ Suggested description:
22
+
23
+ > A five-study controlled evaluation of repository-navigation and editing
24
+ > harnesses for local LLM coding agents. The release reports 5,453 audited
25
+ > experimental cells across three public repositories and three local models.
26
+ > Study 5 contributes 2,826 model-in-the-loop cells covering lexical, syntax,
27
+ > and dense retrieval components; retrieval-by-action interactions; graph,
28
+ > query, tool, and packing ablations; and a 17-task held-out validation. No
29
+ > universal harness winner is claimed: quality ranks transfer weakly,
30
+ > token-cost ranks transfer strongly, and only one held-out cell resolves.
31
+
32
+ ## Files to upload
33
+
34
+ Primary record:
35
+
36
+ 1. `output/pdf/dissecting_repository_scale_code_agent_harnesses.pdf`
37
+ 2. `output/releases/agent-harness-publication-package.tar.gz`
38
+ 3. `output/releases/agent-harness-publication-package.tar.gz.sha256`
39
+
40
+ Upload raw trajectories as a separate compressed file or a linked versioned
41
+ deposit. Include an archive-level SHA-256 manifest. Do not upload local model
42
+ weights, repository checkouts, embedding caches, or unrelated machine data.
43
+
44
+ The compact archive includes source, frozen configurations and task manifests,
45
+ derived cell-level evidence, preregistrations, preflight records, manuscript
46
+ source/PDF, licenses, citation metadata, and deterministic checksums. It
47
+ deliberately excludes raw trajectories and heavyweight local dependencies.
48
+
49
+ ## DOI and publication sequence
50
+
51
+ 1. Create a new Zenodo upload and **reserve its DOI**.
52
+ 2. Add the reserved DOI and record URL to `CITATION.cff`.
53
+ 3. Add the DOI to the manuscript's artifact-availability paragraph if a
54
+ self-contained DOI citation is desired.
55
+ 4. Commit those metadata changes and create a signed or annotated Git tag such
56
+ as `v1.0.0-preprint`.
57
+ 5. Rebuild the PDF and deterministic publication archive from the tagged
58
+ revision; update every checksum.
59
+ 6. Upload the three primary files and, if ready, the separately checksummed raw
60
+ archive.
61
+ 7. Review Zenodo's rendered PDF, creator order, title, abstract, licenses,
62
+ keywords, file checksums, and DOI before clicking **Publish**.
63
+
64
+ Once published, treat changed files or conclusions as a new Zenodo version,
65
+ not a silent replacement of the archived snapshot.
66
+
67
+ ## Final release gate
68
+
69
+ - The repository contains `LICENSE`, `LICENSE-DATA`, `CITATION.cff`,
70
+ `.zenodo.json`, `REPRODUCING.md`, and `THIRD_PARTY_NOTICES.md`.
71
+ - The author is no longer anonymous in the manuscript or PDF metadata.
72
+ - Exactly one canonical paper PDF is present.
73
+ - The full test suite and both paper-consistency checks pass.
74
+ - LaTeX has no undefined citation/reference or overfull-box warnings.
75
+ - Every rendered PDF page has been visually inspected.
76
+ - The compact archive builds twice to the same SHA-256 from the release commit.
77
+ - Secret scanning and executable-source portability checks pass.
REPRODUCING.md ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Reproducing the agent-harness study
2
+
3
+ This repository separates inexpensive artifact verification from expensive
4
+ model-in-the-loop reruns. Start with the saved-evidence path; it validates the
5
+ paper without loading an LLM or embedding model.
6
+
7
+ ## Requirements
8
+
9
+ - macOS on the recorded Apple Silicon host for an exact runtime replication,
10
+ or Python 3.11+ on another platform for analysis-only reproduction.
11
+ - Git and Go 1.26.5 for reconstructing and validating benchmark tasks.
12
+ - LM Studio 0.4.16+2 and the exact model variants in `docs/LM_STUDIO.md` only
13
+ when rerunning inference.
14
+ - No PyTorch workload is used. Any future Torch experiment must use MPS; CPU
15
+ and CUDA runs are outside the repository's execution policy.
16
+
17
+ Create an analysis environment:
18
+
19
+ ```bash
20
+ python3.11 -m venv .venv
21
+ .venv/bin/python -m pip install --upgrade pip
22
+ .venv/bin/python -m pip install -e .
23
+ .venv/bin/python -m pip install -r requirements-analysis.txt
24
+ ```
25
+
26
+ For exact dependency versions, install `requirements.lock` instead of the two
27
+ package-install commands above.
28
+
29
+ ## Verify the archived evidence
30
+
31
+ The compact Zenodo archive contains all derived inputs required by these
32
+ commands:
33
+
34
+ ```bash
35
+ PYTHONPATH=src .venv/bin/python -m agent_harness.cli validate
36
+ PYTHONPATH=src .venv/bin/python -m pytest -q
37
+ PYTHONPATH=src .venv/bin/python scripts/check_study2_paper_consistency.py
38
+ PYTHONPATH=src .venv/bin/python scripts/check_study5_paper_consistency.py
39
+ MPLBACKEND=Agg MPLCONFIGDIR=/tmp/agent-harness-mpl \
40
+ PYTHONPATH=src .venv/bin/python scripts/analyze_study5.py
41
+ ```
42
+
43
+ Earlier-study analysis commands and frozen revisions are listed in
44
+ `paper/reproducibility_manifest.md`. The fail-closed Study 5 analysis verifies
45
+ the exact E13--E16 cell grids, revisions, raw hashes, model-residency records,
46
+ required artifacts, and final outcome funnels before emitting results.
47
+
48
+ ## Build the paper
49
+
50
+ ```bash
51
+ mkdir -p tmp/pdfs
52
+ cd paper
53
+ latexmk -pdf -interaction=nonstopmode -halt-on-error \
54
+ -outdir=../tmp/pdfs main.tex
55
+ cp ../tmp/pdfs/main.pdf \
56
+ ../output/pdf/dissecting_repository_scale_code_agent_harnesses.pdf
57
+ ```
58
+
59
+ Then verify the PDF against `output/pdf/SHA256SUMS` and inspect a PNG rendering
60
+ of every page. The publication package is rebuilt only after committing:
61
+
62
+ ```bash
63
+ PYTHONPATH=src .venv/bin/python scripts/build_publication_package.py
64
+ ```
65
+
66
+ ## Rerun inference
67
+
68
+ Inference requires the ignored repository checkouts under `data/repos`, the
69
+ ignored indexes, and the exact local LM Studio models documented in
70
+ `docs/LM_STUDIO.md`. Run the matching preflight before every experiment family.
71
+ For Study 5:
72
+
73
+ ```bash
74
+ PYTHONPATH=src .venv/bin/python scripts/preflight_study5.py
75
+ PYTHONPATH=src .venv/bin/python -m agent_harness.cli run-study5 --experiment E13
76
+ PYTHONPATH=src .venv/bin/python -m agent_harness.cli run-study5 --experiment E14
77
+ PYTHONPATH=src .venv/bin/python -m agent_harness.cli run-study5 --experiment E15
78
+ PYTHONPATH=src .venv/bin/python -m agent_harness.cli run-study5 --experiment E16
79
+ ```
80
+
81
+ The runner uses `lms` for server lifecycle and official LM Studio APIs for
82
+ model inspection, load, and unload. Generative and embedding models are never
83
+ intentionally co-resident. Durable run identities make interruption recovery
84
+ idempotent.
85
+
86
+ ## Artifact boundary
87
+
88
+ The compact archive excludes raw trajectories, repository checkouts, index
89
+ caches, and model weights. Raw trajectories should be uploaded as a separate
90
+ checksum-addressed Zenodo file or linked deposit. Some immutable provenance
91
+ records retain machine-local paths; these identify the original environment
92
+ and are not required paths for reproduction.
THIRD_PARTY_NOTICES.md ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Third-party notices
2
+
3
+ The research harness is original MIT-licensed software. The task manifests,
4
+ source/test patch excerpts, and validation records describe changes from three
5
+ public upstream projects. Those excerpts remain subject to their upstream
6
+ licenses and are not relicensed by this repository:
7
+
8
+ - [GitLab Runner](https://gitlab.com/gitlab-org/gitlab-runner), MIT License.
9
+ - [GitLab CLI (`glab`)](https://gitlab.com/gitlab-org/cli), MIT License; its
10
+ upstream documentation may additionally use CC BY-SA 4.0.
11
+ - [python-gitlab](https://github.com/python-gitlab/python-gitlab), GNU Lesser
12
+ General Public License v3.0.
13
+
14
+ Each task manifest records the upstream repository identity and exact source
15
+ commit. Repository checkouts are not redistributed in the compact release.
16
+ Users who reconstruct tasks should retain the corresponding upstream copyright
17
+ and license notices.
18
+
19
+ Model weights are not included. Model and embedding names are used for
20
+ scientific identification only; their original licenses and usage terms apply.
21
+ LM Studio, FAISS, Tree-sitter, sqlite-vec, Python packages, and cited agent
22
+ systems are independent third-party projects and are not bundled beyond normal
23
+ package metadata or bibliographic references.
configs/agent_systems/A001_agentless_controlled.toml ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ system_id = "A001"
3
+ name = "agentless_controlled"
4
+ family = "agentless"
5
+ description = "Controlled three-stage localization, repair, and validation adaptation of Agentless using the same local model and context limit."
6
+ implementation = "local_reimplementation"
7
+ model_calls = 3
8
+ max_tool_calls = 0
9
+ max_test_runs = 1
10
+ interactive = false
11
+ same_model_required = true
12
+ reference = "https://arxiv.org/abs/2407.01489"
configs/agent_systems/A002_swe_agent_style.toml ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ system_id = "A002"
3
+ name = "swe_agent_style"
4
+ family = "swe_agent"
5
+ description = "Controlled interactive search/read/edit/test adaptation of the SWE-agent agent-computer interface using the same local model and budgets."
6
+ implementation = "local_reimplementation"
7
+ model_calls = 12
8
+ max_tool_calls = 12
9
+ max_test_runs = 2
10
+ interactive = true
11
+ same_model_required = true
12
+ reference = "https://arxiv.org/abs/2405.15793"
configs/backends/B001_faiss_flat.toml ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ backend_id = "B001"
3
+ name = "faiss_flat"
4
+ kind = "exact_vector_index"
5
+ distance = "cosine_via_normalized_inner_product"
6
+ description = "Exact FAISS flat search; primary dense-retrieval reference backend."
7
+ library = "faiss-cpu"
8
+ version = "1.14.3"
9
+ index_type = "IndexFlatIP"
10
+ query_repetitions = 10
configs/backends/B002_faiss_approximate.toml ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ backend_id = "B002"
3
+ name = "faiss_approximate"
4
+ kind = "approximate_vector_index"
5
+ distance = "cosine_via_normalized_inner_product"
6
+ description = "Approximate FAISS HNSW profile frozen before E05 execution."
7
+ library = "faiss-cpu"
8
+ version = "1.14.3"
9
+ index_type = "IndexHNSWFlat"
10
+ neighbors = 32
11
+ ef_construction = 80
12
+ ef_search = 64
13
+ query_repetitions = 10
configs/backends/B003_vector_database.toml ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ backend_id = "B003"
3
+ name = "vector_database"
4
+ kind = "persistent_vector_database"
5
+ distance = "cosine"
6
+ description = "Persistent SQLite-vec exact-search profile frozen before E05 execution."
7
+ library = "sqlite-vec"
8
+ version = "0.1.9"
9
+ index_type = "vec0"
10
+ query_repetitions = 10
configs/context/E12_context_cells.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {"context_budget": 16384, "harness_id": "H000", "model_id": "M002", "task_id": "TASK_S4_R001_003"},
4
+ {"context_budget": 65536, "harness_id": "H000", "model_id": "M002", "task_id": "TASK_S4_R001_003"},
5
+ {"context_budget": 16384, "harness_id": "H007", "model_id": "M002", "task_id": "TASK_S4_R001_003"},
6
+ {"context_budget": 65536, "harness_id": "H007", "model_id": "M002", "task_id": "TASK_S4_R001_003"},
7
+ {"context_budget": 16384, "harness_id": "H000", "model_id": "M002", "task_id": "TASK_S4_R002_004"},
8
+ {"context_budget": 65536, "harness_id": "H000", "model_id": "M002", "task_id": "TASK_S4_R002_004"},
9
+ {"context_budget": 16384, "harness_id": "H007", "model_id": "M002", "task_id": "TASK_S4_R002_004"},
10
+ {"context_budget": 65536, "harness_id": "H007", "model_id": "M002", "task_id": "TASK_S4_R002_004"},
11
+ {"context_budget": 16384, "harness_id": "H000", "model_id": "M002", "task_id": "TASK_S4_R003_010"},
12
+ {"context_budget": 65536, "harness_id": "H000", "model_id": "M002", "task_id": "TASK_S4_R003_010"},
13
+ {"context_budget": 16384, "harness_id": "H007", "model_id": "M002", "task_id": "TASK_S4_R003_010"},
14
+ {"context_budget": 65536, "harness_id": "H007", "model_id": "M002", "task_id": "TASK_S4_R003_010"}
15
+ ],
16
+ "description": "Qwen3.6 H000/H007 context-scarcity sensitivity on one SHA-selected task per repository.",
17
+ "experiment_id": "E12",
18
+ "schema_version": 1,
19
+ "seeds": [0],
20
+ "selection_salt": "study4-ancillary-20260719",
21
+ "temperature": 0.0,
22
+ "top_p": 1.0
23
+ }
configs/edit_interfaces/P001_unified_diff.toml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ interface_id = "P001"
3
+ name = "unified_diff"
4
+ description = "Strict raw unified-diff action identical to the Study 2 patch executor contract."
5
+ edit_tool = "apply_patch"
6
+ prompt_contract = "Call apply_patch with a raw standard unified diff using a/ and b/ paths; do not use Begin Patch markers."
configs/edit_interfaces/P002_exact_replace.toml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ interface_id = "P002"
3
+ name = "exact_replace"
4
+ description = "Structured exact-text replacement over one uniquely matching source span."
5
+ edit_tool = "replace_text"
6
+ prompt_contract = "Call replace_text with a tracked path, exact old_text copied from read_file, and replacement new_text; old_text must occur exactly once."
configs/edit_interfaces/P003_whole_file.toml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ interface_id = "P003"
3
+ name = "whole_file"
4
+ description = "Structured whole-file rewrite of one existing tracked production source file."
5
+ edit_tool = "write_file"
6
+ prompt_contract = "Call write_file with a tracked path and the complete replacement file content; partial fragments are invalid."
configs/embeddings/emb001_qwen3_embedding_0_6b.toml ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ embedding_id = "EMB001"
3
+ status = "ready"
4
+ provider = "lm_studio_local"
5
+ base_url = "http://127.0.0.1:1234"
6
+ api_token_env = "LM_STUDIO_API_TOKEN"
7
+ discovery_endpoint = "/api/v1/models"
8
+ inference_endpoint = "/v1/embeddings"
9
+ model_key = "text-embedding-qwen3-embedding-0.6b"
10
+ expected_display_name = "Qwen3 Embedding 0.6B"
11
+ expected_format = "gguf"
12
+ expected_quantization = "Q8_0"
13
+ expected_size_bytes = 639150592
14
+ max_context_length = 32768
15
+ loaded_context_length = 8192
16
+ vector_dimension = 1024
17
+ normalized = true
18
+ query_instruction = "Retrieve GitLab Runner code relevant to resolving the described software issue."
19
+ document_prefix_template = "File: {path}\n"
20
+ chunk_lines = 120
21
+ chunk_overlap_lines = 20
22
+ chunk_char_limit = 16000
23
+ batch_size = 16
24
+ notes = "Pinned local Qwen3 embedding model for code-retrieval treatments; verified through LM Studio on 2026-07-17."
configs/embeddings/emb002_qwen3_code_generic.toml ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ embedding_id = "EMB002"
3
+ status = "ready"
4
+ provider = "lm_studio_local"
5
+ base_url = "http://127.0.0.1:1234"
6
+ api_token_env = "LM_STUDIO_API_TOKEN"
7
+ discovery_endpoint = "/api/v1/models"
8
+ inference_endpoint = "/v1/embeddings"
9
+ model_key = "text-embedding-qwen3-embedding-0.6b"
10
+ expected_display_name = "Qwen3 Embedding 0.6B"
11
+ expected_format = "gguf"
12
+ expected_quantization = "Q8_0"
13
+ expected_size_bytes = 639150592
14
+ max_context_length = 32768
15
+ loaded_context_length = 8192
16
+ vector_dimension = 1024
17
+ normalized = true
18
+ query_instruction = "Retrieve repository code relevant to resolving the described software issue."
19
+ document_prefix_template = "File: {path}\n"
20
+ chunk_lines = 120
21
+ chunk_overlap_lines = 20
22
+ chunk_char_limit = 16000
23
+ batch_size = 16
24
+ notes = "Repository-neutral Study 2 profile of the pinned local Qwen3 embedding model."
configs/experiments/E00_development_pilot.toml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ experiment_id = "E00"
3
+ name = "development_pilot"
4
+ mode = "static_retrieval"
5
+ description = "Small non-confirmatory pipeline pilot over real GitLab Runner fixes."
6
+ harness_ids = ["H000", "H001", "H003"]
7
+ model_ids = ["M001"]
8
+ embedding_id = "EMB001"
9
+ task_split = "pilot_retrieval"
10
+ context_budgets = [65536]
11
+ seeds = [0]
12
+ repetitions = 1
13
+ max_tool_calls = 1
14
+ max_test_runs = 1
15
+ timeout_seconds = 900
configs/experiments/E01_retrieval_factorial.toml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ experiment_id = "E01"
3
+ name = "retrieval_factorial"
4
+ mode = "static_retrieval"
5
+ description = "Factorial ablation of lexical, syntax, and dense retrieval, plus graph depth."
6
+ harness_ids = ["H000", "H001", "H002", "H003", "H004", "H005", "H006", "H007", "H008", "H009"]
7
+ model_ids = ["M001"]
8
+ embedding_id = "EMB001"
9
+ task_split = "retrieval_confirmatory"
10
+ context_budgets = [65536]
11
+ seeds = [0]
12
+ repetitions = 1
13
+ max_tool_calls = 1
14
+ max_test_runs = 1
15
+ timeout_seconds = 900
configs/experiments/E02_interaction_and_packing.toml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ experiment_id = "E02"
3
+ name = "interaction_and_packing"
4
+ mode = "interactive_localization"
5
+ description = "Ablates query policy, tool interface, and context-packing strategy around a fixed retrieval stack."
6
+ harness_ids = ["H008", "H010", "H011", "H012", "H013", "H014", "H015"]
7
+ model_ids = ["M001"]
8
+ embedding_id = "EMB001"
9
+ task_split = "localization_confirmatory"
10
+ context_budgets = [65536]
11
+ seeds = [0]
12
+ repetitions = 1
13
+ max_tool_calls = 30
14
+ max_test_runs = 1
15
+ timeout_seconds = 1200
configs/experiments/E03_end_to_end_repair.toml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ experiment_id = "E03"
3
+ name = "end_to_end_repair"
4
+ mode = "end_to_end_repair"
5
+ description = "Measures repository localization, patch generation, validation, and resource efficiency."
6
+ harness_ids = ["H000", "H001", "H002", "H003", "H004", "H005", "H006", "H007", "H010", "H019"]
7
+ model_ids = ["M001"]
8
+ embedding_id = "EMB001"
9
+ task_split = "end_to_end_confirmatory"
10
+ context_budgets = [65536]
11
+ seeds = [0]
12
+ repetitions = 1
13
+ max_tool_calls = 50
14
+ max_test_runs = 5
15
+ timeout_seconds = 1800
configs/experiments/E04_robustness.toml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ experiment_id = "E04"
3
+ name = "robustness"
4
+ mode = "robustness"
5
+ description = "Tests selected baselines under stale-index and plausible-distractor perturbations."
6
+ harness_ids = ["H000", "H008", "H010"]
7
+ model_ids = ["M001"]
8
+ embedding_id = "EMB001"
9
+ task_split = "robustness"
10
+ context_budgets = [65536]
11
+ seeds = [0, 1, 2]
12
+ repetitions = 1
13
+ max_tool_calls = 50
14
+ max_test_runs = 5
15
+ timeout_seconds = 1800
configs/experiments/E05_index_backend.toml ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ experiment_id = "E05"
3
+ name = "index_backend"
4
+ mode = "index_backend"
5
+ description = "Systems comparison of pinned dense-index implementations under identical retrieval inputs."
6
+ harness_ids = ["H003", "H005", "H007"]
7
+ backend_ids = ["B001", "B002", "B003"]
8
+ model_ids = ["M001"]
9
+ embedding_id = "EMB001"
10
+ task_split = "retrieval_confirmatory"
11
+ context_budgets = [65536]
12
+ seeds = [0, 1, 2]
13
+ repetitions = 1
14
+ max_tool_calls = 1
15
+ max_test_runs = 1
16
+ timeout_seconds = 900
configs/experiments/E06_llm_localization_pilot.toml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ experiment_id = "E06"
3
+ name = "llm_localization_pilot"
4
+ mode = "llm_localization"
5
+ description = "Development-only blinded Qwen localization over frozen E00 retrieval rankings."
6
+ harness_ids = ["H000", "H001", "H003"]
7
+ model_ids = ["M001"]
8
+ embedding_id = "EMB001"
9
+ task_split = "pilot_retrieval"
10
+ context_budgets = [65536]
11
+ seeds = [0]
12
+ repetitions = 1
13
+ max_tool_calls = 1
14
+ max_test_runs = 1
15
+ timeout_seconds = 900
configs/experiments/E07_live_agent_repair.toml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ experiment_id = "E07"
3
+ name = "live_agent_repair"
4
+ mode = "live_agent_repair"
5
+ description = "Prospective live search/read/edit/test agent evaluation informed by E01-E05."
6
+ harness_ids = ["H000", "H003", "H007", "H008", "H011", "H016", "H018"]
7
+ model_ids = ["M002"]
8
+ embedding_id = "EMB001"
9
+ task_split = "end_to_end_confirmatory"
10
+ context_budgets = [65536]
11
+ seeds = [0]
12
+ repetitions = 1
13
+ max_tool_calls = 12
14
+ max_test_runs = 2
15
+ timeout_seconds = 1800
configs/experiments/E08_study2_live_agent.toml ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ experiment_id = "E08"
3
+ name = "study2_multi_repository_live_agent"
4
+ mode = "study2_live_agent"
5
+ description = "Prospective powered multi-repository, multi-language, two-model live-agent replication and controlled system comparison."
6
+ harness_ids = ["H000", "H003", "H007", "H011", "H018"]
7
+ agent_system_ids = ["A001", "A002"]
8
+ repository_ids = ["R001", "R002", "R003"]
9
+ model_ids = ["M002", "M003"]
10
+ embedding_id = "EMB002"
11
+ task_split = "study2_confirmatory"
12
+ context_budgets = [65536]
13
+ seeds = [0]
14
+ repetitions = 1
15
+ max_tool_calls = 12
16
+ max_test_runs = 2
17
+ timeout_seconds = 1800
configs/experiments/E09_protocol_interface.toml ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ experiment_id = "E09"
3
+ name = "protocol_normalized_edit_interface"
4
+ mode = "protocol_interface"
5
+ description = "Prospective model-by-edit-interface study holding oracle file exposure, task, context, tools, tests, and runtime constant."
6
+ harness_ids = ["H018"]
7
+ edit_interface_ids = ["P001", "P002", "P003"]
8
+ repository_ids = ["R001", "R002", "R003"]
9
+ model_ids = ["M002", "M003", "M004"]
10
+ embedding_id = "EMB002"
11
+ task_split = "study3_protocol"
12
+ context_budgets = [65536]
13
+ seeds = [0]
14
+ repetitions = 1
15
+ max_tool_calls = 12
16
+ max_test_runs = 2
17
+ timeout_seconds = 1800
configs/experiments/E10_fresh_retrieval.toml ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ experiment_id = "E10"
3
+ name = "protocol_normalized_fresh_retrieval"
4
+ mode = "protocol_interface"
5
+ description = "Fresh-task multi-repository retrieval replication using the outcome-blind E09 model-specific edit-interface gate."
6
+ harness_ids = ["H000", "H007", "H018"]
7
+ edit_interface_ids = ["P002", "P003"]
8
+ repository_ids = ["R001", "R002", "R003"]
9
+ model_ids = ["M002", "M003", "M004"]
10
+ embedding_id = "EMB002"
11
+ task_split = "study4_fresh"
12
+ context_budgets = [65536]
13
+ seeds = [0]
14
+ repetitions = 1
15
+ max_tool_calls = 12
16
+ max_test_runs = 2
17
+ timeout_seconds = 1800
configs/experiments/E11_study4_reliability.toml ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ experiment_id = "E11"
3
+ name = "study4_stochastic_reliability"
4
+ mode = "protocol_interface"
5
+ description = "Reduced prespecified Study 4 stochastic reliability sensitivity over a sparse balanced manifest."
6
+ harness_ids = ["H000", "H007"]
7
+ edit_interface_ids = ["P002", "P003"]
8
+ repository_ids = ["R001", "R002", "R003"]
9
+ model_ids = ["M002", "M003", "M004"]
10
+ embedding_id = "EMB002"
11
+ task_split = "study4_fresh"
12
+ context_budgets = [65536]
13
+ seeds = [0, 1, 2]
14
+ repetitions = 1
15
+ max_tool_calls = 12
16
+ max_test_runs = 2
17
+ timeout_seconds = 1800
configs/experiments/E12_study4_context.toml ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ experiment_id = "E12"
3
+ name = "study4_context_scarcity"
4
+ mode = "protocol_interface"
5
+ description = "Reduced prespecified Study 4 Qwen3.6 context-scarcity sensitivity at 16,384 and 65,536 tokens."
6
+ harness_ids = ["H000", "H007"]
7
+ edit_interface_ids = ["P002"]
8
+ repository_ids = ["R001", "R002", "R003"]
9
+ model_ids = ["M002"]
10
+ embedding_id = "EMB002"
11
+ task_split = "study4_fresh"
12
+ context_budgets = [16384, 65536]
13
+ seeds = [0]
14
+ repetitions = 1
15
+ max_tool_calls = 12
16
+ max_test_runs = 2
17
+ timeout_seconds = 1800
configs/experiments/E13_component_factorial.toml ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ experiment_id = "E13"
3
+ name = "end_to_end_retrieval_component_factorial"
4
+ mode = "protocol_interface"
5
+ description = "Study 5 end-to-end 2^3 lexical-by-syntax-by-dense factorial with model-specific E09-gated edit actions."
6
+ harness_ids = ["H000", "H001", "H002", "H003", "H004", "H005", "H006", "H007"]
7
+ edit_interface_ids = ["P002", "P003"]
8
+ repository_ids = ["R001", "R002", "R003"]
9
+ model_ids = ["M002", "M003", "M004"]
10
+ embedding_id = "EMB002"
11
+ task_split = "study2_confirmatory"
12
+ context_budgets = [65536]
13
+ seeds = [0]
14
+ repetitions = 1
15
+ max_tool_calls = 12
16
+ max_test_runs = 2
17
+ timeout_seconds = 1800
configs/experiments/E14_retrieval_action_factorial.toml ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ experiment_id = "E14"
3
+ name = "retrieval_by_action_interface_factorial"
4
+ mode = "protocol_interface"
5
+ description = "Study 5 three-by-three retrieval-architecture by edit-action factorial on the fresh Study 4 task panel."
6
+ harness_ids = ["H000", "H006", "H007"]
7
+ edit_interface_ids = ["P001", "P002", "P003"]
8
+ repository_ids = ["R001", "R002", "R003"]
9
+ model_ids = ["M002", "M003", "M004"]
10
+ embedding_id = "EMB002"
11
+ task_split = "study4_fresh"
12
+ context_budgets = [65536]
13
+ seeds = [0]
14
+ repetitions = 1
15
+ max_tool_calls = 12
16
+ max_test_runs = 2
17
+ timeout_seconds = 1800
configs/experiments/E15_navigation_factorial.toml ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ experiment_id = "E15"
3
+ name = "end_to_end_navigation_and_packing_blocks"
4
+ mode = "protocol_interface"
5
+ description = "Study 5 focused end-to-end graph-depth, query-policy, search-interface, and packing blocks with gated edit actions."
6
+ harness_ids = ["H007", "H008", "H009", "H010", "H011", "H012", "H013", "H014", "H015"]
7
+ edit_interface_ids = ["P002", "P003"]
8
+ repository_ids = ["R001", "R002", "R003"]
9
+ model_ids = ["M002", "M003", "M004"]
10
+ embedding_id = "EMB002"
11
+ task_split = "study4_fresh"
12
+ context_budgets = [65536]
13
+ seeds = [0]
14
+ repetitions = 1
15
+ max_tool_calls = 12
16
+ max_test_runs = 2
17
+ timeout_seconds = 1800
configs/experiments/E16_heldout_validation.toml ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ experiment_id = "E16"
3
+ name = "heldout_harness_rank_validation"
4
+ mode = "protocol_interface"
5
+ description = "Study 5 held-out validation of six deterministically selected harness archetypes on 17 outcome-blind fresh tasks."
6
+ harness_ids = ["H000", "H001", "H002", "H007", "H008", "H014"]
7
+ edit_interface_ids = ["P002", "P003"]
8
+ repository_ids = ["R002", "R003"]
9
+ model_ids = ["M002", "M003", "M004"]
10
+ embedding_id = "EMB002"
11
+ task_split = "study5_fresh"
12
+ context_budgets = [65536]
13
+ seeds = [0]
14
+ repetitions = 1
15
+ max_tool_calls = 12
16
+ max_test_runs = 2
17
+ timeout_seconds = 1800
configs/gates/E09_model_interface_gate.json ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "source_experiment": "E09",
4
+ "selection_is_outcome_blind_to_resolution": true,
5
+ "qualification": {
6
+ "minimum_accepted_edit_cells_out_of_60": 12,
7
+ "minimum_attempt_acceptance_rate": 0.5
8
+ },
9
+ "ranking": [
10
+ "accepted_edit_cell_rate_descending",
11
+ "applicable_final_patch_rate_descending",
12
+ "mean_total_tokens_ascending",
13
+ "interface_id_ascending"
14
+ ],
15
+ "selected": {
16
+ "M002": "P002",
17
+ "M003": "P003",
18
+ "M004": "P003"
19
+ },
20
+ "source_analysis": "results/derived/study3/e09_analysis.json",
21
+ "source_raw_digest": "63f9592fe9f23d884384c80c734df448155a602bdf815a94fc70f1a687cab293"
22
+ }
configs/harnesses/H000_exact_raw.toml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ harness_id = "H000"
3
+ name = "exact_raw"
4
+ description = "Exact path, substring, and regular-expression search over raw files."
5
+ exact_search = true
6
+ lexical = false
7
+ syntax = "raw"
8
+ dense = false
9
+ graph_hops = 0
10
+ query_policy = "one_shot"
11
+ interface = "unified"
12
+ packing = "ranked_snippets"
13
+ fusion = "none"
14
+ control = "none"
15
+ adaptive = false
configs/harnesses/H001_lexical.toml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ harness_id = "H001"
3
+ name = "lexical"
4
+ description = "Exact search augmented with BM25 and fuzzy lexical retrieval."
5
+ exact_search = true
6
+ lexical = true
7
+ syntax = "raw"
8
+ dense = false
9
+ graph_hops = 0
10
+ query_policy = "one_shot"
11
+ interface = "unified"
12
+ packing = "ranked_snippets"
13
+ fusion = "none"
14
+ control = "none"
15
+ adaptive = false
configs/harnesses/H002_syntax.toml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ harness_id = "H002"
3
+ name = "syntax"
4
+ description = "Exact search augmented with Tree-sitter symbols and structural chunks."
5
+ exact_search = true
6
+ lexical = false
7
+ syntax = "tree_sitter"
8
+ dense = false
9
+ graph_hops = 0
10
+ query_policy = "one_shot"
11
+ interface = "unified"
12
+ packing = "ranked_snippets"
13
+ fusion = "none"
14
+ control = "none"
15
+ adaptive = false
configs/harnesses/H003_dense.toml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ harness_id = "H003"
3
+ name = "dense"
4
+ description = "Exact search augmented with code-embedding retrieval."
5
+ exact_search = true
6
+ lexical = false
7
+ syntax = "raw"
8
+ dense = true
9
+ graph_hops = 0
10
+ query_policy = "one_shot"
11
+ interface = "unified"
12
+ packing = "ranked_snippets"
13
+ fusion = "none"
14
+ control = "none"
15
+ adaptive = false
configs/harnesses/H004_lexical_syntax.toml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ harness_id = "H004"
3
+ name = "lexical_syntax"
4
+ description = "BM25/fuzzy and Tree-sitter retrieval fused with reciprocal-rank fusion."
5
+ exact_search = true
6
+ lexical = true
7
+ syntax = "tree_sitter"
8
+ dense = false
9
+ graph_hops = 0
10
+ query_policy = "one_shot"
11
+ interface = "unified"
12
+ packing = "ranked_snippets"
13
+ fusion = "rrf"
14
+ control = "none"
15
+ adaptive = false
configs/harnesses/H005_lexical_dense.toml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ harness_id = "H005"
3
+ name = "lexical_dense"
4
+ description = "BM25/fuzzy and embedding retrieval fused with reciprocal-rank fusion."
5
+ exact_search = true
6
+ lexical = true
7
+ syntax = "raw"
8
+ dense = true
9
+ graph_hops = 0
10
+ query_policy = "one_shot"
11
+ interface = "unified"
12
+ packing = "ranked_snippets"
13
+ fusion = "rrf"
14
+ control = "none"
15
+ adaptive = false
configs/harnesses/H006_syntax_dense.toml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ harness_id = "H006"
3
+ name = "syntax_dense"
4
+ description = "Tree-sitter and embedding retrieval fused with reciprocal-rank fusion."
5
+ exact_search = true
6
+ lexical = false
7
+ syntax = "tree_sitter"
8
+ dense = true
9
+ graph_hops = 0
10
+ query_policy = "one_shot"
11
+ interface = "unified"
12
+ packing = "ranked_snippets"
13
+ fusion = "rrf"
14
+ control = "none"
15
+ adaptive = false
configs/harnesses/H007_full_retrieval.toml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ harness_id = "H007"
3
+ name = "full_retrieval"
4
+ description = "Lexical, Tree-sitter, and embedding retrieval with reciprocal-rank fusion."
5
+ exact_search = true
6
+ lexical = true
7
+ syntax = "tree_sitter"
8
+ dense = true
9
+ graph_hops = 0
10
+ query_policy = "one_shot"
11
+ interface = "unified"
12
+ packing = "ranked_snippets"
13
+ fusion = "rrf"
14
+ control = "none"
15
+ adaptive = false
configs/harnesses/H008_graph_one_hop.toml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ harness_id = "H008"
3
+ name = "graph_one_hop"
4
+ description = "Full retrieval followed by one-hop structural graph expansion."
5
+ exact_search = true
6
+ lexical = true
7
+ syntax = "tree_sitter"
8
+ dense = true
9
+ graph_hops = 1
10
+ query_policy = "one_shot"
11
+ interface = "unified"
12
+ packing = "ranked_snippets"
13
+ fusion = "rrf"
14
+ control = "none"
15
+ adaptive = false
configs/harnesses/H009_graph_two_hop.toml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ harness_id = "H009"
3
+ name = "graph_two_hop"
4
+ description = "Full retrieval followed by two-hop structural graph expansion."
5
+ exact_search = true
6
+ lexical = true
7
+ syntax = "tree_sitter"
8
+ dense = true
9
+ graph_hops = 2
10
+ query_policy = "one_shot"
11
+ interface = "unified"
12
+ packing = "ranked_snippets"
13
+ fusion = "rrf"
14
+ control = "none"
15
+ adaptive = false
configs/harnesses/H010_iterative_unified.toml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ schema_version = 1
2
+ harness_id = "H010"
3
+ name = "iterative_unified"
4
+ description = "One-hop full retrieval with iterative query reformulation through one search tool."
5
+ exact_search = true
6
+ lexical = true
7
+ syntax = "tree_sitter"
8
+ dense = true
9
+ graph_hops = 1
10
+ query_policy = "iterative"
11
+ interface = "unified"
12
+ packing = "ranked_snippets"
13
+ fusion = "rrf"
14
+ control = "none"
15
+ adaptive = false