Skip to content

fix(judge): treat an "unavailable" schema option as a schema rejection - #219

Merged
chrisknvidia merged 1 commit into
NVIDIA:mainfrom
MaxFreedomPollard:judge-unavailable-schema-option
Oct 21, 2026
Merged

chrisknvidia merged 1 commit into
NVIDIA:mainfrom
MaxFreedomPollard:judge-unavailable-schema-option

Conversation

@MaxFreedomPollard

Copy link
Copy Markdown
Contributor

Summary

Fixes #207.

DeepSeek answers response_format: json_schema with HTTP 400 and "This response_format type is unavailable now". The judge already drops the schema and retries when a provider rejects it, but the matcher only knew "unsupported", "not supported" and friends, so every Tier 3 judge call failed instead.

  • unavailable is now a rejection reason in the host client and the Harbor template, and the after-option pattern allows the word type between the option and the verb, which is how DeepSeek phrases it.
  • A plain "model unavailable" is still not a schema rejection; tests cover both sides, plus the full DeepSeek 400 body through both classifiers.

Verification

  • I am familiar with the Contributing Guidelines
  • Added or updated focused tests
  • Updated documentation for user-visible changes
  • Ran make lint
  • Ran make test
  • Ran make build
  • Did not add credentials, private datasets, or proprietary benchmark content

make test on this branch: 13,563 passed. The 100 failures I see locally are the same 100 on unpatched main (the live Seatbelt and Docker suites, which my sandboxed machine can't run, and an httpx2 SDK mismatch), so they are environmental rather than from this change.

Release Impact

  • No user-visible release note needed
  • Updated CHANGELOG.md

DeepSeek answers response_format json_schema with HTTP 400 and "This
response_format type is unavailable now". The judge already drops the schema
and retries when a provider rejects it, but the matcher only knew
"unsupported", "not supported" and friends, so every Tier 3 judge call failed
instead. Add "unavailable" as a rejection reason in the host client and the
Harbor template, and let the after-option pattern accept the word "type"
between the option and the verb.

Fixes #207.

Signed-off-by: Max Freedom Pollard <[email protected]>
@MaxFreedomPollard
MaxFreedomPollard force-pushed the judge-unavailable-schema-option branch from 0922127 to f70ea60 Compare October 20, 2026 22:21
@chrisknvidia
chrisknvidia merged commit 15adf98 into NVIDIA:main Oct 21, 2026
17 checks passed
@chrisknvidia

Copy link
Copy Markdown
Collaborator

Looks good!
Thanks for this PR.

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.

LLM judge always sends response_format: json_schema; OpenAI-compatible providers without it (e.g. DeepSeek) return HTTP 400 and Tier 3 can't be scored

2 participants