File size: 1,251 Bytes
bae32d1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
"""Registry of models approved for recorded cached runs, in dropdown order."""

from __future__ import annotations

from dataclasses import dataclass


@dataclass(frozen=True, slots=True)
class CachedModel:
    slug: str
    provider_model_id: str
    label: str


# Order matters: newest models first, the original baseline last. The UI dropdown
# and the scenario ordering both follow this sequence.
CACHED_MODEL_ORDER: tuple[CachedModel, ...] = (
    CachedModel("gpt-5.6-sol", "openai/gpt-5.6-sol", "GPT-5.6 Sol"),
    CachedModel("gpt-5.6-terra", "openai/gpt-5.6-terra", "GPT-5.6 Terra"),
    CachedModel("gpt-5.6-luna", "openai/gpt-5.6-luna", "GPT-5.6 Luna"),
    CachedModel("claude-fable-5", "anthropic/claude-fable-5", "Claude Fable 5"),
    CachedModel("claude-sonnet-5", "anthropic/claude-sonnet-5", "Claude Sonnet 5"),
    CachedModel("qwen3-32b", "qwen/qwen3-32b", "Qwen3 32B"),
)

BASELINE_MODEL_SLUG = "qwen3-32b"

CACHED_MODEL_BY_SLUG: dict[str, CachedModel] = {
    model.slug: model for model in CACHED_MODEL_ORDER
}


def ordered_slugs(available: set[str]) -> list[str]:
    """Return the registry-ordered subset of available slugs, fail-closed."""
    return [model.slug for model in CACHED_MODEL_ORDER if model.slug in available]