Skip to content

Feature: suppress synthetic max per model while retaining ultra #2279

Description

@cristph

Area

Catalog / models

What are you trying to accomplish?

Allow an operator to keep a routed model's provider-native reasoning ladder accurate in the Codex model picker while retaining Codex's ultra harness rung.

This is the narrowed follow-up to #1870's final maintainer direction: suppress only an OpenCodex-invented missing max on selected models. A provider-declared max must remain visible, and ultra must remain available for Codex orchestration.

What prevents this today?

applyReasoningLevels adds a missing synthetic max and ultra to ordinary reasoning-capable routed rows. Even when a model-specific ladder stops at high, the final catalog can therefore advertise max.

The later observed-state merge also repairs a missing max, so changing only intermediate catalog construction is insufficient: a second sync or degraded-discovery preservation can add it back. The current workaround is a local source patch that OpenCodex upgrades overwrite.

What should OpenCodex do?

Add an explicit per-model provider setting with backward-compatible behavior:

  • true prevents synthesis of a missing max for that upstream model ID;
  • a provider-declared max is never removed;
  • Codex's ultra rung remains;
  • missing or false keeps today's synthesis;
  • the policy applies to discovered, cached, custom-only, second-sync, and degraded-discovery catalog paths;
  • model rename migration and Dashboard provider overwrites preserve the setting.

The setting should affect catalog construction only. Existing request mapping, clamping, adapters, routing, and authentication behavior remain unchanged.

The known catalog tradeoff should be documented: Codex uses the same reasoning-level membership for the picker and explicit spawn_agent effort validation. If max is absent, an explicit spawn_agent(..., effort: "max") can fail client-side before proxy clamping runs. Retaining ultra preserves the supported harness path.

Example usage or interface

{
  "providers": {
    "example-provider": {
      "modelReasoningEfforts": {
        "example-model": ["low", "medium", "high"]
      },
      "modelSuppressSyntheticMax": {
        "example-model": true
      }
    }
  }
}

Expected catalog ladder: [low, medium, high, ultra].

An unflagged model with the same configured provider ladder remains [low, medium, high, max, ultra]. A flagged model whose configured provider ladder already contains max keeps it and gains ultra as before.

Alternatives or workarounds

Additional context

The proposed implementation is intentionally limited to one model-keyed boolean, transient catalog propagation, final-merge enforcement, validation/migration safety, focused regression tests, and public configuration documentation. Provider metadata corrections and GUI work are out of scope.

Checks

  • I searched existing issues and documentation.
  • This request describes a concrete OpenCodex workflow rather than merely naming a desired technology.
  • I removed secrets and personal data.

Metadata

Metadata

Assignees

No one assigned

    Labels

    catalogModel catalog, slugs, visibility, routed entriesenhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions