release: 3.13.2 — sync router-core to 18bf4ab (Python SDK parity) + repair 3.13.1 version drift - #30
Merged
Merged
Conversation
added 2 commits
August 16, 2026 00:13
…version drift 3.13.1 left on main The eco SIMPLE fallback chain still walked into free/deepseek-v4-flash, which NVIDIA EOL'd on 2026-08-12 (HTTP 410). Upstream dropped it in 18bf4ab; this moves the pin from d430804 so the chain stops burning a hop on a dead model. free/gpt-oss-120b and -20b already headed the chain, so no request that was being served changes model. That is also the commit the Python SDK's Router Core port tracks (blockrun-llm 1.11.0), so both SDKs and the gateway now route from one configuration. Checked against the live catalog: 24 request shapes produce identical model, tier, task type and full candidate chain on both sides. Also fixes what 3.13.1 left behind: VERSION was never moved off 3.13.0 and the release was never recorded in CHANGELOG.md, so main has failed the version-consistency guard since 2026-08-12. publish.yml triggers on a GitHub Release and does not run the suite, so the red only showed on the push CI run after the release was already out. The 3.13.1 changelog entry is written retroactively here. The free/* -> nvidia/* mapping test used deepseek-v4-flash as its vehicle and went red with the new pin. Its subject is the namespace mapping (the v3.11.0 regression where eco silently became a paid profile), not that model, so it now exercises the gpt-oss pair that heads the chain.
…mmitted sync-brand-numbers.mjs --check fails on CLAUDE.md:3 (71 vs the 70 in brand-numbers.json), which is why the brand-numbers leg has been red since the 2026-08-12 sync. The corrected line was sitting in the working tree, never committed; running the script now reports 'already up to date' against it.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Syncs the TypeScript SDK onto the same
@blockrun/router-corecommit the Python SDK's port tracks, and repairs the version drift 3.13.1 left behind.Pin:
d430804→18bf4abUpstream's only change between the two commits:
free/deepseek-v4-flashis dropped from the eco SIMPLE fallback chain. NVIDIA EOL'd it on 2026-08-12 (HTTP 410), as it didseed-oss-36bon 2026-08-03.free/gpt-oss-120band-20balready head that chain, so the rungs are dropped rather than retargeted — no request that was being served changes model. What changes is that an eco SIMPLE request falling past the gpt-oss pair no longer burns a recovery hop on a dead model.Cross-SDK parity
18bf4abis the commitblockrun-llm1.11.0 ported to Python, so both SDKs and the gateway now route from one configuration. Verified against a snapshot of the live catalog (92 available models), 24 request shapes — chat, reasoning, MCQ, math, code edit, debug, extraction (zh), creative, long context, code agent, tool agent, retail high-risk, airline standard + global-optimization, terminal simple + safety-sensitive, deep web research, parallel tool use, vision, structured output, large output, eco, premium ×2:24/24 identical — model, tier, task type and the full candidate chain.
One methodology note for anyone repeating this: the portfolio decays performance-profile freshness against wall-clock time, so two near-tied fallbacks can swap position between runs minutes apart (seen once on the MCQ case, positions 2 and 3). The selected model is unaffected. Compare runs generated back-to-back, or the diff is in your method, not the router.
Also fixes: main has been red since 2026-08-12
3.13.1 bumped
package.jsonandsrc/version.tsbut leftVERSIONon 3.13.0 and never recorded the release inCHANGELOG.md. The version-consistency guard catches both, butpublish.ymltriggers on a GitHub Release and doesn't run the suite, so the failure only appeared on the push-triggered CI run — after the release was already on npm. Both files are corrected here and the 3.13.1 entry is written retroactively.Worth considering separately: the Python SDK's publish workflow runs black/ruff/pytest and a tag-vs-VERSION check before it publishes, which is what would have blocked this. This repo's does not.
Test change
test/unit/smart-chat-fallbacks.test.tsusedfree/deepseek-v4-flashas the vehicle for thefree/*→nvidia/*mapping assertion and went red with the new pin. The test's subject is the namespace mapping — the v3.11.0 regression where eco silently became a paid profile — not that particular model, so it now exercises thegpt-osspair that heads the chain. Same assertions: mapped id,costEstimate === 0,savings === 1.Verification
vitest run: 265 passed, 12 skipped, 0 failed (was 1 failed on this branch before the test retarget, and 2 failed onmain).eslint src/clean,tsc --noEmitclean,tsupbuild succeeds.Second commit: the brand-numbers red
The first CI run on this branch failed on
brand-numbers --check, not on anything in the release:CLAUDE.md:3still carried71whilebrand-numbers.jsonsays70. The corrected line was sitting uncommitted in a working tree — runningnode scripts/sync-brand-numbers.mjsreports "already up to date" against it, so it was generated by the repo's own tool and simply never committed after the 2026-08-12 sync (#28). Committed here, since this PR's job is to getmaingreen.