Skip to content

fix(providers): declare thinking efforts for first-party Claude registries - #14732

Merged
diegosouzapw merged 1 commit into
cheaper-inference:release/v3.8.51from
HouMinXi:fix/firstparty-claude-4x-effort-tiers
Sep 25, 2026
Merged

diegosouzapw merged 1 commit into
cheaper-inference:release/v3.8.51from
HouMinXi:fix/firstparty-claude-4x-effort-tiers

Conversation

@HouMinXi

Copy link
Copy Markdown
Contributor

Summary

claude-opus-5 gained its thinking-effort declaration in #14548. The same gap covers the rest of the thinking-capable Claude lineup on every first-party registry: Fable 5 and Opus 4.8/4.7/4.6/4.5 are seeded with supportsThinking in modelSpecs, but their registry entries never declared supportedThinkingEfforts. Because the catalog calls getThinkingCapabilityFields(..., skipCanonicalEffortFallback=true) for static registry models (catalog.ts:730-743), an entry without declared tiers gets no effort_tiers in /v1/models at all — clients cannot discover which effort levels these models accept.

This PR declares the tiers on all four first-party registries (claude, anthropic, github, ghe-copilot), following Anthropic's published per-model effort table:

Models low medium high xhigh max
Opus 5 / Fable 5 / Opus 4.8 / Opus 4.7 ✓ ✓ ✓ ✓ ✓
Opus 4.6 ✓ ✓ ✓ — ✓
Opus 4.5 ✓ ✓ ✓ — —

xhigh was introduced with Opus 4.7, so 4.6/4.5 entries intentionally do not declare supportsXHighEffort. Fast variants (claude-opus-4.8-fast on github/ghe-copilot) mirror their base model. claude-opus-5 on the claude registry is left to #14548 so the two PRs merge cleanly in either order.

Tests

New tests/unit/claude-firstparty-effort-tiers.test.ts (7 tests):

  • Every covered entry declares exactly the tier list from the table above, with supportsReasoning: true and supportsXHighEffort matching the tier list (present iff xhigh is included).
  • getRegistryModelThinkingEfforts() resolves each entry — the lookup the catalog uses.
  • Behavior lock for supportsXHighEffort() (providerModels.ts:372-387): the function defaults to true for models without an explicit flag, so Opus 4.6/4.5 correctness on the dotted-id registries depends on the canonical fallback reaching the claude registry's explicit false entries. These assertions pin that end-to-end so dropping those flags fails loudly instead of silently routing xhigh to models that reject it.

Mutation check: deleting the declared tiers from one entry per registry turns the suite red; restoring turns it green again.

Existing catalog/registry suites stay green (12058 canonical self-alias, 13601 collision names, 8327 owned-by prefix).

Notes

@HouMinXi
HouMinXi force-pushed the fix/firstparty-claude-4x-effort-tiers branch from 0857731 to 8a81a14 Compare September 24, 2026 15:17
…tries

The static catalog passes skipCanonicalEffortFallback=true for registry-seeded
models, so entries without supportedThinkingEfforts expose no effort_tiers in
/v1/models even though their modelSpec marks supportsThinking: true. Opus 5 was
fixed in cheaper-inference#14548; the same gap covers Fable 5 and Opus 4.8/4.7/4.6/4.5 across the
claude, anthropic, github and ghe-copilot registries.

Tier lists follow Anthropic's per-model effort table: xhigh exists on Opus 4.7+
and Fable 5; max on Opus 5/4.8/4.7/4.6; Opus 4.5 tops out at high. Fast variants
(4.8-fast) mirror their base model.

SupportsXHighEffort() defaults to true for unlisted models, so 4.6/4.5 stay
correct through the canonical fallback to the claude registry's explicit false
flags; new tests pin that behavior end-to-end.

Signed-off-by: Minxi Hou <houminxi@gmail.com>
@HouMinXi
HouMinXi force-pushed the fix/firstparty-claude-4x-effort-tiers branch from 8a81a14 to dd009ec Compare September 24, 2026 18:47
@diegosouzapw
diegosouzapw merged commit 40153cc into cheaper-inference:release/v3.8.51 Sep 25, 2026
10 of 16 checks passed
diegosouzapw added a commit that referenced this pull request Sep 29, 2026
… 4) (#15109)

Release-captain base-red fix (v3.8.51 release PR #11442, unit shards 3-4): one production defect (proxyLogger pulled into every settings→proxies import and queried the DB at import time; helper extracted to src/lib/proxyLogHost.ts) and seven contract propagations from #14732, #15044, #15067, #13548, #14117×#14844, #12810. 74/74 across the seven files, 176/176 proxy-log neighbours, typecheck clean.
@HouMinXi
HouMinXi deleted the fix/firstparty-claude-4x-effort-tiers branch October 28, 2026 10:12
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