llm-orchestrator 1.2.8 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +8 -6
- package/lib/router.mjs +9 -5
- package/models/model-thinking-data.json +94 -2
- package/models/model-thinking-matrix.md +23 -3
- package/models/top-models.json +282 -7
- package/package.json +1 -1
- package/policies/routing.md +6 -6
- package/registries/routing-matrix.json +23 -22
- package/schemas/top-models.schema.json +5 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "llm-orchestrator",
|
|
3
3
|
"description": "Write /task once — it plans the work, shards it across parallel subagents, gates every phase and verifies before claiming done. Claude Code, Codex, OpenCode, Kilo.",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.3.1",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Bogdan-Gabriel Torcescu",
|
|
7
7
|
"url": "https://www.linkedin.com/in/bogdantorcescu/"
|
package/README.md
CHANGED
|
@@ -429,7 +429,7 @@ This resolves (task type, phase, role, risk, complexity, context size, harness)
|
|
|
429
429
|
|
|
430
430
|
## Cost-aware routing (built in)
|
|
431
431
|
|
|
432
|
-
Routing is data, not prose: `registries/routing-matrix.json` encodes the W/S/X/F tiers, the T0–T5 thinking levels with their per-provider controls (`effort` on Claude, `reasoning_effort` on Codex, budget-only on Haiku), the tier × thinking resolution table, default routing, the per-task-type flows (phase → pair → roles → gate), 21 risk-floor areas with implementation and independent-review floors, agent defaults, both escalation ladders, fan-out minimums (2 MODERATE / 3 COMPLEX / 4 CRITICAL), the target tier distribution and the quota degradation ladder. `models/top-models.json` carries the curated
|
|
432
|
+
Routing is data, not prose: `registries/routing-matrix.json` encodes the W/S/X/F tiers, the T0–T5 thinking levels with their per-provider controls (`effort` on Claude, `reasoning_effort` on Codex, budget-only on Haiku), the tier × thinking resolution table, default routing, the per-task-type flows (phase → pair → roles → gate), 21 risk-floor areas with implementation and independent-review floors, agent defaults, both escalation ladders, fan-out minimums (2 MODERATE / 3 COMPLEX / 4 CRITICAL), the target tier distribution and the quota degradation ladder. `models/top-models.json` carries the curated shortlist — thirteen ladder incumbents (three of them fallbacks for their successors) and ten measured candidates — with their supported thinking levels, prices, measured $/task per effort and thinking-cost indices (Artificial Analysis snapshot, copied verbatim, never invented). `lib/router.mjs` resolves a dispatch; `bin/route.mjs` exposes it:
|
|
433
433
|
|
|
434
434
|
```sh
|
|
435
435
|
node bin/llm-orchestrator.mjs route --list # vocab: task types, phases, roles, areas
|
|
@@ -448,20 +448,22 @@ Resolution order: default routing → agent default → task-flow phase → comp
|
|
|
448
448
|
|
|
449
449
|
The CLI resolves one dispatch. Inside a flow, the same resolution runs **for every PlanShard, at dispatch time, against the live inventory** — `lib/dispatch-contract.mjs` exposes `buildShardRouting(shard, options)` for one shard, `buildShardContracts(flow, { inventory, harness, includeCandidates })` for all of them (returning the flow ledger: tier histogram against the target distribution, mean `$/task`, blocked shards, warnings), and `rerouteRemaining(flow, inventory)` when a model-not-found, a rejected effort or a quota change invalidates the inventory mid-flow — remaining shards only, so the ledger stays true. Each shard carries a `routing` block with exactly these thirteen fields: `pair`, `tier`, `thinking_level`, `model_requested`, `effort_requested`, `model_effective`, `effort_effective`, `review_floor`, `independent_review`, `selection_reason`, `inventory_revision`, `price_source`, `est_usd_per_task`. An inventory that exposes nothing eligible for the resolved tier yields `blocked: "no eligible model"` — the floor is never lowered to fit what happens to be available.
|
|
450
450
|
|
|
451
|
-
###
|
|
451
|
+
### Shortlisted models and thinking levels (snapshot 2026-09-23)
|
|
452
452
|
|
|
453
453
|
Incumbents hold a seat on a provider ladder. Candidates are measured but unseated: their tier is a `tier_bands` placement from the best measured Artificial Analysis score (W ≤ 37, S 38–44, X 45–50, F ≥ 51), and they rank only with `--include-candidates` or an inventory that exposes them.
|
|
454
454
|
|
|
455
455
|
| Model | Provider | Ladder | Admission | Tier | Thinking levels | $ in / out per MTok |
|
|
456
456
|
|---|---|---|---|---|---|---|
|
|
457
|
-
| GPT-
|
|
458
|
-
| GPT-5.6
|
|
459
|
-
| GPT-5.6
|
|
457
|
+
| GPT-6 Luna | openai | codex | incumbent | W | low, medium, high, xhigh, max (reasoning_effort) | $0.1 / $0.5 |
|
|
458
|
+
| GPT-5.6 Luna | openai | codex | incumbent (fallback for GPT-6 Luna) | W | low, medium, high, xhigh, max (reasoning_effort) | $0.2 / $1.2 |
|
|
459
|
+
| GPT-5.6 Terra | openai | codex | incumbent (S fallback; GPT-6 Sol holds the S seat one notch down) | S | low, medium, high, xhigh, max (reasoning_effort) | $2 / $12 |
|
|
460
|
+
| GPT-6 Sol | openai | codex | incumbent | X | low, medium, high, xhigh, max (reasoning_effort) | $2 / $10 |
|
|
461
|
+
| GPT-5.6 Sol | openai | codex | incumbent (fallback for GPT-6 Sol) | X | low, medium, high, xhigh, max (reasoning_effort) | $4 / $20 |
|
|
460
462
|
| GPT-6 Astra | openai | codex | incumbent | F | low, medium, high, xhigh, max (reasoning_effort) | $10 / $50 |
|
|
461
463
|
| Claude Haiku 4.5 | anthropic | claude | incumbent | W | disabled, enabled (budget_tokens) | $1 / $5 |
|
|
462
464
|
| Claude Sonnet 5 | anthropic | claude | incumbent | S | low, medium, high, xhigh, max (effort) | $2 / $10 |
|
|
463
465
|
| Claude Opus 5 | anthropic | claude | incumbent (fallback for Opus 5.5) | X | low, medium, high, xhigh, max (effort) | $5 / $25 |
|
|
464
|
-
| Claude Opus 5.5 | anthropic | claude | incumbent | X |
|
|
466
|
+
| Claude Opus 5.5 | anthropic | claude | incumbent | X | low, medium, high, xhigh, max (effort) | $4 / $20 |
|
|
465
467
|
| Claude Fable 5 | anthropic | claude | incumbent | F | low, medium, high, xhigh, max (effort) | $10 / $50 |
|
|
466
468
|
| Claude Fable 5.1 | anthropic | claude | incumbent | F | low, medium, high, xhigh, max (effort) | $10 / $50 |
|
|
467
469
|
| Grok 4.7 | xai | — | incumbent | — (unrated) | low, medium, high, xhigh (reasoning_effort) | $2 / $6 |
|
package/lib/router.mjs
CHANGED
|
@@ -209,10 +209,14 @@ function effortScale(model) {
|
|
|
209
209
|
return model.thinking?.control === 'budget_tokens' ? BUDGET_ORDER : EFFORT_ORDER;
|
|
210
210
|
}
|
|
211
211
|
|
|
212
|
-
function desiredEffort(model, level) {
|
|
212
|
+
function desiredEffort(model, level, tier = null) {
|
|
213
213
|
const matrix = loadMatrix();
|
|
214
214
|
const row = matrix.thinking_levels[level];
|
|
215
215
|
if (!row) return null;
|
|
216
|
+
// A model seated on a tier below its home runs a declared, lower effort there so it
|
|
217
|
+
// is score-matched to that tier's model rather than over-provisioned.
|
|
218
|
+
const override = tier ? model.thinking?.tier_effort?.[tier]?.[level] : undefined;
|
|
219
|
+
if (override) return override;
|
|
216
220
|
if (model.thinking?.control === 'budget_tokens') {
|
|
217
221
|
if (['T0', 'T1'].includes(level)) return 'disabled';
|
|
218
222
|
if (['T2', 'T3'].includes(level)) return 'enabled';
|
|
@@ -228,8 +232,8 @@ function desiredEffort(model, level) {
|
|
|
228
232
|
* about the evidence, not licence to invent an enum: we take the model's cheapest
|
|
229
233
|
* published setting that is at least as deep as the request, or nothing.
|
|
230
234
|
*/
|
|
231
|
-
function resolveEffort(model, level) {
|
|
232
|
-
const desired = desiredEffort(model, level);
|
|
235
|
+
function resolveEffort(model, level, tier = null) {
|
|
236
|
+
const desired = desiredEffort(model, level, tier);
|
|
233
237
|
if (desired === null) return { effort: null, substituted: false };
|
|
234
238
|
const levels = Array.isArray(model.thinking?.levels) ? model.thinking.levels : [];
|
|
235
239
|
if (levels.length === 0 || levels.includes(desired)) return { effort: desired, substituted: false };
|
|
@@ -341,10 +345,10 @@ export function rankModels({
|
|
|
341
345
|
if (model.caps?.requires_explicit_flag && !explicitFable51) continue;
|
|
342
346
|
if (model.caps?.requires_explicit_flag) cap_notes.push(`capped exception: ≤${Math.round((model.caps.share_max ?? 0) * 100)}% of dispatches, explicit request only`);
|
|
343
347
|
|
|
344
|
-
const resolved = resolveEffort(model, parsed.level);
|
|
348
|
+
const resolved = resolveEffort(model, parsed.level, parsed.tier);
|
|
345
349
|
let effort = resolved.effort;
|
|
346
350
|
if (effort === null) continue; // no expression for this thinking level on this control
|
|
347
|
-
if (resolved.substituted) cap_notes.push(`no measured \`${desiredEffort(model, parsed.level)}\` point; nearest published setting is \`${effort}\``);
|
|
351
|
+
if (resolved.substituted) cap_notes.push(`no measured \`${desiredEffort(model, parsed.level, parsed.tier)}\` point; nearest published setting is \`${effort}\``);
|
|
348
352
|
|
|
349
353
|
const scale = effortScale(model);
|
|
350
354
|
const cap = model.caps?.max_effort ?? scale[scale.length - 1];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_attribution": "llm-orchestrator · created by Bogdan-Gabriel Torcescu · https://www.linkedin.com/in/bogdantorcescu/ · keep this credit when copying or deriving",
|
|
3
3
|
"schema_version": 1,
|
|
4
|
-
"observed_at": "2026-09-
|
|
4
|
+
"observed_at": "2026-09-23",
|
|
5
5
|
"benchmark": {
|
|
6
6
|
"name": "Artificial Analysis Intelligence Index",
|
|
7
7
|
"version": "v4.3.2",
|
|
@@ -54,6 +54,42 @@
|
|
|
54
54
|
]
|
|
55
55
|
]
|
|
56
56
|
},
|
|
57
|
+
{
|
|
58
|
+
"key": "gpt-6-luna",
|
|
59
|
+
"display_name": "GPT-6 Luna",
|
|
60
|
+
"provider": "OpenAI",
|
|
61
|
+
"api_id": "gpt-6-luna",
|
|
62
|
+
"input_usd_per_mtok": 0.1,
|
|
63
|
+
"output_usd_per_mtok": 0.5,
|
|
64
|
+
"source": "https://artificialanalysis.ai/models/gpt-6-luna",
|
|
65
|
+
"measurements": [
|
|
66
|
+
[
|
|
67
|
+
"low",
|
|
68
|
+
21,
|
|
69
|
+
0.0045
|
|
70
|
+
],
|
|
71
|
+
[
|
|
72
|
+
"medium",
|
|
73
|
+
29,
|
|
74
|
+
0.02
|
|
75
|
+
],
|
|
76
|
+
[
|
|
77
|
+
"high",
|
|
78
|
+
32,
|
|
79
|
+
0.03
|
|
80
|
+
],
|
|
81
|
+
[
|
|
82
|
+
"xhigh",
|
|
83
|
+
34,
|
|
84
|
+
0.04
|
|
85
|
+
],
|
|
86
|
+
[
|
|
87
|
+
"max",
|
|
88
|
+
37,
|
|
89
|
+
0.07
|
|
90
|
+
]
|
|
91
|
+
]
|
|
92
|
+
},
|
|
57
93
|
{
|
|
58
94
|
"key": "gpt-5-6-terra",
|
|
59
95
|
"display_name": "GPT-5.6 Terra",
|
|
@@ -126,6 +162,42 @@
|
|
|
126
162
|
]
|
|
127
163
|
]
|
|
128
164
|
},
|
|
165
|
+
{
|
|
166
|
+
"key": "gpt-6-sol",
|
|
167
|
+
"display_name": "GPT-6 Sol",
|
|
168
|
+
"provider": "OpenAI",
|
|
169
|
+
"api_id": "gpt-6-sol",
|
|
170
|
+
"input_usd_per_mtok": 2,
|
|
171
|
+
"output_usd_per_mtok": 10,
|
|
172
|
+
"source": "https://artificialanalysis.ai/models/gpt-6-sol",
|
|
173
|
+
"measurements": [
|
|
174
|
+
[
|
|
175
|
+
"low",
|
|
176
|
+
34,
|
|
177
|
+
0.13
|
|
178
|
+
],
|
|
179
|
+
[
|
|
180
|
+
"medium",
|
|
181
|
+
40,
|
|
182
|
+
0.25
|
|
183
|
+
],
|
|
184
|
+
[
|
|
185
|
+
"high",
|
|
186
|
+
43,
|
|
187
|
+
0.37
|
|
188
|
+
],
|
|
189
|
+
[
|
|
190
|
+
"xhigh",
|
|
191
|
+
44,
|
|
192
|
+
0.53
|
|
193
|
+
],
|
|
194
|
+
[
|
|
195
|
+
"max",
|
|
196
|
+
48,
|
|
197
|
+
1.06
|
|
198
|
+
]
|
|
199
|
+
]
|
|
200
|
+
},
|
|
129
201
|
{
|
|
130
202
|
"key": "gpt-6-astra",
|
|
131
203
|
"display_name": "GPT-6 Astra",
|
|
@@ -242,8 +314,28 @@
|
|
|
242
314
|
"input_usd_per_mtok": 4,
|
|
243
315
|
"output_usd_per_mtok": 20,
|
|
244
316
|
"source": "https://artificialanalysis.ai/models/claude-opus-5-5",
|
|
245
|
-
"measurement_note": "
|
|
317
|
+
"measurement_note": "All displayed scores include the benchmark default fallback and are not standalone scores.",
|
|
246
318
|
"measurements": [
|
|
319
|
+
[
|
|
320
|
+
"low",
|
|
321
|
+
42,
|
|
322
|
+
0.55
|
|
323
|
+
],
|
|
324
|
+
[
|
|
325
|
+
"medium",
|
|
326
|
+
51,
|
|
327
|
+
1.34
|
|
328
|
+
],
|
|
329
|
+
[
|
|
330
|
+
"high",
|
|
331
|
+
54,
|
|
332
|
+
1.82
|
|
333
|
+
],
|
|
334
|
+
[
|
|
335
|
+
"xhigh",
|
|
336
|
+
56,
|
|
337
|
+
3.46
|
|
338
|
+
],
|
|
247
339
|
[
|
|
248
340
|
"max",
|
|
249
341
|
58,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!-- llm-orchestrator · created by Bogdan-Gabriel Torcescu · https://www.linkedin.com/in/bogdantorcescu/ · keep this credit when copying or deriving -->
|
|
2
2
|
# Model thinking matrix — AA v4.3.2 snapshot
|
|
3
3
|
|
|
4
|
-
Observed: 2026-09-
|
|
4
|
+
Observed: 2026-09-23. Scores and weighted USD/task costs come from the Artificial Analysis Intelligence Index v4.3.2 snapshot, not live account tariffs or a guarantee of repository outcomes. [Overall leaderboard](https://artificialanalysis.ai/leaderboards/models).
|
|
5
5
|
|
|
6
6
|
This report compares measurements. It cannot automatically select a model, establish account availability, or replace security, payment, migration, concurrency, or compatibility review floors.
|
|
7
7
|
|
|
@@ -18,6 +18,11 @@ Benchmark cost index: `100 × observed benchmark cost / $0.50`; GPT-5.6 Sol medi
|
|
|
18
18
|
| gpt-5-6-luna | GPT-5.6 Luna | high | 32 | $0.04 | 8 | 6 | +$0.02 (2.00×); +7 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
19
19
|
| gpt-5-6-luna | GPT-5.6 Luna | xhigh | 35 | $0.09 | 18 | 6 | +$0.05 (2.25×); +3 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
20
20
|
| gpt-5-6-luna | GPT-5.6 Luna | max | 37 | $0.18 | 36 | 6 | +$0.09 (2.00×); +2 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
21
|
+
| gpt-6-luna | GPT-6 Luna | low | 21 | $0.00 | 1 | 3 | — | First measured effort for this model; no internal effort comparison. |
|
|
22
|
+
| gpt-6-luna | GPT-6 Luna | medium | 29 | $0.02 | 4 | 3 | +$0.02 (4.44×); +8 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
23
|
+
| gpt-6-luna | GPT-6 Luna | high | 32 | $0.03 | 6 | 3 | +$0.01 (1.50×); +3 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
24
|
+
| gpt-6-luna | GPT-6 Luna | xhigh | 34 | $0.04 | 8 | 3 | +$0.01 (1.33×); +2 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
25
|
+
| gpt-6-luna | GPT-6 Luna | max | 37 | $0.07 | 14 | 3 | +$0.03 (1.75×); +3 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
21
26
|
| gpt-5-6-terra | GPT-5.6 Terra | low | 27 | $0.14 | 28 | 56 | — | First measured effort for this model; no internal effort comparison. |
|
|
22
27
|
| gpt-5-6-terra | GPT-5.6 Terra | medium | 30 | $0.18 | 36 | 56 | +$0.04 (1.29×); +3 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
23
28
|
| gpt-5-6-terra | GPT-5.6 Terra | high | 34 | $0.34 | 68 | 56 | +$0.16 (1.89×); +4 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
@@ -28,6 +33,11 @@ Benchmark cost index: `100 × observed benchmark cost / $0.50`; GPT-5.6 Sol medi
|
|
|
28
33
|
| gpt-5-6-sol | GPT-5.6 Sol | high | 42 | $0.81 | 162 | 100 | +$0.31 (1.62×); +3 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
29
34
|
| gpt-5-6-sol | GPT-5.6 Sol | xhigh | 44 | $1.18 | 236 | 100 | +$0.37 (1.46×); +2 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
30
35
|
| gpt-5-6-sol | GPT-5.6 Sol | max | 47 | $1.99 | 398 | 100 | +$0.81 (1.69×); +3 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
36
|
+
| gpt-6-sol | GPT-6 Sol | low | 34 | $0.13 | 26 | 50 | — | First measured effort for this model; no internal effort comparison. |
|
|
37
|
+
| gpt-6-sol | GPT-6 Sol | medium | 40 | $0.25 | 50 | 50 | +$0.12 (1.92×); +6 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
38
|
+
| gpt-6-sol | GPT-6 Sol | high | 43 | $0.37 | 74 | 50 | +$0.12 (1.48×); +3 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
39
|
+
| gpt-6-sol | GPT-6 Sol | xhigh | 44 | $0.53 | 106 | 50 | +$0.16 (1.43×); +1 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
40
|
+
| gpt-6-sol | GPT-6 Sol | max | 48 | $1.06 | 212 | 50 | +$0.53 (2.00×); +4 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
31
41
|
| gpt-6-astra | GPT-6 Astra | low | 46 | $0.82 | 164 | 250 | — | First measured effort for this model; no internal effort comparison. |
|
|
32
42
|
| gpt-6-astra | GPT-6 Astra | medium | 50 | $1.54 | 308 | 250 | +$0.72 (1.88×); +4 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
33
43
|
| gpt-6-astra | GPT-6 Astra | high | 51 | $1.73 | 346 | 250 | +$0.19 (1.12×); +1 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
@@ -43,7 +53,11 @@ Benchmark cost index: `100 × observed benchmark cost / $0.50`; GPT-5.6 Sol medi
|
|
|
43
53
|
| claude-opus-5 | Claude Opus 5 | high | 48 | $3.61 | 722 | 125 | +$1.42 (1.65×); +3 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
44
54
|
| claude-opus-5 | Claude Opus 5 | xhigh | 50 | $4.88 | 976 | 125 | +$1.27 (1.35×); +2 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
45
55
|
| claude-opus-5 | Claude Opus 5 | max | 51 | $5.86 | 1172 | 125 | +$0.98 (1.20×); +1 score | Compare only with adjacent measured effort; higher effort raises observed cost. |
|
|
46
|
-
| claude-opus-5-5 | Claude Opus 5.5 |
|
|
56
|
+
| claude-opus-5-5 | Claude Opus 5.5 | low | 42 | $0.55 | 110 | 100 | — | Segregate from standalone cross-model comparisons. |
|
|
57
|
+
| claude-opus-5-5 | Claude Opus 5.5 | medium | 51 | $1.34 | 268 | 100 | +$0.79 (2.44×); +9 score | Segregate from standalone cross-model comparisons. |
|
|
58
|
+
| claude-opus-5-5 | Claude Opus 5.5 | high | 54 | $1.82 | 364 | 100 | +$0.48 (1.36×); +3 score | Segregate from standalone cross-model comparisons. |
|
|
59
|
+
| claude-opus-5-5 | Claude Opus 5.5 | xhigh | 56 | $3.46 | 692 | 100 | +$1.64 (1.90×); +2 score | Segregate from standalone cross-model comparisons. |
|
|
60
|
+
| claude-opus-5-5 | Claude Opus 5.5 | max | 58 | $5.98 | 1196 | 100 | +$2.52 (1.73×); +2 score | Segregate from standalone cross-model comparisons. |
|
|
47
61
|
| claude-fable-5-1 | Claude Fable 5.1 | low | 47 | $2.37 | 474 | 250 | — | Segregate from standalone cross-model comparisons. |
|
|
48
62
|
| claude-fable-5-1 | Claude Fable 5.1 | medium | 49 | $2.98 | 596 | 250 | +$0.61 (1.26×); +2 score | Segregate from standalone cross-model comparisons. |
|
|
49
63
|
| claude-fable-5-1 | Claude Fable 5.1 | high | 51 | $3.91 | 782 | 250 | +$0.93 (1.31×); +2 score | Segregate from standalone cross-model comparisons. |
|
|
@@ -84,8 +98,10 @@ Benchmark cost index: `100 × observed benchmark cost / $0.50`; GPT-5.6 Sol medi
|
|
|
84
98
|
| Model family | Input USD/MTok | Output USD/MTok | Price note |
|
|
85
99
|
| --- | ---: | ---: | --- |
|
|
86
100
|
| GPT-5.6 Luna | $0.200 | $1.200 | AA-observed price; not a live account tariff. |
|
|
101
|
+
| GPT-6 Luna | $0.100 | $0.500 | AA-observed price; not a live account tariff. |
|
|
87
102
|
| GPT-5.6 Terra | $2.000 | $12.000 | AA-observed price; not a live account tariff. |
|
|
88
103
|
| GPT-5.6 Sol | $4.000 | $20.000 | AA-observed price; not a live account tariff. |
|
|
104
|
+
| GPT-6 Sol | $2.000 | $10.000 | AA-observed price; not a live account tariff. |
|
|
89
105
|
| GPT-6 Astra | $10.000 | $50.000 | AA-observed price; not a live account tariff. |
|
|
90
106
|
| Claude Sonnet 5 | $2.000 | $10.000 | AA-observed price; not a live account tariff. |
|
|
91
107
|
| Claude Opus 5 | $5.000 | $25.000 | AA-observed price; not a live account tariff. |
|
|
@@ -111,8 +127,10 @@ Benchmark cost index: `100 × observed benchmark cost / $0.50`; GPT-5.6 Sol medi
|
|
|
111
127
|
| Model family | Canonical API ID | Availability evidence |
|
|
112
128
|
| --- | --- | --- |
|
|
113
129
|
| GPT-5.6 Luna | `gpt-5.6-luna` | Canonical ID recorded in this dataset; exposure in a specific harness remains unverified. |
|
|
130
|
+
| GPT-6 Luna | `gpt-6-luna` | Canonical ID recorded in this dataset; exposure in a specific harness remains unverified. |
|
|
114
131
|
| GPT-5.6 Terra | `gpt-5.6-terra` | Canonical ID recorded in this dataset; exposure in a specific harness remains unverified. |
|
|
115
132
|
| GPT-5.6 Sol | `gpt-5.6-sol` | Canonical ID recorded in this dataset; exposure in a specific harness remains unverified. |
|
|
133
|
+
| GPT-6 Sol | `gpt-6-sol` | Canonical ID recorded in this dataset; exposure in a specific harness remains unverified. |
|
|
116
134
|
| GPT-6 Astra | `gpt-6-astra` | Canonical ID recorded in this dataset; exposure in a specific harness remains unverified. |
|
|
117
135
|
| Claude Sonnet 5 | `claude-sonnet-5` | Canonical ID recorded in this dataset; exposure in a specific harness remains unverified. |
|
|
118
136
|
| Claude Opus 5 | `claude-opus-5` | Canonical ID recorded in this dataset; exposure in a specific harness remains unverified. |
|
|
@@ -136,12 +154,14 @@ Benchmark cost index: `100 × observed benchmark cost / $0.50`; GPT-5.6 Sol medi
|
|
|
136
154
|
## Source and interpretation limits
|
|
137
155
|
|
|
138
156
|
- [GPT-5.6 Luna](https://artificialanalysis.ai/models/gpt-5-6-luna)
|
|
157
|
+
- [GPT-6 Luna](https://artificialanalysis.ai/models/gpt-6-luna)
|
|
139
158
|
- [GPT-5.6 Terra](https://artificialanalysis.ai/models/gpt-5-6-terra)
|
|
140
159
|
- [GPT-5.6 Sol](https://artificialanalysis.ai/models/gpt-5-6-sol)
|
|
160
|
+
- [GPT-6 Sol](https://artificialanalysis.ai/models/gpt-6-sol)
|
|
141
161
|
- [GPT-6 Astra](https://artificialanalysis.ai/models/gpt-6-astra)
|
|
142
162
|
- [Claude Sonnet 5](https://artificialanalysis.ai/models/claude-sonnet-5)
|
|
143
163
|
- [Claude Opus 5](https://artificialanalysis.ai/models/claude-opus-5)
|
|
144
|
-
- [Claude Opus 5.5](https://artificialanalysis.ai/models/claude-opus-5-5) —
|
|
164
|
+
- [Claude Opus 5.5](https://artificialanalysis.ai/models/claude-opus-5-5) — All displayed scores include the benchmark default fallback and are not standalone scores.
|
|
145
165
|
- [Claude Fable 5.1](https://artificialanalysis.ai/models/claude-fable-5-1) — All displayed scores include the benchmark default fallback and are not standalone scores.
|
|
146
166
|
- [Claude Fable 5](https://artificialanalysis.ai/models/claude-fable-5) — AA v4.3.2 max result uses Opus 4.8 default fallback. This legacy catalog model is not in the current leaderboard filter; segregate it from standalone cross-model comparisons.
|
|
147
167
|
- [Claude Haiku 4.5](https://artificialanalysis.ai/models/claude-4-5-haiku) — Its API thinking budget is not an effort enum. The disabled score 15 is incomplete and intentionally excluded.
|
package/models/top-models.json
CHANGED
|
@@ -91,6 +91,7 @@
|
|
|
91
91
|
"share_max": null
|
|
92
92
|
},
|
|
93
93
|
"notes": [
|
|
94
|
+
"Fallback for GPT-6 Luna on its Codex seat: dispatched when GPT-6 Luna is not exposed by the inventory or is rolled back.",
|
|
94
95
|
"Default W-tier config is `xhigh`; `max` when it stalls.",
|
|
95
96
|
"Escalate to S when the task needs capacity (judgment, cross-file scope, ambiguity), not merely more reasoning depth."
|
|
96
97
|
],
|
|
@@ -99,6 +100,115 @@
|
|
|
99
100
|
],
|
|
100
101
|
"observed_at": "2026-09-22"
|
|
101
102
|
},
|
|
103
|
+
{
|
|
104
|
+
"key": "gpt-6-luna",
|
|
105
|
+
"display_name": "GPT-6 Luna",
|
|
106
|
+
"provider": "openai",
|
|
107
|
+
"ladder": "codex",
|
|
108
|
+
"admission": "incumbent",
|
|
109
|
+
"tier": "W",
|
|
110
|
+
"eligible_tiers": [
|
|
111
|
+
"W"
|
|
112
|
+
],
|
|
113
|
+
"supersedes": "gpt-5-6-luna",
|
|
114
|
+
"api_ids": {
|
|
115
|
+
"codex": "gpt-6-luna",
|
|
116
|
+
"claude": null,
|
|
117
|
+
"opencode": null,
|
|
118
|
+
"kilo": null
|
|
119
|
+
},
|
|
120
|
+
"context_window": 1050000,
|
|
121
|
+
"max_output_tokens": 128000,
|
|
122
|
+
"thinking": {
|
|
123
|
+
"control": "reasoning_effort",
|
|
124
|
+
"levels": [
|
|
125
|
+
"low",
|
|
126
|
+
"medium",
|
|
127
|
+
"high",
|
|
128
|
+
"xhigh",
|
|
129
|
+
"max"
|
|
130
|
+
],
|
|
131
|
+
"always_on": false,
|
|
132
|
+
"default_for_tier": "xhigh",
|
|
133
|
+
"note": "Same W policy as GPT-5.6 Luna: exempt from the Codex `high` ceiling, thinking is cheap on a small model. The API also accepts `none`, which is not measured and never routed."
|
|
134
|
+
},
|
|
135
|
+
"price": {
|
|
136
|
+
"input_usd_per_mtok": 0.1,
|
|
137
|
+
"output_usd_per_mtok": 0.5,
|
|
138
|
+
"cache_read_usd_per_mtok": 0.01,
|
|
139
|
+
"cache_write_multiplier": 1.25
|
|
140
|
+
},
|
|
141
|
+
"long_context_surcharge": {
|
|
142
|
+
"threshold_input_tokens": 272000,
|
|
143
|
+
"input_multiplier": 2,
|
|
144
|
+
"output_multiplier": 1.5,
|
|
145
|
+
"effective_input_usd_per_mtok": 0.2,
|
|
146
|
+
"effective_output_usd_per_mtok": 0.75,
|
|
147
|
+
"note": "Crossing the threshold reprices the entire request, not just the overflow."
|
|
148
|
+
},
|
|
149
|
+
"measured": {
|
|
150
|
+
"low": {
|
|
151
|
+
"score": 21,
|
|
152
|
+
"usd_per_task": 0.0045
|
|
153
|
+
},
|
|
154
|
+
"medium": {
|
|
155
|
+
"score": 29,
|
|
156
|
+
"usd_per_task": 0.02
|
|
157
|
+
},
|
|
158
|
+
"high": {
|
|
159
|
+
"score": 32,
|
|
160
|
+
"usd_per_task": 0.03
|
|
161
|
+
},
|
|
162
|
+
"xhigh": {
|
|
163
|
+
"score": 34,
|
|
164
|
+
"usd_per_task": 0.04
|
|
165
|
+
},
|
|
166
|
+
"max": {
|
|
167
|
+
"score": 37,
|
|
168
|
+
"usd_per_task": 0.07
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
"indices": {
|
|
172
|
+
"thinking_cost_index": {
|
|
173
|
+
"low": 0.9,
|
|
174
|
+
"medium": 4,
|
|
175
|
+
"high": 6,
|
|
176
|
+
"xhigh": 8,
|
|
177
|
+
"max": 14
|
|
178
|
+
},
|
|
179
|
+
"marginal_thinking": {
|
|
180
|
+
"low->medium": {
|
|
181
|
+
"delta_score": 8,
|
|
182
|
+
"cost_multiplier": 4.44
|
|
183
|
+
},
|
|
184
|
+
"medium->high": {
|
|
185
|
+
"delta_score": 3,
|
|
186
|
+
"cost_multiplier": 1.5
|
|
187
|
+
},
|
|
188
|
+
"high->xhigh": {
|
|
189
|
+
"delta_score": 2,
|
|
190
|
+
"cost_multiplier": 1.33
|
|
191
|
+
},
|
|
192
|
+
"xhigh->max": {
|
|
193
|
+
"delta_score": 3,
|
|
194
|
+
"cost_multiplier": 1.75
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
"caps": {
|
|
199
|
+
"max_effort": "max",
|
|
200
|
+
"share_max": null
|
|
201
|
+
},
|
|
202
|
+
"notes": [
|
|
203
|
+
"Successor to GPT-5.6 Luna on the Codex W seat: $0.10/$0.50 vs $0.20/$1.20 per MTok, and cheaper per completed task at every measured effort (max 37 @ $0.07 vs 37 @ $0.18). GPT-5.6 Luna stays routable as its fallback.",
|
|
204
|
+
"Default W-tier config is `xhigh`; `max` when it stalls. Escalate to S for capacity, not depth."
|
|
205
|
+
],
|
|
206
|
+
"sources": [
|
|
207
|
+
"https://artificialanalysis.ai/models/gpt-6-luna",
|
|
208
|
+
"https://developers.openai.com/api/docs/models/gpt-6-luna"
|
|
209
|
+
],
|
|
210
|
+
"observed_at": "2026-09-23"
|
|
211
|
+
},
|
|
102
212
|
{
|
|
103
213
|
"key": "gpt-5-6-terra",
|
|
104
214
|
"display_name": "GPT-5.6 Terra",
|
|
@@ -239,6 +349,7 @@
|
|
|
239
349
|
}
|
|
240
350
|
},
|
|
241
351
|
"notes": [
|
|
352
|
+
"Fallback for GPT-6 Sol on its Codex seat: dispatched when GPT-6 Sol is not exposed by the inventory or is rolled back.",
|
|
242
353
|
"Sol never above `high`; `max` is dominated and never correct.",
|
|
243
354
|
"X T4 on Codex = Sol `high` + an independent Sol `high` reviewer (different agent, no forked history)."
|
|
244
355
|
],
|
|
@@ -247,6 +358,123 @@
|
|
|
247
358
|
],
|
|
248
359
|
"observed_at": "2026-09-22"
|
|
249
360
|
},
|
|
361
|
+
{
|
|
362
|
+
"key": "gpt-6-sol",
|
|
363
|
+
"display_name": "GPT-6 Sol",
|
|
364
|
+
"provider": "openai",
|
|
365
|
+
"ladder": "codex",
|
|
366
|
+
"admission": "incumbent",
|
|
367
|
+
"tier": "X",
|
|
368
|
+
"eligible_tiers": [
|
|
369
|
+
"S",
|
|
370
|
+
"X"
|
|
371
|
+
],
|
|
372
|
+
"supersedes": "gpt-5-6-sol",
|
|
373
|
+
"api_ids": {
|
|
374
|
+
"codex": "gpt-6-sol",
|
|
375
|
+
"claude": null,
|
|
376
|
+
"opencode": null,
|
|
377
|
+
"kilo": null
|
|
378
|
+
},
|
|
379
|
+
"context_window": 1050000,
|
|
380
|
+
"max_output_tokens": 128000,
|
|
381
|
+
"thinking": {
|
|
382
|
+
"control": "reasoning_effort",
|
|
383
|
+
"levels": [
|
|
384
|
+
"low",
|
|
385
|
+
"medium",
|
|
386
|
+
"high",
|
|
387
|
+
"xhigh",
|
|
388
|
+
"max"
|
|
389
|
+
],
|
|
390
|
+
"always_on": false,
|
|
391
|
+
"default_for_tier": "high",
|
|
392
|
+
"note": "Same Codex policy as GPT-5.6 Sol: ceiling `high`; T4 is `high` plus an independent second Sol `high` reviewer with no shared history. The API also accepts `none`, which is not measured and never routed. On the S seat it runs one notch down (tier_effort), score-matched to Terra.",
|
|
393
|
+
"tier_effort": {
|
|
394
|
+
"S": {"T1": "low", "T2": "low", "T3": "medium"}
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
"price": {
|
|
398
|
+
"input_usd_per_mtok": 2,
|
|
399
|
+
"output_usd_per_mtok": 10,
|
|
400
|
+
"cache_read_usd_per_mtok": 0.2,
|
|
401
|
+
"cache_write_multiplier": 1.25
|
|
402
|
+
},
|
|
403
|
+
"long_context_surcharge": {
|
|
404
|
+
"threshold_input_tokens": 272000,
|
|
405
|
+
"input_multiplier": 2,
|
|
406
|
+
"output_multiplier": 1.5,
|
|
407
|
+
"effective_input_usd_per_mtok": 4,
|
|
408
|
+
"effective_output_usd_per_mtok": 15,
|
|
409
|
+
"note": "Crossing the threshold reprices the entire request, not just the overflow."
|
|
410
|
+
},
|
|
411
|
+
"measured": {
|
|
412
|
+
"low": {
|
|
413
|
+
"score": 34,
|
|
414
|
+
"usd_per_task": 0.13
|
|
415
|
+
},
|
|
416
|
+
"medium": {
|
|
417
|
+
"score": 40,
|
|
418
|
+
"usd_per_task": 0.25
|
|
419
|
+
},
|
|
420
|
+
"high": {
|
|
421
|
+
"score": 43,
|
|
422
|
+
"usd_per_task": 0.37
|
|
423
|
+
},
|
|
424
|
+
"xhigh": {
|
|
425
|
+
"score": 44,
|
|
426
|
+
"usd_per_task": 0.53
|
|
427
|
+
},
|
|
428
|
+
"max": {
|
|
429
|
+
"score": 48,
|
|
430
|
+
"usd_per_task": 1.06
|
|
431
|
+
}
|
|
432
|
+
},
|
|
433
|
+
"indices": {
|
|
434
|
+
"thinking_cost_index": {
|
|
435
|
+
"low": 26,
|
|
436
|
+
"medium": 50,
|
|
437
|
+
"high": 74,
|
|
438
|
+
"xhigh": 106,
|
|
439
|
+
"max": 212
|
|
440
|
+
},
|
|
441
|
+
"marginal_thinking": {
|
|
442
|
+
"low->medium": {
|
|
443
|
+
"delta_score": 6,
|
|
444
|
+
"cost_multiplier": 1.92
|
|
445
|
+
},
|
|
446
|
+
"medium->high": {
|
|
447
|
+
"delta_score": 3,
|
|
448
|
+
"cost_multiplier": 1.48
|
|
449
|
+
},
|
|
450
|
+
"high->xhigh": {
|
|
451
|
+
"delta_score": 1,
|
|
452
|
+
"cost_multiplier": 1.43
|
|
453
|
+
},
|
|
454
|
+
"xhigh->max": {
|
|
455
|
+
"delta_score": 4,
|
|
456
|
+
"cost_multiplier": 2.0
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
},
|
|
460
|
+
"caps": {
|
|
461
|
+
"max_effort": "high",
|
|
462
|
+
"share_max": null,
|
|
463
|
+
"t4_substitution": {
|
|
464
|
+
"effort": "high",
|
|
465
|
+
"requires_independent_second_reviewer": true
|
|
466
|
+
}
|
|
467
|
+
},
|
|
468
|
+
"notes": [
|
|
469
|
+
"Successor to GPT-5.6 Sol on the Codex X seat at half the per-token price ($2/$10 vs $4/$20, permanent pricing). It is cheaper per completed task at every measured effort and scores equal or higher at each (high 43 @ $0.37 vs 42 @ $0.81); GPT-5.6 Sol stays routable as its fallback.",
|
|
470
|
+
"Also holds the Codex S seat: at every S pair it is cheaper and stronger than GPT-5.6 Terra (S T2: `low` 34 @ $0.13 vs Terra `medium` 30 @ $0.18; S T3: `medium` 40 @ $0.25 vs Terra `high` 34 @ $0.34). Terra stays routable as the S fallback."
|
|
471
|
+
],
|
|
472
|
+
"sources": [
|
|
473
|
+
"https://artificialanalysis.ai/models/gpt-6-sol",
|
|
474
|
+
"https://developers.openai.com/api/docs/models/gpt-6-sol"
|
|
475
|
+
],
|
|
476
|
+
"observed_at": "2026-09-23"
|
|
477
|
+
},
|
|
250
478
|
{
|
|
251
479
|
"key": "gpt-6-astra",
|
|
252
480
|
"display_name": "GPT-6 Astra",
|
|
@@ -506,7 +734,9 @@
|
|
|
506
734
|
"ladder": "claude",
|
|
507
735
|
"admission": "incumbent",
|
|
508
736
|
"tier": "X",
|
|
509
|
-
"eligible_tiers": [
|
|
737
|
+
"eligible_tiers": [
|
|
738
|
+
"X"
|
|
739
|
+
],
|
|
510
740
|
"supersedes": "claude-opus-5",
|
|
511
741
|
"api_ids": {
|
|
512
742
|
"codex": null,
|
|
@@ -518,8 +748,13 @@
|
|
|
518
748
|
"max_output_tokens": 128000,
|
|
519
749
|
"thinking": {
|
|
520
750
|
"control": "effort",
|
|
521
|
-
"levels": [
|
|
522
|
-
|
|
751
|
+
"levels": [
|
|
752
|
+
"low",
|
|
753
|
+
"medium",
|
|
754
|
+
"high",
|
|
755
|
+
"xhigh",
|
|
756
|
+
"max"
|
|
757
|
+
],
|
|
523
758
|
"always_on": true,
|
|
524
759
|
"default_for_tier": "high",
|
|
525
760
|
"note": "Thinking is always on: omit `thinking` or send `adaptive`; `disabled` and `budget_tokens` return 400 at every effort. The API default effort is `medium` (one below Opus 5), so X always sets effort explicitly — `high` for T3, `xhigh` for T4. Forced `tool_choice` any/tool returns 400 — use `auto` + instruction, `strict: true`, or structured outputs. Thinking blocks are model-bound; keep transcripts append-only. Computer use only via `computer_toolset_20260801`."
|
|
@@ -533,14 +768,54 @@
|
|
|
533
768
|
},
|
|
534
769
|
"long_context_surcharge": null,
|
|
535
770
|
"measured": {
|
|
536
|
-
"
|
|
771
|
+
"low": {
|
|
772
|
+
"score": 42,
|
|
773
|
+
"usd_per_task": 0.55
|
|
774
|
+
},
|
|
775
|
+
"medium": {
|
|
776
|
+
"score": 51,
|
|
777
|
+
"usd_per_task": 1.34
|
|
778
|
+
},
|
|
779
|
+
"high": {
|
|
780
|
+
"score": 54,
|
|
781
|
+
"usd_per_task": 1.82
|
|
782
|
+
},
|
|
783
|
+
"xhigh": {
|
|
784
|
+
"score": 56,
|
|
785
|
+
"usd_per_task": 3.46
|
|
786
|
+
},
|
|
787
|
+
"max": {
|
|
788
|
+
"score": 58,
|
|
789
|
+
"usd_per_task": 5.98
|
|
790
|
+
}
|
|
537
791
|
},
|
|
538
|
-
"measurement_note": "
|
|
792
|
+
"measurement_note": "All displayed scores include the benchmark default fallback and are not standalone scores.",
|
|
539
793
|
"indices": {
|
|
540
794
|
"thinking_cost_index": {
|
|
795
|
+
"low": 110,
|
|
796
|
+
"medium": 268,
|
|
797
|
+
"high": 364,
|
|
798
|
+
"xhigh": 692,
|
|
541
799
|
"max": 1196
|
|
542
800
|
},
|
|
543
|
-
"marginal_thinking": {
|
|
801
|
+
"marginal_thinking": {
|
|
802
|
+
"low->medium": {
|
|
803
|
+
"delta_score": 9,
|
|
804
|
+
"cost_multiplier": 2.44
|
|
805
|
+
},
|
|
806
|
+
"medium->high": {
|
|
807
|
+
"delta_score": 3,
|
|
808
|
+
"cost_multiplier": 1.36
|
|
809
|
+
},
|
|
810
|
+
"high->xhigh": {
|
|
811
|
+
"delta_score": 2,
|
|
812
|
+
"cost_multiplier": 1.9
|
|
813
|
+
},
|
|
814
|
+
"xhigh->max": {
|
|
815
|
+
"delta_score": 2,
|
|
816
|
+
"cost_multiplier": 1.73
|
|
817
|
+
}
|
|
818
|
+
}
|
|
544
819
|
},
|
|
545
820
|
"caps": {
|
|
546
821
|
"max_effort": "xhigh",
|
|
@@ -548,7 +823,7 @@
|
|
|
548
823
|
},
|
|
549
824
|
"notes": [
|
|
550
825
|
"Successor to Claude Opus 5 on the Claude X seat. Every per-token price is lower (Anthropic list: input $4 vs $5, output $20 vs $25, cache read $0.20 vs $0.50, cache write $5 vs $6.25), with the same 1M context, 128K output and tokenizer, so the router ranks it ahead of Opus 5 at the same effort; Opus 5 stays routable as its fallback.",
|
|
551
|
-
"
|
|
826
|
+
"Measured at every effort (Artificial Analysis, with default fallback): high 54 @ $1.82 vs Opus 5 high 48 @ $3.61 — higher score at half the cost per task. Anthropic's launch table also puts it above Opus 5 on every published benchmark.",
|
|
552
827
|
"Seat stays X: an incumbent tier is never re-derived from a score."
|
|
553
828
|
],
|
|
554
829
|
"sources": [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "llm-orchestrator",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "Write /task once — it plans the work, shards it across parallel subagents, gates every phase and verifies before claiming done. Claude Code, Codex, OpenCode, Kilo.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
package/policies/routing.md
CHANGED
|
@@ -74,9 +74,9 @@ the incumbents below are role mappings, not guarantees of availability.
|
|
|
74
74
|
|
|
75
75
|
| Tier | Role | Claude incumbent | Codex incumbent |
|
|
76
76
|
| --- | --- | --- | --- |
|
|
77
|
-
| **W** worker | local, mechanical, repetitive, well-defined: code search, classification, extraction, small edits, boilerplate, simple tests, consistency checks, scoped transforms | Haiku 4.5 (`claude-haiku-4-5`) | `gpt-5.6-luna` |
|
|
78
|
-
| **S** standard | default software-engineering model: normal implementation, frontend/backend, moderate debugging, tests, reasonable multi-file refactors, codebase analysis, tool use | Sonnet 5 (`claude-sonnet-5`) | `gpt-5.6-terra` |
|
|
79
|
-
| **X** senior | hard debugging, architecture, concurrency, migrations, security, auth, payments, billing, backwards compatibility, critical code review, many invariants | Opus 5.5 (`claude-opus-5-5`), falling back to Opus 5 (`claude-opus-5`) | `gpt-5.6-sol` |
|
|
77
|
+
| **W** worker | local, mechanical, repetitive, well-defined: code search, classification, extraction, small edits, boilerplate, simple tests, consistency checks, scoped transforms | Haiku 4.5 (`claude-haiku-4-5`) | `gpt-6-luna`, falling back to `gpt-5.6-luna` |
|
|
78
|
+
| **S** standard | default software-engineering model: normal implementation, frontend/backend, moderate debugging, tests, reasonable multi-file refactors, codebase analysis, tool use | Sonnet 5 (`claude-sonnet-5`) | `gpt-6-sol` one notch down, falling back to `gpt-5.6-terra` |
|
|
79
|
+
| **X** senior | hard debugging, architecture, concurrency, migrations, security, auth, payments, billing, backwards compatibility, critical code review, many invariants | Opus 5.5 (`claude-opus-5-5`), falling back to Opus 5 (`claude-opus-5`) | `gpt-6-sol`, falling back to `gpt-5.6-sol` |
|
|
80
80
|
| **F** frontier | exceptional escalation: very ambiguous, long-horizon, cross-system, major architecture, very large codebase, planning under heavy constraints, or when X fails to produce a solid solution | Fable 5 (`claude-fable-5`) — default F. Fable 5.1 (`claude-fable-5-1`) is a hard-capped exception: **≤2% of all dispatches**, explicit request or documented F-T4 failure on Fable 5 only | GPT-6 Astra (`gpt-6-astra`) — a real single-agent frontier tier, no decomposition workaround needed |
|
|
81
81
|
|
|
82
82
|
Escalation order within a provider: **W → S → X → F**.
|
|
@@ -85,9 +85,9 @@ Verified prices (Sep 2026, provider pricing pages), USD in/out per MTok:
|
|
|
85
85
|
|
|
86
86
|
| Tier | Claude model | Claude $ in/out | Codex model | Codex $ in/out |
|
|
87
87
|
| --- | --- | --- | --- | --- |
|
|
88
|
-
| W | Haiku 4.5 (200K ctx) | $1 / $5 | `gpt-
|
|
89
|
-
| S | Sonnet 5 (1M ctx) | $2 / $10 | `gpt-5.6-terra`
|
|
90
|
-
| X | Opus 5.5 (1M ctx); fallback Opus 5 $5 / $25 | $4 / $20 | `gpt-
|
|
88
|
+
| W | Haiku 4.5 (200K ctx) | $1 / $5 | `gpt-6-luna` (1.05M ctx); fallback `gpt-5.6-luna` $0.20 / $1.20 | $0.10 / $0.50 |
|
|
89
|
+
| S | Sonnet 5 (1M ctx) | $2 / $10 | `gpt-6-sol` one effort notch down (T1/T2 `low`, T3 `medium`); fallback `gpt-5.6-terra` $2 / $12 | $2 / $10 |
|
|
90
|
+
| X | Opus 5.5 (1M ctx); fallback Opus 5 $5 / $25 | $4 / $20 | `gpt-6-sol` (1.05M ctx); fallback `gpt-5.6-sol` $4 / $20 | $2 / $10 |
|
|
91
91
|
| F | Fable 5 (1M ctx) | $10 / $50 | `gpt-6-astra` (1.05M ctx) | $10 / $50 list — **but the cheapest F per completed task of any model here** |
|
|
92
92
|
| F+ (≤2%) | Fable 5.1 (1M ctx) | $10 / $50 list — **effective cost significantly higher** (always-on thinking, longer turns, more output tokens per task) | — (Astra covers F) | — |
|
|
93
93
|
|
|
@@ -8,18 +8,20 @@
|
|
|
8
8
|
"W": {
|
|
9
9
|
"name": "worker",
|
|
10
10
|
"responsibility": "Local, mechanical, repetitive, well-defined: code search, classification, extraction, small edits, boilerplate, simple tests, consistency checks, scoped transforms.",
|
|
11
|
-
"incumbents": {"claude": "claude-haiku-4-5", "codex": "gpt-
|
|
11
|
+
"incumbents": {"claude": "claude-haiku-4-5", "codex": "gpt-6-luna"},
|
|
12
|
+
"fallbacks": {"codex": ["gpt-5.6-luna"]}
|
|
12
13
|
},
|
|
13
14
|
"S": {
|
|
14
15
|
"name": "standard",
|
|
15
16
|
"responsibility": "Default software-engineering model: normal implementation, frontend/backend, moderate debugging, tests, reasonable multi-file refactors, codebase analysis, tool use.",
|
|
16
|
-
"incumbents": {"claude": "claude-sonnet-5", "codex": "gpt-
|
|
17
|
+
"incumbents": {"claude": "claude-sonnet-5", "codex": "gpt-6-sol"},
|
|
18
|
+
"fallbacks": {"codex": ["gpt-5.6-terra"]}
|
|
17
19
|
},
|
|
18
20
|
"X": {
|
|
19
21
|
"name": "senior",
|
|
20
22
|
"responsibility": "Hard debugging, architecture, concurrency, migrations, security, auth, payments, billing, backwards compatibility, critical code review, many invariants.",
|
|
21
|
-
"incumbents": {"claude": "claude-opus-5-5", "codex": "gpt-
|
|
22
|
-
"fallbacks": {"claude": ["claude-opus-5"]}
|
|
23
|
+
"incumbents": {"claude": "claude-opus-5-5", "codex": "gpt-6-sol"},
|
|
24
|
+
"fallbacks": {"claude": ["claude-opus-5"], "codex": ["gpt-5.6-sol"]}
|
|
23
25
|
},
|
|
24
26
|
"F": {
|
|
25
27
|
"name": "frontier",
|
|
@@ -74,40 +76,40 @@
|
|
|
74
76
|
"resolution": {
|
|
75
77
|
"W T0-T1": {
|
|
76
78
|
"claude": {"model": "claude-haiku-4-5", "effort": null, "thinking": "off"},
|
|
77
|
-
"codex": {"model": "gpt-
|
|
79
|
+
"codex": {"model": "gpt-6-luna", "effort": "low"}
|
|
78
80
|
},
|
|
79
81
|
"W T2": {
|
|
80
82
|
"claude": {"model": "claude-haiku-4-5", "effort": null, "thinking": "small budget"},
|
|
81
|
-
"codex": {"model": "gpt-
|
|
83
|
+
"codex": {"model": "gpt-6-luna", "effort": "medium"}
|
|
82
84
|
},
|
|
83
85
|
"W T3": {
|
|
84
86
|
"claude": null,
|
|
85
87
|
"claude_note": "No headroom at the Claude W tier — escalate to S.",
|
|
86
|
-
"codex": {"model": "gpt-
|
|
88
|
+
"codex": {"model": "gpt-6-luna", "effort": "xhigh", "alternate_effort": "max"}
|
|
87
89
|
},
|
|
88
90
|
"S T1": {
|
|
89
91
|
"claude": {"model": "claude-sonnet-5", "effort": "low"},
|
|
90
|
-
"codex": {"model": "gpt-
|
|
92
|
+
"codex": {"model": "gpt-6-sol", "effort": "low"}
|
|
91
93
|
},
|
|
92
94
|
"S T2": {
|
|
93
95
|
"claude": {"model": "claude-sonnet-5", "effort": "medium"},
|
|
94
|
-
"codex": {"model": "gpt-
|
|
96
|
+
"codex": {"model": "gpt-6-sol", "effort": "low"}
|
|
95
97
|
},
|
|
96
98
|
"S T3": {
|
|
97
99
|
"claude": {"model": "claude-sonnet-5", "effort": "high"},
|
|
98
|
-
"codex": {"model": "gpt-
|
|
100
|
+
"codex": {"model": "gpt-6-sol", "effort": "medium"}
|
|
99
101
|
},
|
|
100
102
|
"X T2": {
|
|
101
103
|
"claude": {"model": "claude-opus-5-5", "effort": "medium"},
|
|
102
|
-
"codex": {"model": "gpt-
|
|
104
|
+
"codex": {"model": "gpt-6-sol", "effort": "medium"}
|
|
103
105
|
},
|
|
104
106
|
"X T3": {
|
|
105
107
|
"claude": {"model": "claude-opus-5-5", "effort": "high"},
|
|
106
|
-
"codex": {"model": "gpt-
|
|
108
|
+
"codex": {"model": "gpt-6-sol", "effort": "high"}
|
|
107
109
|
},
|
|
108
110
|
"X T4": {
|
|
109
111
|
"claude": {"model": "claude-opus-5-5", "effort": "xhigh"},
|
|
110
|
-
"codex": {"model": "gpt-
|
|
112
|
+
"codex": {"model": "gpt-6-sol", "effort": "high", "independent_second_reviewer": {"model": "gpt-6-sol", "effort": "high"}}
|
|
111
113
|
},
|
|
112
114
|
"F T3": {
|
|
113
115
|
"claude": {"model": "claude-fable-5", "effort": "high"},
|
|
@@ -288,15 +290,14 @@
|
|
|
288
290
|
{"model": "claude-fable-5-1", "effort": "high", "requires_explicit_flag": true, "note": "≤2% cap, explicit request or documented Fable 5 F-T4 failure only."}
|
|
289
291
|
],
|
|
290
292
|
"codex": [
|
|
291
|
-
{"model": "gpt-
|
|
292
|
-
{"model": "gpt-
|
|
293
|
-
{"model": "gpt-
|
|
294
|
-
{"model": "gpt-
|
|
295
|
-
{"model": "gpt-
|
|
296
|
-
{"model": "gpt-
|
|
297
|
-
{"model": "gpt-
|
|
298
|
-
{"model": "gpt-
|
|
299
|
-
{"model": "gpt-5.6-sol", "effort": "high", "independent_second_reviewer": true},
|
|
293
|
+
{"model": "gpt-6-luna", "effort": "low"},
|
|
294
|
+
{"model": "gpt-6-luna", "effort": "medium"},
|
|
295
|
+
{"model": "gpt-6-luna", "effort": "xhigh"},
|
|
296
|
+
{"model": "gpt-6-luna", "effort": "max"},
|
|
297
|
+
{"model": "gpt-6-sol", "effort": "low"},
|
|
298
|
+
{"model": "gpt-6-sol", "effort": "medium"},
|
|
299
|
+
{"model": "gpt-6-sol", "effort": "high"},
|
|
300
|
+
{"model": "gpt-6-sol", "effort": "high", "independent_second_reviewer": true},
|
|
300
301
|
{"model": "gpt-6-astra", "effort": "high"},
|
|
301
302
|
{"model": "gpt-6-astra", "effort": "xhigh"},
|
|
302
303
|
{"model": "gpt-6-astra", "effort": "max", "note": "Essentially never."}
|
|
@@ -106,6 +106,11 @@
|
|
|
106
106
|
"always_on": { "type": ["boolean", "null"] },
|
|
107
107
|
"default_for_tier": { "type": ["string", "null"] },
|
|
108
108
|
"note": { "type": "string" },
|
|
109
|
+
"tier_effort": {
|
|
110
|
+
"type": "object",
|
|
111
|
+
"description": "Per seat below the model's home tier: thinking level → effort to run there, so the model is score-matched to that tier instead of over-provisioned.",
|
|
112
|
+
"additionalProperties": { "type": "object", "additionalProperties": { "type": "string" } }
|
|
113
|
+
},
|
|
109
114
|
"unmeasured_levels": {
|
|
110
115
|
"type": "array",
|
|
111
116
|
"items": { "type": "string" },
|