agent-harness / docs /METRICS_AND_ARTIFACTS.md
cuber12's picture
Publish agent harness research code and paper artifacts
d61821a verified
|
Raw
History Blame Contribute Delete
3.46 kB

Metrics and artifacts

Outcome hierarchy

The primary end-to-end metric is resolved_at_1: one bounded agent run produces a patch that applies, passes all fail-to-pass tests, and introduces no failure in the pass-to-pass suite. The primary retrieval metric is file recall@10; function recall@10, MRR, and NDCG@10 are secondary retrieval outcomes.

Metric groups are registered in src/agent_harness/metrics.py:

Group Examples
Correctness resolution, fail-to-pass, pass-to-pass, regressions
Localization recall@k, MRR, NDCG, gold evidence within budget
Navigation time/tokens/tool calls to first gold, repeated reads, churn
Editing patch application, syntax, lint/build, patch size
Efficiency input/output/tool tokens, calls, tests, wall time, throughput
Index build/update time, query p50/p95, RAM, disk
Reliability timeout, tool/parser/edit failures, failure stage

All rates require explicit numerators, denominators, and exclusion counts in a paper table. Token usage must distinguish model input, model output, cached input when reported by the server, and tool-result text. A missing usage field is missing data, not zero.

Run identity and lineage

Every run has a deterministic ID derived from:

  • experiment, task, and harness IDs;
  • complete harness and model-config hashes;
  • resolved LM Studio model key;
  • context budget, seed, and repetition;
  • repository commit and research-code revision.

Artifacts live under:

results/raw/<experiment>/<harness>/<task>/<run_id>/
  run_manifest.json
  trajectory.jsonl
  patch.diff
  test_results.json
  final_metrics.json

The raw run directory is created exclusively and must never be overwritten. trajectory.jsonl is append-only and contains monotonically sequenced events. The manifest stores the resolved treatment and model metadata so a result never depends only on a filename.

Required trajectory events

  • run_started: limits, environment, task metadata, execution order
  • model_call: request hash, sampling, token usage, latency, stop reason
  • tool_call: tool name, sanitized arguments, result hash, size, latency
  • retrieval_candidate: source, query, file/symbol span, score, rank, fusion
  • file_read: path, span, content hash, token count, relevance label after run
  • edit: patch hash, target paths, application result
  • test_run: command identity, exit status, duration, structured test counts
  • resource_sample: process memory and relevant local-system measurements
  • run_finished: outcome, failure stage, totals, artifact hashes

Secrets, environment contents, and unrelated user files must never enter telemetry. Large source snippets are identified by repository SHA and content hash; record only the content needed to audit the model-visible context.

Derived datasets and tables

Raw JSONL is the source of truth. Deterministic analysis code should produce a versioned tabular dataset with one row per run and separate candidate/query tables. Planned paper tables are:

  1. task and repository characteristics;
  2. retrieval factorial effects and interactions;
  3. query/interface and packing ablations;
  4. end-to-end correctness and efficiency;
  5. robustness by scenario and difficulty stratum;
  6. dense-index systems results; and
  7. failure taxonomy and exclusions.

Every derived artifact should record the input run IDs, analysis-code revision, schema version, and creation timestamp.