Skip to content

List the GPT-6.1 Sol Bedrock Runtime profiles in model discovery - #3115

Open
schroderfernando16 wants to merge 1 commit into
mnfst:mainfrom
schroderfernando16:feat/bedrock-runtime-gpt-6-1-sol
Open

schroderfernando16 wants to merge 1 commit into
mnfst:mainfrom
schroderfernando16:feat/bedrock-runtime-gpt-6-1-sol

Conversation

@schroderfernando16

@schroderfernando16 schroderfernando16 commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Refs #3113

Summary

Adds openai.gpt-6.1-sol to the Bedrock Runtime capability catalog, so discovery offers its us. and global. inference profiles. On main, a Bedrock connection lists only the Mantle base id openai.gpt-6.1-sol. global.openai.gpt-6.1-sol and us.openai.gpt-6.1-sol are ACTIVE in AWS, but discovery only offers Runtime profiles of catalogued models, and this one was not catalogued.

The AWS model card lists the Standard tier, short context (up to 272K input tokens), per 1M tokens: Global CRIS $2.00 in / $10.00 out; US CRIS and Mantle regional $2.20 / $11.00. The Global profile is the cheaper option the issue asks for.

What changes

  • bedrock-runtime-capabilities.ts: one catalog entry (both APIs, max_completion_tokens, rejectsReasoningNone: true, the model card as sourceUrl, verifiedAt: 2026-11-05).
  • Specs: 34 added lines, no existing test touched.
  • Changeset (manifest, patch).

rejectsReasoningNone is set because of what the Runtime does with this model (below). With the Responses route from #3110, Chat Completions requests with function tools to these profiles go to Runtime Responses.

Measured on Bedrock Runtime (global.openai.gpt-6.1-sol, us-east-1, 2026-11-05)

Request Result
Chat Completions, no tools 200
Chat Completions with max_tokens 400 (max_completion_tokens only)
Chat Completions, reasoning_effort low / medium / high / xhigh 200
Chat Completions, reasoning_effort none or minimal 400 (the error lists low, medium, high, xhigh, max as supported)
Chat Completions, function tools, no effort 400 ("use /v1/responses")
Chat Completions, function tools, effort high 400 (same message)
Chat Completions, function tools, effort none 400 (none unsupported)
Responses, no tools 200
Responses, function tools, with and without reasoning 200
Responses, reasoning.effort none 400

This is the same behaviour as openai.gpt-6-astra, which already has rejectsReasoningNone. For us.openai.gpt-6.1-sol I measured only the no-tools Chat Completions request directly (200); its other cases ran through Manifest (below).

Through Manifest

This branch, local build, fresh database, a Bedrock API key. Discovery lists openai.gpt-6.1-sol, global.openai.gpt-6.1-sol and us.openai.gpt-6.1-sol next to the three gpt-6-sol ones. POST /v1/chat/completions returned 200 for both profiles in all four cases: no tools, and function tools with no effort, high and max. The three tool cases returned a tool call.

Not verified, and limits

  • The price in the dashboard. Prices show as null on my local instance, for gpt-6-sol as well, so I could not see the $2.00 / $10.00 option appear. The price data comes from the amazon-bedrock provider of models.dev, which lists global.openai.gpt-6.1-sol at 2 / 10. This PR makes the profile available; the reporter or a maintainer should confirm the price in the UI.
  • An explicit reasoning_effort: "none" with function tools still returns 400: the model rejects none on Responses too.
  • On the Responses route the conversion drops sampling parameters such as temperature, top_p, stop and seed, as described in fix: serve Bedrock Runtime GPT chat with function tools and reasoning through Responses #3110.
  • Requests above 272K input tokens are billed at the long-context rates in the model card; nothing changes in the code for that.
  • I did not check whether the two new ids can be picked automatically when tiers are recalculated.
  • The same gap exists for openai.gpt-6.1-terra, openai.gpt-5.6-sol and openai.gpt-5.6-terra (ACTIVE profiles, not catalogued). Each needs its own verification, so they are left out of this PR.

Tests

Backend unit: 523 suites, 9952 tests passing, with bedrock-runtime-capabilities.ts at 100%. tsc, eslint (0 errors), prettier and the changeset check are clean. Removing the catalog entry makes 7 of the new tests fail, and restoring it brings them back to passing.


Summary by cubic

Adds openai.gpt-6.1-sol to the Bedrock Runtime capability catalog so model discovery lists its us. and global. inference profiles. The profiles follow the openai.gpt-6-astra behavior: max_completion_tokens only, no reasoning_effort: none, and Chat Completions with function tools routed to Runtime Responses, which addresses the #3113 request for the cheaper global. profile.

Notes

  • Price data (2.00 in / 10.00 out for the global profile) comes from the amazon-bedrock provider and was not visible in the local dashboard.
  • openai.gpt-6.1-terra, openai.gpt-5.6-sol, and openai.gpt-5.6-terra have the same discovery gap and are left for separate PRs.

Written for commit 29173d3. Summary will update on new commits.

View guided diff

Add openai.gpt-6.1-sol to the Bedrock Runtime capability catalog so
discovery offers its us. and global. inference profiles. The model rejects
reasoning effort none and function tools on Chat Completions, so those
requests go to Runtime Responses, like openai.gpt-6-astra.

Refs mnfst#3113
@codecov

codecov Bot commented Nov 5, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 96.21%. Comparing base (623dc5e) to head (29173d3).

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##             main    #3115   +/-   ##
=======================================
  Coverage   96.21%   96.21%           
=======================================
  Files         674      674           
  Lines       39772    39772           
  Branches    11156    11107   -49     
=======================================
  Hits        38267    38267           
  Misses        521      521           
  Partials      984      984           
Flag Coverage Δ
backend 95.22% <ø> (ø)
frontend 97.44% <ø> (ø)
shared 98.78% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@schroderfernando16
schroderfernando16 marked this pull request as ready for review November 5, 2026 20:32

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

4 issues found across 7 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name=".changeset/bedrock-runtime-gpt-6-1-sol.md">

<violation number="1" location=".changeset/bedrock-runtime-gpt-6-1-sol.md:5">
P3: This release note overstates the routing behavior: `BEDROCK_RUNTIME_CHAT_VIA_RESPONSES=false` deliberately disables the Responses route. Mention the default and opt-out so operators are not misled about how these requests are handled.</violation>
</file>

<file name="packages/backend/src/routing/__tests__/bedrock-runtime-chat-routing.spec.ts">

<violation number="1" location="packages/backend/src/routing/__tests__/bedrock-runtime-chat-routing.spec.ts:109">
P3: `gpt-6.1-sol` is marked `rejectsReasoningNone`, but this test never sends `reasoning_effort: 'none'`; a regression that mishandles that value can pass these assertions. Add an explicit `none` case.</violation>
</file>

<file name="packages/backend/src/routing/proxy/__tests__/provider-client.bedrock-gpt-responses.spec.ts">

<violation number="1" location="packages/backend/src/routing/proxy/__tests__/provider-client.bedrock-gpt-responses.spec.ts:211">
P2: This regression test does not verify that gpt-6.1-sol omits `reasoning_effort`; add the assertion so an unsupported default effort cannot leak onto the Responses request.</violation>
</file>

<file name="packages/backend/src/routing/bedrock-runtime-capabilities.ts">

<violation number="1" location="packages/backend/src/routing/bedrock-runtime-capabilities.ts:59">
P2: This entry is treated as supported for every generic CRIS scope, including `eu.` and `apac.`, although GPT-6.1 Sol exposes only `us.` and `global.` Runtime profiles. Store allowed scopes per catalog entry or validate the profile scope before publishing Runtime endpoints.</violation>
</file>

Reply with feedback, questions, or to request a fix.

View guided diff | Re-trigger cubic


expect(url).toBe(RUNTIME_RESPONSES_URL);
expect(sent.tools).toEqual([flatWeatherTool]);
expect(sent).not.toHaveProperty('reasoning');

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: This regression test does not verify that gpt-6.1-sol omits reasoning_effort; add the assertion so an unsupported default effort cannot leak onto the Responses request.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At packages/backend/src/routing/proxy/__tests__/provider-client.bedrock-gpt-responses.spec.ts, line 211:

<comment>This regression test does not verify that gpt-6.1-sol omits `reasoning_effort`; add the assertion so an unsupported default effort cannot leak onto the Responses request.</comment>

<file context>
@@ -203,6 +203,15 @@ describe('ProviderClient: Bedrock Runtime GPT chat with function tools and reaso
+
+      expect(url).toBe(RUNTIME_RESPONSES_URL);
+      expect(sent.tools).toEqual([flatWeatherTool]);
+      expect(sent).not.toHaveProperty('reasoning');
+      expect(sent).not.toHaveProperty('messages');
+    });
</file context>
Suggested change
expect(sent).not.toHaveProperty('reasoning');
expect(sent).not.toHaveProperty('reasoning');
expect(sent).not.toHaveProperty('reasoning_effort');

verifiedAt: VERIFIED_AT,
},
{
modelId: 'openai.gpt-6.1-sol',

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: This entry is treated as supported for every generic CRIS scope, including eu. and apac., although GPT-6.1 Sol exposes only us. and global. Runtime profiles. Store allowed scopes per catalog entry or validate the profile scope before publishing Runtime endpoints.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At packages/backend/src/routing/bedrock-runtime-capabilities.ts, line 59:

<comment>This entry is treated as supported for every generic CRIS scope, including `eu.` and `apac.`, although GPT-6.1 Sol exposes only `us.` and `global.` Runtime profiles. Store allowed scopes per catalog entry or validate the profile scope before publishing Runtime endpoints.</comment>

<file context>
@@ -55,6 +55,14 @@ export const BEDROCK_RUNTIME_CAPABILITY_CATALOG: readonly BedrockRuntimeCapabili
     verifiedAt: VERIFIED_AT,
   },
+  {
+    modelId: 'openai.gpt-6.1-sol',
+    apis: CHAT_AND_RESPONSES,
+    chatTokenParameter: 'max_completion_tokens',
</file context>

'manifest': patch
---

Bedrock discovery now lists the `us.` and `global.` Runtime inference profiles of GPT-6.1 Sol. Chat Completions requests with function tools to these profiles are served through Runtime Responses, which drops sampling parameters such as `temperature` and `top_p`, as for the other Bedrock Runtime GPT profiles.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: This release note overstates the routing behavior: BEDROCK_RUNTIME_CHAT_VIA_RESPONSES=false deliberately disables the Responses route. Mention the default and opt-out so operators are not misled about how these requests are handled.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At .changeset/bedrock-runtime-gpt-6-1-sol.md, line 5:

<comment>This release note overstates the routing behavior: `BEDROCK_RUNTIME_CHAT_VIA_RESPONSES=false` deliberately disables the Responses route. Mention the default and opt-out so operators are not misled about how these requests are handled.</comment>

<file context>
@@ -0,0 +1,5 @@
+'manifest': patch
+---
+
+Bedrock discovery now lists the `us.` and `global.` Runtime inference profiles of GPT-6.1 Sol. Chat Completions requests with function tools to these profiles are served through Runtime Responses, which drops sampling parameters such as `temperature` and `top_p`, as for the other Bedrock Runtime GPT profiles.
</file context>
Suggested change
Bedrock discovery now lists the `us.` and `global.` Runtime inference profiles of GPT-6.1 Sol. Chat Completions requests with function tools to these profiles are served through Runtime Responses, which drops sampling parameters such as `temperature` and `top_p`, as for the other Bedrock Runtime GPT profiles.
By default, Bedrock discovery lists the `us.` and `global.` Runtime inference profiles of GPT-6.1 Sol. Chat Completions requests with function tools to these profiles are served through Runtime Responses; set `BEDROCK_RUNTIME_CHAT_VIA_RESPONSES=false` to disable that route. Runtime Responses drops sampling parameters such as `temperature` and `top_p`, as for the other Bedrock Runtime GPT profiles.

Comment on lines +109 to +111
expect(
bedrockRuntimeChatNeedsResponses(model, { tools: [functionTool], reasoning_effort: 'high' }),
).toBe(true);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: gpt-6.1-sol is marked rejectsReasoningNone, but this test never sends reasoning_effort: 'none'; a regression that mishandles that value can pass these assertions. Add an explicit none case.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At packages/backend/src/routing/__tests__/bedrock-runtime-chat-routing.spec.ts, line 109:

<comment>`gpt-6.1-sol` is marked `rejectsReasoningNone`, but this test never sends `reasoning_effort: 'none'`; a regression that mishandles that value can pass these assertions. Add an explicit `none` case.</comment>

<file context>
@@ -102,6 +102,15 @@ describe('bedrockRuntimeChatNeedsResponses', () => {
+    const model = 'us.openai.gpt-6.1-sol';
+
+    expect(bedrockRuntimeChatNeedsResponses(model, { tools: [functionTool] })).toBe(true);
+    expect(
+      bedrockRuntimeChatNeedsResponses(model, { tools: [functionTool], reasoning_effort: 'high' }),
+    ).toBe(true);
</file context>
Suggested change
expect(
bedrockRuntimeChatNeedsResponses(model, { tools: [functionTool], reasoning_effort: 'high' }),
).toBe(true);
expect(
bedrockRuntimeChatNeedsResponses(model, { tools: [functionTool], reasoning_effort: 'high' }),
).toBe(true);
expect(
bedrockRuntimeChatNeedsResponses(model, { tools: [functionTool], reasoning_effort: 'none' }),
).toBe(true);

@guillaumegay13

Copy link
Copy Markdown
Collaborator

@schroderfernando16 please check cubic issues

This branch has not been deployed

No deployments
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