CORRECTION 2026-08-13. This issue originally claimed two rows. The
Qwen3_5MoeForCausalLM half is a DUPLICATE of #490, whose PR #601 was
already open when this was filed — and #601 does not merely row it, it
registers both Qwen3_5MoeForCausalLM and Qwen3_5ForCausalLM, resolves the
backbone prefix, and carries CPU 404/404 plus SACRED GPU evidence, reviewed
twice. #601 owns that architecture; two branches adding the same keyed row
would merge cleanly and define it twice.
This issue is now scoped to BailingMoeV3ForCausalLM alone — one row.
The filing error was mine: I checked existing issues with search terms that
missed #490 and did not check open PRs at all, which AGENTS.md requires.
What
Two architectures used by official recipes have no row in
.agents/model-matrix.md. Both exist in vLLM main and are absent only from
our pin 5559679229bc961848b121ccdeaa8fa5d79bec98 — this is pin-lag, not an
inventory defect, but the matrix claims exhaustive coverage and today it is short
by these two.
| Architecture |
Recipe |
At pin |
vLLM main |
Qwen3_5MoeForCausalLM |
Qwen/Qwen3.8-2.4T-A95B |
absent |
present |
BailingMoeV3ForCausalLM |
inclusionAI/Ling-3.0-flash |
absent |
present |
Qwen3_5MoeForCausalLM is the higher-value one: it is a new registry entry for the
Qwen3.5-MoE family we already ship token-exact and gated as
Qwen3_5MoeForConditionalGeneration. Whether it is a pure alias or a genuinely
separate class is the first thing the row has to establish — read it in
vllm/model_executor/models/registry.py on main and diff the target module
against what we already implement. If it is an alias, the row closes for the cost
of an alias entry.
BailingMoeV3ForCausalLM succeeds BailingMoeV2_5ForCausalLM, which does have
a row (used by Ling-2.6-1T, Ling-2.6-flash, Ring-2.6-1T), so the delta is
V2.5 → V3 rather than a new family.
Scope
Add both rows to .agents/model-matrix.md with upstream anchors and INVENTORIED
state, and update the rollup counts in the same change (the checklist is
CI-enforced by scripts/check-model-checklist.py). Records-only — no engine
change. Whether either can advance past INVENTORIED before the pin advances is
noted on the row, not assumed.
Found while auditing recipes.vllm.ai coverage.
What
Two architectures used by official recipes have no row in
.agents/model-matrix.md. Both exist in vLLMmainand are absent only fromour pin
5559679229bc961848b121ccdeaa8fa5d79bec98— this is pin-lag, not aninventory defect, but the matrix claims exhaustive coverage and today it is short
by these two.
mainQwen3_5MoeForCausalLMQwen/Qwen3.8-2.4T-A95BBailingMoeV3ForCausalLMinclusionAI/Ling-3.0-flashQwen3_5MoeForCausalLMis the higher-value one: it is a new registry entry for theQwen3.5-MoE family we already ship token-exact and gated as
Qwen3_5MoeForConditionalGeneration. Whether it is a pure alias or a genuinelyseparate class is the first thing the row has to establish — read it in
vllm/model_executor/models/registry.pyonmainand diff the target moduleagainst what we already implement. If it is an alias, the row closes for the cost
of an alias entry.
BailingMoeV3ForCausalLMsucceedsBailingMoeV2_5ForCausalLM, which does havea row (used by Ling-2.6-1T, Ling-2.6-flash, Ring-2.6-1T), so the delta is
V2.5 → V3 rather than a new family.
Scope
Add both rows to
.agents/model-matrix.mdwith upstream anchors andINVENTORIEDstate, and update the rollup counts in the same change (the checklist is
CI-enforced by
scripts/check-model-checklist.py). Records-only — no enginechange. Whether either can advance past
INVENTORIEDbefore the pin advances isnoted on the row, not assumed.
Found while auditing
recipes.vllm.aicoverage.