fix(registry): bedrock records for the current Claude generation (#607) - #659
Merged
Merged
Conversation
The -5 generation (with Opus 4.7) is served by Amazon Bedrock under plain anthropic.* model ids — the legacy guide omits these models from its inference-profile table because they 'do not have ARN-versioned model IDs'. The registry carried no bedrock record for any of them, so a config naming them under provider bedrock priced real tokens at $0 with cost_incomplete. Adds five records (claude-sonnet-5 $2/$10, claude-opus-5 $5/$25, claude-fable-5 $10/$50, plus the sibling sweep's claude-fable-5-1 $10/$50 and claude-opus-4-7 $5/$25) at the direct rate — Bedrock global-endpoint pricing carries no premium (the 10% regional premium is an endpoint choice, not a model-id variant, so id-level pricing carries the global rate). Ids from the Supported models table of the Claude in Amazon Bedrock integration doc (platform.claude.com, fetched 2026-09-21); rates re-verified against Anthropic's pricing page the same day. No live-account list-inference-profiles verification (no AWS credentials in the authoring environment) — ids are vendor-documented, receipts on each record. The price cross-check's family normalization learns the plain anthropic.* bedrock id shape (region-prefixed ids already stripped), so the new records are guarded by the same-family agreement invariant. The regression test pins: resolution at the direct rate, provider-scoped existence, NO us./global. twins for this generation (the anti-pattern-mirroring guard — fabricated twin ids would turn it RED), and the #434 alias shape.
gadievron
requested review from
dgeyshis,
shahar-davidson and
sounil
as code owners
September 21, 2026 02:33
Collaborator
Author
|
Coordination note (the process's A4-final re-fire, 2026-09-21): this PR composes with #661 (the cache-accounting change) — the direct-anthropic entries there gain additive cache multipliers these bedrock records don't carry, so this PR's dict-equality test would break on the merged tree while the rates still agree. The latest push pair-compares the (input, output) rates instead (the same update #661 made to its own tests). Also for the record: a cached run on these bedrock records (no cache multipliers yet — AWS-side pricing unverified) takes #661's |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds five Bedrock records to
config/models.jsonfor the current Claude generation, closing the gap where a config naming one of these models under providerbedrockpriced real tokens at $0 withcost_incomplete:anthropic.claude-sonnet-5anthropic.claude-opus-5anthropic.claude-fable-5anthropic.claude-fable-5-1anthropic.claude-opus-4-7The last two come from a sibling sweep over the same gap class (current Claude models served on Bedrock with a direct record but no bedrock record) — fixed here rather than left as a known gap.
Why these ids (and not
us./global.twins)The issue's original direction — mirror the 4.x-era
us./global.inference-profile records — is superseded by the vendor's current documentation:anthropic.claude-*model IDs (Supported models table, fetched 2026-09-21).So there are no
us./global.ids to mirror; adding them would fabricate ids. The regression test pins this: it fails if aus./global.twin for this generation is ever added.Pricing basis
sourcecarries its receipts. Honest limitation, stated on every record: no live-accountlist-inference-profilesverification was possible from the authoring environment (no AWS credentials) — the ids are vendor-documented, not account-verified. The issue's evidence-state comment asked for exactly that check if reachable; it was not, and the receipts say so rather than implying otherwise.The cross-check learns the new id shape
test_models_price_cross_check.py's family normalization now strips a plainanthropic.prefix (region prefixes were already handled), so the new records are guarded by the same-family price-agreement invariant.Testing
test_issue607_bedrock_current_generation.py): resolution underbedrockat the direct rate (map-compare against the anthropic records — no rate literals duplicated), provider-scoped existence viafind_model, the no-fabricated-twins guard, and the alias shape.config/models.jsonrecord silently prices a model at zero #216 unpriced-loud, model pricing lookup is exact-match on id, so a config spelling a model differently than models.json reports $0.0000 for the whole run (claude-haiku-4-5, google/gemini-3.7-flash observed) #434 alias, config/models.json lacks direct anthropic-provider records for claude-sonnet-5 and claude-fable-5 #601 completion, LLM registry, A budget-exhaustion empty completion (finish_reason='length') is still retried as transient — the message now states the deterministic cause, but the classifier treats it as recoverable #569 budget retry, Pip floor-vs-pin drift between pyproject.toml and requirements.txt has no consistency check #428 floors, bedrock adapter, plus the new file).Deferred (same class, on record)
anthropic.claude-mythos-previewappears, invitation-only, and it has no published price row anywhere).anthropic.claude-opus-4-8record: the family already carries the live-verifiedus./global.twins; whether the plain id is also served deserves its own verification pass rather than an assumption here.Fixes #607
Coordination