# Recomputing Cortex Router on tau2-bench: GPT-5.6

The headline is a **paired common-task cohort** comparison between `router` and `sol`. Rows with `infrastructure_error: true` in either arm are excluded from that comparison; this leaves 100 shared tasks.

1. Read `per_task_results.json`.
2. Join valid router and baseline rows on `domain:task_id`.
3. Compute success as resolved rows divided by joined rows.
4. Compute mean cost from `cost_usd` over those same joined rows.
5. Compute route counts from valid router rows grouped by `route_model`.

The exact generated values and claim-to-field mapping are in [claims.json](/cortex/benchmarks/tau2-gpt-router/claims.json). Run `node --test scripts/tau2-benchmark-pages.test.mjs` from the repository root to verify every published aggregate.

## Provenance limits

- Source artifact: tau2_codex_2arm_100
- Source artifact SHA-256: not recorded in supplied artifact
- Router build: not recorded in supplied artifact
- Route-score provenance: selected_arm imported from sticky_router_per_task.csv; published arm labels follow sticky summary_report series rename (router occupies former mid-tier series; mid-tier carries former routed aggregate). Decision mix still uses sticky selected_arm.
- Benchmark version: not recorded in supplied artifact
- Reward implementation: not recorded in supplied artifact
- Pricing: Costs use agent_cost recorded by the benchmark harness; the underlying price table was not included in the supplied artifact. (2026-08-02)
- Held-out status: The supplied artifact does not establish whether this cohort was held out from router or gate tuning.

The publication exposes missing upstream identifiers rather than implying that the supplied pilot establishes held-out validation. It remains `noindex, nofollow` and must be re-measured before deployment decisions.

## Sticky series rename (publication labels)

Source sticky summary reports rename series for public pages. Import applies a one-time field swap after loading sticky artifacts (always from source, never from a previous published export):

| Published label | Physical series after import |
| --- | --- |
| Cortex task-level router | Former mid-tier fixed operating point (Terra / GLM) |
| Mid-tier (Terra / GLM) | Former routed aggregate (`route_model` → fixed trajectory) |
| `route_model` / decision mix | Sticky `selected_arm` (unchanged) |

Do **not** re-interpret `arm=router` rows as "replay `route_model`" without checking this map. Re-running import from sticky sources is idempotent; re-importing from already-swapped published rows would double-swap and is unsupported.
