Row: -
Owed by the model matrix. .agents/specs/upstream-pin-advance-e126687.md lists it
under ## Owed.
Found by wave PINADVANCE (#2817) while measuring what the advance to
e126687a9a falsifies, and corrected on 2026-09-03 after a fresh review of
#2827 falsified this issue's own first characterisation. Nothing was executed:
this is scripts/check-symbol-anchors.py --upstream-root <pinned vllm> run before
and after the ```parity-pin block edit, plus git log --diff-filter=D and
git show over the two revisions.
CORRECTION: this issue originally said "none of the removed architectures is registered by vllm.cpp"
That was wrong, and it mattered. It filed two live mirror obligations on
models this project SHIPS as matrix cleanup. The original sentence is quoted here
rather than deleted, because it is the reason this issue was scoped too small.
The measurement
check-symbol-anchors.py --upstream-root is not a CI gate and is red on this
tree at both pins. The RESULT is the delta:
before (pin 5559679229): upstream checked 389 (fresh 372, stale 6, file absent 11) -> 15 stale
after (pin e126687a9a): upstream checked 389 (fresh 359, stale 4, file absent 26) -> 28 stale
Fifteen citations went stale and two were REPAIRED by the advance
(.agents/model-matrix.md::GlmMoeDsaForCausalLM and
.agents/specs/dflash2-spec-as-decode.md::_make_xqa_draft_block_mask, both of
which now exist upstream). One apparent move,
.agents/specs/fp8-kv-cache.md:128 to :133, is the same citation relocated by
PINADVANCE's own edit and is not a change of state.
The thirteen model-matrix rows are THREE different things
Attributed per file with git log --diff-filter=D over 5559679229..e126687a9a:
| Deleting commit |
What it actually is |
Files |
7ca336929c vllm#53608, "Remove ten deprecated model architectures" |
genuine deprecation |
8: arctic, fairseq2_llama, gritlm, hyperclovax_vision, mpt, chameleon, cheers, fireredlid |
48d7132962, "Migrate FlexOlmo, Olmo3 and Hunyuan V1/VL to the Transformers modeling ..." |
MIGRATION to the Transformers fallback, not removal |
4: flex_olmo, hunyuan_v1, hunyuan_vision, olmo3 |
aeeb36b1f1 vllm#50000, "[New model] Kimi K3" |
RELOCATION, still registered |
1: kimi_linear |
Only 8 of 13 are deprecation. 7ca336929c was classified IGNORE by two sync
waves (.agents/sync/2026-09-01-cdefd9d.md:1151,
.agents/sync/2026-09-01-adebc41.md:579) on the ground that we register none of
them. That is correct about the PORT for those 8. It does not cover the matrix
rows that cite the deleted files, and it says nothing at all about the other
five.
TWO of them reach models this project SHIPS
KimiLinearForCausalLM was relocated, not removed.
$ git show 5559679229:vllm/model_executor/models/registry.py | grep -n KimiLinear
140: "KimiLinearForCausalLM": ("kimi_linear", "KimiLinearForCausalLM"),
$ git show e126687a9a:vllm/model_executor/models/registry.py | grep -n KimiLinear
144: "KimiLinearForCausalLM": (
146: "KimiLinearForCausalLM", # module is "vllm.models.kimi_k3"
It is still registered upstream. We ship it:
src/vllm/model_executor/models/kimi_linear_registry.cpp:166 carries
REGISTER_VLLM_MODEL(kimi_linear, "KimiLinearForCausalLM", ...),
docs/FEATURES.md:159 publishes it with a speed row, and
.agents/model-matrix.md:121 is a 🚧 row, not INVENTORIED. The mirror source
of a shipped model moved.
Olmo3ForCausalLM now routes to the generic Transformers fallback.
$ git show 5559679229:vllm/model_executor/models/registry.py | grep -n Olmo3
181: "Olmo3ForCausalLM": ("olmo3", "Olmo3ForCausalLM"),
$ git show e126687a9a:vllm/model_executor/models/registry.py | grep -n Olmo3
691: "Olmo3ForCausalLM": ("transformers", "TransformersForCausalLM"),
We ship it as an Olmo2 factory alias
(src/vllm/model_executor/models/olmo2_registry.cpp:127,
.agents/model-matrix.md:136 is ✅, docs/FEATURES.md:151). That is a live
mirror divergence, not deprecated debris. The anchor checker cannot see it —
our row cites olmo2.py, which still exists — so it is not among the fifteen and
would have gone unnoticed by the instrument that found the rest. It is here only
because a reviewer went looking.
The other two stale citations are not model rows
.agents/specs/moe-semantics.md:29 cites
vllm/model_executor/layers/fused_moe/cpu_fused_moe.py::select_experts. The
file exists at the pin (git cat-file -e RC=0) and is gone at the target
(RC=128); select_experts now lives in fused_moe/experts/cpu_moe.py and
fused_moe/router/fused_moe_router.py. A move.
.agents/specs/gdn-state-kv-budget.md:101 cites
vllm/v1/core/kv_cache_utils.py::get_num_blocks. The free function is gone
from that file: 5559679229:...:993 defines it, the target's copy of the same
file has no match (RC=1) while the file itself is present (control RC=0).
Three def get_num_blocks exist elsewhere at the target
(kv_cache_coordinator.py, single_type_kv_cache_manager.py,
kv_offload/tiering/example/manager.py) and they are methods, not the free
function. Whoever re-anchors it decides which, if any, is the successor.
Why this is more than a stale line
.agents/NOW.md states the invariant "every arch in the pinned registry has a
row". The advance moves the registry in BOTH directions and neither has been
reconciled: rows now name architectures the pinned registry does not have, and
the target's own additions (the vllm/models/<name>/ tree grew from 5 model
directories to 10) have no rows. A row whose upstream anchor points at a deleted
file cannot be ported from, and a reader cannot tell that from the row.
What is owed
- The two shipped models first, because they are mirror work, not cleanup.
Re-anchor KimiLinearForCausalLM onto vllm.models.kimi_k3 and read what
moved with it. Decide what Olmo3ForCausalLM routing to
TransformersForCausalLM means for our Olmo2-alias implementation — that is a
behaviour question, and it needs its own row.
- Retire or re-anchor the eleven remaining
model-matrix.md rows, saying which
architecture vLLM dropped or migrated and when, rather than deleting a row
silently. The 4 Transformers-fallback migrations are not deprecations and
should not be recorded as such.
- Read
moe-semantics.md:29 and gdn-state-kv-budget.md:101 individually and
re-anchor them by symbol at the new pin.
- Re-derive the registry coverage at
e126687a9a and add rows for the
architectures the advance introduces.
PINADVANCE did not do any of this: it is a per-row records job across a keyed
matrix with many writers, and a sync cycle may not carry it
(.agents/upstream-sync.md §Rules).
FOLLOWING_AGENTS_PROTOCOL
Row:
-Owed by the model matrix.
.agents/specs/upstream-pin-advance-e126687.mdlists itunder
## Owed.Found by wave PINADVANCE (#2817) while measuring what the advance to
e126687a9afalsifies, and corrected on 2026-09-03 after a fresh review of#2827 falsified this issue's own first characterisation. Nothing was executed:
this is
scripts/check-symbol-anchors.py --upstream-root <pinned vllm>run beforeand after the
```parity-pinblock edit, plusgit log --diff-filter=Dandgit showover the two revisions.CORRECTION: this issue originally said "none of the removed architectures is registered by vllm.cpp"
That was wrong, and it mattered. It filed two live mirror obligations on
models this project SHIPS as matrix cleanup. The original sentence is quoted here
rather than deleted, because it is the reason this issue was scoped too small.
The measurement
check-symbol-anchors.py --upstream-rootis not a CI gate and is red on thistree at both pins. The RESULT is the delta:
Fifteen citations went stale and two were REPAIRED by the advance
(
.agents/model-matrix.md::GlmMoeDsaForCausalLMand.agents/specs/dflash2-spec-as-decode.md::_make_xqa_draft_block_mask, both ofwhich now exist upstream). One apparent move,
.agents/specs/fp8-kv-cache.md:128to:133, is the same citation relocated byPINADVANCE's own edit and is not a change of state.
The thirteen model-matrix rows are THREE different things
Attributed per file with
git log --diff-filter=Dover5559679229..e126687a9a:7ca336929cvllm#53608, "Remove ten deprecated model architectures"arctic,fairseq2_llama,gritlm,hyperclovax_vision,mpt,chameleon,cheers,fireredlid48d7132962, "Migrate FlexOlmo, Olmo3 and Hunyuan V1/VL to the Transformers modeling ..."flex_olmo,hunyuan_v1,hunyuan_vision,olmo3aeeb36b1f1vllm#50000, "[New model] Kimi K3"kimi_linearOnly 8 of 13 are deprecation.
7ca336929cwas classified IGNORE by two syncwaves (
.agents/sync/2026-09-01-cdefd9d.md:1151,.agents/sync/2026-09-01-adebc41.md:579) on the ground that we register none ofthem. That is correct about the PORT for those 8. It does not cover the matrix
rows that cite the deleted files, and it says nothing at all about the other
five.
TWO of them reach models this project SHIPS
KimiLinearForCausalLMwas relocated, not removed.It is still registered upstream. We ship it:
src/vllm/model_executor/models/kimi_linear_registry.cpp:166carriesREGISTER_VLLM_MODEL(kimi_linear, "KimiLinearForCausalLM", ...),docs/FEATURES.md:159publishes it with a speed row, and.agents/model-matrix.md:121is a🚧row, notINVENTORIED. The mirror sourceof a shipped model moved.
Olmo3ForCausalLMnow routes to the generic Transformers fallback.We ship it as an Olmo2 factory alias
(
src/vllm/model_executor/models/olmo2_registry.cpp:127,.agents/model-matrix.md:136is✅,docs/FEATURES.md:151). That is a livemirror divergence, not deprecated debris. The anchor checker cannot see it —
our row cites
olmo2.py, which still exists — so it is not among the fifteen andwould have gone unnoticed by the instrument that found the rest. It is here only
because a reviewer went looking.
The other two stale citations are not model rows
.agents/specs/moe-semantics.md:29citesvllm/model_executor/layers/fused_moe/cpu_fused_moe.py::select_experts. Thefile exists at the pin (
git cat-file -eRC=0) and is gone at the target(RC=128);
select_expertsnow lives infused_moe/experts/cpu_moe.pyandfused_moe/router/fused_moe_router.py. A move..agents/specs/gdn-state-kv-budget.md:101citesvllm/v1/core/kv_cache_utils.py::get_num_blocks. The free function is gonefrom that file:
5559679229:...:993defines it, the target's copy of the samefile has no match (RC=1) while the file itself is present (control RC=0).
Three
def get_num_blocksexist elsewhere at the target(
kv_cache_coordinator.py,single_type_kv_cache_manager.py,kv_offload/tiering/example/manager.py) and they are methods, not the freefunction. Whoever re-anchors it decides which, if any, is the successor.
Why this is more than a stale line
.agents/NOW.mdstates the invariant "every arch in the pinned registry has arow". The advance moves the registry in BOTH directions and neither has been
reconciled: rows now name architectures the pinned registry does not have, and
the target's own additions (the
vllm/models/<name>/tree grew from 5 modeldirectories to 10) have no rows. A row whose upstream anchor points at a deleted
file cannot be ported from, and a reader cannot tell that from the row.
What is owed
Re-anchor
KimiLinearForCausalLMontovllm.models.kimi_k3and read whatmoved with it. Decide what
Olmo3ForCausalLMrouting toTransformersForCausalLMmeans for our Olmo2-alias implementation — that is abehaviour question, and it needs its own row.
model-matrix.mdrows, saying whicharchitecture vLLM dropped or migrated and when, rather than deleting a row
silently. The 4 Transformers-fallback migrations are not deprecations and
should not be recorded as such.
moe-semantics.md:29andgdn-state-kv-budget.md:101individually andre-anchor them by symbol at the new pin.
e126687a9aand add rows for thearchitectures the advance introduces.
PINADVANCE did not do any of this: it is a per-row records job across a keyed
matrix with many writers, and a sync cycle may not carry it
(
.agents/upstream-sync.md§Rules).FOLLOWING_AGENTS_PROTOCOL