Skip to content

evals: model-eval suite v1 — design doc, harness, 5 validated seed tasks#756

Draft
stphung wants to merge 2 commits into
mainfrom
claude/quest-eval-suite-design-v4np14
Draft

evals: model-eval suite v1 — design doc, harness, 5 validated seed tasks#756
stphung wants to merge 2 commits into
mainfrom
claude/quest-eval-suite-design-v4np14

Conversation

@stphung

@stphung stphung commented Jul 15, 2026

Copy link
Copy Markdown
Owner

Summary

Adds a model-performance eval suite for Quest: the design exploration (docs/explorations/2026-07-15-model-eval-suite.md) and its v1 implementation under evals/.

What it measures: how well a model works on Quest via scoped "files in, diff out" tasks — the model gets a symptom description + selected source files + failing check output, returns one unified diff, and the harness grades it with the repo's own graders (tests, snapshot tests, seeded simulators).

Harness (evals/harness/, stdlib-only Python)

  • run.py — materializes each task in a scratch worktree (bug.patch applied to the pinned eval-base commit), prompts the model, enforces per-task edit allowlists plus a global denylist (a diff can never touch tests, .snap files, build files, or the harness), grades, and reports a diagnostic funnel: apply_error → illegal_edit → build_error → test_fail → pass. --reference dry-runs the whole pipeline with the reference solutions (no API key); validate proves every task honest (graders red on the bug state, green after reference.patch).
  • judge.py — rubric-based quality scores (convention / minimality / solution_match) on top of the deterministic outcome, never blended into pass rate.
  • mine.py — mines real merged PRs into task skeletons (filters audit-log noise, classifies domain by path, pre-checks the red leg).

Seed tasks (evals/tasks/, all red/green-validated)

Task Domain Grader
qb-001-armory-stacking bugfix damage-percent stacking bug vs combat_tests (exact 5x ratio test)
qb-002-save-wipe bugfix missing serde(default) vs the frozen save-compat corpus
qu-001-prestige-gauge ui gauge ratio off-by-one vs committed frame snapshots
qf-001-shift-hotkeys feature missing shifted-hotkey variant vs the input replay harness
qbal-001-meadow-wall balance (slow tier) inflated early-zone stats vs simulator --check-progression

Verification performed

  • run.py validate (fast tier): 4/4 honest — red on bug, green on reference.
  • run.py validate qbal-001-meadow-wall (slow tier): red across all seeds on the bug state (0 kills, death-looped), green after reference, against the release-build progression simulator.
  • run.py run --reference: full end-to-end pipeline passes 4/4 with reports generated.
  • Validation caught one dishonest grader during authoring (--lib filter matching zero binary-crate tests → vacuous pass), which is exactly the failure mode the validate contract exists for; fixed to cargo test --bin quest input::replay_tests.

Also

  • make eval-validate target; evals/results/ and __pycache__/ gitignored.
  • Root CLAUDE.md section pointing at evals/README.md.
  • Design doc updated (TOML task metadata instead of the YAML sketch; history entry).

No changes to game source — src/ is untouched; task patches apply only inside the harness's scratch worktree at runtime.

🤖 Generated with Claude Code

https://claude.ai/code/session_01BxnJXgu63wex2CCtfuPy7G

claude added 2 commits July 15, 2026 03:39
Captures the interactively-decided design for an in-repo evals/ suite:
model-only diff-out tasks mined from git history across four domains
(bugfix, feature, UI snapshot, balance/simulator), deterministic graders
with an LLM judge on top, fast (~15 min) and slow (simulator) tiers.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BxnJXgu63wex2CCtfuPy7G
Implements the eval-suite design (docs/explorations/2026-07-15-model-eval-suite.md):

- evals/harness/: stdlib-only Python runner. run.py materializes each task
  in a scratch worktree (bug.patch on the pinned base commit), prompts the
  model (files in, one unified diff out), enforces per-task edit allowlists
  + a global denylist (no tests, no .snap re-bless, no harness edits),
  grades with the repo's own tests/snapshots/simulators, and reports an
  apply_error -> illegal_edit -> build_error -> test_fail -> pass funnel.
  validate mode proves every task honest: graders red on the bug state,
  green after reference.patch. judge.py adds rubric quality scores on top;
  mine.py lists/extracts task skeletons from git history.
- evals/tasks/: 5 hand-authored seed tasks, all red/green-validated —
  2 bugfix (damage-percent stacking, serde save-wipe), 1 ui (prestige
  gauge vs snapshots), 1 feature (shift-hotkey via input replay), and
  1 slow-tier balance task graded by the progression simulator.
- make eval-validate target; evals/results/ + __pycache__/ gitignored;
  CLAUDE.md pointer and design-doc history entry.

Reference-mode end-to-end run passes 4/4 on the fast tier; the balance
task validates red/green against the release simulator.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BxnJXgu63wex2CCtfuPy7G
@stphung stphung changed the title docs: design exploration for a model-performance eval suite evals: model-eval suite v1 — design doc, harness, 5 validated seed tasks Jul 15, 2026
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.

2 participants