Publish agent harness research code and paper artifacts
Browse filesValidated 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
- .gitattributes +2 -0
- .gitignore +25 -0
- .zenodo.json +25 -0
- CITATION.cff +24 -0
- LICENSE +26 -0
- LICENSE-DATA +16 -0
- README.md +202 -1
- README_ZENODO.md +77 -0
- REPRODUCING.md +92 -0
- THIRD_PARTY_NOTICES.md +23 -0
- configs/agent_systems/A001_agentless_controlled.toml +12 -0
- configs/agent_systems/A002_swe_agent_style.toml +12 -0
- configs/backends/B001_faiss_flat.toml +10 -0
- configs/backends/B002_faiss_approximate.toml +13 -0
- configs/backends/B003_vector_database.toml +10 -0
- configs/context/E12_context_cells.json +23 -0
- configs/edit_interfaces/P001_unified_diff.toml +6 -0
- configs/edit_interfaces/P002_exact_replace.toml +6 -0
- configs/edit_interfaces/P003_whole_file.toml +6 -0
- configs/embeddings/emb001_qwen3_embedding_0_6b.toml +24 -0
- configs/embeddings/emb002_qwen3_code_generic.toml +24 -0
- configs/experiments/E00_development_pilot.toml +15 -0
- configs/experiments/E01_retrieval_factorial.toml +15 -0
- configs/experiments/E02_interaction_and_packing.toml +15 -0
- configs/experiments/E03_end_to_end_repair.toml +15 -0
- configs/experiments/E04_robustness.toml +15 -0
- configs/experiments/E05_index_backend.toml +16 -0
- configs/experiments/E06_llm_localization_pilot.toml +15 -0
- configs/experiments/E07_live_agent_repair.toml +15 -0
- configs/experiments/E08_study2_live_agent.toml +17 -0
- configs/experiments/E09_protocol_interface.toml +17 -0
- configs/experiments/E10_fresh_retrieval.toml +17 -0
- configs/experiments/E11_study4_reliability.toml +17 -0
- configs/experiments/E12_study4_context.toml +17 -0
- configs/experiments/E13_component_factorial.toml +17 -0
- configs/experiments/E14_retrieval_action_factorial.toml +17 -0
- configs/experiments/E15_navigation_factorial.toml +17 -0
- configs/experiments/E16_heldout_validation.toml +17 -0
- configs/gates/E09_model_interface_gate.json +22 -0
- configs/harnesses/H000_exact_raw.toml +15 -0
- configs/harnesses/H001_lexical.toml +15 -0
- configs/harnesses/H002_syntax.toml +15 -0
- configs/harnesses/H003_dense.toml +15 -0
- configs/harnesses/H004_lexical_syntax.toml +15 -0
- configs/harnesses/H005_lexical_dense.toml +15 -0
- configs/harnesses/H006_syntax_dense.toml +15 -0
- configs/harnesses/H007_full_retrieval.toml +15 -0
- configs/harnesses/H008_graph_one_hop.toml +15 -0
- configs/harnesses/H009_graph_two_hop.toml +15 -0
- 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:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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
|