Skip to content

First-draft fallback judge defaults to Claude Sonnet 5.5, not Opus - #109

Merged
umeranjum17 merged 2 commits into
mainfrom
fm/fd-sonnet-fallback-judge
Oct 30, 2026
Merged

umeranjum17 merged 2 commits into
mainfrom
fm/fd-sonnet-fallback-judge

Conversation

@umeranjum17

@umeranjum17 umeranjum17 commented Oct 30, 2026 •

Copy link
Copy Markdown
Owner

What

FALLBACK_JUDGES[0] in src/judge-fallback.mjs was claude-opus-5-5. It is now claude-sonnet-5-5, so a make or refine run whose configured judge fails falls back to Sonnet and never spends Opus usage.

FALLBACK_JUDGES[1] (Codex gpt-6.1-sol), the order, DEFAULT_MODELS and judgeOf are unchanged.

Updated because the change made them wrong

  • src/judge-fallback.mjs: the header comment naming the fallback order.
  • docs/TESTING.md: the critique.judge_fallback line naming the fallback judges.
  • test/critic.test.mjs: the assertion on the shipped default model in the JUDGE_ALL_FAILED error.

test/judge-fallback.test.mjs keeps claude-opus-5-5; there it is an arbitrary fixture model name, not the shipped default.

Fixed because they blocked the proof

  • journeys/critic.mjs: its two fixture imports pointed at journeys/fixtures/critic-model.mjs and journeys/fixtures/judge-cli.mjs, which do not exist in this repo; the real files are test/fixtures/critic-model.mjs and test/fixtures/judge-cli.mjs. That made the critic journey un-runnable, so it could not produce the proof this PR needs. One path per line, nothing else.

Proof

node --import ./test/fixtures/provider-hooks.mjs --test --test-concurrency=1 test/judge-fallback.test.mjs test/critic.test.mjs (the repo's own test command for these files, from package.json test):

tests 9
pass 9
fail 0
cancelled 0
skipped 0

Full log: /home/umer/.treehouse/firstmate-cff959/3/firstmate/data/fd-sonnet-fallback-judge/judge-fallback-critic-tests.log

done-done run critic at commit 0906808625f8e0239a5e4228ab35257898ba60ce, clean tree, ended PASS: policy-admitted references, one independent review with seven axes, explicit signed-out refusal (run 20261030T111016Z-09068086-74e745).

proof: done-done-verify-first-draft (no feature file for this change), done-done run critic at commit 0906808, plus node --import ./test/fixtures/provider-hooks.mjs --test --test-concurrency=1 test/judge-fallback.test.mjs test/critic.test.mjs (9 pass, 0 fail)

Checks

outcome: a make or refine run whose judge fails falls back to Claude Sonnet 5.5 instead of Opus
repro: n/a
proof: done-done-verify-first-draft (no feature file for this change), done-done run critic at commit 0906808, plus node --import ./test/fixtures/provider-hooks.mjs --test --test-concurrency=1 test/judge-fallback.test.mjs test/critic.test.mjs (9 pass, 0 fail)
evidence: 20261030T111016Z-09068086-74e745/refs.json, 20261030T111016Z-09068086-74e745/make.json, 20261030T111016Z-09068086-74e745/refusal.json, 20261030T111016Z-09068086-74e745/steps.json
screen: none

A make or refine whose configured judge fails now falls back to the
Sonnet engine, so a run never spends Opus usage. Test and TESTING.md
assertion updated to the shipped default.
The journey pointed at journeys/fixtures/critic-model.mjs and
journeys/fixtures/judge-cli.mjs, which do not exist, so the critic
journey could never run.
@umeranjum17
umeranjum17 merged commit 642aafe into main Oct 30, 2026
3 checks passed
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.

1 participant