Skip to content

fix(bedrock): onboard GPT-6 Astra consistently across plugins - #283

Open
leon1418 wants to merge 11 commits into
awslabs:mainfrom
leon1418:kb-autoupdate/openai-on-bedrock-model_catalog
Open

leon1418 wants to merge 11 commits into
awslabs:mainfrom
leon1418:kb-autoupdate/openai-on-bedrock-model_catalog

Conversation

@leon1418

@leon1418 leon1418 commented Sep 9, 2026 •

Copy link
Copy Markdown
Contributor

Astra must remain on its selected Bedrock API throughout migration. This change adds the dated Astra catalog and fixes the consumers that could otherwise recommend Astra, evaluate its bare Mantle id through Converse, generate the wrong base path, or replace supported Chat Completions with Responses.

Behavior

  • Preserve Astra sources on Astra with model-specific capability, region and capacity checks. Mantle uses Oregon and /openai/v1; runtime retains supported US Geo / Global CRIS ids. Keep selected Chat or Responses through Design, Generate, evaluation and rewriting.
  • Offer Astra as the capability-first Pro upgrade and Sol as the lower-cost GPT option. A version upgrade remains a model change requiring golden evaluation; an unchanged model does not prove API/parameter parity.
  • Normalize missing legacy API paths once before dispatch: validated bare proprietary GPT targets use Mantle Responses; runtime targets keep Converse. Explicit plans retain their API. Mixed legacy targets require plan resolution. Every resume uses the same saved inputs.
  • Preserve image payloads, bounded throttling retries and partial-result resume on the selected API. Keep Astra sampling, n, hosted-state and account availability unverified where no probe exists.
  • Use exact static prices by inference option and context tier, retain 30m cache-write labels and runtime output-token quota weighting, and derive ROI from verified source/target rates. Unknown source prices stay unavailable; Global comparisons are not assigned a fixed premium.

Validation

Local validation at 85e254c5: 374 agent-advisor + 305 llm-to-bedrock tests per plugin, 1,358 total. The 40 execution-contract cases per plugin cover literal evaluator snippets, Mantle/CRIS routing, image payloads, retries/resume, ROI and legacy defaults. Repository lint, formatting, mirror/contract checks, Bandit and the update-range Gitleaks scan pass.

startups-hybrid-v1 completed with actual OCR delegation, one isolated general reviewer, the parent repository review, impact-map reconciliation and the convergence-v1 evidence gate. No remaining verified findings. No live inference or end-to-end generated customer application was run; target-account verification remains required.

GitHub CI for 85e254c5 is pending; the local results above are separate from CI.

Main integration

Normal merge 42348740 integrates main ca384f14 without rebasing or force-pushing. Main moved the AI rules into skills/shared/ai and per-skill vendored copies. Astra selection, lifecycle and quota rules now survive in both plugins' canonical files and GCP/Azure copies, with the required consumer-local facts and prices.

The Azure consumer's schema, Design/Generate parent gates and final recommendation are aligned with the shared Astra API/region and rate-derived ROI contracts. A supported runtime CRIS target is accepted while a bare Mantle id remains prohibited on runtime. Prior executable Astra behavior is preserved; unrelated main changes are retained.

Source: https://aws.amazon.com/about-aws/whats-new/2026/09/openai-gpt-6-astra-on-amazon-bedrock/

Proposed by the knowledge auto-update pipeline; every edit's justification is in the PR body.

@leon1418 leon1418 left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

[🤖 AI review 🤖]

Scope reviewed: Both changed files (advisor + migrate copies of gcp-to-aws/references/phases/clarify/clarify-ai.md), the PR description, cross-plugin parity, surrounding table context (lines 318–355), and the upstream single-source-of-truth files this table derives from: openai-on-bedrock.md (model catalog, Tier 0 list, "Not on Bedrock" list), ai-openai-to-bedrock.md (Tier 1 Option A mapping), pricing-cache.md, ai-model-lifecycle.md, and openai-bedrock-2026-08-21.json.

Cross-plugin parity: ✅ PASS — both files have identical blob SHA bf5e3cfd. Drift allowlist unchanged.


Finding 1 — Downstream table updated but upstream sources still don't know GPT-6 Astra exists

The clarify-ai.md table is a derived surface: its recommendations come from the model catalog and tier mapping defined in shared reference files. This PR updates the derived table to recommend GPT-6 Astra without updating any of the upstream sources:

  1. openai-on-bedrock.md Model Catalog (line ~22–38): No GPT-6 Astra row. Still says "Last verified: 2026-08-21".
  2. openai-on-bedrock.md "Not on Bedrock" list (line ~42): Still lists "*-Pro variants" as not on Bedrock, but does not mention GPT-6 Astra as being on Bedrock.
  3. ai-openai-to-bedrock.md Tier 1 Option A mapping (line ~104): Still maps Flagship reasoning (*-Pro) → GPT-5.6 Sol. If GPT-6 Astra is the new flagship, this mapping is stale.
  4. openai-bedrock-2026-08-21.json: No GPT-6 Astra entry. The PR description itself identifies this gap.
  5. pricing-cache.md: No GPT-6 Astra pricing row.
  6. ai-model-lifecycle.md: No GPT-6 Astra entry.

The PR description explicitly acknowledges these gaps ("needs new row(s) in Tier 0 model table, cost-comparison tables, Option A tier mapping, and an updated dated capability catalog") but ships only the table row without them. This creates contradictions:

  • openai-on-bedrock.md says GPT-6 Astra doesn't exist on Bedrock.
  • ai-openai-to-bedrock.md Tier 1 maps Pro → GPT-5.6 Sol.
  • clarify-ai.md recommends GPT-6 Astra for Pro workloads.

The single-source-of-truth contract (openai-on-bedrock.md: "This file is the single source of truth for OpenAI-on-Bedrock facts in this plugin") means the catalog should be updated first, and downstream tables should follow.

Concrete risk: An AI agent following the Tier 1 mapping policy will recommend GPT-5.6 Sol for Pro workloads (from ai-openai-to-bedrock.md), contradicting the clarify-ai.md table that now says GPT-6 Astra. The user gets inconsistent advice depending on which file the agent reads first.

Recommendation: Either (a) include the upstream file updates in this PR (model catalog, tier mapping, pricing, lifecycle), or (b) revert this table change and file a separate issue for the full GPT-6 Astra onboarding that updates all sources atomically.

@leon1418 leon1418 changed the title fix(agent-advisor): openai-on-bedrock.model_catalog — new knowledge fix(bedrock): onboard GPT-6 Astra consistently across plugins Sep 9, 2026
@leon1418

leon1418 commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

Addressed Finding 1 in commit 4d329986, using option (a): update the authoritative sources and their consumers together.

  • Added Astra to openai-on-bedrock.md, the Tier 0 same-model mapping, pricing/cache comparisons, and ai-model-lifecycle.md. Astra's evidence is dated September 9; existing entries retain their original verification dates.
  • Updated Tier 1 Option A and clarify-ai.md consistently: Astra is the capability-first reasoning choice, with Sol retained as the lower-cost alternative. Existing GPT-5.x sources are not automatically upgraded.
  • Added openai-bedrock-2026-09-09.json and updated every catalog reference/loader. The recommender now recognizes Astra and applies its own API, region, CRIS-profile, capability, and capacity constraints.
  • Mirrored the changes across advisor and migrate; cross-plugin parity passes and all eight existing catalog entries are preserved.

Validation: 99 focused tests pass in each plugin, including 11 new Astra cases. All eight GitHub checks now pass on 4d329986, including build and Gitleaks. No live AWS inference was run; account-specific availability and behavior still require the documented probes.

@leon1418 leon1418 left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

[🤖 AI review 🤖]

Re-review of commit 4d32998 (previous: 962672a). Scope: all 26 changed files across both plugins, the executable JSON catalog, recommendation engine, verification adapter, tests, and all upstream source-of-truth references.


Prior Finding 1 — Upstream sources don't know GPT-6 Astra exists → ✅ FIXED

The fix commit (4d32998, authored genli, 2026-09-09T18:07:15Z, ancestor of HEAD ✓) adds Astra to every upstream source simultaneously:

  1. openai-bedrock-2026-09-09.json — full openai_gpt_6_astra entry with path-specific capabilities, region matrices, and evidence URLs.
  2. openai-on-bedrock.md — model catalog row, access path table, mantle/runtime region matrices, quota notes, pricing, and caching rules.
  3. ai-openai-to-bedrock.md — Tier 0 row, Tier 1 Option A mapping (Pro → Astra; Sol as lower-cost alternative), region gate, cost comparison table, and migration decision framework.
  4. pricing-cache.md — Astra row in the master table + dedicated pricing sub-table with all 4 context×inference-option combinations and cache rates.
  5. ai-model-lifecycle.md — Active lifecycle entry, launched Sep 8 2026, EOL no sooner than Sep 8 2027.
  6. clarify-ai.md — Q16 option 19, dedicated recommendation row, Pro-variant recommendation updated.

The single-source-of-truth contract is now satisfied: openai-on-bedrock.md defines Astra and downstream files derive from it. No contradictions remain.

Cross-plugin parity: ✅ 12/13 mirrored file pairs are byte-identical. The 1 difference (model-selection.md) is a pre-existing, plugin-specific self-reference divergence on the ALLOWLIST in cross-plugin-drift.ts — not introduced by this PR.


New code review (commit 4d32998)

0 mandatory blockers. 0 Nits.

Design: The change correctly extends an existing evidence-driven recommendation system to a new model without changing any architectural invariant. The path-specific capability override (_catalog_model_for_path L188-189) is the right mechanism — it prevents Astra's mantle tool_or_function_calling from leaking to runtime_converse where tools are unsupported. The region/profile gating (L960-980) is a genuine safety improvement that fail-closes when the caller's region has no catalog evidence for the resolved inference profile.

Functionality: Astra sources route to the source-compatible API (Responses on Mantle, Chat Completions on Mantle, or Converse via CRIS when governance requires it). The candidate_order mechanism correctly pins Astra sources to Astra rather than falling through to older GPT-5.x models. _target_accepts_sampling correctly returns None for openai_gpt_6 family (unprobed), producing sampling_params_unverified instead of the GPT-5.x acceptance/rejection rules.

Tests: 11 new Astra-specific test cases cover: mantle Responses + Chat Completions routing, region gate (outside Oregon → decision_required), runtime with streaming/limits, unsupported geo profiles, capability isolation (tools/structured_output → unverified_capability block), and capacity ceiling enforcement. The Chat Completions verification adapter test confirms the correct model ID and API surface.

Pricing math verified: $11/$55 ÷ $4.40/$22 = 2.5x Sol ✓. Opus 4.8 at $5/$25 vs Astra $11/$55 = Opus 55% cheaper ✓. Long-context rates are 2x short-context ✓.

CI: 8/8 checks pass at head 4d32998. Approvals: 0. Mergeability: MERGEABLE. No reviews dismissed.

@leon1418
leon1418 marked this pull request as ready for review September 9, 2026 18:48
@leon1418
leon1418 requested review from a team as code owners September 9, 2026 18:48

@herosjourney herosjourney left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed: head 4d32998 (base f1cc0fb), 26 files (+1072/−256) — gcp-to-aws (10) and agent-advisor (16), both plugin trees.
Ran: cmp on all 13 twin pairs; cross-plugin-drift.ts (273 identical / 25 allowlisted, allowlist delta 0); mise run lint:model-ids, shared:check, lint:frontmatter, fixtures:check, fixtures:assert, test, fmt:check (all pass); markdownlint-cli2 on changed files (0 errors); security:bandit, security:semgrep (pass); agent-advisor uv run pytest in both trees; git merge-tree against main and open PRs #269 / #267 / #262 / #284; llm-to-bedrock script probes against openai.gpt-6-astra; Astra model card read 2026-09-10.
Did not run: live Bedrock/Mantle inference; end-to-end LLM run; checkov/grype locally (CI green).

Cross-plugin parity: PASS — 12/13 pairs byte-identical; model-selection.md differs only in the pre-existing allowlisted self-reference. Nothing outside skills/ changed.

Change narrative: add GPT-6 Astra to the OpenAI SSOT, pricing cache, lifecycle, Tier 0 / Tier 1 mappings, Clarify Q16, and the agent-advisor catalog + recommender with Astra-specific region/API/capability gating. Body vs diff: diverges on tests — body reports "99 focused tests pass"; the full agent-advisor suite has 2 regressions (below).

Axis Stance One line
Parsimony advisory Right mechanism (data in SSOT + generic region gate + candidate_order); one nit inline
Completeness finding Full suite regresses; AI-only Clarify route, Discover preview, quota refs, and the llm-to-bedrock execute path never learn Astra exists
Security clear No new credential/IaC/injection surface; new region gate fails closed; sampling marked unverified; scanners green
Alternatives advisory 2 named below
Contradictions finding SSOT says Astra has a runtime path with 10× burndown; bedrock-quotas.md says 1× for non-Claude; guardrails say runtime fallback "exists only for GPT-5.6"; Discover preview maps Pro → Nova 2 Pro while Design maps Pro → Astra
Overlap clear Restatements are the declared consumers
Cross-plugin parity clear See above
Propagation & data finding SSOT updated first (good); every fact verified against the model card (all correct); 4 consumers not updated; arithmetic re-derived and holds

Blocking

1. Two agent-advisor tests fail in both trees at the PR head — skills/agent-advisor/scripts/test_scoring.py:717 (_POOL_LIFECYCLE_KEYS), same in migrate/.

AssertionError: models missing a lifecycle key: ['openai_gpt_6_astra'] (test_pool_keys_cover_every_selectable_model) and KeyError: 'openai_gpt_6_astra' (test_no_pool_model_is_legacy_or_excluded)

Base: 322 passed. Head: 331 passed / 2 failed per tree. These are the lifecycle-drift guards that exist so a new pool model gets checked against ai-model-lifecycle.md. Fix: add "openai_gpt_6_astra": "gpt-6-astra", to _POOL_LIFECYCLE_KEYS in both trees — applied in a scratch worktree, 333/333 pass. Please also report the full-suite count in the body.

2. The execute skill cannot run the target this PR now recommends — skills/llm-to-bedrock/scripts/preflight_bedrock.py:68, iam_policy.py:26, bedrock_pricing.py:91, references/helpers/resolve-bedrock-model-id/resolve-bedrock-model-id.md:58, references/helpers/behavior-delta-detection/references/openai-to-bedrock.md:15 (both trees).

return mid.startswith("openai.gpt-5") and "oss" not in mid

Probed at head: is_mantle_model("openai.gpt-6-astra") → False in preflight and IAM; bedrock_pricing.lookup("us-west-2", "openai.gpt-6-astra") → available: False. Design now emits Astra as the Tier 0 target for Astra sources and the Tier 1 Option A target for every *-Pro source; llm-to-bedrock then probes the bare Mantle id via Converse (fails — the card says no in-Region runtime form), generates IAM with bedrock:InvokeModel on a nonexistent foundation-model ARN instead of bedrock-mantle:CallWithBearerToken, prices it as unavailable, and skips the Mantle parameter-surface guidance. Same class as #210.

Fix, either: (a) extend is_mantle_model / is_mantle_gpt in the three scripts to openai.gpt-6 (keep the oss exclusion), add Astra STATIC_FALLBACK rows for openai. / us. / global. forms at the card's rates, add Astra to the helper docs' proprietary-GPT lists and a Case C in resolve-bedrock-model-id.md, with tests; or (b) keep this PR design-side but withhold Astra from the Tier 1 Option A default and Tier 0 strong_migrate until (a) lands, naming the follow-up in the body.

3. The AI-only Clarify route has no Astra — skills/gcp-to-aws/references/phases/clarify/clarify-ai-only.md:184,198 (both trees).

… 7) GPT-5.6 Sol/Terra/Luna | 8) GPT-5/5.x (older) | 9) GPT-5.5/Pro | 10) o-series | 11) Claude …
| GPT-5.x Pro | GPT-5.6 Sol; or Nova 2 Pro | Pro not on Bedrock — offer both |

clarify-ai-only.md is loaded instead of clarify-ai.md on the standalone AI migration path. On it a user cannot declare an Astra source (no Q5 option), and Pro still maps to Sol — contradicting the Tier 1 Option A mapping and the clarify-ai.md row this PR updates. Fix: add GPT-6 Astra to the Q5 list and mirror the two recommendation rows from clarify-ai.md.

Should-fix

4. Quota guidance now disagrees with the SSOT — skills/gcp-to-aws/references/shared/bedrock-quotas.md:99, ai-migration-guardrails.md:35,45 (both trees).

burndown_multiplier = 5 for Claude models … 1 for all others / **The bedrock-runtime fallback exists only for GPT-5.6.**

openai-on-bedrock.md (this PR, L251) records Astra runtime at 10x output-token burndown and a runtime CRIS path; both confirmed on the card. The capacity formula understates an Astra-runtime workload's TPM target by 10× and the guardrails claim is now false. Add an Astra-runtime (10×) row/note to bedrock-quotas.md; change the guardrails sentence to "exists for GPT-5.6 and GPT-6 Astra".

5. Discover preview maps Pro to a different target than Design — skills/gcp-to-aws/references/phases/discover/discover-preview.md:93-97,112 (both trees).

| gpt-*-pro (GPT-5.x Pro), o1-pro, o3-pro | Amazon Nova 2 Pro | amazon.nova-2-pro-v1:0 | and no Astra row in the source-model table

Discover and Design run in one session (#169 fixed the same class). Add gpt-6-astra → openai.gpt-6-astra to the source table and align the Pro row with Tier 1 Option A.

6. Landing order — git merge-tree reports content conflicts with #269 (6 files: ai-openai-to-bedrock.md, clarify-ai.md, pricing-cache.md × 2 trees), #267 and #262 (pricing-cache.md × 2). #269 is approved and corrects the Sonnet 5 3.00 / 15.00 cells this PR's cost-comparison table still carries in its unchanged rows. Suggest #269 → #267 → #283 and rebase; this PR is additive so it resolves most cheaply last. GitHub shows BEHIND.

Nits

Inline on the four anchorable spots (Tier 0 Model ID column, _feature_findings n suppression, catalog disclaimer, cache-write "30m" qualifier).

Heads-up (pre-existing)

  • Sonnet 5 3.00 / 15.00 in the unchanged rows of the cost-comparison table is the stale rate #269 corrects; ordering only.

Alternatives (max 2)

  1. Split data onboarding from policy change. Land SSOT + pricing + lifecycle + catalog + recommender (Tier 0 same-model) now; move "Pro → Astra" (Tier 1 Option A, Q16 row, clarify-ai-only, discover-preview) to a second PR. Wins: the uncontroversial half merges ahead of the #269 conflicts and Blocking 2 only gates the policy PR. Costs: two PRs. Worth it if Blocking 2 takes time.
  2. Keep the catalog filename (openai-bedrock-2026-08-21.json) and add Astra with its own dated evidence, as the Anthropic catalog did for Sonnet 5 in #267, rather than renaming to 2026-09-09 when one entry was verified that day. Wins: no loader/test churn. Costs: file-level verified_at lags. Recommendation: keep the rename — the disclaimer states per-entry dates, which is what matters.

Verified clean

Every factual claim matches the model card: launch 2026-09-08, EOL no sooner than 2027-09-08, Active, 1,050,000 / 128,000 tokens, mantle us-west-2 only with Responses + Chat Completions, runtime CRIS-only with exactly the 5 US-Geo and 12 additional Global regions listed, Guardrails / application inference profiles Converse-only, no server-side tools or structured outputs on runtime, caching Responses-only on mantle, 10× burndown, Standard tier only. Pricing matches to the cent; 2.5× Sol (11/4.40, 55/22, 10/4, 50/20) and Opus 55% cheaper (2:1 blended, 25.67 vs 11.67) recompute; cache write = 1.25× and read = 0.1× input on every row. pricing-cache.md Last updated correctly left at 2026-08-24 with a separate dated Astra line. The region/profile gate fails closed; _target_accepts_sampling returns None for openai_gpt_6; the 11 new tests cover routing, region gate, capability isolation, and capacity ceiling.

Verdict

Request changes — three kind-checkable blocking findings: a regressed suite in both trees (one-line fix), an executor that cannot run the model the design now recommends, and a Clarify route on which Astra does not exist. The SSOT, catalog, pricing, and recommender work is correct and verified against the primary source; once the consumers catch up this is ready.

| GPT-5.4 | GPT-5.4 | `openai.gpt-5.4` (mantle only) | `strong_migrate` — same model, ~10% over OpenAI std |
| Source model | Bedrock target | Model ID (mantle / runtime CRIS) | Assessment |
| ------------- | -------------- | ------------------------------------------------------- | --------------------------------------------------------------------------- |
| GPT-6 Astra | GPT-6 Astra | See the canonical catalog's Astra access paths | `strong_migrate` after region/API checks; price the chosen inference option |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Nit: this is the Model ID column and every other row gives copyable ids; an agent filling aws-design-ai.json from this table gets a pointer instead. Suggest openai.gpt-6-astra (mantle, us-west-2) / us. global. prefixed, and move "see the canonical catalog's access paths" into the Assessment cell. Same on the migrate/ copy.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fixed in d4af427 in both plugins. The Model ID cell now contains openai.gpt-6-astra and the us. / global. CRIS forms; the canonical API/region gate is in the Assessment cell. The region section retains Astra's Oregon-only Mantle requirement.

AI-assisted reply.

)
)
if requirements.get("uses_n") or "multiple_candidates_n" in detected:
if path != "mantle_openai_chat" and (

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Nit: this drops the n / multiple_candidates_n finding for every mantle_openai_chat target, but the only model that reaches that path is Astra, whose own sampling_params_unverified finding (added in this PR) says its accepted parameters are unknown. Suggest emitting the finding as unverified for family == "openai_gpt_6" rather than suppressing it. Same on the migrate/ copy.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fixed in d4af427 in both plugins. Astra on mantle_openai_chat now emits multiple_candidates_n_unverified with a probe/remediation step. Regression cases cover both requirements.uses_n and detected multiple_candidates_n; neither gets the Responses no-n finding or a forced API reshape. Both full agent-advisor suites pass (335 tests each).

AI-assisted reply.

"source": "AWS Bedrock userguide OpenAI model cards + models-api-compatibility (retrieved 2026-08-21); internal migration reference, OpenAI path (feature-level probes, 2026-06-20)",
"disclaimer": "This is the OpenAI-to-Bedrock MIGRATION target catalog, not a list of OpenAI models: it holds the verified landing candidates for the available paths. Verified 2026-08-21 — the GPT-5.6 family changed materially between 2026-07-21 and 2026-08-21: Sol/Terra/Luna now ALSO run on bedrock-runtime via CRIS inference profiles (Geo us./in., Global global.), with Converse/Chat Completions/Invoke listed as supported there (Guardrails Converse-only, prompt caching Responses-only on runtime), and Global CRIS pricing published at OpenAI's standard list price (cost parity; In-Region/Geo remain 1.10x). So runtime_converse now carries BOTH same-vendor GPT-5.6 candidates (same-model governance path) AND the Claude tier mapping (GPT-5.6 Sol -> Claude Opus 4.8, Terra/5.5/5.4 -> Claude Sonnet 5, Luna -> Claude Haiku 4.5) as the cross-family option. GPT-5.5 and GPT-5.4 remain mantle-only and in-region only — no CRIS, no runtime path. The gpt-oss open-weight models still support Converse on bedrock-runtime but sit a capability class below the frontier tier and are not listed. Only models with dated evidence are listed; entries name their evidence. Numeric limits stay 'unknown' unless sourced. Re-probe every selected model and API path in the target account and region before implementation.",
"source": "AWS Bedrock userguide OpenAI model cards + models-api-compatibility (retrieved 2026-08-21); internal migration reference, OpenAI path (feature-level probes, 2026-06-20); GPT-6 Astra model card retrieved 2026-09-09: https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-6-astra.html",
"disclaimer": "GPT-6 Astra added from its AWS model card on 2026-09-09; existing model entries retain their individual evidence dates and were not re-probed. Astra has 1,050,000 context tokens and 128,000 maximum output tokens. Its mantle Responses/Chat Completions paths are Oregon-only; runtime Converse uses US Geo or Global CRIS. Feature evidence is path-specific. No account-level availability or behavioral probe was run. This is the OpenAI-to-Bedrock MIGRATION target catalog, not a list of OpenAI models: it holds the verified landing candidates for the available paths. Verified 2026-08-21 — the GPT-5.6 family changed materially between 2026-07-21 and 2026-08-21: Sol/Terra/Luna now ALSO run on bedrock-runtime via CRIS inference profiles (Geo us./in., Global global.), with Converse/Chat Completions/Invoke listed as supported there (Guardrails Converse-only, prompt caching Responses-only on runtime), and Global CRIS pricing published at OpenAI's standard list price (cost parity; In-Region/Geo remain 1.10x). So runtime_converse now carries BOTH same-vendor GPT-5.6 candidates (same-model governance path) AND the Claude tier mapping (GPT-5.6 Sol -> Claude Opus 4.8, Terra/5.5/5.4 -> Claude Sonnet 5, Luna -> Claude Haiku 4.5) as the cross-family option. GPT-5.5 and GPT-5.4 remain mantle-only and in-region only — no CRIS, no runtime path. The gpt-oss open-weight models still support Converse on bedrock-runtime but sit a capability class below the frontier tier and are not listed. Only models with dated evidence are listed; entries name their evidence. Numeric limits stay 'unknown' unless sourced. Re-probe every selected model and API path in the target account and region before implementation.",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Nit: disclaimer is surfaced at runtime and now reads as a changelog (07-21 → 08-21 → 09-09). #267 moved that class of text to commit messages and kept the field to what is true now. Related: region_availability.commercial means "all reachable regions" for the GPT-5.6 entries and "mantle only" for Astra — the evidence string explains it, but a uniform reader will misjudge. Same on the migrate/ copy.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fixed in d4af427. The disclaimer now states current evidence limits and verification requirements without the historical changelog. Every OpenAI entry carrying region_availability now explicitly declares scope: "mantle_in_region" and explains that runtime availability belongs to the selected path/profile.

I checked the existing GPT-5.6 lists: they contain the small Mantle region sets, not the full runtime footprint. Their values are preserved; the uniform scope makes that meaning explicit for GPT-5.6 and Astra. Both plugin copies are updated.

AI-assisted reply.


### GPT-6 Astra — Standard tier, verified 2026-09-09

| Context tier | In-Region / Geo (in · out) | Global CRIS (in · out) | Cache write / read (In-Region / Geo) | Cache write / read (Global) |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Nit: the card labels these "Input — 30m cache write"; the column header drops the 30m qualifier (same in the pricing-cache.md Astra sub-table). Worth carrying since the GPT-5.6 caching section below states different minimum-prefix/breakpoint rules and this PR says not to inherit them. Same on the migrate/ copy.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fixed in d4af427: both Astra cache-write columns in openai-on-bedrock.md, and the Astra cache-write column in pricing-cache.md, now say 30m cache write. Applied to both plugins and checked against the model card on September 16. The separate GPT-5.6 prefix/breakpoint/quota rules are not applied to Astra.

AI-assisted reply.

@leon1418
leon1418 requested a review from a team as a code owner September 16, 2026 17:05
@leon1418

leon1418 commented Sep 16, 2026 •

Copy link
Copy Markdown
Contributor Author

AI-assisted review follow-up — addressed in d4af427, following the main integration in 22695fa.

In response to the review:

  1. Full-suite regressions: added Astra to _POOL_LIFECYCLE_KEYS in both trees. Each full agent-advisor suite now passes 335/335. CI now runs both complete agent-advisor and llm-to-bedrock suites through mise run test.
  2. Execution propagation: implemented option (a). Bare Astra ids select Mantle preflight and project/bearer IAM permissions; us. / global. ids retain runtime preflight and foundation-model/profile permissions. Static prices are exact per inference option, with the >272K limitation surfaced. Invalid/partial/suffixed ids cannot inherit an Astra price. Added the resolver Case C and model/API-specific behavior guidance. Each full llm-to-bedrock suite passes 265/265.
  3. AI-only Clarify: added the Astra Q5 option and aligned the Astra/Pro recommendations with full Clarify and Design, including endpoint and region constraints.
  4. Quotas: documented Astra runtime's 10x output burndown and CRIS alternative. The sizing formula is input TPM + 10 x output TPM, not 10x total source TPM. Mantle guidance does not inherit GPT-5.6 cache exemptions or runtime's multiplier.
  5. Discover: added Astra's same-model mapping and aligned the Pro row with Astra / lower-cost Sol / cross-family Nova choices; an unresolved choice is recorded for Clarify rather than silently selecting Nova.
  6. Landing order: fix(gcp-to-aws): align Sonnet 5 pricing, guidance, and report estimates #269 and fix(pricing): verify Anthropic batch rows; retract unverified Codex GA claim #262 have merged and are included from main, retaining Sonnet 5's $2/$10 correction. fix(gcp-to-aws): record Fable 5.1 pricing and enforce restricted-model selection #267 is still open at 55c811df; a merge check still reports two mirrored pricing-cache.md conflicts. Whichever PR lands second needs that refresh.

Also replied separately to all four inline comments: copyable ids, unverified Chat n, concise disclaimer with uniform region scope, and 30m cache-write labels. The PR body now reports the full counts: 1,200 passing Python tests across both plugins. Repository lint, Node tests, formatting, drift, and Bandit pass; the update-range Gitleaks scan reports no leaks. All 9 GitHub checks now pass on d4af4273. The Build run completed mise run build and independently confirmed the same full-suite counts.

No live Bedrock inference or end-to-end migration was run. The documented account/API verification gate remains in place.

@herosjourney herosjourney left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Re-review at d4af4273 (previous: 4d32998). Delta: 2 commits (1 main-merge + d4af4273), consumers of the Astra SSOT brought current.

Ran: full agent-advisor suite both trees (uv run --group dev pytest: 335/335 each), full llm-to-bedrock suite both trees (265/265 each) — 1,200 total, matching the PR body. Loaded preflight_bedrock.py / iam_policy.py / bedrock_pricing.py directly and probed openai.gpt-6-astra, us.openai.gpt-6-astra, global.openai.gpt-6-astra against is_mantle_model/is_mantle_gpt and the static pricing table. cmp on all 26 changed files (both trees). cross-plugin-drift.ts (275 identical, 25 allowlisted — unchanged baseline). mise run build locally: exit 0. git merge-tree against origin/main (clean) and pr-267 (conflicts, pre-existing).

Prior finding Status at head
Blocking 1 — regressed lifecycle-drift tests (test_pool_keys_cover_every_selectable_model, test_no_pool_model_is_legacy_or_excluded) Fixed at d4af4273 — re-probed: both tests pass in isolation and the full 335-test suite is green in both trees, matching the body's reported count.
Blocking 2 — llm-to-bedrock execute path couldn't run Astra (Converse preflight, runtime-only IAM, no static price) Fixed at d4af4273 — re-probed by loading the modules directly: is_mantle_model("openai.gpt-6-astra") == True (routes to mantle probe with an Astra-specific quota note); is_mantle_model on the us./global. CRIS forms is False, correctly falling through to the standard runtime probe rather than mantle — this is more precise than my suggested blanket startswith("openai.gpt-6") fix, since it doesn't mis-route the CRIS ids. Static pricing present for all three id forms at the card's rates. resolve-bedrock-model-id.md gained Case C for Astra; openai-to-bedrock.md behavior-delta doc updated.
Blocking 3 — AI-only Clarify route had no Astra option Fixed at d4af4273 — re-probed: Q5 picker in clarify-ai-only.md now has option 12 (GPT-6 Astra), and the Pro row offers Astra/Sol/Nova 2 Pro, matching clarify-ai.md's mapping.
Should-fix 4 — quota formula omitted Astra's 10× burndown; guardrails claimed runtime fallback "exists only for GPT-5.6" Fixed at d4af4273 — bedrock-quotas.md's formula now states output_burndown_multiplier = 10 for Astra runtime, 5 for Claude runtime, 1 only where verified. The stale guardrails sentence was removed rather than reworded — also resolves the contradiction cleanly.
Should-fix 5 — Discover preview mapped Pro to Nova 2 Pro while Design mapped Pro to Astra Fixed at d4af4273 — discover-preview.md now carries a gpt-6-astra source row and its Pro mapping (GPT-6 Astra; Sol for lower cost; or Nova 2 Pro) matches Design's.
Should-fix 6 — landing order vs #267/#269/#262 #269/#262 now merged into main and this PR is rebased on top (body confirms). #267 is still open and still conflicts on the two pricing-cache.md files (git merge-tree pr-267 pr-283 — conflicts). Not this PR's defect; still a landing-order note for whichever of #267/#283 merges second.
Nits (Model ID column, n-suppression scope, catalog disclaimer changelog, "30m" cache-write qualifier) All 4 fixed as described in your inline replies — re-verified each directly in the diff.

New in delta: none beyond the fixes above and the main-merge.

Verdict: Approve — supersedes my prior Request changes. All three Blocking findings and both Should-fix items are resolved and re-verified independently (not taken on the reported counts alone). Should-fix 6 remains open only as an inter-PR landing-order note against #267, which is not blocking for this PR.

@herosjourney herosjourney left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

[🤖 AI review 🤖]

Re-review at d4af4273 (unchanged since my prior APPROVED review on 9/16). No new commits, no new open findings — content-wise this still has my approval.

New since then: mergeable flipped to CONFLICTING / mergeStateStatus: DIRTY. Root cause: main advanced (PR #267, merged 2026-09-16) and edited the exact same lines in pricing-cache.md — both plugin copies — that this PR edits. Confirmed by merging origin/main into this branch in a scratch worktree:

CONFLICT (content): advisor/plugins/aws-startup-advisor/skills/gcp-to-aws/references/shared/pricing-cache.md
CONFLICT (content): migrate/plugins/migration-to-aws/skills/gcp-to-aws/references/shared/pricing-cache.md

This is a landing-order conflict, not a quality issue with this PR. Two hunks per file, both reconcilable:

  1. **Last updated:** header line — this PR adds a "GPT-6 Astra rates added: 2026-09-09" line above the old 2026-08-24 date; main bumped the base date to 2026-09-03. Resolution: keep 2026-09-03 and keep the Astra addendum line under it.
  2. Multi-provider pricing table — this PR adds a GPT-6 Astra row; main added restricted (...) status wording + a new Claude Fable 5.1 row (and widened the Status column for the longer text). Resolution: keep main's restricted Fable 5 / Fable 5.1 rows and add this PR's GPT-6 Astra row, using the wider Status column.

@leon1418 — could you rebase/merge main and resolve those two hunks so this can land? Everything else (Astra onboarding across ai-model-lifecycle.md, openai-on-bedrock.md, openai_model_recommendation.py, the model catalog JSON) is untouched by the conflict and still stands as approved.

@leon1418

Copy link
Copy Markdown
Contributor Author

AI-assisted follow-up to the September 17 review.

Merged current main 658ca82a normally in ccfa4c26, preserving both histories. I reproduced the two mirrored pricing-cache.md conflicts and verified the resolution against both parents: all 49 main table rows are retained, including the restricted Fable 5 / Fable 5.1 entries and aws_review requirements, plus the original Astra row. The September 3 cache date and September 9 Astra addendum are both present; the detailed Astra pricing section is unchanged. Only those two files required manual resolution.

Local validation on the merge result: mise run lint, formatting, mirror/content preservation assertions, and git diff --check pass; both plugins again pass 335 agent-advisor and 265 llm-to-bedrock tests each (1,200 total). Update-range Gitleaks reports no leaks. The warn-only pricing-checker messages match the pre-merge run.

The obsolete #267 landing-dependency wording is updated in the PR body. GitHub now reports this head mergeable without content conflicts; its CI checks are pending. Please re-review the merge resolution; the earlier fixes and inline replies remain in place.

@leon1418

leon1418 commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor Author

[🤖 AI review 🤖]

Updated to 113c38cd through normal merges and scoped fixes, following the main-integration feedback. The current lifecycle/pricing conflicts are resolved while retaining main's EOL/Removed and restricted-model rules plus Astra's dated content.

The combined review found two gaps that our earlier review missed: remaining Markdown executor/Design/Generate consumers still used GPT-5-only API rules, and ROI text imposed a fixed 10% premium. These are now corrected across both plugins. Revalidation also caught and corrected a legacy missing-path default inconsistency introduced during the fix. Evaluation and rewriting now share one normalization step.

Validation: 1,250 local Python tests pass (336 + 289 per plugin), including literal API/image/retry/resume/ROI/default-contract tests. Repository lint, formatting, mirror checks, Bandit and update-range Gitleaks pass. Actual OCR delegation, one fresh isolated general reviewer and the parent repository review completed; the final convergence gate has no remaining findings.

The PR body is updated. All 9 GitHub checks now pass on this head; target-account inference was not performed. Approval remains a human action; no APPROVE review or thread-resolution action was submitted.

@leon1418

Copy link
Copy Markdown
Contributor Author

[🤖 AI review 🤖]

Follow-up to the main-integration feedback: 85e254c5 now includes main ca384f14 through a normal merge.

The conflict repair preserves main's shared/vendored AI layout and the earlier Astra fixes. Both plugins and their GCP/Azure consumers retain the same Astra policy, lifecycle and quota rules, with local API facts/prices. The combined review also caught two newly integrated Azure consumer mismatches: parent phase gates still rejected supported GPT runtime profiles, and the final recommendation still imposed a fixed premium. Both are corrected and revalidated; these came from the changed upstream contract, not a new issue in the previous reviewed source.

Local validation: 1,358 Python tests pass (374 agent-advisor + 305 llm-to-bedrock per plugin), plus lint, formatting, shared/mirror checks, Bandit and update-range Gitleaks. Actual OCR delegation, one isolated general reviewer and parent review completed; final convergence gate has no remaining findings. No live inference or generated customer application was run.

The PR description is updated. CI for the new head is pending. No approval, merge, review dismissal or thread resolution was submitted.

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