v0.12.241 — free/seed-oss-36b was dead upstream and still in the cascade
Finishes the free-tier resync that #232 started. That commit refreshed the brand markers to blockrun's live catalog (71 chat-visible / 6 free) but touched no code, so the router kept routing to a model that had been dead upstream since 2026-08-03.
Fixed — free/seed-oss-36b is EOL and was still in the auto-pick cascade
blockrun's probe got HTTP 410 Gone from NVIDIA on both passes (2026-08-03) and the production health gate fired [ALERT][free-model-dead] kind=gone the same day. Upstream hid the model and re-pointed its own dependents — qwen3-coder-480b and devstral-2-123b, which both used seed-oss as their fallback — at gpt-oss-120b.
ClawRouter was still carrying it in three places that matter at request time:
| surface | before | after |
|---|---|---|
FREE_MODELS auto-pick cascade (proxy.ts) |
9 | 8 |
picker (src/top-models.json) |
7 free | 6 — exactly blockrun's visible free set |
router fallback chains (router/config.ts) |
3 sites | retargeted or dropped |
This is not cosmetic. A dead model that the gateway server-redirects silently defeats /exclude: a caller excludes it, the router hands the request to it anyway, and the gateway answers from the redirect target. Same failure mode as mistral-large-3-675b in v0.12.239 — same fix.
The free profile's SIMPLE chain drops the rung outright (gpt-oss-120b/20b already head it). The premium and agentic "NVIDIA free ultimate backstop" rungs are retargeted to free/gpt-oss-120b rather than dropped, since nothing else free sat below them.
Changed — generic coding aliases follow the gateway, pins stay routable
Six shorthands promised "a live free coder" and pointed at a dead one. They now resolve to free/gpt-oss-120b, matching blockrun's own retarget: qwen-coder, qwen-coder-free, coder-free, glm-free, devstral, devstral-2.
Unchanged and still routable, because they name the model itself rather than a capability: seed-oss, seed-oss-36b, nvidia/seed-oss-36b, and the catalog entry. The gateway redirects them, exactly as it does the other retired free ids.
Verified: the picker set now equals blockrun's authoritative free-visible list exactly, brand-numbers guard clean, 731 tests pass, typecheck/lint/prettier clean, and the built dist/ cascade confirmed free of the dead id.
Full changelog: https://github.com/BlockRunAI/ClawRouter/blob/main/CHANGELOG.md