Skip to content

Eval: /goal plan-completion fixture (measure % of plan delivered)#108

Merged
davidrhodus merged 1 commit into
mainfrom
goal-eval-fixture
Jul 17, 2026
Merged

Eval: /goal plan-completion fixture (measure % of plan delivered)#108
davidrhodus merged 1 commit into
mainfrom
goal-eval-fixture

Conversation

@davidrhodus

Copy link
Copy Markdown
Contributor

The MVP goal eval — a number for "does /goal finish a plan?"

Measures what /goal is actually for: given a multi-section plan.md and "build all of it", what fraction of the plan does the agent deliver? The hidden oracle scores per section and emits a fraction, so a run that finishes 4 of 6 sections scores 0.67 — not a flat fail. That's what turns #107 from "should help" into a measured before/after (e.g. the qtest reality of ~20% → whatever the fixes actually achieve).

What's here

  • bench/plan/textkit/ — six independent, turn-sized Python modules (slugify, wordcount, roman, caesar, rpn, csvmini), each an exact contract with examples in fixture/plan.md. The hidden oracle/score.py checks each section and prints sections delivered: X/6 + HI_EVAL_SCORE=<0..1>; fixed/ is a reference that scores 100%.
  • bench/plan/README.md — how to run it (goal-drive mode, baseline vs candidate) and read the score.

Reuses the existing harness — no harness code changed

  • Runs via the existing hi-eval goal-drive mode: HI_EVAL_GOAL=1 HI_EVAL_TURNS=<n> drives the goal across session-continuing turns (the real /goal cadence).
  • The fraction rides in the oracle's captured output; a fully-delivered plan also exits 0 (a normal harness pass).

Validated (deterministic, no model)

cargo run -p hi-eval -- --validate bench/plan passes — the empty fixture/ scores below 100% (fail-before), fixed/ scores 100% (pass-after), the oracle is un-gameable by candidate-created files, and allowed_changes is sane. I also ran the scorer directly: fixed/ → 6/6 (100%, exit 0); dropping two modules → 4/6 (67%, exit 1) with no crash.

How to use it

HI_BIN=<hi binary> HI_MODEL=<provider/model> HI_API_KEY=<key> \
HI_EVAL_GOAL=1 HI_EVAL_TURNS=12 \
cargo run -p hi-eval -- bench/plan

Run against the old binary and a #107 build; compare the HI_EVAL_SCORE fractions.

Follow-ups (not in this MVP)

  • Surface HI_EVAL_SCORE as a first-class aggregated metric in the harness report (today it rides in the oracle artifact).
  • Add larger / graded plan fixtures (medium, large) once this shape is agreed.

Note: this branch is off main, independent of the goal-engine PR (#107) — the fixture runs whatever hi binary you point it at, so it measures either.

…red"

A first eval that measures what /goal is for: given a multi-section plan.md and
"build all of it", what fraction of the plan does the agent actually deliver?
Reuses the existing hi-eval harness (goal-drive mode via HI_EVAL_GOAL=1 +
HI_EVAL_TURNS) with a hidden per-section oracle that prints a fraction —
HI_EVAL_SCORE=<0..1> — so a run that finishes 4 of 6 sections scores 0.67 rather
than a flat fail, which is what's needed to see improvements like 20% → 75%.

- bench/plan/textkit/: six independent turn-sized Python modules (slugify,
  wordcount, roman, caesar, rpn, csvmini), each an exact contract in
  fixture/plan.md; oracle/score.py scores delivered/6; fixed/ is a reference
  that scores 100%.
- bench/plan/README.md: how to run (baseline vs candidate) and read the score.

Harness-validated well-formed (cargo run -p hi-eval -- --validate bench/plan):
fail-before on the empty fixture, pass-after on fixed/, un-gameable oracle. No
harness code changed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@davidrhodus
davidrhodus merged commit 3b195a8 into main Jul 17, 2026
1 check passed
@davidrhodus
davidrhodus deleted the goal-eval-fixture branch July 17, 2026 17:20
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