Run a model/stack eval study on your own tasks — wizard by default,
quickfor a zero-decision smoke contrast, deterministic grading, and a report that leads with a plain verdict.
/eval # interactive wizard (the default)
/eval quick # canned 3-task set, current stack vs claude-only, one confirm
/eval run --set <set> --arms <csv> [--reps N] [--ceiling USD] [--dry-run]
/eval status # cells done, spend vs ceiling, failures
/eval report # plain verdict first, tables underneath
/eval run --from-issues owner/repo#12,#34 ... # scaffold tasks from bug reports
/arth-setup) and want to know whether it silently breaks things while appearing to succeed.pass@3 evidence for “capable but inconsistent” vs “incapable” before changing your model policy./arth-setup (eval validates, it never installs)./eval quick
What you’ll see: a preflight summary, one confirmation showing the matrix (3 tasks × 2 arms) with a cost estimate and a spend ceiling, then a background run. When it finishes, /eval report opens with a one-paragraph verdict like “claude passed 3 of 3 tasks at $0.41 per passing task — deepseek was cheaper but failed more.”
/eval # wizard: pick set → arms → reps → confirm ceiling
/eval quick # zero decisions, one confirm
/eval run --set smoke --arms claude,deepseek --reps 3 --ceiling 10
/eval run --set smoke --arms claude --dry-run # estimate only, no API calls
/eval status # progress of the background run
/eval report # verdict, leaderboard, variance strip, drill-down
| Flag | Values | Default | What it does |
|---|---|---|---|
--set |
a set under tests/eval/tasks/sets/ |
— | which named, versioned task set to run |
--arms |
claude,<provider>[:<model>] |
— | arms to compare; every provider arm must hold a fresh conformance pass |
--reps |
integer | 1 | repetitions per task (3 gives you pass@3) |
--ceiling |
USD | — | hard spend abort threshold; required for any paid matrix, always the last question |
--dry-run |
— | off | resolve the matrix and estimate cost with zero API calls and zero writes |
--resume |
run id | — | skip cells already completed in the journal |
--from-issues |
owner/repo#N,#M |
— | scaffold task specs from issue title/body (never from fix diffs) |
/eval run … one-liner is printed so the study is repeatable.tests/eval/runs.jsonl; interrupting is safe, --resume skips completed cells. Costs are recorded at real descriptor pricing, and the run hard-aborts if spend crosses the ceiling.tests/eval/runs.jsonl — the append-only journal (system of record, machine-local, not committed)/eval report — plain verdict first, then: leaderboard (pass rate, effective cost per passing task, latency with cloud and local kept separate), a variance strip per task so unstable measurements can’t be over-read, and a per-cell drill-down (gates, cheat markers, resolved endpoint and model)tests/eval/tasks/, hidden tests under tests/eval/fixtures/<task-id>/arth.experiment=eval:<set>:<task>:<arm>:<rep> so the Arth Intelligence experiments view groups them automatically when telemetry is on| Problem | Fix |
|---|---|
no conformance record — refused. Run: scripts/provider-registry.sh probe <name> |
The arm was never probed. Run the printed probe command (or re-run /arth-setup), then retry. |
conformance pass is stale … re-probe |
Probe verdicts expire after 14 days. Re-run the printed probe command. |
key <NAME> not present |
Add the key through /arth-setup — eval never collects keys itself. |
estimate exceeds the ceiling |
Shrink the matrix (fewer arms/reps) or deliberately raise the ceiling at the confirm step. |
| Run interrupted mid-matrix | Nothing is lost — re-run with --resume <run-id> (shown by /eval status); completed cells are skipped. |
telemetry was dark for this run in the report |
The intelligence engine was unreachable during the run. Results are complete (the journal is the system of record); only dashboard span grouping is missing. |
scripts/routing-feedback.sh)/eval fits among the toolkit workflows