Skip to content

eval(routing): pre-registered routed vs all-opus eval of dojo-router and dojo-flow - #14

Merged
DojoGenesis merged 4 commits into
mainfrom
eval/routing-2026-10-23
Oct 24, 2026
Merged

DojoGenesis merged 4 commits into
mainfrom
eval/routing-2026-10-23

Conversation

@DojoGenesis

@DojoGenesis DojoGenesis commented Oct 23, 2026 •

Copy link
Copy Markdown
Owner

A pre-registered eval of model routing against an all-opus baseline, built with the dojo-settle method used for the dojo-verify eval (PR #7): freeze the rule by digest in a commit, then run. Funded by Cruz's 2026-10-23 ruling with a hard cap of $100, pilots and judge included. Do not merge without Cruz's go. At Cruz's choice (2026-10-24), dojo-router's README now cites the measured ratio with the eval's conditions (c45e233); dojo-flow's README is unchanged, as its verdict requires.

  • Pre-registration digest: d66e5b96bc78d9987d5fc13f60b3b85918b60b1bd0bd04676631bf505645187a, recorded in 7404987 and pushed at 21:15:15 UTC, before the first eval call at 21:15:42 UTC. prereg.py verify --expect still passes.
  • Amendment 1 and the analysis code: 76f2779, pushed before any main run.
  • Results: 620b56d.
  • dojo-router README sentence and CHANGELOG entry: c45e233.
  • Spend: $52.15 of the $100 cap, of which $8.48 was pilots, excluded from analysis (spend-ledger.md). All runs drew on the logged-in claude.ai plan; no API key was used.

Results

study runs cost, routed / all-opus quality rule's verdict
dojo-router (session on Opus, asked to delegate) 60 0.617 (95% CI 0.570 to 0.665) hidden tests 24/24 vs 24/24; careful case 6/6 vs 6/6 saves, no measured loss
dojo-flow build workflow (default role map vs every role on Opus) 20 0.997 (0.921 to 1.080) 0/10 vs 0/10: nothing was built inconclusive: routing did not take effect

Findings that matter more than the verdicts

  • dojo-router's saving came from its skill, not its hooks. In 30 of 30 routed runs the session read dojo-router:router before dispatching and named a model on all 62 of its Agent calls. The classic hook never fired at the top level. The mod acted once, on a helper's own unpinned dispatch, which ran on Sonnet.
  • On the careful task the skill sent judgment work to Opus (4 of 6 dispatches), so the saving there was small (0.88).
  • The quality result is a ceiling. Every run in both arms passed every hidden test, so the tasks couldn't separate the arms.
  • dojo-flow's first live run: the contract gate refused 24 of 24 builds as coupled (pilot included), before any routed role ran. Two causes:
    • It counts any track that calls another track's functions as coupled.
    • The contract prompt gives the gate only track names and owned files, not the track prompts, while asking it to check that the prompts match the code. 12 of the 20 main-run traces say this.
  • A refusal leaves .dojo/dag-contract.md behind, so a re-run in the same repository needs a new contractPath.

Limits

  • Pre-existing test failure: in the full dojo-router suite, test_the_size_cap_is_512_kb_and_the_edge_is_exact fails on this Windows machine. It fails the same way on unmodified main. The 19 shape and public-copy tests pass.

  • No shell: on this Windows machine the eval refuses shell grants (the sandbox feature gate is off), so no agent could run a command.

  • One platform and version: Claude Code 2.1.305, dojo-router 0.1.1, dojo-flow 0.1.0.

  • Model-written tasks: the tasks were written by an independent Sonnet author.

  • Judge moved outside the eval: the eval's focus: files view is empty on this platform, so the files judge ran outside it (amendment 1).

Full write-up: evals/routing-2026-10-23/PREREG-2026-10-23-routing.md.

For Cruz to decide

  1. Decided 2026-10-24: dojo-router's README cites the measured ratio (c45e233). The plugin's public-copy tests ban the percent sign, so it says "95 percent interval".
  2. Still open: whether the dojo-flow contract gate's coupling rule and missing track prompts should be fixed, before a second eval with tasks built to its rule.

🤖 Generated with Claude Code

TresPies-source and others added 4 commits October 23, 2026 16:14
…jo-flow

Pre-registration digest (sha256 of everything above the marker):
d66e5b96bc78d9987d5fc13f60b3b85918b60b1bd0bd04676631bf505645187a

Funded by Cruz's 2026-10-23 ruling with a hard cap of $100 for all eval spend,
pilots and judge included. Two studies, each with a frozen rule: dojo-router
with and without on an Opus session that delegates (five hr-* cases, one
careful), and the dojo-flow build workflow with its default role map against
every role on opus (two hf-* tasks, one careful). Cost is agent cost (the
eval's cost minus the judge's); quality is hidden acceptance tests that never
enter the sandbox, with an Opus file judge as the second reference.

The tasks, hidden tests and references were written by an independent model
author from evals/routing-2026-10-23/held-out-brief.md without access to this
repository. grade_hidden.py selfcheck passes on all seven (scaffold FAILs,
reference PASSes; selfcheck-before-freeze.txt). No run has happened.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pre-registration digest unchanged (verify --expect passes):
d66e5b96bc78d9987d5fc13f60b3b85918b60b1bd0bd04676631bf505645187a

The pilots ($8.48 of the $100 cap, excluded from analysis) found four harness
fixes, each of a kind section 6 allows. --trust-plugin; no shell grant (the
eval refuses one on this Windows machine because the sandbox gate is off), so
agents in both arms run no commands; Workflow granted for dojo-flow; and the
files judge moved outside the eval, because its focus: files view arrives
empty here. No prompt, criterion, metric, rule or n changed.

The dojo-flow pilot's contract gate refused all four builds as coupled before
any routed role ran. The main run goes ahead as frozen.

analyze.py, stats.py, grade_hidden.py, judge_files.py and judge_runs.py are
committed here with their sha256 in the amendment, before any main run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pre-registration digest unchanged (verify --expect passes):
d66e5b96bc78d9987d5fc13f60b3b85918b60b1bd0bd04676631bf505645187a

dojo-router (60 runs): routed agent cost 0.617 of all-opus (95% interval
0.570 to 0.665); hidden tests 24/24 in both arms, careful case 6/6 in both.
The rule outputs "saves, no measured loss". The saving came from the
session following the router skill (30/30 runs) and pinning its own
dispatches; the hooks never fired at the top level, and the mod acted once,
on a helper's own dispatch.

dojo-flow (20 runs): the contract gate refused every build as coupled before
any routed role ran, so routing never acted. The rule outputs "inconclusive:
routing did not take effect". The gate is given track names and files only,
not the track prompts.

Spend $52.15 of the $100 cap, pilots included ($8.48). No shell for agents
(Windows sandbox gate), as amendment 1 records. READMEs not changed: the
wording is Cruz's call.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Cruz chose (2026-10-24) to add the README sentence the eval's rule allowed:
"saves, no measured loss" gives the README leave to cite the measured cost
ratio with its conditions. The sentence keeps them: 0.62 (95 percent interval
0.57 to 0.67), 60 runs, five tasks, no shell, Claude Code 2.1.305, dojo-router
0.1.1, the saving coming from the skill rather than the hooks, and what was not
measured. The limits bullet that said nothing measures routing now points at
it. The plugin's own public-copy tests ban the percent sign, so it says "95
percent". CHANGELOG gains the eval under Unreleased.

dojo-router shape tests: 19 run, OK. The full router suite has one failure,
test_the_size_cap_is_512_kb_and_the_edge_is_exact, which fails the same way on
unmodified origin/main on this machine.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@DojoGenesis
DojoGenesis merged commit 91f59c5 into main Oct 24, 2026
3 checks passed
@DojoGenesis
DojoGenesis deleted the eval/routing-2026-10-23 branch October 24, 2026 19:25
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