CLAUDE.md@eval · git:20261010.8b1b8e5 · 2026-10-10 · sha256 16fb53c8c3c1d03c

CLAUDE.md@eval git:20261010.8b1b8e5A

Immutable. This exact content never changes and is served at /api/v1/blob/16fb53c8c3c1d03c.

# Working on `eval/`

Harnesses here call the model, often hundreds of times, on the maintainer's own
subscription. Read `README.md` before adding or running one.

- **Track tokens in every eval, always.** Count tokens as well as calls: each
  `claude -p` call carries ~34k tokens of Claude Code context, so call counts
  understate the cost several times over. Run single-shot calls with
  `--output-format json` and pass stdout through `usage.unwrap()` from
  `usage.mjs` (GEPA's Python runner does this in `Budget.add_usage`); read
  session logs with `usage.fromStream()`. A new harness that calls `claude`
  without recording usage is incomplete.
- **Publish the numbers.** A dated result file states input tokens (and how many
  were cached), output tokens and list-price cost, or says explicitly that they
  were not recorded.
- **Make long runs watchable.** A run over ~20 calls writes a progress file that
  `dashboard.mjs` reads (see `Budget.track` in `gepa/pilot.py`).
- **Everything is manual.** Nothing here runs in CI or from a hook. Say how many
  calls and tokens a run costs near its command, and give it a hard cap
  (`--limit`, `--max-model-calls`) so a first run is small.
- Results under `eval/results/` are historical evidence: correct them with a
  dated note, do not rewrite them.
- Use the real planner and shipped prompts rather than restating them, and
  report unfavourable results too.