# Harness² research ledger

Research date: October 19, 2026. This ledger accompanies the ContextOS article “Harness²: Google Research's Recursive Agent Harnessing, Examined.”

## Evidence identity

- Paper: Ruiyao Xu et al., *Harness²: Recursive Agent Harnessing for an Open World*, [arXiv:2610.14224v1](https://arxiv.org/abs/2610.14224v1), submitted October 9, 2026.
- Full text inspected: [version-one HTML](https://arxiv.org/html/2610.14224v1), including methods, main tables, analysis, benchmark definitions, implementation details, limitations, and prompts.
- Repository: [google-research/harness2](https://github.com/google-research/harness2).
- Inspected commit: [`1cfe254e8d25b15f37048c3730134686abe60335`](https://github.com/google-research/harness2/tree/1cfe254e8d25b15f37048c3730134686abe60335).
- The repository is a research release, not an officially supported Google product. Its license and third-party benchmark conditions are separate.

## Claim-to-source map

All repository paths below resolve within the pinned snapshot above.

| Article subject | Primary evidence |
|---|---|
| Frozen model, eight editable components, release scope | `README.md`, `harness2/substrate/opencode.py`, `harness2/substrate/codex.py` |
| Parallel and sequential schedules, proposal retry, recorded fallback | `harness2/core/recursion.py` |
| Nominal 4k executor rollouts and 3k improvement stages; excluded selector/reflection and retry invocation accounting | `harness2/core/ledger.py` |
| Final-output selection pool excludes references; k=1 bypasses selection | `harness2/core/selection.py` |
| Library entry requires cue, lesson, evidence; retains executable tree | `harness2/core/library.py` |
| Domain ordering, reuse, adoption, resume | `harness2/core/schedule.py` |
| Evidence copying and known leakage checks | `harness2/core/context.py` |
| Evidence-as-data instruction and stage behavior | `harness2/core/prompts.py` |
| Editable paths and structural validity | `harness2/core/tree.py` |
| Harness fingerprints and explicit completion markers | `harness2/core/runmark.py` |
| Ungraded and incomplete cases excluded from score denominator | `harness2/core/report.py` |
| Disclosed rubric download, unrestricted network, external egress recommendations | `docs/EXPERIMENTS.md`, section “Web access” |
| Dataset revision and task-selection caveats | `docs/EXPERIMENTS.md`, `docs/BENCHMARKS.md`, paper Appendix B |
| Installation, platform, authentication requirements | `docs/SETUP.md`, `pyproject.toml` |
| Benchmark scores and standard deviations | Paper Tables 1–2 |
| Compute interpretation and same-model experiment | Paper Figures 6 and 8 |
| Deterministic demo's scripted repair | `harness2/demo.py`, `harness2/cli/demo.py` |
| Budget, resume, evidence, invalid-proposal and failure regressions | `tests/test_workflow.py` |

The article's k=5 table column is calculated by adding each published “+ Recursion” mean change to its k=1 mean. Standard deviations are reproduced only where the main tables provide them. Score units differ across benchmarks.

## Related primary research

- [ReasoningBank: Scaling Agent Self-Evolving with Reasoning Memory](https://arxiv.org/abs/2509.25140).
- [Meta-Harness: End-to-End Optimization of Model Harnesses](https://arxiv.org/abs/2603.28052).
- [Agentic Harness Engineering: Observability-Driven Automatic Evolution of Coding-Agent Harnesses](https://arxiv.org/abs/2604.25850).
- [Rethinking the Evaluation of Harness Evolution for Agents](https://arxiv.org/abs/2607.12227).

These sources establish the comparison of mechanisms. Their benchmark numbers were not used as directly comparable measurements against Harness²'s tables.

## Local execution evidence

The public repository was cloned into a temporary research checkout. No credentials, external model service, professional benchmark dataset, or live business action was used in these checks.

Executed from the pinned checkout with the bundled Python interpreter:

```text
python -m harness2.cli.demo --output /private/tmp/harness2-local-demo-20261019 --k 2
python -m unittest discover -s tests -q
```

Observed demo summary:

```json
{
  "domain": "accounting",
  "n_tasks": 2,
  "done": 2,
  "failed": 0,
  "library_entries_before_first_task": { "agg": 0, "seq": 0 },
  "library_entries_before_second_task": { "agg": 1, "seq": 1 },
  "execution_count": 28,
  "editor_calls": 32
}
```

The library-count fields above extract the corresponding per-task fields from `demo.json`; this is a compact transcription rather than the raw file. The command's default mode runs both parallel (`agg`) and sequential (`seq`) recursion. The reference executions are shared across modes, which explains why the unique execution count is 28 rather than 32.

Observed upstream test result: `Ran 5 tests` and `OK`, process exit code 0. Expected failure-path fixtures print partial or failed-selection messages during this passing suite; those are intentional regression cases.

The demo editor is scripted to remove the positive-only filter from a ledger summation. Its output is evidence of execution plumbing, component persistence, and workflow regressions, not evidence of language-model discovery or professional benchmark quality.

## Interpretation boundaries

- Professional benchmark results remain author-reported. No WorkBuddy, JobBench, or LAB score was independently reproduced.
- The article makes no independent security-certification claim for the release or its executors.
- The release's documented rubric download demonstrates a reproduction hazard. It does not independently establish contamination of the paper's reported runs.
- Structural tree validation, candidate adoption, run completion, and externally verified correctness are different claims.
- Deployment architecture, acceptance metrics, causal experiments, and proposed future research in the article are editorial analysis, not additional author-reported results.
- Paper evaluation splits and the release's installed/default task stream must be pinned separately. A current default run must not be labeled a paper reproduction without matching identifiers and protocol.
