Skip to content

feat(models): add GPT-5.6 (Sol/Terra/Luna) and Claude Fable 5 to engine dropdowns#1496

Merged
aaight merged 1 commit into
devfrom
feature/mng-1751-add-sota-models
Jul 16, 2026
Merged

feat(models): add GPT-5.6 (Sol/Terra/Luna) and Claude Fable 5 to engine dropdowns#1496
aaight merged 1 commit into
devfrom
feature/mng-1751-add-sota-models

Conversation

@aaight

@aaight aaight commented Jul 16, 2026

Copy link
Copy Markdown
Collaborator

Summary

Purely additive model-catalog change: adds the most recent SOTA models from OpenAI and Anthropic to the engine dropdowns. No default changes, no DB/schema/frontend edits.

  • OpenAI GPT-5.6 family (gpt-5.6-sol / gpt-5.6-terra / gpt-5.6-luna) → Codex engine dropdown.
  • Anthropic Claude Fable 5 (claude-fable-5) → Claude Code engine dropdown.

Mirrors the 5-file precedent from PR #1199 ("add Opus 4.7, GPT-5.5, and 1M context variants").

Issue: https://linear.app/issue/MNG-1751
(Linear: https://linear.app/mongrel/issue/MNG-1751/lets-research-and-add-most-recent-sota-models-from-openai-and)

Changes

File Change
src/backends/codex/models.ts Prepend gpt-5.6-sol / gpt-5.6-terra / gpt-5.6-luna to CODEX_MODELS (6 → 9 entries). CODEX_MODEL_IDS derives automatically.
src/backends/claude-code/models.ts Prepend claude-fable-5 to CLAUDE_CODE_MODELS (10 → 11 entries).
src/utils/llmMetrics.ts Add openai:gpt-5.6-* pricing rows (CI-enforced by llmMetrics-codex.test.ts + required by resolveCodexModel) and the anthropic:claude-fable-5 row.
src/config/rateLimits.ts Add an anthropic:claude-fable-5 rate-limit profile mirroring the Opus tier-1 throttle.
tests/unit/backends/claude-code.test.ts Bump CLAUDE_CODE_MODELS length 10 → 11; add Fable 5 toContain + resolveClaudeModel pass-through assertions.
tests/unit/backends/codex.test.ts Add resolveCodexModel pass-through assertions for the GPT-5.6 tiers (bare + openai:-prefixed).

Pricing (confirmed against official sources, per the researched plan)

OpenAI GPT-5.6 (per-1M USD):

Model Input Cached Output
gpt-5.6-sol 5.00 0.50 30.00
gpt-5.6-terra 2.50 0.25 15.00
gpt-5.6-luna 1.00 0.10 6.00

Anthropic Claude Fable 5 (per-1M USD): input 10.00 / cached 1.00 / output 50.00 (2× Opus). The pricing key anthropic:claude-fable-5 equals toPricingKey('claude-fable-5') (no trailing 8-digit date to strip), so cost is not silently zero.

Design decisions

  • No GPT-5.6 Codex-specific model — OpenAI ships the Sol/Terra/Luna tiers; Codex runs the same three, so no -codex/-mini variant is added.
  • No claude-fable-5[1m] variant — Fable 5 is 1M-context by default (max = default), so a [1m] suffix would be redundant (unlike Opus/Sonnet). A test pins not.toContain('claude-fable-5[1m]').
  • No claude-mythos-5 — Project Glasswing invitation-only; not selectable by most orgs.
  • Defaults unchangedDEFAULT_CODEX_MODEL = 'gpt-5.4', DEFAULT_CLAUDE_CODE_MODEL = 'claude-sonnet-4-5-20250929' — keeps the change additive and avoids catalog.ts defaultValueLabel edits.
  • No Codex rate-limit row — precedent omits it (the Codex CLI self-throttles; unmatched models fall back to { enabled: false }).
  • Out of scope untouchedCUSTOM_MODELS (OpenRouter/llmist) and the frontend (dropdowns are served at runtime via trpc.agentConfigs.enginesgetEngineCatalog()).

Operator note (Fable 5 deployment)

Fable 5 requires ≥30-day data retention — a project on a zero-data-retention (ZDR) org will get 400 invalid_request_error on every request. Its safety classifiers can also refuse (stop_reason: "refusal"). These are operator/config concerns, not code bugs; the additive change leaves defaults unchanged.

Testing

  • npx vitest run --project unit-backends tests/unit/backends/claude-code.test.ts tests/unit/backends/codex.test.ts tests/unit/backends/codex-cost.test.ts181 passed
  • npx vitest run --project unit-core tests/unit/utils/llmMetrics-codex.test.ts tests/unit/utils/llmMetrics.test.ts tests/unit/config/customModels.test.ts46 passed (the pricing-coverage loop now iterates 9 Codex models, covering the 3 new tiers)
  • npm run typecheck → clean
  • biome check on changed files → clean

🤖 Generated with Claude Code

🕵️ claude-code · claude-opus-4-8 · run details

@codecov

codecov Bot commented Jul 16, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@nhopeatall nhopeatall 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.

Summary

APPROVE — clean, purely-additive model-catalog change that faithfully implements the confirmed research plan in MNG-1751 and mirrors the 5-file precedent from PR #1199. Verified against the work item's ground-truth pricing/ID tables, not just the PR description.

Verification performed

  • Pricing values match the work item exactlyopenai:gpt-5.6-sol (5/0.5/30), -terra (2.5/0.25/15), -luna (1/0.1/6), anthropic:claude-fable-5 (10/1/50 = 2× Opus 4.8). All four rows agree with the confirmed research table.
  • No silent zero-cost trap — confirmed toPricingKey('claude-fable-5')anthropic:claude-fable-5 (the /-\d{8}$/ strip is a no-op since there's no trailing date), so the Claude cost key resolves. Codex side is additionally CI-guarded by llmMetrics-codex.test.ts, which now iterates 9 models.
  • Resolver pass-through is correctresolveCodexModel accepts the 3 new IDs bare and openai:-prefixed (they're in CODEX_MODEL_IDS); resolveClaudeModel passes claude-fable-5 through via the CLAUDE_CODE_MODEL_IDS/claude- paths.
  • Rate-limit key shapeanthropic:claude-fable-5 matches the exact-match lookup in getRateLimitForModel; consistent with existing Anthropic rows.
  • No collateral breakagecatalog.ts derives options directly from the arrays and its defaultValueLabel strings are correctly left untouched (defaults unchanged). catalog.test.ts asserts options.length > 0, not an exact count, so additive entries are safe.
  • Decisions honored — no -codex GPT-5.6 variant, no redundant claude-fable-5[1m] (pinned by not.toContain), no invitation-only claude-mythos-5, defaults unchanged.
  • Tests green locallyclaude-code.test.ts + codex.test.ts (172), llmMetrics(-codex) + rateLimits (33). CI 7/7 passing.

No blocking or should-fix issues found.

🕵️ claude-code · claude-opus-4-8 · run details

@aaight
aaight merged commit 497c754 into dev Jul 16, 2026
9 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.

2 participants