From b52c7e8287f613cb1b524a6801a877182441f94c Mon Sep 17 00:00:00 2001 From: 1bcMax Date: Sun, 16 Aug 2026 00:13:30 -0500 Subject: [PATCH 1/2] =?UTF-8?q?release:=203.13.2=20=E2=80=94=20pin=20route?= =?UTF-8?q?r-core=20forward=20to=2018bf4ab,=20and=20repair=20the=20version?= =?UTF-8?q?=20drift=203.13.1=20left=20on=20main?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- CHANGELOG.md | 18 ++++++++++++++++++ VERSION | 2 +- package.json | 4 ++-- pnpm-lock.yaml | 10 +++++----- src/version.ts | 2 +- test/unit/smart-chat-fallbacks.test.ts | 9 +++++++-- 6 files changed, 34 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 31074d9..fdb54fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,24 @@ All notable changes to @blockrun/llm will be documented in this file. +## [3.13.2] - 2026-08-16 + +### Changed + +- **`@blockrun/router-core` pinned forward to `18bf4ab`** (was `d430804`). Upstream retired `free/deepseek-v4-flash` from the eco SIMPLE fallback chain after NVIDIA EOL'd it (HTTP 410, 2026-08-12), alongside `seed-oss-36b` which went the same way on 2026-08-03. `free/gpt-oss-120b` and `-20b` already headed that chain, so the rungs are dropped rather than retargeted and eco routing is unchanged for every request that was already being served. Before this, an eco SIMPLE request that fell past the two gpt-oss entries walked into a dead model and burned a hop. + + This 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 the same configuration. Verified: 24 request shapes (chat, reasoning, MCQ, math, code edit, tool/code agent, terminal, retail, airline, web research, long context, vision, structured output, and the eco/premium profiles) produce identical model, tier, task type and full candidate chain across both SDKs against the live catalog. + +### Fixed + +- **`VERSION` was left at 3.13.0 when 3.13.1 shipped**, and 3.13.1 was never recorded in this changelog — so `main` has been failing the version-consistency guard since 2026-08-12. The release workflow publishes on a GitHub Release and does not run the test suite, so the red was only visible on the push-triggered CI run, after the fact. Both files are corrected here; the 3.13.1 entry below is written retroactively. + +## [3.13.1] - 2026-08-12 + +### Changed + +- Docs-only patch: the README's free-tier section was refreshed after NVIDIA EOL'd `deepseek-v4-flash` (HTTP 410, 2026-08-12) and the brand markers were re-synced to the live catalog (70 chat / 93 total / 5 free). No runtime change — recorded here after the fact, see the note in 3.13.2. + ## [3.13.0] - 2026-08-11 ### Changed diff --git a/VERSION b/VERSION index 4eba2a6..3e388a4 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.13.0 +3.13.2 diff --git a/package.json b/package.json index aaeb998..2817fe2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@blockrun/llm", - "version": "3.13.1", + "version": "3.13.2", "type": "module", "description": "BlockRun SDK - Pay-per-request AI (LLM, Image, Video, Music, Voice) via x402 on Base and Solana", "main": "dist/index.cjs", @@ -56,7 +56,7 @@ }, "devDependencies": { "@blockrun/core": "^0.1.0", - "@blockrun/router-core": "https://codeload.github.com/BlockRunAI/router-core/tar.gz/d4308049348e11e17ed08a254676a34949be80f9", + "@blockrun/router-core": "https://codeload.github.com/BlockRunAI/router-core/tar.gz/18bf4abc7e34599e51595b90703c385f53d4f4a6", "@eslint/js": "^9.39.4", "@types/node": "^20.19.41", "eslint": "^9.39.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e994fd3..cd18b90 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,8 +34,8 @@ importers: specifier: ^0.1.0 version: 0.1.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) '@blockrun/router-core': - specifier: https://codeload.github.com/BlockRunAI/router-core/tar.gz/d4308049348e11e17ed08a254676a34949be80f9 - version: https://codeload.github.com/BlockRunAI/router-core/tar.gz/d4308049348e11e17ed08a254676a34949be80f9 + specifier: https://codeload.github.com/BlockRunAI/router-core/tar.gz/18bf4abc7e34599e51595b90703c385f53d4f4a6 + version: https://codeload.github.com/BlockRunAI/router-core/tar.gz/18bf4abc7e34599e51595b90703c385f53d4f4a6 '@eslint/js': specifier: ^9.39.4 version: 9.39.4 @@ -73,8 +73,8 @@ packages: '@blockrun/core@0.1.1': resolution: {integrity: sha512-mXeF/XCFc9z+2Mxq4zGrhrFkEjpYprnuHOp20naE6YhouBu2SwHuaWaYec4gb7yJ+uU8S7aqUf6UIXkD5xDTvA==} - '@blockrun/router-core@https://codeload.github.com/BlockRunAI/router-core/tar.gz/d4308049348e11e17ed08a254676a34949be80f9': - resolution: {tarball: https://codeload.github.com/BlockRunAI/router-core/tar.gz/d4308049348e11e17ed08a254676a34949be80f9} + '@blockrun/router-core@https://codeload.github.com/BlockRunAI/router-core/tar.gz/18bf4abc7e34599e51595b90703c385f53d4f4a6': + resolution: {tarball: https://codeload.github.com/BlockRunAI/router-core/tar.gz/18bf4abc7e34599e51595b90703c385f53d4f4a6} version: 0.1.0 engines: {node: '>=20.19.0'} @@ -1975,7 +1975,7 @@ snapshots: - utf-8-validate - zod - '@blockrun/router-core@https://codeload.github.com/BlockRunAI/router-core/tar.gz/d4308049348e11e17ed08a254676a34949be80f9': {} + '@blockrun/router-core@https://codeload.github.com/BlockRunAI/router-core/tar.gz/18bf4abc7e34599e51595b90703c385f53d4f4a6': {} '@esbuild/aix-ppc64@0.21.5': optional: true diff --git a/src/version.ts b/src/version.ts index b9578d6..b49820b 100644 --- a/src/version.ts +++ b/src/version.ts @@ -10,7 +10,7 @@ * "SDK_VERSION matches package.json" case in test/unit/version-consistency.test.ts * fails the build if a release bumps the package and forgets this file. */ -export const SDK_VERSION = "3.13.1"; +export const SDK_VERSION = "3.13.2"; /** Client identification sent on every gateway request. */ export const USER_AGENT = `blockrun-ts/${SDK_VERSION}`; diff --git a/test/unit/smart-chat-fallbacks.test.ts b/test/unit/smart-chat-fallbacks.test.ts index d730679..cb38f7e 100644 --- a/test/unit/smart-chat-fallbacks.test.ts +++ b/test/unit/smart-chat-fallbacks.test.ts @@ -51,14 +51,19 @@ describe("Router Core SDK integration", () => { // free/* namespace; the gateway serves those models as nvidia/*. The // adapter must map — dropping them silently converts eco to a paid // profile (the v3.11.0 regression this guards against). + // + // The vehicle used to be free/deepseek-v4-flash; router-core dropped it + // from this chain in 18bf4ab after NVIDIA EOL'd it (410, 2026-08-12), so + // the mapping is now exercised through the gpt-oss pair that heads the + // chain. The assertion is about the namespace mapping, not the model. const pricing = routerPricing(); - pricing.set("nvidia/deepseek-v4-flash", { inputPrice: 0, outputPrice: 0 }); + pricing.set("nvidia/gpt-oss-120b", { inputPrice: 0, outputPrice: 0 }); const decision = routeWithCatalog("Name the capital of France. One word.", undefined, 50, pricing, { routingProfile: "eco", }); - expect(decision.model).toBe("nvidia/deepseek-v4-flash"); + expect(decision.model).toBe("nvidia/gpt-oss-120b"); expect(decision.costEstimate).toBe(0); // free models settle at $0 — no payment floor expect(decision.savings).toBe(1); }); From 5bfbafc3d68fe0820b726a99aa440787a8dc08ae Mon Sep 17 00:00:00 2001 From: 1bcMax Date: Sun, 16 Aug 2026 00:15:16 -0500 Subject: [PATCH 2/2] chore(brand): commit the CLAUDE.md marker the 70-model sync left uncommitted 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. --- CLAUDE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index d7bf459..7af67b9 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,6 +1,6 @@ # @blockrun/llm (TypeScript SDK) -TypeScript SDK for 71 LLMs with streaming, smart routing, and automatic USDC micropayments via x402. No API keys — wallet signature is authentication. +TypeScript SDK for 70 LLMs with streaming, smart routing, and automatic USDC micropayments via x402. No API keys — wallet signature is authentication. ## Commands