docs(routing): describe the router that actually ships - #50
Merged
Conversation
…umbers to brand-numbers.json The routing pages still described the pre-portfolio router: 14 scoring dimensions (there are 15), a pipeline that ends at capability filtering (the V3 portfolio ranks candidates after it), and a tier table whose SIMPLE, MEDIUM and REASONING primaries had all moved. The COMPLEX fallback example listed models that are no longer in that chain, and the free tier was described as 10 models when NVIDIA's EOL sweep left 5. Everything factual here is read out of the shipped router-core config at 18bf4ab rather than retyped, and the counts that rot — dimensions, tiers, free models, savings — are now wrapped in brand-numbers markers so CI fails when they drift again instead of letting them sit wrong for months. The Python SDK page also gains the 1.12.0 surface: route() for a decision without a call, smart_chat_completion() for message lists, the blockrun/auto virtual ids, the routing metadata on the decision (task_type, method, candidates, candidate_scores), and the note that all four clients — Base and Solana, sync and async — route identically.
VickyXAI
added a commit
that referenced
this pull request
Aug 19, 2026
… on the page (#52) #50 added 12 `<!-- br:x -->N<!-- /br:x -->` markers across 5 docs files. Markers are inert only where something renders markdown as HTML and drops comments. This tree is the exception: blockrun's docs renderer ESCAPES the comment onto the page, so a reader sees the literal `<!-- br:models.free -->`. blockrun asserts this — brand-numbers.docs.test.ts's "carries no br: markers — this renderer escapes them into view". It went unnoticed because blockrun consumes this repo as a SUBMODULE PINNED to an older commit, so #50 could sit on main perfectly green while being unshippable. It only turned red when a pointer bump pulled it in (blockrun#397, the GLM-5.3 launch). Stripping the wrapper leaves the value, which is exactly what the guard wants: docs/ keeps plain numbers and the TEST is what catches staleness. Same trade already made for public/*.md, llms.txt, package.json descriptions and shields badges, none of which markers can reach either. Co-authored-by: 1bcMax <viewitter@gmail.com>
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.
The routing pages described the pre-portfolio router. Everything factual in this PR is read out of the shipped
router-coreconfig at18bf4abrather than retyped.What was wrong
negationComplexity(0.01) was missing from the table entirelymoonshot/kimi-k2.7google/gemini-2.5-flashgoogle/gemini-3.5-flashmoonshot/kimi-k2.7deepseek/deepseek-reasonerxai/grok-4-1-fast-reasoningnvidia/qwen3-next-80b-a3b-instructThe tier table also implied the primary is the answer. It isn't any more: the portfolio ranks every capability-eligible candidate against per-task evidence, so a tool-calling turn and a proof in the same tier resolve to different models. That's now stated.
Numbers are pinned now
Dimensions, tiers, free-model count and the savings figure are wrapped in
brand-numbersmarkers, sosync-brand-numbers.mjs --checkfails when they drift instead of letting them sit wrong for months.brand-numbers.jsonalready carried the correct values (dimensions: 15,free: 5) — the prose just wasn't reading from it. Keys in use went 4 → 7.Python SDK page
Also picks up the 1.12.0 surface:
route()for a decision without a call,smart_chat_completion()for message lists (where tools /response_format/ transcript size actually drive the decision), theblockrun/autovirtual ids, the routing metadata now on the decision (task_type,method,candidates,candidate_scores), and the fact that all four clients — Base and Solana, sync and async — route identically.Touched
franklin.md,sdks/typescript.mdandsdks/xrpl.mdonly where they repeated the "14-dimension" claim.node scripts/sync-brand-numbers.mjs --checkpasses.