Skip to content

feat: add default downgrade chains for OpenAI and Gemini#5

Merged
kaissb merged 2 commits into
stagingfrom
feature/0.1.1-downgrade-chains-openai-gemini
Apr 9, 2026
Merged

feat: add default downgrade chains for OpenAI and Gemini#5
kaissb merged 2 commits into
stagingfrom
feature/0.1.1-downgrade-chains-openai-gemini

Conversation

@kaissb

@kaissb kaissb commented Apr 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Implements built-in provider downgrade chains that auto-select based on the model being used, with no explicit configuration required.

Changes

  • New internal/budget/chains.go — built-in chains for OpenAI, Anthropic, Google; builtinChainForModel() detects provider by model name prefix
  • RewriteModelForDowngrade — falls back to built-in chain when no explicit chain configured
  • shouldDowngradeForThreshold — removes chain-existence guard so threshold-based downgrade works with built-in chains
  • New internal/budget/chains_test.go — 17 sub-tests covering all providers, unknown models, explicit chain override, case-insensitive matching

Built-in chains:

  • OpenAI: gpt-4o → gpt-4.1 → gpt-4o-mini → gpt-4.1-mini
  • Anthropic: claude-opus-4-6 → claude-sonnet-4-6 → claude-haiku-4-5
  • Google: gemini-2.5-pro → gemini-2.5-flash

Testing

  • Added/updated tests
  • All tests pass (SVS) — 83.1% total coverage
  • Linting passes — 0 issues

Checklist

  • PR title follows Conventional Commits format
  • One logical change per PR
  • No new dependencies added
  • No sensitive data in code or logs

kaissb added 2 commits April 9, 2026 15:02
- OpenAI chain: gpt-4o → gpt-4.1 → gpt-4o-mini → gpt-4.1-mini
- Anthropic chain: claude-opus-4-6 → claude-sonnet-4-6 → claude-haiku-4-5
- Google chain: gemini-2.5-pro → gemini-2.5-flash
- Auto-select chain based on provider when no explicit chain configured
- Remove explicit-chain guard from shouldDowngradeForThreshold so
  builtin chains also work for threshold-based downgrade
- Remove gate.default_downgrade_chain and gate.agents[].downgrade_chain
  required-when-downgrade validations — builtin provider chains now cover
  OpenAI/Anthropic/Google without explicit config
- Update test-downgrade.sh with 4 cases:
    1. Explicit chain overrides builtin (gpt-4o → gpt-4o-mini)
    2. Builtin OpenAI chain auto-selected (gpt-4o → gpt-4.1)
    3. Builtin Anthropic chain auto-selected (claude-opus-4-6 → claude-sonnet-4-6)
    4. Last model in chain — no downgrade (gpt-4.1-mini)
- Add second mock Anthropic upstream and allow_reuse_address to both mocks
@kaissb
kaissb merged commit 5eec4eb into staging Apr 9, 2026
5 checks passed
@kaissb
kaissb deleted the feature/0.1.1-downgrade-chains-openai-gemini branch April 9, 2026 20:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant