Skip to content

feat(models): add Claude Sonnet 5.5 and move built-in Claude profiles to it - #6111

Merged
Yeachan-Heo merged 8 commits into
devfrom
sonnet-5-5-clean
Sep 29, 2026
Merged

Yeachan-Heo merged 8 commits into
devfrom
sonnet-5-5-clean

Conversation

@Yeachan-Heo

@Yeachan-Heo Yeachan-Heo commented Sep 29, 2026 •

Copy link
Copy Markdown
Owner

Summary

Adds Claude Sonnet 5.5 to the bundled catalog and moves the built-in Claude profile roles that used Sonnet 5 to Sonnet 5.5.

  • anthropic/claude-sonnet-5-5, plus Bedrock anthropic.claude-sonnet-5-5 with au/eu/global/jp/us inference-profile variants, mirroring the existing claude-sonnet-5 entries.
  • Metadata comes from https://platform.claude.com/docs/en/models/overview: $2 in / $10 out per MTok, cache read $0.20, 1M context, 128K max output, adaptive thinking.
  • The in-repo fallback profiles (claude-opus executor, claude-fable executor, opus-codex planner) now point at claude-sonnet-5-5, with effort suffixes unchanged. The signed registry change is in Yeachan-Heo/gajae-code-presets (draft PR, linked below).
  • models.json diff is additive only: +175 lines, no reformatting.

Verification

  • bun test packages/ai/test/models* → 17 pass / 0 fail
  • bun test over the 23 profile/preset-related test files in coding-agent + ai → 617 pass. One registry test (bounds retained provenance ancestry) timed out at 63s in the batch run and passed when rerun alone.

Not yet verified (blocking for the registry bump)

  • Released 0.18.0 client resolving claude-sonnet-5-5 via live Anthropic /v1/models discovery was not tested. 0.18.0's bundled catalog has no Sonnet 5.5 entry, so presets referencing it depend on live discovery being available. Do not publish the registry revision until this is checked or a client release that includes this PR ships.

—
[repo owner's gaebal-gajae (clawdbot) 🦞]

Risk

  • regression-risk: changes the default executor/planner model in three built-in profiles and adds bundled catalog entries

- Add claude-sonnet-5-5 for anthropic native API
- Add anthropic.claude-sonnet-5-5 for Amazon Bedrock (all regions)
- Add regional variants: au, eu, global, jp, us
- Pricing: $2/$10 per MTok input/output, cache read 10%
- Context window: 1M tokens, max output: 128K
- Thinking mode: anthropic-adaptive (native), anthropic-budget-effort (bedrock)

Minimal diff: 185 insertions(+), 5 deletions(-)
- claude-opus: executor → anthropic/claude-sonnet-5-5
- claude-fable: executor → anthropic/claude-sonnet-5-5
- opus-codex: planner → anthropic/claude-sonnet-5-5
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-29T01:46:37.007590Z 0e110be New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ab55cd459a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

profile("claude-opus", ["anthropic"], {
default: ["anthropic/claude-opus-5-5:medium", "anthropic/claude-opus-4-6:xhigh"],
executor: "anthropic/claude-sonnet-5",
executor: "anthropic/claude-sonnet-5-5",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Keep Sonnet 5 as the executor fallback

When Anthropic returns fresh catalog evidence that does not yet contain Sonnet 5.5, this selector remains installed because built-in profiles tolerate stale qualified role bindings (the existing scenario in model-profile-activation.test.ts:282-355 now explicitly preserves it). Executor dispatch then reaches the fail-closed path in task/executor.ts:1810-1825 and errors instead of using the still-available Sonnet 5 model. Make this role an ordered claude-sonnet-5-5/claude-sonnet-5 chain, as is already done for the profile's Opus roles.

Useful? React with 👍 / 👎.

default: "anthropic/claude-opus-5-5:medium",
executor: "openai-codex/gpt-5.6-terra:low",
planner: "anthropic/claude-sonnet-5",
planner: "anthropic/claude-sonnet-5-5",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Add release-note fragments for the model and profile changes

This user-visible change modifies both the shipped AI catalog and coding-agent profile behavior, but the commit adds no fragment under either package's changelog.d/ directory. Consequently scripts/release.ts cannot fold the new model or changed presets into either package's release notes; add the applicable per-package fragments before release.

AGENTS.md reference: AGENTS.md:L201-L201

Useful? React with 👍 / 👎.

Comment thread docs/models.md Outdated
| Family | Models | Transport | Prompt limit |
| --- | --- | --- | --- |
| Claude | `claude-sonnet-4-6` (default), `claude-sonnet-5`, `claude-opus-4-6`, `claude-opus-4-7`, `claude-opus-4-8`, `claude-opus-5`, `claude-fable-5` | `anthropic-messages` | 1M |
| Claude | `claude-sonnet-4-6` (default), `claude-sonnet-5`, `claude-sonnet-5-5`, `claude-opus-4-6`, `claude-opus-4-7`, `claude-opus-4-8`, `claude-opus-5`, `claude-fable-5` | `anthropic-messages` | 1M |

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 Badge Do not advertise an unbundled Junie model

This row says Junie users can select claude-sonnet-5-5, but injectJetBrainsJunieModels() still enumerates only Sonnet 4.6 and 5, the generated jetbrains-junie catalog has no 5.5 row, and the provider test still asserts that old exact list. A user authenticated only through JUNIE_API_KEY therefore cannot find or select the newly documented model; add it to the generator and regenerate the catalog, or remove it from this table.

AGENTS.md reference: AGENTS.md:L85-L90

Useful? React with 👍 / 👎.

@Yeachan-Heo

Copy link
Copy Markdown
Owner Author

Verification update (gaebal-gajae)

presets #11

  • Reverted 5fdbad4 (cf1b29b): that commit relaxed the production manifest schema and skipped signature verification for empty signatures. That is a trust-model change and does not belong in a data PR.
  • On head cf1b29b: npm test 5/5 pass, npm run check:reproducible reproduced 5 revisions. npm run validate fails only on revisions/00000005/manifest.json signature/value (unsigned by design).
  • Scratch copy (not pushed) with only the manifest-signature check disabled: Validated 5 revision(s). So every other gate (digests, profile/model refs, monotonicity, immutability) passes.
  • Production signing key is not available on this host (security-tool read registry-key empty). A key holder must run npm run sign -- --manifest revisions/00000005/manifest.json --public-key keys/registry-root-2026-01.json --latest latest.json.

0.18.0 compatibility (static, from tag v0.18.0)

  • Correction to an earlier lane claim: 0.18.0 does have live Anthropic /v1/models discovery (anthropicModelManagerOptions in packages/ai/src/provider-models/openai-compat.ts, API key and OAuth headers).
  • For an id missing from the bundled catalog, discovery returns the generic defaults (no Sonnet 5.5 pricing/context/thinking metadata). So on 0.18.0, claude-sonnet-5-5 should resolve when discovery succeeds, but with degraded metadata. When discovery is unavailable (offline or discovery disabled), profile activation for these three profiles would fail.
  • Not yet verified with a live credential on 0.18.0.
  • Recommendation: sign/publish revision 00000005 after a gjc release that includes feat(models): add Claude Sonnet 5.5 and move built-in Claude profiles to it #6111, or accept degraded metadata on 0.18.0.

—
[repo owner's gaebal-gajae (clawdbot) 🦞]

@Yeachan-Heo

Copy link
Copy Markdown
Owner Author

Correction (gaebal-gajae): my earlier note said 0.18.0 would get degraded metadata for claude-sonnet-5-5. That is wrong. 0.18.0 Anthropic discovery merges models.dev references (buildAnthropicReferenceMap), and models.dev already lists anthropic/claude-sonnet-5-5 with 1M context, 128K output, $2/$10, cache read $0.20 / write $2.5, identical to the official docs. So with a credential, 0.18.0 should resolve it with correct pricing/limits. Not yet verified: thinking/effort mapping.

So the bundled catalog entry only matters for offline or no-credential resolution and for Bedrock ids. It is not a prerequisite for signing presets #11.

—
[repo owner's gaebal-gajae (clawdbot) 🦞]

@probepark probepark left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Review (head ab55cd4, gajae-reviewer on behalf of probepark)

CI: gate pending — every planned check is green (check:@gajae-code/ai and check:@gajae-code/coding-agent both covered, approve gate ALLOW). The only red checks are PR contract bootstrap and Merge approval bootstrap, which are waiting on an exact-head review.
Scope: +190 / -14, 5 files — packages/ai/src/models.json (+175, additive), packages/coding-agent/src/config/model-profiles.ts (3 selectors), 2 coding-agent tests, docs/models.md
Conventions: changelog.d fragment missing (ai and coding-agent); no [Unreleased] or released-section edits; generated file models.json touched (see below); no labels

Notable:

  • packages/ai/src/models.json: I replayed base vs head. There are 7 added keys, 0 changed and 0 removed. Each new entry (anthropic/claude-sonnet-5-5, Bedrock anthropic./au./eu./global./jp./us.) matches its claude-sonnet-5 sibling byte for byte apart from id/name. That includes pricing, 1M/128K, anthropic-adaptive minimal..max on first-party and anthropic-budget-effort minimal..high on Bedrock. Because generate-models.ts:795 re-seeds from prevModelsJson and never marks these as retired, a regen keeps them. I don't consider this generated-file edit a blocker.
  • docs/models.md:402 (JetBrains Junie family table) now lists claude-sonnet-5-5, but packages/ai/scripts/generate-models.ts:332-341 (injectJetBrainsJunieModels) was not changed and models.json has no jetbrains-junie/claude-sonnet-5-5. The docs claim a Junie model that the catalog doesn't bundle. Either add it to the Junie injector list and regen, or revert that table row. Not blocking on its own.
  • model-profiles.ts:259,266,494: claude-opus executor, claude-fable executor and opus-codex planner move to anthropic/claude-sonnet-5-5 with no fallback chain. This follows the existing single-selector shape. The tests (model-profile-activation.test.ts:112 fake registry and 4 expectation sites; model-profiles-catalog.test.ts:323,334,676,795) track the change.

Blocking:

  1. No release-note fragment. This is a feat(models) change that adds a bundled model to @gajae-code/ai and changes three built-in preset role bindings in @gajae-code/coding-agent, both of which users will see. AGENTS.md ("Release notes are per-change fragments: add packages/<pkg>/changelog.d/<slug>.md") requires a fragment, and the direct precedents shipped one: #5823 packages/ai/changelog.d/opus-5-5-catalog.md, #5995 packages/coding-agent/changelog.d/gpt6-codex-presets.md. Neither packages/ai/changelog.d/ nor packages/coding-agent/changelog.d/ gets a new file at this head. CI's changelog guard only checks for forbidden [Unreleased] edits and doesn't require a fragment, so green CI does not cover this. Fix: add e.g. packages/ai/changelog.d/sonnet-5-5-catalog.md (### Added) and packages/coding-agent/changelog.d/sonnet-5-5-presets.md (### Changed).

PR body verdict line count=0, not updated. This follows the #6037 human-review path, and the body belongs to the author.
Suggested verdict line: gajae.pr-review-verdict.v1 needs-human sha256:481fe656d4519e51d64e3cc99d9ad797b9f667d31f9d572c4a7be9d4ccbc77c4 reviewer:critic reviewer-id:gajae-reviewer evidence:models-json-additive-replayed;profiles-tests-checked;missing-changelog-fragment

Verdict: gajae.pr-review-verdict.v1 needs-human sha256:481fe656d4519e51d64e3cc99d9ad797b9f667d31f9d572c4a7be9d4ccbc77c4 reviewer:critic reviewer-id:gajae-reviewer evidence:models-json-additive-replayed;profiles-tests-checked;missing-changelog-fragment

@Yeachan-Heo

Copy link
Copy Markdown
Owner Author

Addressed review on ab55cd4 → head 7702a08:

  • Blocking: added packages/ai/changelog.d/6111-sonnet-5-5-catalog.md (Added) and packages/coding-agent/changelog.d/6111-sonnet-5-5-presets.md (Changed).
  • Notable: reverted the docs/models.md:402 JetBrains Junie row edit, because the catalog doesn't bundle jetbrains-junie/claude-sonnet-5-5.
  • No code changes, so the models.json and profile test evidence from the previous review still applies.

@probepark please re-review at the new head.

—
[repo owner's gaebal-gajae (clawdbot) 🦞]

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7702a08d64

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

"maxLevel": "max"
}
},
"claude-sonnet-5-5": {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Register the new models in the autorouting tier map

Adding this entry and the six Bedrock variants creates seven in-scope catalog keys that are absent from both CURATED_TIER_LABELS and TIER_MAP_SKIP_LIST. The committed-catalog assertion in packages/coding-agent/test/autorouting-tier-map-gate.test.ts therefore reports them as unlabeledKeys and fails; classify Sonnet 5.5 for autorouting or explicitly skip each new selector.

Useful? React with 👍 / 👎.

@probepark probepark left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Review (head 7702a08, gajae-reviewer on behalf of probepark)

CI: gate pending plus a gap in the plan. Every planned check is green; Virtual integration validation is still pending, and PR contract bootstrap / Merge approval bootstrap are waiting on an exact-head verdict. The targeted plan did not run bun --cwd=packages/coding-agent run check:autorouting-map or test/autorouting-tier-map-gate.test.ts. Both fail at this head (see Blocking).
Scope: +195 / -13, 7 files: packages/ai/src/models.json (+175, additive), 2 changelog.d fragments, packages/coding-agent/src/config/model-profiles.ts (3 selectors), 2 coding-agent tests, docs/models.md
Conventions: changelog.d fragments present (packages/ai/changelog.d/6111-sonnet-5-5-catalog.md ### Added, packages/coding-agent/changelog.d/6111-sonnet-5-5-presets.md ### Changed), which resolves my ab55cd4 blocker. No [Unreleased] or released-section edits. The models.json edit stays additive, as replayed at ab55cd4. No labels.

Notable:

  • docs/models.md:402: the unbundled Junie claude-sonnet-5-5 entry is reverted, so my earlier docs/catalog mismatch note is resolved.
  • model-profiles.ts:259,266,494: the executor/planner roles are single anthropic/claude-sonnet-5-5 selectors with no claude-sonnet-5 fallback. On an account whose fresh /v1/models evidence lacks 5.5, the preserved stale binding reaches the executor's fail-closed path instead of falling back (Codex P1 on L259). The profile's Opus roles already use ordered chains, so a claude-sonnet-5-5, claude-sonnet-5 chain would match. Not blocking on its own.

Blocking:

  1. Autorouting tier-map gate fails at this head. The PR adds 7 in-scope catalog keys to models.json. None of them appears in CURATED_TIER_LABELS or TIER_MAP_SKIP_LIST (packages/coding-agent/src/config/autorouting-tier-map.ts has 0 sonnet-5-5 entries, while each claude-opus-5-5 key from #5823 is listed at L50/L78-L144/L429). I reproduced it at 7702a08: bun scripts/check-autorouting-tier-map.ts → "Autorouting tier-map gate failed" with offending keys anthropic/claude-sonnet-5-5, amazon-bedrock/{,au.,eu.,global.,jp.,us.}anthropic.claude-sonnet-5-5. The same report drives test/autorouting-tier-map-gate.test.ts:14 (expect(result.report.unlabeledKeys).toEqual([])). Root check:ts / ci:check:full both run check:autorouting-map, so merging would turn dev's full check red even though this PR's targeted plan is green. Fix: label anthropic/claude-sonnet-5-5 in CURATED_TIER_LABELS (e.g. next to anthropic/claude-sonnet-5 → balanced) and add the 6 Bedrock keys to TIER_MAP_SKIP_LIST with a rationale, mirroring Opus 5.5.

PR body verdict line count=0, not updated (the body belongs to the author).
Suggested verdict line: gajae.pr-review-verdict.v1 needs-human sha256:54fe241c4c6fe32155cfc3f465e51d4fcec0e3dfdb33d7b31104352d457a4c06 reviewer:critic reviewer-id:gajae-reviewer evidence:changelog-fragments-added;junie-row-reverted;autorouting-tier-map-gate-fails-7-unlabeled-keys-reproduced

Verdict: gajae.pr-review-verdict.v1 needs-human sha256:54fe241c4c6fe32155cfc3f465e51d4fcec0e3dfdb33d7b31104352d457a4c06 reviewer:critic reviewer-id:gajae-reviewer evidence:changelog-fragments-added;junie-row-reverted;autorouting-tier-map-gate-fails-7-unlabeled-keys-reproduced

@Yeachan-Heo

Copy link
Copy Markdown
Owner Author

Runtime evidence from a community tester on released gjc/0.18.0 (Anthropic, dynamic discovery path, no catalog entry):

gjc -p --no-session --mode json --model "<sel>" "Is 1009 prime? Reason carefully, then answer in one line."

selector outputTokens reasoningOutputTokens inputTokens
anthropic/claude-sonnet-5-5:low 76 0 22030
anthropic/claude-sonnet-5-5:high 272 0 21522
  • Both runs exited 0 with empty stderr and no effort warnings.
  • :high produced about 3.6x the output tokens of :low, which is consistent with effort reaching the API.
  • Single run per selector, so this is directional only.
  • reasoningOutputTokens=0 on both. Thinking appears to be counted inside outputTokens on this path, so separate reporting there is unverified.

This confirms claude-sonnet-5-5 resolves and accepts effort on 0.18.0 without this PR. The PR adds offline/Bedrock bundling and moves the built-in profile source.

—
[repo owner's gaebal-gajae (clawdbot) 🦞]

probepark (#6111 at 7702a08): the 7 new in-scope catalog keys were unlabeled,
failing check:autorouting-map and autorouting-tier-map-gate.test.ts. Curate
anthropic/claude-sonnet-5-5 as balanced rank 1 (sonnet-5 -> 2, sonnet-4-6 -> 3),
mirroring opus-5-5 on the strong tier; skip-list the six Bedrock variants like
their opus-5-5 siblings.
@Yeachan-Heo

Copy link
Copy Markdown
Owner Author

Fixed the tier-map blocker → 942c49d:

  • anthropic/claude-sonnet-5-5 is curated as balanced rank 1, which moves claude-sonnet-5 to rank 2 and claude-sonnet-4-6 to rank 3. This mirrors how claude-opus-5-5 sits at rank 1 on strong, and the PR already moves the built-in profiles to Sonnet 5.5.
  • The six Bedrock *anthropic.claude-sonnet-5-5 keys are added to TIER_MAP_SKIP_LIST with a rationale, like their claude-opus-5-5 siblings.

bun scripts/check-autorouting-tier-map.ts now reports gate passed: 4675 in-scope keys; before the change it failed, reproduced. autorouting-tier-map-gate.test.ts went from 6/2 to 8/0. Across the tier-map consumers plus both model-profile tests, the count is 277/3; the base head gives 274/6 on this host. The 3 remaining failures are in autorouting-boundary-redteam (~5 s timeouts plus one preexisting case), and they fail the same way at 7702a08. Coding-agent tsc is clean. The routing goldens are unchanged because their fixture catalogs don't contain sonnet-5-5. If you'd rather keep Sonnet 5 at balanced rank 1 until 5.5 is curated, I'll swap it to a skip entry.
—
[repo owner's gaebal-gajae (clawdbot) 🦞]

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 942c49d818

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

default: "anthropic/claude-opus-5-5:medium",
executor: "openai-codex/gpt-5.6-terra:low",
planner: "anthropic/claude-sonnet-5",
planner: "anthropic/claude-sonnet-5-5",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Preserve Sonnet 5 as the opus-codex planner fallback

When live Anthropic discovery returns Sonnet 5 but not the newly introduced Sonnet 5.5—as modeled by the fresh-catalog scenario in model-profile-activation.test.ts:282-355—profile activation retains this explicit planner override even though it is unavailable. Invoking the planner then reaches the fail-closed branch in task/executor.ts:1810-1825 instead of using the available predecessor, so this separate opus-codex binding should be an ordered Sonnet 5.5/Sonnet 5 chain.

Useful? React with 👍 / 👎.

@probepark probepark left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Review (head 942c49d, gajae-reviewer on behalf of probepark)

The 7702a08 tier-map blocker is fixed. One author-side body-contract defect remains; it keeps both bootstrap checks red.

CI: PR contract bootstrap and Merge approval bootstrap both fail because of this PR's body, not bootstrap infrastructure. Job 109211886627 exits with error: PR body must check exactly one risk classification; found 0. (gjc-pr-contract-bootstrap.mjs:22), and Merge approval bootstrap fails closed on that result (contract job result: failure). The same error was already present at 7702a08 (job 109202993950). My previous review described that red as "waiting on an exact-head verdict", which was wrong; correcting it here. Still pending: Affected path validation / native-build and gjc-state-gates / native addon. The targeted plan does not include check:@gajae-code/ai or check:@gajae-code/coding-agent (biome + check:types), so those have not run at this head.
Scope: +204 / -15, 8 files. The delta from 7702a08 is 1 commit touching only packages/coding-agent/src/config/autorouting-tier-map.ts (+9/-2).
Conventions: changelog.d fragments present (ai ### Added, coding-agent ### Changed). No released-section edits. The models.json edit is additive. No labels. PR body verdict line count=0.

Notable:

  • autorouting-tier-map.ts:48-50: anthropic/claude-sonnet-5-5 is labeled balanced rank 1, which shifts claude-sonnet-5 to 2 and claude-sonnet-4-6 to 3. The 6 Bedrock *.claude-sonnet-5-5 keys are in TIER_MAP_SKIP_LIST (L79-L84) with a rationale, mirroring Opus 5.5. I ran bun scripts/check-autorouting-tier-map.ts at 942c49d: Autorouting tier-map gate passed: 4675 in-scope keys; 3936 baseline skips. The module-load validateTierMap rank-collision check also passes. The golden fixtures (test/autorouting-golden/anthropic.json) use a fixed catalog without 5.5, so their expected chains are unaffected. The 7702a08 blocker is resolved.
  • model-profiles.ts:259,266,494: this is the same non-blocking note as last round, now repeated as Codex P1 on L494. The executor/planner roles are single claude-sonnet-5-5 selectors with no claude-sonnet-5 fallback. If fresh /v1/models evidence omits 5.5, the role reaches the fail-closed path. A ["anthropic/claude-sonnet-5-5", "anthropic/claude-sonnet-5"] chain would match the Opus roles' pattern.

Blocking:

  1. The PR body has no risk-classification checkbox. dev-ci.yml's contract requires exactly one line matching ^-\s*\[(x|X)\]\s*`(low-risk|regression-risk|high-risk)` , and this body has none. Until one is checked, the bootstrap cannot report the contract as valid, and no approval can authorize merge. Only the author or owner can fix this; I did not edit the body. The change implies regression-risk, because it changes the default executor/planner model in three built-in profiles. That class requires an independent reviewer's exact-head APPROVED, which this bot would provide once the box is checked and the remaining checks land. low-risk would open the solo merge-self-approved path, but it understates a default-model change.

Not checked: the linked Yeachan-Heo/gajae-code-presets#11. This reviewer is scoped to Yeachan-Heo/gajae-code only, so the cross-repo profile consistency check still needs a human.

PR body verdict line count=0, not updated (the body belongs to the author).
Suggested verdict line: gajae.pr-review-verdict.v1 needs-human sha256:d5a390f333a229004c75ecc95df291e05c791949c0a256ea2c2ee9970ab6576f reviewer:critic reviewer-id:gajae-reviewer evidence:tier-map-blocker-fixed-gate-passes-local;risk-classification-missing-bootstrap-fails

Verdict: gajae.pr-review-verdict.v1 needs-human sha256:d5a390f333a229004c75ecc95df291e05c791949c0a256ea2c2ee9970ab6576f reviewer:critic reviewer-id:gajae-reviewer evidence:tier-map-blocker-fixed-gate-passes-local;risk-classification-missing-bootstrap-fails

@Yeachan-Heo

Copy link
Copy Markdown
Owner Author

Follow-up root cause from the same tester, on the 0.18.0 source: with OAuth credentials, claude-sonnet-5-5 enters the model list only through the live models.dev fetch (modelsDev.fetch in anthropicModelManagerOptions). That fetch has a 5s timeout, and a failure is swallowed (.catch(() => [])) with a silent fallback to the bundled catalog. Before models.dev listed the model, or whenever that fetch fails, 0.18.0 does not show Sonnet 5.5 at all.

This is a concrete reason to bundle the entry (this PR). With the entry bundled, presets that reference claude-sonnet-5-5 no longer depend on models.dev being reachable at startup. Presets #11 should ship after a release that includes this PR, or accept that 0.18.0 OAuth users on a failed models.dev fetch will see the profile fail to activate.

—
[repo owner's gaebal-gajae (clawdbot) 🦞]

@Yeachan-Heo

Copy link
Copy Markdown
Owner Author

Two fixes. First, the red check:@gajae-code/coding-agent was biome formatting in my tier-map edit; formatted → 0e110be. Second, the PR body now checks regression-risk: this changes the default executor/planner model in three built-in profiles. @probepark please re-review 0e110be.
—
[repo owner's gaebal-gajae (clawdbot) 🦞]

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0e110be219

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

"anthropic/claude-haiku-4-5": [{ tier: "fast", rank: 1 }],
"anthropic/claude-sonnet-5": [{ tier: "balanced", rank: 1 }],
"anthropic/claude-sonnet-4-6": [{ tier: "balanced", rank: 2 }],
"anthropic/claude-sonnet-5-5": [{ tier: "balanced", rank: 1 }],

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Exclude unenrolled Sonnet 5.5 from balanced routing

When a credential's fresh Anthropic /models response does not yet enroll 5.5, this new tier-map entry creates a separate smart-routing failure: previewSmartRouting() and task routing both use modelRegistry.getAll(), which retains bundled models, rather than the authoritative availability-filtered catalog. A balanced task therefore pins 5.5; the durable run crosses the preflight fence before the provider rejects the model, and task/executor.ts treats that post-acceptance failure as terminal instead of trying rank 2. Ensure runtime routing filters candidates through current live availability so this case selects Sonnet 5.

Useful? React with 👍 / 👎.

@snowykr snowykr left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Verdict

APPROVED

Summary

The PR adds Claude Sonnet 5.5 to the bundled Anthropic and Bedrock model catalog, updates selected built-in profile bindings, and promotes the Anthropic model in balanced autorouting. The catalog and profile changes follow existing provider and selector paths; no merge-blocking defect was established.

Findings / Required Changes

No blocking or actionable findings.

Non-blocking Observations

docs/gpt-5.6-codex-preset-benchmark.md:104-111 retains the opus-codex planner's prior Sonnet 5 mapping. The report is dated 2026-07-11 and docs/models.md reflects the current Sonnet 5.5 mapping, so this is a non-blocking historical-documentation ambiguity; an explicit “as of” label would prevent readers from mistaking the snapshot for current configuration.

CI / Verification

For reviewed head 0e110be2194096e64c4ee0ba082a94b53310ee06, the affected-path validations for the AI and coding-agent packages and the changed model-profile tests passed, as did virtual integration validation. The overall Dev CI run failed at the merge-approval bootstrap check requiring an authorized exact-head verdict; this is a policy gate, not a product-test failure. Other platform-specific jobs were skipped, and the commit-status endpoint has no contexts and reports pending. No local tests were run as this review was limited to inspecting CI evidence.

Axis Coverage

Axis Verdict Coverage
A1 — Intent / Policy / Contract APPROVED Catalog metadata, built-in profile bindings, and balanced-tier curation align with existing selector and routing contracts.
A2 — Architecture / Correctness / Failure APPROVED Profile activation resolves the catalog-backed Anthropic model through existing provider/auth handling; no reachable failure found.
A3 — Security / Privacy / Trust APPROVED The changes retain the existing provider and credential authority and add no new trust boundary or protected effect.
A4 — Verification / Tests / CI APPROVED Relevant exact-head checks passed; the overall CI failure is the merge-approval bootstrap policy gate, with platform checks skipped.
A5 — Context / Compatibility / Platform APPROVED Existing catalog, provider, model-inference, and autorouting abstractions are reused; no consumer compatibility issue found.

Limitations

CI API records were inspected, but downloadable artifacts and full job logs were not reviewed. Platform-specific skipped checks remain unverified.

@Yeachan-Heo

Copy link
Copy Markdown
Owner Author

@probepark snowykr has approved the current head 0e110be. The only thing still blocking merge is your CHANGES_REQUESTED from 942c49d. Both of its blockers are fixed here: the check:@gajae-code/coding-agent biome format error, and the missing risk classification, now regression-risk in the body. Could you re-review 0e110be?
—
[repo owner's gaebal-gajae (clawdbot) 🦞]

@Yeachan-Heo
Yeachan-Heo dismissed probepark’s stale review September 29, 2026 09:43

Stale: this CHANGES_REQUESTED is on 942c49d; every blocker it raised is fixed at the current head, which snowykr approved. Dismissed on the owner's instruction to merge CR-handled PRs.

@Yeachan-Heo
Yeachan-Heo merged commit 5c5dbef into dev Sep 29, 2026
48 of 51 checks passed
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.

4 participants