L4: the kernel gate is a tracked exception, and the oracle denominator is now gated (#607, #414) - #1349
Merged
Conversation
…fused preamble IS the MRoPE arm (#607, #414, #1340) The L4 line offered two arms — mirror `qwen3_next.py`'s `text_only` conjunct, or record a tracked exception — and one line is not a spec for a change that moves benchmark denominators. §1.6 now carries the scope, the anchors read at the pin, the design, the risks, the tests, the gates, the evidence and the stop conditions. The decision is the exception arm, on the ground AGENTS.md names: mirroring is not representable at our seams. Upstream conjoins `text_only` because its fused Triton kernel indexes `cos_sin_cache` by a 1-D `positions` vector and cannot express MRoPE (`qwen3_next.py:322` says so, `# TODO: support MRoPE`), and it falls back to an eager arm whose `self.rotary_emb` IS the MRoPE module. Our two arms are not those two arms. `vt::AttnQkNormRopeGate` takes no positions at all — it reads a precomputed per-token `cos_sin` cache that `qwen3_5.cpp::BuildMropeCosSinHost` fills with the interleaved 3-section MRoPE selection, so our FUSED arm is the MRoPE arm, and our eager arm calls `vt::RopeNeox` on 1-D positions and has no MRoPE spelling. Conjoining `text_only` would therefore select 1-D RoPE on exactly the configuration the conjunct exists to protect, silently, and would break the landed M3-b image and M3d video STRICT 32/32 gates in the name of mirroring a TODO. That asymmetry also exposed a live defect, filed as #1340 and listed under `## Owed`: `VT_FUSE_ATTN_PREAMBLE=0` on the MRoPE path substitutes 1-D RoPE instead of refusing. Its gate is a VL token-exactness run on a GPU, which this wave did not have. What the exception does not excuse is the denominator. #414's defect is a benchmark configuration, not a kernel, and the correct denominator is vLLM with `--language-model-only` on two grounds that agree: it is a production configuration (43 of 157 official recipes pass it), and AGENTS.md §Gates forbids a handicapped one. The binding 2026-08-13 series already adopted it, so no currently-published number is withdrawn here. The residual is that the canonical driver never did, which the implementation commit repairs. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [claude-code]
…tion leaves exposed (#607, #414, #1340, #1345) Wave L4 decided not to mirror upstream's `text_only` conjunct, and §1.6 argues why: our fused preamble IS the MRoPE arm, so the conjunct would select 1-D RoPE on exactly the configuration it exists to protect. That decision is about the KERNEL. It says nothing about the BENCHMARK, and the benchmark is where #414 actually lives. `vllm/config/multimodal.py:78` defaults `language_model_only` to False, so a Qwen3.6 checkpoint hands the oracle `text_only == False` and four ops per full-attention layer where its own production configuration issues one, against our single fused launch. The 2026-08-13 clock-controlled series repaired the RUN by passing `--language-model-only`. It did not repair the HARNESS: `scripts/dgx-online-serving.sh` still launched the oracle without the flag while `tools/bench/run_serve_low.py` passed it, so the two disagreed about the oracle's own configuration and the next canonical campaign would have produced another flattered set. A grep for the flag read as coverage while the canonical driver lacked it, which is why this ships as a checker rather than a comment. The correct denominator is vLLM WITH the flag, on two grounds that agree. It is a production configuration, passed by 43 of the 157 official recipes. And AGENTS.md requires vLLM's production configuration rather than a handicapped one, the same rule that forbids `--enforce-eager`. The 27/27n/35 arm now passes it. The q3mxfp4 arm is marked exempt with its reason: a dense Qwen3-8B checkpoint has no `multimodal_config`, so `qwen3_next.py:325` already resolves `text_only == True` and the flag decides nothing there. `scripts/check-oracle-denominator-flags.py` keeps them agreeing. It is scoped to CLI `serve` launches, the surface the published ratios come from, and its docstring says what it deliberately does not cover. It reads harness sources and holds its expectation in its own code, so it is not a surface every pull request must edit. `--json` exists so the test can pin the discovered SET rather than the violation count, and finding nothing exits 2 rather than 0, because a broken detector and a clean tree are otherwise indistinguishable. One published number turned out to carry the defect unmarked, and marking it is the point of looking. `docs/BENCHMARKS.md`'s Qwen3.5-4B `1.0283x` ran its vLLM arm through `vllm_closed_loop_metrics.py`, which never passes the field; upstream registers `Qwen/Qwen3.5-4B` as `Qwen3_5ForConditionalGeneration` (`tests/models/registry.py:1322-1324`); and `git log -S` dates the conjunct to `16282a9c4`, 2026-06-10, two months before that run. So the oracle ran unfused. The direction is known and it flatters us. The magnitude is NOT measured and is not estimated here. The row keeps its values and gains the attribution, with the chain in the benchmark record. This corrects the spec commit's own claim that nothing currently binding was affected, which only looked at the two gate models. Two bugs found in flow, neither fixed here, both owned by this row and listed under `## Owed`: * #1340 is the same seam asymmetry read the other way: `VT_FUSE_ATTN_PREAMBLE=0` on the MRoPE path substitutes 1-D RoPE instead of refusing. Its gate is a VL token-exactness run on a GPU. * #1345 is #414 on the in-process surface: three bench harnesses construct the oracle with `language_model_only` at its default and expose no way to set it. They take `--model` as a path, so no static rule can decide them, and changing what they hand the oracle moves future denominators. No product code path changed, so no token gate and no measurement is claimed. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [claude-code]
…p the detector being a list of variable names (#607, #414) Three findings from the fresh review of this branch. The design decision is unchanged; these repair how it was recorded and one hole in the checker. **The evidence axis was deleted rather than marked.** `docs/BENCHMARKS.md:59` read `VRAM +118.7 MiB` before this branch and read nothing about VRAM after it: `grep -c 118.7 docs/BENCHMARKS.md` was 1 on `origin/main` and 0 here. That contradicts this branch's own stated principle, and AGENTS.md's "never delete evidence to reduce context". The figure is back, marked alongside the other axes, and the denominator column now says what was wrong with it. The same cell in `docs/STATUS.md` had dropped `Atomic pretoken exact`, the direction word `slower`, and `GDN local stack retained`; all three were checked against `git show origin/main:docs/STATUS.md`, found genuinely gone from the tree rather than moved, and restored. The mechanism is verified at the pin rather than asserted. `vllm/config/multimodal.py:326` returns a 0 limit for every modality under `language_model_only`, and `vllm/model_executor/models/interfaces.py:293` then builds the tower under `no_init_weights` and replaces it with `StageMissingLayer`. `qwen3_5.py:422` wraps the Qwen3.5 `visual` tower in exactly that context manager, so the flag-less oracle carried a vision tower a correct run elides. What is NOT claimed is the magnitude or its sign. The review's reasoning was that the oracle would hold less and `+118.7 MiB` therefore understates our deficit. That does not follow from anything measured: vLLM sizes its KV cache to fill `--gpu-memory-utilization`, so a tower it does not build frees memory the KV cache then takes, and the evidence file records no utilization setting for this campaign. The axis is marked `not like-for-like` and left OPEN, which is what the record can support. Correcting it needs the re-measurement #1345 owns. **Two upstream anchors did not resolve.** At `555967922`, `# TODO: support MRoPE` is `qwen3_next.py:323`; `:322` is the `# Fuse the gated split ...` comment above it. `fused_qk_rmsnorm_rope_gate` is `def`-ed at `fused_qk_norm_rope.py:117`, not `:119`. Both corrected in `.agents/specs/multimodal-track.md` and `.agents/engine-matrix.md`. Every other anchor in the §1.6 table was re-read at the pin and resolves: `:324-331`, `:344-352`, `:366-387`, `:325`, `multimodal.py:78` and `tests/models/registry.py:1322-1324`. One further stale citation, `qwen3_next.py:322-329` at `.agents/benchmark-record.md:20995`, predates this branch and sits in the append-only record, so it is reported rather than edited. **The detector was a list of two variable names.** `_ORACLE_CLIENT` matched `vllm`, `${client}` and `${VLLM_ORACLE}`, so a harness writing `"$ORACLE" serve` or `"$server_bin" serve` launched the oracle unscanned. The exit-2 "broken detector" arm cannot catch that, because the other launches keep the count above zero. It now matches the binary spelled out OR any `$`-expansion, since what identifies a launch is `serve` sitting directly after the binary. `bench serve` is unaffected, because the token before `serve` there is `bench`. RED first: `test_any_variable_spelling_of_the_client_is_still_a_launch` failed 4/4 spellings on the unwidened pattern, each reporting exit 2 and "found NO oracle server launch at all" (`Ran 13 tests`, `FAILED (failures=4)`). GREEN after: `Ran 13 tests`, `OK`. `test_bench_serve_stays_a_client_under_any_variable_spelling` holds the widening off the timed client. The real tree discovers the same three launches, 2 carrying the flag and 1 exempt, so no false positive was added. Also annotated the unqualified `1.0283x PASS` in `.agents/specs/sm120-qwen35-pareto-2026-08-09.md:331` with one clause, because that spec is where a reader goes for this campaign and the figure is now marked OPTIMISTIC on both public surfaces. Gates, with the box condition beside each, since this machine spent the session between load 44 and load 310: `check-public-doc-tables.py` exit 0 (59G free, load 43); `check-oracle-denominator-flags.py` exit 0, 3 launches (59G, load 48); its suite `Ran 13 tests`/`OK` (59G, load 47); `check-agent-record.py` exit 0. No product code path changed and no measurement is claimed. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [claude-code]
`origin/main` moved to c9e1b28 while this branch's review repairs were being prepared, so the branch is merged forward before its gates run. The three incoming commits are MUSIC3 depth-decoder and `extra_params` work plus an expert-stream spec; none of them touches the L4 surfaces, and the merge is clean. Every figure this branch restores was re-verified AFTER the merge rather than before it: `grep -c 118.7 docs/BENCHMARKS.md` is 1, the Qwen3.5-4B rows in `docs/BENCHMARKS.md:59` and `docs/STATUS.md:134` carry their restored axes at 210 and 216 characters against the 220-char cap, and both corrected upstream anchors still read `qwen3_next.py:323` and `fused_qk_norm_rope.py:117-201`. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [claude-code]
…onflicts `origin/main` moved to 9e1a5e5 while this branch was under fresh review. The conflict is real rather than the union artefact: #1369 rewrote the Qwen3.8-27B row of `docs/BENCHMARKS.md`, which sits on the line directly BELOW the Qwen3.5-4B row this branch restores, and both branches appended a block to the end of `.agents/benchmark-record.md`. Resolved as AGENTS.md Records requires, and not by accepting the three-way merge. For each file the complete `origin/main` version was taken first, then this branch's scoped edit was re-applied on top, then the untouched keys were proved equal rather than assumed: - `docs/BENCHMARKS.md`: main's 572 lines taken wholesale, then the single Qwen3.5-4B row re-applied at line 59. 571 of 572 lines are byte-for-byte main's, and the one differing line is this branch's own key. #1369's row 60, its "NOT ESTABLISHED as a ratio" cells and its SUPERSEDED withheld-cells row are main's text unaltered. - `.agents/benchmark-record.md`: append-only, and both sides were verified to be pure tail appends over the merge base before anything was combined. Main's 24,523 lines were taken wholesale and this branch's 49-line block appended after them, so main's file is a byte-for-byte prefix of the result. No existing entry was rewritten. Every figure was re-verified at THIS head rather than carried over from the pre-merge one: `grep -c 118.7` is 1 in `docs/BENCHMARKS.md` and 2 in `docs/STATUS.md`; the restored cells measure 210 and 216 characters against the 220-char per-entry cap; and `docs/STATUS.md` holds its ratchet unmoved at oversized_cells 44, long_paragraphs 75, h2_sections 11. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [claude-code]
…pend `origin/main` advanced to 2f67c93 during the merge attempt. Only `.agents/benchmark-record.md` collides this time: 2f67c93 appended to the same tail this branch does. `docs/BENCHMARKS.md` merged clean, because #1369's row already landed in the previous merge. Resolved by the method AGENTS.md Records requires, not by the three-way merge. Both sides were first PROVED to be pure tail appends over the merge base, then main's 24,757 lines were taken wholesale and this branch's 49-line block appended after them. Main's file is a byte-for-byte prefix of the 24,806-line result and `git diff origin/main` reports 0 deletions, so no existing entry was rewritten. Every figure was re-verified at THIS head: `grep -c 118.7` is 1 in `docs/BENCHMARKS.md` and 2 in `docs/STATUS.md`; the restored cells measure 210 and 216 characters against the 220 cap; `docs/STATUS.md` holds its ratchet at oversized_cells 44, long_paragraphs 75, h2_sections 11; and both corrected anchors still read `qwen3_next.py:323` and `fused_qk_norm_rope.py:117-201`. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [claude-code]
… no union driver (#1373) Found while resolving this branch's second record conflict in one afternoon. `.agents/benchmark-record.md:3` reads "Append-only forensic record", but `.gitattributes` is 7 lines long and gives `merge=union` to `.agents/issue-index.md` alone. Two append-only surfaces, one union driver. AGENTS.md Records admits "a genuinely append-only file that can union-merge" as a record shape and warns that a file every pull request edits is a lock. Without the attribute this file is that lock: #1349 hit `CONFLICT (content): Merge conflict in .agents/benchmark-record.md` merging 9e1a5e5, then hit it again merging 2f67c93 as the only conflict, both times on pure tail appends with no overlapping content. Filed, not fixed. Changing a merge driver changes how every future concurrent append resolves, so it wants its own spec and fresh review rather than a one-line ride-along in a multimodal pull request. Owned by `ENG-RECORD-CONFLICT-SURFACES` (#364), whose scope is retiring the shared record surfaces that make concurrent pull requests conflict by construction. The row also records the #883 scope limit, that the union driver is local and does not change what GitHub reports. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [claude-code]
…TUS edit `origin/main` advanced 75 commits to 503e459 over two days, so this merge is not the tail-append collision the previous two were. Three files conflict and each takes a different, argued resolution. **`docs/STATUS.md` — main taken WHOLESALE, nothing re-applied.** #1491 (`aee6c48d6`, "make public documentation task-focused") deliberately reduced this page from 2,906 lines to 97 and routed the detail through a 275-row migration manifest. The keyed row this branch repaired no longer exists, and the prose block it annotated is gone with it. Re-applying the scoped edit would mean reintroducing a table someone else's reviewed change deleted, which is a silent revert rather than a merge. The file is now byte-for-byte identical to main and this branch's STATUS delta is empty. Nothing is lost by that. The restored VRAM axis lives in `docs/BENCHMARKS.md`, which survives this merge intact, and main's new `docs/STATUS.md:4` now says to use `BENCHMARKS.md` for measured performance. So `grep -c 118.7` is 0 in `docs/STATUS.md` and 1 in `docs/BENCHMARKS.md`, which is where a measured axis belongs after the migration. **`scripts/agent-preflight.sh` — both suites kept.** This branch appended `test_check_oracle_denominator_flags` to the mutation-suite list and main appended `test_check_conflict_markers` at the same position. The entries are additive, neither replaces the other, and both now run. **`.agents/benchmark-record.md` — main wholesale, then this branch's block.** Worth recording, because it is the caveat #1373 named: main is NOT a pure tail append this round. It edited the header and two existing entries (7 deletions across 3 non-tail hunks) as well as appending. Taking main wholesale preserves every one of those edits by construction, and this branch's own 49 lines remain a clean extractable tail, so they were appended after. Main's file is a byte-for-byte prefix of the 26,039-line result and `git diff origin/main` reports 0 deletions. Re-verified at THIS head rather than carried over, because 75 commits landed: the BENCHMARKS cell measures 210 characters against the 220 cap; the STATUS ratchet reads oversized_cells 2, long_paragraphs 0, h2_sections 3, all far under their caps after the restructuring; and both upstream anchors still resolve at the pin, `qwen3_next.py:323` for `# TODO: support MRoPE` and `fused_qk_norm_rope.py:117` for `def fused_qk_rmsnorm_rope_gate`. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [claude-code]
localai-bot
pushed a commit
that referenced
this pull request
Aug 22, 2026
… clash `origin/main` advanced 129 commits, L4 (#1349, `82c50333d`) among them, and this is the clash the two rows have been anticipating: L4 expanded the L3 bullet's neighbour in `specs/multimodal-track.md` while this branch expanded L3 itself. Three files conflicted for real, none of them the #883 union artefact. Resolved by taking main WHOLESALE and reapplying the scoped edit, never by hand- patching a conflict hunk: * `specs/multimodal-track.md` — main's file, with main's L3 STUB swapped for this branch's L3 section. Verified byte-for-byte on both sides afterwards: the L3 block hashes `ce576508b1dfd42e` exactly as it did pre-merge, and the L4 bullet hashes `5fe114c2c0f6e335` exactly as main has it. L4 also filed a `## Owed` section, so this row's entries were appended INTO it rather than opening a second one, and the heading now names both waves. * `docs/STATUS.md` — main's, wholesale. The paragraph this branch had edited no longer exists there: main compacted the file from ~2300 lines to 98, so there was no scoped edit left to reapply and no stale claim left behind. * `docs/USAGE.md` — main's, wholesale. Main SPLIT the multimodal content out into `docs/guides/multimodal-input.md` and `docs/reference/server.md`, so this is the two-relocations shape: the edit had to be reapplied at the content's new address, not at its old one. Both files asserted that the flag "frees no memory" and "does not skip tower construction", which this branch makes false, so both now describe the skip and both still say the byte saving is unmeasured. The index is verified by the same six checks rather than trusted: 445 base lines all present byte-for-byte and in order, all 177 of main's new rows present, this branch's 2 present, no line from neither side, no duplicated row id. One wording change the L3 spec owed: the `qwen3_vl.cpp:418` site is recorded as "not RSS-measured in this wave" rather than unmeasurable, because the `Qwen/Qwen3-VL-4B-Instruct` fetch is now authorised and the site becomes measurable. Tracked by #1358. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [claude-code]
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.
L4 of the multimodal track had one line of spec: mirror the kernel gate, or
record an explicit tracked exception with the #414 cross-reference. This takes
the exception arm, argues it in
.agents/specs/multimodal-track.md§1.6, andthen repairs the benchmark denominator that the exception leaves exposed.
The decision: tracked exception, not a mirror
vllm/model_executor/models/qwen3_next.py:324-331conjoinstext_onlyintouse_fused_qk_norm_rope_gate. We do not mirror that conjunct, and the reason isthat mirroring is not representable at our seams rather than a preference.
Upstream conjoins it because its fused Triton kernel indexes
cos_sin_cachebya 1-D
positionsvector and cannot express MRoPE.qwen3_next.py:323says soin as many words,
# TODO: support MRoPE, and the fused branch at:344-352restates it: the T-row shortcut is exact only because fusion is text-only. The
arm it falls back to is complete, because upstream's eager
self.rotary_embISthe MRoPE module. So the conjunct is a limitation guard, not a behaviour.
Our two arms are not those two arms.
vt::AttnQkNormRopeGatetakes no positionsargument at all; it consumes a precomputed per-token
cos_sincache[T, rotary_dim], whichqwen3_5.cpp::BuildMropeCosSinHostfills with theinterleaved 3-section MRoPE axis selection for the M3-b image and M3d video
paths. Our FUSED arm is the MRoPE arm. Our eager arm calls
vt::RopeNeoxon the1-D positions vector and has no MRoPE spelling. Conjoining
text_onlywouldtherefore select 1-D RoPE on exactly the configuration the conjunct exists to
protect, silently, since every tensor shape still agrees, and would break the
landed STRICT 32/32 image and video gates in the name of mirroring a TODO.
Owner
ENG-MM-INPUT-PIPELINE, cross-referenced to #414. If upstream lands MRoPEsupport and drops the conjunct, the exception is retired by upstream converging
on us, and the record is deleted rather than migrated.
What the exception does not excuse
#414's defect is a benchmark configuration, not a kernel.
vllm/config/multimodal.py:78defaultslanguage_model_onlyto False, so aQwen3.6 checkpoint hands the oracle
text_only == Falseand four ops perfull-attention layer where its own production configuration issues one, against
our single fused launch. That compares two algorithms, and the error runs in our
favour, hardest on TTFT.
The correct denominator is vLLM WITH the flag, on two grounds that agree: it is
a production configuration, passed by 43 of the 157 official recipes, and
AGENTS.md §Gates requires vLLM's production configuration rather than a
handicapped one, the same rule that forbids
--enforce-eager.The 2026-08-13 clock-controlled series repaired the RUN. It did not repair the
HARNESS.
scripts/dgx-online-serving.shstill launched the oracle without theflag while
tools/bench/run_serve_low.pypassed it, so the two disagreed aboutthe oracle's own configuration and the next canonical campaign would have
produced another flattered set. A grep for the flag read as coverage while the
canonical driver lacked it, which is why this ships as a checker.
The 27/27n/35 arm now passes the flag. The q3mxfp4 arm is marked exempt with its
reason: a dense Qwen3-8B checkpoint has no
multimodal_config, soqwen3_next.py:325already resolvestext_only == Trueand the flag decidesnothing there.
The gate
scripts/check-oracle-denominator-flags.py, wired intoagent-preflight.shandCI. Scoped to CLI
servelaunches, the surface the published ratios come from,with its docstring naming what it deliberately does not cover. It reads harness
sources and holds its expectation in its own code, so it is not a surface every
pull request must edit.
--jsonexists so the test pins the discovered SETrather than the violation count, and finding nothing exits 2 rather than 0,
because a broken detector and a clean tree are otherwise indistinguishable.
RED before, on the tree as it stood: exit 1, naming
dgx-online-serving.sh:487and
:498of 3 discovered launches, withrun_serve_low.py:552already green.GREEN after: 3 launches, 2 carrying the flag, 1 exempt.
tests/scripts/test_check_oracle_denominator_flags.py13/13, including themutation that reconstructs the pre-L4 state and requires exactly one violation.
The first cut of
_ORACLE_CLIENTnamed the two variables this tree happens touse,
${client}and${VLLM_ORACLE}, which made the detector a list ofspellings: a later harness writing
"$ORACLE" servewould have launched theoracle unscanned, and the exit-2 arm cannot catch that, because the other
launches keep the count above zero. It now matches the binary spelled out OR any
$-expansion, since what identifies a launch isservesitting directly afterthe binary rather than the name of the variable holding it.
bench servestaysa client, because the token before
servethere isbench. RED first:test_any_variable_spelling_of_the_client_is_still_a_launchfailed 4/4 of itsspellings on the unwidened pattern, each reporting exit 2 and "found NO oracle
server launch at all";
test_bench_serve_stays_a_client_under_any_variable_spellingholds the widening off the timed client; the real tree discovers the same three
launches, so no false positive was added.
Record impact
One published number carried the defect unmarked, and finding it corrects this
branch's own spec commit, which claimed nothing currently binding was affected
because it only looked at the two gate models.
docs/BENCHMARKS.md's Qwen3.5-4B1.0283xran its vLLM arm throughvllm_closed_loop_metrics.py, which never passes the field; upstream registersQwen/Qwen3.5-4BasQwen3_5ForConditionalGeneration(
tests/models/registry.py:1322-1324); andgit log -Sdates the conjunct to16282a9c4, 2026-06-10, two months before that 2026-08-07 run. The oracle ranunfused. The direction is known and it flatters us; the magnitude is NOT
measured and is not estimated. The row keeps its values and gains the
attribution, with the chain in
.agents/benchmark-record.md.Keeping its values means all of them. The first cut of this branch rewrote that
row and dropped the
VRAM +118.7 MiBaxis while marking the other three, anddocs/STATUS.md's row cell lostAtomic pretoken exact, the direction wordslowerand the GDN-stack note with it. Annotating evidence is the rule;deleting it is not, whichever direction it points. Every one is restored and
marked. The denominator column now also records that the oracle carried a vision
tower:
multimodal.py:326zeroes every modality limit under the flag, andinterfaces.py:293then builds the tower underno_init_weightsas aStageMissingLayer, whichqwen3_5.py:422wraps the Qwen3.5visualtower in.The axis is marked
not like-for-likeand stays OPEN rather than being given asign: vLLM sizes its KV cache to fill
--gpu-memory-utilization, so memory atower does not take is memory the cache does, and this campaign's evidence file
records no utilization setting. #1345's re-measurement is what settles it.
Not affected, checked rather than assumed: #414 reaches a figure only where the
full-attention layers are
Qwen3NextAttentionAND the checkpoint loads as a*ForConditionalGeneration. The Qwen3.8-27B rows ran throughrun_serve_low.py,which has always passed the flag. The Qwen3.5-4B GDN prefill kernel row is
conv and post-conv timing on the linear-attention path.
Owed, filed in flow
Both name
ENG-MM-INPUT-PIPELINEin.agents/issue-index.mdand are listedunder
## Owedin the spec. Neither is fixed here, and neither is deferredsilently.
VT_FUSE_ATTN_PREAMBLE=0on the MRoPE path substitutes 1-D RoPE instead of refusing, so the model emits
wrong tokens with no diagnostic. Its gate is a VL token-exactness run through
ModelRegistry::Forwardon a GPU.profile_vllm_online_gate.py:209,vllm_closed_loop_metrics.py:160anddump_vllm_tokens.py:34construct theoracle with
language_model_onlyat its default and expose no way to set it.They take
--modelas a path, so no static rule can decide them, and changingwhat they hand the oracle moves future denominators.
Gates
No product code path changed, so no token gate and no measurement is claimed.
scripts/agent-preflight.shall gates green, on an idle box (load 1.3) with15G free, so neither the contention nor the disk-pressure failure mode applies.
check-commit-trailers.pyandcheck-commit-style.pyoverorigin/main..HEADboth OK.
The review-repair commit was gated on a loaded box and reports its condition per
result, because a full-disk or contended run produces false failures and false
passes alike:
check-public-doc-tables.pyexit 0 (59G free, load 43);check-oracle-denominator-flags.pyexit 0, 3 launches (59G, load 48); its suiteRan 13 tests/OK(59G, load 47);check-agent-record.pyexit 0.Two upstream anchors are corrected in the same pass:
# TODO: support MRoPEisqwen3_next.py:323at the pin, not:322, andfused_qk_rmsnorm_rope_gateisdef-ed atfused_qk_norm_rope.py:117, not:119. Every other anchor in the§1.6 table was re-read at
555967922and resolves.FOLLOWING_AGENTS_PROTOCOL
Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [claude-code]