Repository navigation
docs(swe-router): mask measured model names with indicative placeholders - #37
Merged
Merged
Conversation
…olders The vended skill shipped the real model names from the 23-model run. Replace them with class placeholders, using the grammar the repository already uses for the cost/quality chart and the evaluation docs: closed-source models by tier and generation (closed-frontier-gen5, closed-mid-gen6, closed-efficient-gen1), open-weight models by parameter count and dense/MoE architecture (open-moe-743b-a39b, open-dense-27b). Every score, cost, completion count and frontier flag is untouched -- only the names are substituted. Generation numbers run over all 23 measured models, so they are relative to models.json rather than to the chart's 12-model subset. The two swe-router evaluation docs cross-reference models.json directly, so they move to the same numbering; the chart keeps its own, as its caption already states. build_vended_models.py is deliberately left alone: it emits real names, so benchmarking your own repository produces a models.json naming models your developers can actually select. That is now the documented way to get real results, called out in both READMEs. model-aliases.json loses its real vendor spellings along with the names -- keeping them would have made the mask reversible -- so what remains demonstrates the matching mechanism and needs rebuilding against a real model list. test_route.py asserted the old slugs against the vended files and moves with them.
Masking the model names removed the only input that exercised the snapshot stamp rule in normalize(): the real us.anthropic.claude-haiku-4-5-20251001-v1:0 alias. NormalizeTest never asserted that rule directly, so the line was left with nothing reaching it, and the spaced dropdown-label shape lost its case too. Give NormalizeTest one case per rule, built from placeholder ids, and restore a date-stamped alias in model-aliases.json so the shipped data still demonstrates the stamp its matching_rules describes.
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.
Description
The vended
swe-routerskill shipped the real model names from the 23-model run. This replaces them with class placeholders, so the published data no longer names any model, and adds the disclosure to both READMEs.The grammar is the one this repository already uses for the cost/quality chart and the evaluation docs:
closed-frontier-gen5,closed-mid-gen6,closed-efficient-gen1open-moe-743b-a39b,open-dense-27b,open-moe-30b-a3b-codeEvery score, cost, completion count and frontier flag is untouched — only the names are substituted.
Generator left alone, on purpose
benchmarks/scripts/build_vended_models.pystill emits real names. Benchmarking your own repository therefore produces amodels.jsonnaming models your developers can actually select, and that is now the documented way to get real results — stated in the root README, invend/swe-router/README.md, in the newmodel_nameskey ofmodels.json, and in the header ofallowed-models.txt. The committed copy is the one hand-masked exception, and the README says so where it previously claimed the file is never edited by hand.Generation numbering
Numbers run over all 23 measured models, so they are relative to
models.jsonrather than to the chart's 12-model subset — the two differ for the closed-source tiers because the full set contains releases the chart omits.docs/swe-router-evaluation.mdanddocs/swe-router-evaluation-judged.mdcross-referencemodels.jsondirectly, so they move to the router's numbering.docs/diagrams/cost-quality-abstracted.htmlkeeps its own, as its caption already states, and is not touched here (re-exporting the PNG would be needed to change it).Changed files
vend/swe-router/models.json— 23modelvalues, both judge names, the rubric filename; new top-levelmodel_nameskey.vend/swe-router/model-aliases.json— real vendor spellings removed along with the names, since keeping them would have made the mask reversible. What remains demonstrates the matching mechanism and needs rebuilding against a real model list. Matching rules genericised tous.<vendor>./<vendor>/.vend/swe-router/allowed-models.txt— frontier entries, commented self-hosted suggestions, and a header noting nobody can select a model calledopen-dense-27b.vend/swe-router/README.md— the 23-row column table, all prose references, the disclosure blockquote, and a caveat under Read these caveats.vend/swe-router/route.py— two vendor names innormalize()comments.README.md— the disclosure line; the/benchmarkexample now takes<your-model-id>.docs/swe-router-evaluation{,-judged}.md— realigned to the router's numbering; the judge named by class.benchmarks/tests/test_route.py— asserted the old slugs against the vended files, so it moves with them.Not in scope
Real model names remain in the harness and serving plumbing (
self-hosted/vllm/models/,benchmarks/scripts/,bedrock_pricing.py, harness fixtures), where the ids are functional. Three published results files are in the same category as the data masked here and were left alone to keep this diff focused:docs/cost-per-task-methodology.md,benchmarks/README.md,benchmarks/swe-benchmark-data/README.md.Type of Change
Checklist
bash -nsyntax checkpython3 -m py_compileVerification
The router runs end to end on the masked data and recommends
closed-efficient-gen6. 614 tests: one failure,test_judge_common.test_lowercase_preferred_on_collision, which also fails on a stashed tree — a case-insensitive-filesystem issue unrelated to this change. ruff lint, ruff format and pre-commit pass.