Skip to content

spec(SAMPLE-REASONING): W3 runs before W2, on measured recipe demand (#605) - #616

Merged
localai-bot merged 1 commit into
mainfrom
row/reasoning-recipe-order
Aug 13, 2026
Merged

spec(SAMPLE-REASONING): W3 runs before W2, on measured recipe demand (#605)#616
localai-bot merged 1 commit into
mainfrom
row/reasoning-recipe-order

Conversation

@localai-bot

Copy link
Copy Markdown
Collaborator

Amends .agents/specs/reasoning-parsers.md with 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-parser is passed 76
times over 20 distinct values
. We resolve 15; the other 61 abort startup.

Wave Recipe uses covered Notable
W3 (engine-backed adapters) 43 / 76 qwen3 18, glm45 11, gemma4 6
W2 (remaining text families) 18 / 76 kimi_k2 4, poolside_v1 4
0 ernie45, granite, cohere_command3/4, openai_gptoss — all in W2

qwen3 alone outweighs every W2 name combined except kimi_k2 and poolside_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:87 registers mimo onto the same class, so two names
land for one port; glm45/glm47 share Glm47MoeParserReasoningAdapter the same
way (:55,59).

Three names added to W3: nano_v3, plus kimi_k3 and ling3 marked 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 FAILED
test_cpu_x86_llamacpp_floor::test_a_contended_leg_is_discarded_and_never_summarised
with 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). This PR is one markdown
file 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

…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]
@localai-bot

Copy link
Copy Markdown
Collaborator Author

windows-msvc-cpu / windows-msvc-vulkan red here are pre-existing, not this diff.

Tracked by #503 and #603. Recording the attribution so a reviewer does not
re-derive it:

Neither this PR nor #616 touches src/, include/, tests/*.cpp, or CMake.

Not claimed as green, and not waived: the jobs are genuinely failing, the cause is
recorded elsewhere, and closing it belongs to #503/#603 rather than to a records
change.

@localai-bot

Copy link
Copy Markdown
Collaborator Author

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
setenv, absent in MSVC). I inferred that from issue titles because the run logs
were not retrievable while the run was in progress. That inference was wrong about
the mechanism.

The observed failure is a runtime crash, not a compile error:
test_openai_api_server.exe exits -1073740791 = 0xC0000409
(STATUS_STACK_BUFFER_OVERRUN)
— which is
#584, "test_openai_api_server
crashes on Windows with STATUS_STACK_BUFFER_OVERRUN (0xC0000409), unmasked by the
#512 fix". The failing CI step is "Build and execute the native Windows CPU
focused gate", which does both, so a crash at the execute half presents the same
way as a build failure from the outside.

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
attribution does not silently disappear from the thread. My apologies to whoever
would have chased setenv.

@localai-bot
localai-bot merged commit 86a875c into main Aug 13, 2026
21 of 23 checks passed
localai-bot pushed a commit that referenced this pull request Aug 13, 2026
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]
@localai-bot
localai-bot deleted the row/reasoning-recipe-order branch August 13, 2026 14:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants