Evals
July 7, 2026 · View on GitHub
The eval harness answers one question honestly: does a multi-agent mode beat plain Solo at equal
tokens? It is the gate behind the deletion policy. The harness
lives under src/eval/; run it with scripts/eval.ts.
Current local deterministic check:
bun run scripts/eval-smoke.ts
Task suite
The suite is 42 tasks: 2 built-in (src/eval/tasks.ts) plus 40 loaded from eval/tasks/*.json. Each
task is a self-contained TypeScript function or class graded by an OBJECTIVE check command — bash -lc
with OB1_FILE pointing at the candidate's extracted code, exit 0 = PASS. There is no model-as-judge;
deterministic grading is what keeps every mode honest.
Authorship rule (non-negotiable): before a task ships, prove both that a correct reference solution
makes the check exit 0, and that a plausible-but-wrong solution (an off-by-one or missed edge case, not
a syntax error) makes it exit nonzero. Edge cases go in the check, not just the happy path, and no two
tasks may be near-duplicates. See eval/tasks/README.md to add a task.
Modes
The two interactive modes are solo and fusion. The harness can additionally measure escalate
(the verified-escalation policy: one Solo pass, then Fusion only when the check fails), deep
(AB-MCTS-lite, budget compute-matched to Fusion), and codeact. Solo is always included as the
baseline, since compute-matching is measured against it.
A ModeRunner has the signature (prompt, task?) => Promise<RunOutput>. The optional second argument
lets a mode consult the per-task objective check while solving — Fusion grounds its best-of-N selection
in it, and escalate uses it to decide whether to escalate. This is symmetric across modes, and it
cannot let a mode grade itself green: the harness always re-grades every returned artifact with the
same check independently afterward.
Compute-matched framing
computeMatched() compares each mode's pass rate against Solo@k, where k = (mode's average tokens)
/ (Solo's average tokens) — how many independent Solo attempts the mode's budget would have bought,
scored with the standard 1 - (1 - p_solo)^k estimator. A mode is only justified if it beats that
compute-matched baseline. A separate capability view asks the complementary question — does the mode
solve hard tasks Solo fails, ignoring token cost — but the compute-matched frame is the one that gates
whether a mode stays.
Publishing a report
- Pin the OB-1 version, model ids, provider route, and machine.
- Run the fixed task set with Solo and the compute-matched modes.
- Publish raw task JSON, command lines, model ids, pass/fail output, and cost estimates.
- Include failures and flake handling. The thesis is measured tradeoff, not a perfect leaderboard.
A manual GitHub Actions workflow exists at .github/workflows/eval.yml. It self-skips unless either
OB1_EVAL_BASE_URL or OB1_EVAL_TOKEN is configured.
gh workflow run eval.yml --repo Overbrilliant/ob-1 \
-f modes="solo fusion escalate deep" \
-f trials=3
Use the public eval report template for the launch write-up.