Skip to content

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
acn-ericlaw merged 2 commits into
mainfrom
fix/llm-helper-bedrock-credential-error
Oct 14, 2026
Merged

acn-ericlaw merged 2 commits into
mainfrom
fix/llm-helper-bedrock-credential-error

Conversation

@acn-ericlaw

@acn-ericlaw acn-ericlaw commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

What

Two things the live drive on AWS Bedrock (2026-10-14) asked of the helper's Bedrock backend:

  • The classic Bedrock runtime as a second surface. llm.aws.api selects mantle (the default: the SDK's AsyncAnthropicBedrockMantle, the Anthropic-shaped endpoint, a bare model id prefixed anthropic.) or runtime (AsyncAnthropicBedrock, the classic endpoint, every model id sent exactly as written - an inference profile id as the account lists it, such as us.anthropic.claude-haiku-4-5-20251001-v1:0, since those carry dates and versions no rule can derive). llm.health names the surface beside the backend, model and region; no region on either surface is 503 AWS region missing before any call; a bad value is a 500 by name. Two shared vectors (68) pin the runtime surface's id rule in both packs.
  • The SDK's own credential error mapped. The Mantle client raises 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 account on 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-triage graph 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 ., basedpyright 0 errors, pytest -q 202 green - no token spent, no credential needed

Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com

🤖 Generated with Claude Code

…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 acn-ericlaw changed the title fix(llm-helper): map the Bedrock client's own credential error to the 503 by name 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 Oct 14, 2026
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
acn-ericlaw merged commit 03c5f57 into main Oct 14, 2026
5 checks passed
@acn-ericlaw
acn-ericlaw deleted the fix/llm-helper-bedrock-credential-error branch October 14, 2026 01:32
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>
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