Skip to content

Replace the retiring GPT-5.3-Codex-Spark in the Codex live tests #317

Closed

Description

@panarch

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_POLICY in frontend/tests/live/codex-live-usage.mjs maps the spark scenario to gpt-5.3-codex-spark. Seven of the nine tests in frontend/tests/live/codex-task-loop.spec.js use it:
    • Through the model picker, where the availability check in chooseModel fails 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".
  • Rust live checks (#[ignore]).
    • live_proxy_replays_pending_legacy_dynamic_tool_after_reconnect and live_proxy_replays_pending_approval_after_reconnect use SPIKE_MODEL in caffold/src/agent/codex/reconnect_spike.rs.
    • The live v4 migration check in caffold/src/app/startup_migration.rs starts its fixture turns on Spark and asserts that every migrated thread records gpt-5.3-codex-spark. The v4 rows written by write_v4_test_store in caffold/src/task_store/migration.rs carry the same model id.
  • Policy description. docs/development/testing.md and the policy contract test in frontend/tests/contracts/codex-live-usage.test.mjs name 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-Spark limit. 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 in frontend/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-luna with low reasoning.
  • docs/development/testing.md and the policy contract test match the new policy.
  • npm run test:codex-live and the moved Rust live checks pass.

References

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions