Repository navigation
Replace the retiring GPT-5.3-Codex-Spark in the Codex live tests #317
Description
Problem
On 2026-09-11 OpenAI announced that GPT-5.3-Codex-Spark retires "next week", without an exact date or time. As of 2026-09-15, model/list from Codex CLI 0.153.4 still lists gpt-5.3-codex-spark (not hidden, no upgrade target), and the account still reports the separate GPT-5.3-Codex-Spark rate limit.
Live coverage pinned to Spark stops working once the model is withdrawn:
- Browser live suite (
npm run test:codex-live).LIVE_MODEL_POLICYinfrontend/tests/live/codex-live-usage.mjsmaps thesparkscenario togpt-5.3-codex-spark. Seven of the nine tests infrontend/tests/live/codex-task-loop.spec.jsuse it:- Through the model picker, where the availability check in
chooseModelfails before any prompt is sent: "creates and resumes a real Codex task through Caffold with Spark", "uses the current plan convention across a real Codex resume", "names a new Caffold task at first-turn completion and preserves it", "moves one dirty Spark task into a worktree and resumes the same thread", "reconciles a managed Spark task through a second daemon client". - Without the picker, by passing the model id in their requests: "hydrates, orders, and restores Tasks through the local navigator ledger", "rechecks externally archived and deleted Codex Threads through explicit Recovery commands".
- Through the model picker, where the availability check in
- Rust live checks (
#[ignore]).live_proxy_replays_pending_legacy_dynamic_tool_after_reconnectandlive_proxy_replays_pending_approval_after_reconnectuseSPIKE_MODELincaffold/src/agent/codex/reconnect_spike.rs.- The live v4 migration check in
caffold/src/app/startup_migration.rsstarts its fixture turns on Spark and asserts that every migrated thread recordsgpt-5.3-codex-spark. The v4 rows written bywrite_v4_test_storeincaffold/src/task_store/migration.rscarry the same model id.
- Policy description.
docs/development/testing.mdand the policy contract test infrontend/tests/contracts/codex-live-usage.test.mjsname Spark as the model for Spark scenarios.
Goal
The Codex live scenarios that use Spark run on gpt-5.6-luna with low reasoning. Luna is the only visible model the Codex catalog describes as affordable, and the Fast-mode and multimodal scenarios already use it.
Notes
- Spark usage counts against its own
GPT-5.3-Codex-Sparklimit. The account reports no other model-specific limit, so Luna runs draw from the general Codex weekly limit shared with everyday Codex use. - Fixtures that mention Spark only as data do not call the model:
caffold/src/agent/codex/status.rs,caffold/src/agent/codex/contract.rs,frontend/tests/e2e/tasks/model-picker.spec.js, and the usage-report fixtures infrontend/tests/contracts/codex-live-usage.test.mjs.
Open question
Four other Rust live checks that submit model turns do not use Spark. live_codex_clarification_returns_to_chat_and_accepts_a_reply and live_codex_mcp_tool_approval_uses_normalized_contract use gpt-5.6-sol at low. live_codex_mcp_survives_backend_replacement_and_runtime_reattachment and live_codex_mcp_survives_an_isolated_app_server_restart pass no model and follow the local Codex default. Whether they also move to Luna at low is undecided.
Acceptance criteria
- No browser live scenario, Rust live check, or live model policy entry uses
gpt-5.3-codex-spark. - Those scenarios use
gpt-5.6-lunawithlowreasoning. -
docs/development/testing.mdand the policy contract test match the new policy. -
npm run test:codex-liveand the moved Rust live checks pass.
References
- Retirement announcement, 2026-09-11: https://x.com/thsottiaux/status/2098300998968357218 (as cited in feat(codex): prepare Codex Spark retirement and remove its quota UI lidge-jun/opencodex#4334)
- https://www.orcarouter.ai/blog/gpt-5-3-codex-spark
Activity