Repository navigation
feat(llm-helper): the classic Bedrock runtime as a second surface (llm.aws.api), the SDK's credential error mapped, and the live drive's record - #44
Merged
Conversation
…ld not resolve AWS credentials from session" - to the 503 by name
The live drive's second negative control (no credential at all) reached the SDK's Mantle client, whose RuntimeError reads "Could not resolve AWS credentials from session"; the helper matched the legacy client's wording ("could not resolve credentials from session") and let the error through as a bare 500. The match is now case-insensitive on the words both wordings carry, botocore's NoCredentialsError still included; the test pins the live message. The health check already reported the missing credential by name.
…m.aws.api: mantle | runtime), and the live drive's record An account may be enabled for one Bedrock surface and not the other: the drive of 2026-10-14 found an enterprise account refusing every Claude model on the Anthropic-shaped endpoint while its classic runtime served Haiku 4.5. llm.aws.api selects mantle (the default, the SDK's AsyncAnthropicBedrockMantle with the anthropic. prefix for a bare id) or runtime (AsyncAnthropicBedrock, every model id sent as written - an inference profile id as the account lists it); llm.health names the surface; no region on either surface is the 503 by name; a bad value is a 500 by name. Two shared vectors (68) pin the runtime surface's id rule in both packs; the README, the configuration and the CHANGELOG document the two surfaces and the sign that an account lacks the default one. This pack's report gains the live drive: negative controls first, then chat, a structured verdict and a progressive stream on Haiku 4.5, and the Java engine's shipped triage graph and streaming relay in front of the helper.
acn-ericlaw
added a commit
that referenced
this pull request
Oct 14, 2026
…s gates, the runtime surface (PR #44 open); llm-helper-bedrock-iam closed Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
acn-ericlaw
added a commit
that referenced
this pull request
Oct 14, 2026
…-error mapping and the drive's record on main; sprint 1 complete Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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
Two things the live drive on AWS Bedrock (2026-10-14) asked of the helper's Bedrock backend:
llm.aws.apiselectsmantle(the default: the SDK'sAsyncAnthropicBedrockMantle, the Anthropic-shaped endpoint, a bare model id prefixedanthropic.) orruntime(AsyncAnthropicBedrock, the classic endpoint, every model id sent exactly as written - an inference profile id as the account lists it, such asus.anthropic.claude-haiku-4-5-20251001-v1:0, since those carry dates and versions no rule can derive).llm.healthnames the surface beside the backend, model and region; no region on either surface is503 AWS region missingbefore any call; a bad value is a 500 by name. Two shared vectors (68) pin the runtime surface's id rule in both packs.RuntimeError("Could not resolve AWS credentials from session")while signing a call whose chain is empty; the merged backend matched the legacy wording and let it through as a bare 500. The match is now case-insensitive on the words both wordings carry; the test pins the live message.The README, the configuration and the CHANGELOG document the two surfaces and the sign that an account lacks the default one: a
403 ... is not available for this accounton a model the console's playground runs. This pack's test report gains the live drive.Why
Found by the live drive, negative controls first: a corrupted secret came back as a 401 by name, no credential as the 503 by name (the Python call's mapping gap the second item fixes), and then every positive call on the default surface was refused for the account while the classic runtime served Haiku 4.5. With the surface switch, both packs answered a chat, a structured verdict and a progressive stream on Bedrock through IAM with no vendor key, and the Java engine's shipped
support-triagegraph and streaming relay ran in front of each helper. The Node twin is mercury-nodejs' sibling PR; the engines' certification report records the drive as Scenario 8.Gates
ruff check .,basedpyright0 errors,pytest -q202 green - no token spent, no credential neededCo-Authored-By: Claude Fable 5.1 noreply@anthropic.com
🤖 Generated with Claude Code