Skip to content

L4: the kernel gate is a tracked exception, and the oracle denominator is now gated (#607, #414) - #1349

Merged
localai-bot merged 8 commits into
mainfrom
row/mm-limits-l4
Aug 21, 2026
Merged

L4: the kernel gate is a tracked exception, and the oracle denominator is now gated (#607, #414)#1349
localai-bot merged 8 commits into
mainfrom
row/mm-limits-l4

Conversation

@localai-bot

@localai-bot localai-bot commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

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, and
then repairs the benchmark denominator that the exception leaves exposed.

The decision: tracked exception, not a mirror

vllm/model_executor/models/qwen3_next.py:324-331 conjoins text_only into
use_fused_qk_norm_rope_gate. We do not mirror that conjunct, and the reason is
that mirroring is not representable at our seams rather than a preference.

Upstream conjoins it because its fused Triton kernel indexes cos_sin_cache by
a 1-D positions vector and cannot express MRoPE. qwen3_next.py:323 says so
in as many words, # TODO: support MRoPE, and the fused branch at :344-352
restates 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_emb IS
the MRoPE module. So the conjunct is a limitation guard, not a behaviour.

Our two arms are not those two arms. vt::AttnQkNormRopeGate takes no positions
argument at all; it consumes a precomputed per-token cos_sin cache
[T, rotary_dim], which qwen3_5.cpp::BuildMropeCosSinHost fills with the
interleaved 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::RopeNeox on the
1-D positions vector and has no MRoPE spelling. Conjoining text_only would
therefore 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 MRoPE
support 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: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. 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.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.

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, so
qwen3_next.py:325 already resolves text_only == True and the flag decides
nothing there.

The gate

scripts/check-oracle-denominator-flags.py, wired into agent-preflight.sh and
CI. Scoped to CLI serve launches, 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. --json exists so the test pins 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.

RED before, on the tree as it stood: exit 1, naming dgx-online-serving.sh:487
and :498 of 3 discovered launches, with run_serve_low.py:552 already green.
GREEN after: 3 launches, 2 carrying the flag, 1 exempt.
tests/scripts/test_check_oracle_denominator_flags.py 13/13, including the
mutation that reconstructs the pre-L4 state and requires exactly one violation.

The first cut of _ORACLE_CLIENT named the two variables this tree happens to
use, ${client} and ${VLLM_ORACLE}, which made the detector a list of
spellings: a later harness writing "$ORACLE" serve would have launched the
oracle 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 is serve sitting directly after
the binary rather than the name of the variable holding it. bench serve stays
a client, because the token before serve there is bench. RED first:
test_any_variable_spelling_of_the_client_is_still_a_launch failed 4/4 of its
spellings 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_spelling
holds 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-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 2026-08-07 run. The oracle ran
unfused. 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 MiB axis while marking the other three, and
docs/STATUS.md's row cell lost Atomic pretoken exact, the direction word
slower and 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:326 zeroes every modality limit under the flag, and
interfaces.py:293 then builds the tower under no_init_weights as a
StageMissingLayer, which qwen3_5.py:422 wraps the Qwen3.5 visual tower in.
The axis is marked not like-for-like and stays OPEN rather than being given a
sign: vLLM sizes its KV cache to fill --gpu-memory-utilization, so memory a
tower 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 Qwen3NextAttention AND the checkpoint loads as a
*ForConditionalGeneration. The Qwen3.8-27B rows ran through run_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-PIPELINE in .agents/issue-index.md and are listed
under ## Owed in the spec. Neither is fixed here, and neither is deferred
silently.

Gates

No product code path changed, so no token gate and no measurement is claimed.
scripts/agent-preflight.sh all gates green, on an idle box (load 1.3) with
15G free, so neither the contention nor the disk-pressure failure mode applies.
check-commit-trailers.py and check-commit-style.py over origin/main..HEAD
both 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.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.

Two upstream anchors are corrected in the same pass: # TODO: support MRoPE is
qwen3_next.py:323 at the pin, not :322, and fused_qk_rmsnorm_rope_gate is
def-ed at fused_qk_norm_rope.py:117, not :119. Every other anchor in the
§1.6 table was re-read at 555967922 and resolves.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [claude-code]

mudler added 6 commits August 19, 2026 09:24
…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]
mudler added 2 commits August 19, 2026 13:37
… 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
localai-bot merged commit 82c5033 into main Aug 21, 2026
9 of 22 checks passed
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]
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