Migrate GPT-5.4 uses to GPT-5.6 variants (#33173)

## What changed

- Hide `gpt-5.4` and `gpt-5.4-mini` from model selection and direct existing users to `gpt-5.6-terra` and `gpt-5.6-luna`, respectively.
- Use Terra for memory consolidation and Luna for memory extraction and rate-limit switch prompts.
- Keep Amazon Bedrock GPT-5 catalog entries visible when their bundled model metadata is hidden.

## Testing

- Add coverage that all Amazon Bedrock GPT-5 models remain visible and update TUI expectations for the new model choices.

GitOrigin-RevId: fd69c8d5fb6b510c77204df6b7ac3f07e67cded2
This commit is contained in:
Sergio Mattei authored and copyberry committed 2026-07-14 21:50:19 +00:00
1 parent 518085387b
commit c38c30ef51
8 files changed
+31 -17

No files matched your search

+1 -1
View File
@@ -3,7 +3,7 @@
use super::*;
use codex_app_server_protocol::CodexErrorInfo as AppServerCodexErrorInfo;
pub(super) const NUDGE_MODEL_SLUG: &str = "gpt-5.4-mini";
pub(super) const NUDGE_MODEL_SLUG: &str = "gpt-5.6-luna";
pub(super) const RATE_LIMIT_SWITCH_PROMPT_THRESHOLD: f64 = 90.0;
pub(super) const RATE_LIMIT_SWITCH_PROMPT_VIEW_ID: &str = "rate-limit-switch-prompt";
@@ -10,10 +10,7 @@ expression: popup
3. gpt-5.6-luna Fast and affordable agentic coding model.
4. gpt-5.5 Frontier model for complex coding, research, and
real-world work.
5. gpt-5.4 Strong model for everyday coding.
6. gpt-5.4-mini Small, fast, and cost-efficient model for simpler
coding tasks.
› 7. gpt-5.2 (current) Optimized for professional work and long-running
› 5. gpt-5.2 (current) Optimized for professional work and long-running
agents.
Press enter to confirm or esc to go back
@@ -3,10 +3,10 @@ source: tui/src/chatwidget/tests/status_and_layout.rs
expression: popup
---
Approaching rate limits
Switch to gpt-5.4-mini for lower credit usage?
Switch to gpt-5.6-luna for lower credit usage?
› 1. Switch to gpt-5.4-mini Small, fast, and cost-efficient
model for simpler coding tasks.
› 1. Switch to gpt-5.6-luna Fast and affordable agentic coding
model.
2. Keep current model
3. Keep current model (never show again) Hide future rate limit reminders
about switching models.
@@ -3675,7 +3675,7 @@ async fn advanced_only_reasoning_option_requires_explicit_selection() {
#[tokio::test]
async fn auto_model_advertising_advanced_effort_opens_reasoning_picker() {
let (mut chat, mut rx, _op_rx) = make_chatwidget_manual(/*model_override*/ None).await;
let mut preset = get_available_model(&chat, "gpt-5.4");
let mut preset = get_available_model(&chat, "gpt-5.6-terra");
preset.id = "codex-auto-test".to_string();
preset.model = "codex-auto-test".to_string();
preset.display_name = "codex-auto-test".to_string();
@@ -401,7 +401,7 @@ async fn queued_slash_menu_cancel_drains_next_input() {
async fn queued_settings_selection_applies_before_next_input() {
let (mut chat, mut rx, mut op_rx) = make_chatwidget_manual(Some("gpt-5.2")).await;
chat.thread_id = Some(ThreadId::new());
let mut preset = get_available_model(&chat, "gpt-5.4");
let mut preset = get_available_model(&chat, "gpt-5.6-terra");
preset.supported_reasoning_efforts.truncate(1);
let selected_effort = preset.supported_reasoning_efforts[0].effort.clone();
chat.model_catalog = std::sync::Arc::new(ModelCatalog::new(vec![preset]));
@@ -439,7 +439,7 @@ async fn queued_settings_selection_applies_before_next_input() {
match next_submit_op(&mut op_rx) {
Op::UserTurn { model, effort, .. } => assert_eq!(
(model, effort),
("gpt-5.4".to_string(), Some(selected_effort))
("gpt-5.6-terra".to_string(), Some(selected_effort))
),
other => panic!("expected queued message with updated model, got {other:?}"),
}