Skip to content

bench(flow): Harness² with and without the read-back scorer on MockMed - #1304

Merged
abrichr merged 7 commits into
mainfrom
claude/harness2-measured-run
Oct 19, 2026
Merged

abrichr merged 7 commits into
mainfrom
claude/harness2-measured-run

Conversation

@abrichr

@abrichr abrichr commented Oct 18, 2026

Copy link
Copy Markdown
Member

Stacked on #1300 (and #1299). Merge those first.

What this is

One small measured run on synthetic MockMed data. It compares Harness² as published with Harness² using the read-back as both evidence and selection. Full write-up: packages/flow/benchmark/harness2_scorer/RESULTS.md.

  • Tasks: seven MockMed tasks. This PR adds slow: the form stays up after a save that already landed.
  • Models: the agent is gpt-4.1-nano. Proposers and the selector are gpt-4.1-mini, one call per stage.
  • Search: Harness² agg mode with k=2.
  • Measure: each chosen harness is re-run 10 times per task on fresh copies, and every re-run is scored by the reward worker. Selecting by reward picks a run that already succeeded, so the chosen run's own outcome would flatter that arm; fresh re-runs avoid that bias.
  • Spend: $0.60 against the $15 cap.
Arm Right outcome Verified Wrong record Duplicate Safe stop
Base harness 39/70 37 8 17 3
Harness² 41/70 27 0 22 13
Harness² + read-back 40/70 27 0 23 10

At this scale the read-back did not help. Both searches removed every wrong-patient write and fixed the missing-patient task. Both also added duplicates and broke typelabel. The write-up names two causes:

  1. With the read-back in view, proposers wrote rules the agent cannot follow, such as "verify the system of record shows exactly one new encounter". The agent has no read-back of its own, so it saved again.
  2. Harness² ranks each candidate on one rollout, which mostly ranks luck. Read-backs cost about $0.001 a rollout here, so scoring each candidate on several rollouts is the cheap next step.

Files

  • benchmark/harness2_scorer/run.py: the arms, a hard cap, and --more-reruns to top up re-runs.
  • summarize.py: the tables. It copies raw data without the reward workers' private keys and tokens.
  • evidence/: per-arm results.json, summary.json, and raw.tar.gz (2.3 MB). These are listed in public-artifacts.json, and the archive was checked for keys and tokens.
  • docs/HARNESS2.md: a short "Measured run" section.

🤖 Generated with Claude Code

abrichr and others added 7 commits October 18, 2026 15:38
One small measured run: base harness, Harness² as published, and Harness²
with the read-back as evidence and selection, on seven MockMed tasks with a
gpt-4.1-nano agent and gpt-4.1-mini proposers. 10 fresh re-runs per task and
arm, each scored by the reward worker. Spend $0.60.

Right outcomes: base 39/70, Harness² 41/70, Harness² + read-back 40/70. Both
searches removed every wrong-patient write (8 -> 0). The read-back did not
help at this scale: proposers wrote rules the agent cannot follow (it has no
read-back), and one rollout per candidate is not a score. RESULTS.md has the
tables and the analysis; raw data is committed (keys and tokens stripped).

Adds the slow MockMed variant, run.py, summarize.py and --more-reruns.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Base automatically changed from claude/harness2-trace-export to main October 19, 2026 04:05
@abrichr
abrichr merged commit a4fd97f into main Oct 19, 2026
34 checks passed
@abrichr
abrichr deleted the claude/harness2-measured-run branch October 19, 2026 13:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant