spec(SAMPLE-REASONING): W3 runs before W2, on measured recipe demand (#605) - #616
Conversation
…605) FOLLOWING_AGENTS_PROTOCOL The work breakdown numbered its waves without demand data. The recipe-surface sweep supplies it and inverts the order. Across the 157 official recipes, --reasoning-parser is passed 76 times over 20 distinct values. We resolve 15; the other 61 abort startup with "unknown reasoning parser". W3 -- the engine-backed adapters -- covers 43 of those 76 uses. W2 covers 18, and four of its names (ernie45, granite, cohere_command3/4, openai_gptoss) have ZERO recipe demand. qwen3 alone is 18 uses, more than every W2 name combined except kimi_k2 and poolside_v1. qwen3 is also what the published Qwen3.5 and Qwen3.6 recipes pass to models we already ship token-exact and gated, so the engine currently serves the model and rejects its own recipe's flag. That is the argument for resequencing, and it is why the first brick inside W3 is Qwen3ParserReasoningAdapter: __init__.py:87 registers mimo onto the same class, so two names land for one port, and glm45/glm47 share Glm47MoeParserReasoningAdapter the same way. Three names were missing from W3 and are added: nano_v3, plus kimi_k3 and ling3, which are POST-PIN and recorded so they are not rediscovered -- they land with the next pin advance, not before. W2 is resequenced, not cancelled; the zero-demand names stay in scope because upstream registers them and we mirror upstream. Spec only, no code and no row-state change. VERIFICATION, stated honestly: check-pr-size clean; staged preflight FAILED one gate, test_cpu_x86_llamacpp_floor test_a_contended_leg_is_discarded_and_never_summarised, "AssertionError: 4 != 2". That gate is load-sensitive and this box is at load average 79 from parallel builds. Reproduced on the SHARED CHECKOUT at clean main with no changes at all ("NO_QUIET_WINDOW after 30s, busy=125% load=48.12"), so it is the instrument, not this diff -- which is one markdown file and cannot reach a CPU floor harness. Not claimed as green; re-verify on a quiet box or on CI. Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [Claude Code]
|
Tracked by #503 and #603. Recording the attribution so a reviewer does not
Neither this PR nor #616 touches Not claimed as green, and not waived: the jobs are genuinely failing, the cause is |
|
Correction to my earlier comment: the specific cause is #584, not #503/#603. I attributed the red Windows lanes to #503 / #603 — a compile break (POSIX The observed failure is a runtime crash, not a compile error: What does not change: the failure is still not attributable to this PR.
Recording the correction rather than editing the original comment, so the wrong |
FOLLOWING_AGENTS_PROTOCOL main advanced while this branch was open: #616's spec amendment squash-landed, along with the four other recipe-sweep PRs. Two conflicts, resolved deliberately. reasoning-parsers.md: this branch carries #616's amendment (it was based on that branch) PLUS its own W3 status -- nano_v3 added to the wave list and the "Brick 1 DONE" record. Taking this side is correct because it is a strict superset; verified by confirming the amendment section and all names survive, not by assuming supersetness from the diff shape. roadmap_v1.md: the check-agent-record gate refused with "issue #605 listed twice" -- and it was RIGHT. #612 landed an intake row for #605 while this branch carried its own, so the merge would have defined one key twice. That is the fourth time this campaign that two branches wrote the same keyed record; it is the first time a gate caught it rather than a human, which is worth recording. Resolved per AGENTS.md: kept main's row in main's position and folded this branch's content into it as a scoped update, rather than appending a second row. Not resolved by taking either side wholesale: the surviving row now states both the original defect AND that brick 1 landed, because after this merge both are true and a keyed record must describe its key's current state. scripts/agent-preflight.sh --staged: exit 0, all gates green. Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [Claude Code]
Amends
.agents/specs/reasoning-parsers.mdwith an ordering amendment for #605.Spec only — no code, no row-state change.
The argument
The spec's waves were numbered without demand data. Across the 157 official
recipes (
vllm-project/recipes@86c7777a),--reasoning-parseris passed 76times over 20 distinct values. We resolve 15; the other 61 abort startup.
qwen318,glm4511,gemma46kimi_k24,poolside_v14ernie45,granite,cohere_command3/4,openai_gptoss— all in W2qwen3alone outweighs every W2 name combined exceptkimi_k2andpoolside_v1.It is also what the published Qwen3.5/3.6 recipes pass to models we already ship
token-exact and gated — the engine serves the model and rejects its own recipe's
flag.
What changes
W3 runs before W2. Within W3 the first brick is
Qwen3ParserReasoningAdapter:vllm/reasoning/__init__.py:87registersmimoonto the same class, so two namesland for one port;
glm45/glm47shareGlm47MoeParserReasoningAdapterthe sameway (
:55,59).Three names added to W3:
nano_v3, pluskimi_k3andling3marked post-pin —not in the registry at
5559679, recorded so they are not rediscovered.W2 is resequenced, not cancelled. The zero-demand names stay in scope because
upstream registers them and we mirror upstream.
Verification — one gate failed, and it is not this diff
check-pr-size: clean. Staged preflight FAILEDtest_cpu_x86_llamacpp_floor::test_a_contended_leg_is_discarded_and_never_summarisedwith
AssertionError: 4 != 2.That gate is load-sensitive and this box is at load average 79 from parallel
builds. Reproduced on the shared checkout at clean
mainwith no changes atall (
NO_QUIET_WINDOW after 30s, busy=125% load=48.12). This PR is one markdownfile and cannot reach a CPU floor harness. Recorded rather than claimed green —
re-verify on a quiet box or trust CI's clean runner.
🤖 Generated with Claude Code