Skip to content

record(BENCH-QWEN38-27B-FOUR-WAY): the SGLang blocker was stale and the oracle had already run (#979) - #982

Merged
localai-bot merged 7 commits into
mainfrom
row/BENCH-QWEN38-27B-FOUR-WAY
Aug 16, 2026
Merged

record(BENCH-QWEN38-27B-FOUR-WAY): the SGLang blocker was stale and the oracle had already run (#979)#982
localai-bot merged 7 commits into
mainfrom
row/BENCH-QWEN38-27B-FOUR-WAY

Conversation

@localai-bot

Copy link
Copy Markdown
Collaborator

FOLLOWING_AGENTS_PROTOCOL

Scopes the four-way benchmark campaign (us, vLLM, llama.cpp, SGLang) for
Qwen/Qwen3.8-27B on GB10. Issue
#979.

Records and a spec only. No product code, no measurement taken here.

This is a reconciliation, not a new row

The campaign already had owners. competitive-benchmarks.md defines
BENCH-CUDA-VLLM, BENCH-CUDA-SGLANG, BENCH-CPU-LLAMA and BENCH-VK-LLAMA
with a canonical serve-low workload, and cuda-sglang-low-concurrency.md
owns three backend rows. Opening a parallel row would have competed with its own
record, so this makes the existing records true and scopes the new subject onto
them.

The recorded blocker was stale

BACKEND-GATE-CUDA-SGLANG was BLOCKED on SERVE-ASYNC-LLM, reason "HTTP
TTFT/ITL cannot be measured honestly yet". That reason no longer holds, on four
independent lines:

  • serving_completion.h:9-11 names the live pull-based SseStream over
    AsyncLLM as the production path, with the buffered LLMEngine constructor a
    test seam.
  • api_server.cpp:971-981 drives set_chunked_content_provider off
    SseStream::next, one chunk at a time.
  • run_serve_low.py:296-310 enforces it, refusing a probe with no
    token-bearing event, a wrong chunk count, first_chunk_s >= total_s, or a
    sub-floor spread.
  • Demonstrated on hardware: the 2026-07-28 run measured c16 mean TTFT 2980 ms
    against mean ITL 154.4 ms over 128 tokens. First byte preceded completion by
    about 20 s, which a buffered server cannot do.

Moved to PARTIAL, not DONE. Residuals named: c1/c2/c4, the in-series vLLM
arm, 35B, SGLANG-ORACLE-CORRECT, paired traces, P2 exact-equivalence
classification, and every Qwen3.8-27B point.

The oracle said gateable = no for two and a half weeks after it had run

sglang-matrix.md:162 and docs/STATUS.md:180 record CLAIM-SGLANG-PERF-BENCH
on 2026-07-28: the v0.5.15-cu130 arm64 image pulled and ran 27B-NVFP4 on GB10
sm_121a, CUDA graphs captured, 3 reps at c8/c16, 80x128 tokens, 0 errors. The
oracle file still said "no SGLang run has been recorded on this project's
hardware". Two files in one tree contradicting each other is the failure the
oracle record exists to prevent. Now gateable = yes, discharging the SGLang
third of #647.

That run is not voided by #931: the keepalive needed 15 s of per-request
collector silence, and the worst recorded p99 TTFT was 7220 ms. The argument is
made on silence duration alone, so it does not depend on whether
sglang.bench_serving shares vllm bench serve's strip-before-parse weakness.
It is independently closed by the recorded exact 80x128 output tokens with 0
errors, since a mid-stream comment frame causes silent truncation that a full
token count excludes.

Two of six engine pairs are not comparable, on the container

vLLM at pin 555967922 has no in-tree GGUF at all: 6635279d8
(vllm#39612) migrated it to an out-of-tree plugin, leaving LoadFormats with no
gguf entry, no gguf in quantization/__init__.py, and
setup.py:1300 pointing at vllm-gguf-plugin. llama.cpp reads only GGUF.
So no artifact both can open exists at any quantization, and both
vLLM vs llama.cpp and SGLang vs llama.cpp are closed on that ground.

The deliverable is therefore a matrix with a stated common denominator per pair,
never one headline ratio, and no pair is compared across quantizations.

Three source claims were wrong and are withdrawn here

Each was caught in review and re-derived at the pins:

  • llama.cpp does have NVFP4. GGML_TYPE_NVFP4 = 40, the loader ftype, type
    traits, the CUDA MMQ instance and the ModelOpt-to-GGUF converter are
    upstream; only the two sm_121a prefill GEMMs are fork-local. The earlier
    "llama.cpp has no NVFP4" reason for both not-comparable verdicts was false,
    which is why they are re-derived on the container above.
  • SGLang's conv1d fails loudly, not silently. qwen3_5.py:199 passes
    quant_config=None, so linear.py:176-179 assigns UnquantizedLinearMethod
    and GGUFConfig.get_quant_method is never reached. The withdrawn wording
    claimed the opposite polarity. What replaces it is an assertion about an
    absent guard, which is directly checkable: loader.py:2149-2153 writes the
    key with no None check, weight_utils.py:1280,1321 skip an unmapped tensor
    with no else and no counter, qwen3_5.py:1359-1412 never compares
    loaded_params against params_dict, and loader.py:2184-2186 discards the
    return value. Which parameters fail to resolve stays an open question with the
    experiment named.
  • DSpark is not absent from the pinned tree. docs_new/index.mdx links the
    2026-07-06 blog, three days before the pinned commit f63458b5 of 2026-07-09,
    and SGLang ships a plugin registration API for out-of-tree speculators. The
    true claim is scoped to python/sglang/srt/speculative/, and the conclusion
    that a drafted arm needs a deliberate pin advance now rests on a stated
    argument rather than on a false absence.

The vendor claim, quarantined, and our own measurement beside it

The retrievable source is the NVIDIA forum thread, which reports "~34 tok/s
real-world, 38.0 average on eval-style workloads, 46.7 peak". 38.28 does
not appear in it.
The X post returns HTTP 402, so its text comes from a search
index and its date is derived from the status snowflake. Both limits are stated.
Drafter size, TTFT exclusion, batch size and the spread are labelled UNVERIFIED.

Set against it, our own measured head-to-head on byte-identical
Qwen3.6-27B-NVFP4 weights, same box, same corpus, both arms raw: SGLang output
throughput 40.8 tok/s against ours 90.3 at c16, a 2.21x win, and 1.44x
at c8, with TTFT 6 to 12x lower. TPOT and ITL remain an open gap, attributed to
batch composition rather than per-token kernel cost, with the shipped default
unchanged so the deficit stands at the measured configuration.

Without that beside it a reader met "SGLang published 38.0" and "ours is 10.756"
with drafted-versus-raw as the only objection, and could leave believing SGLang
is simply faster.

A missing row, filed

BACKEND-GATE-CUDA-LLAMACPP, INVENTORIED. No existing row covers llama.cpp on
a current CUDA card: the CPU, -LEGACY Pascal/Volta/Turing, Metal, Vulkan and
the eleven BACKEND-GGML-* breadth rows are all distinct, and
bench-27b-five-way.md:12 records the orphan. Ratchet 82 to 83 following the two
Tenstorrent precedents, with a mutation case keyed to its own row and a guard
that the new ID is a strict prefix of -LEGACY. Removing the row yields 3 FAIL
plus 1 ERROR, reproduced in review.

A correction made before it could become permanent

An earlier commit on this branch recorded .agents/issue-index.md:266 as
uncorrectable, on the grounds that the index is append-only and a landed row is
never edited. The row had not landed. 17187f134 is not an ancestor of
origin/main, whose index carries zero #979 rows. The append-only rule's own
rationale is that a union merge duplicates an edited line, which requires the row
to exist at the merge base. It did not, and no other branch carried it.

Corrected in place, with both index gates green afterwards. Had this merged
first, main would have permanently asserted two claims this same branch proves
false, in the round whose purpose was retiring false recorded facts, and only
then would the window have actually closed.

Gates

scripts/agent-preflight.sh: 76 ok, 0 FAIL, exit 0, all five block headings
executed. The Commit trailers vs origin/main block genuinely ran rather than
silently skipping, which it does when origin/main is not an ancestor of HEAD
while still printing "All gates green.".

check-agent-record.py: ENGINE=156 MODEL=377 QUANT=82 KERNEL=51 BACKEND=83.
check-issue-index-append-only.py: OK after the in-place edit.

Owed

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

mudler added 7 commits August 16, 2026 04:14
… moved

FOLLOWING_AGENTS_PROTOCOL

Scopes the four-way Qwen3.8-27B campaign on GB10 and reconciles the records it
had to read to be scoped. No measurement is taken here, and no product code
changes.

## The blocker was stale

`backend-matrix.md:260` carried `BACKEND-GATE-CUDA-SGLANG` as `BLOCKED` on
`SERVE-ASYNC-LLM`, reason "no binding run; HTTP TTFT/ITL cannot be measured
honestly yet". Four independent lines say otherwise, and none of them is a state
field quoting another state field:

- The production server streams incrementally. `serving_completion.h:9-11` names
  the live pull-based `SseStream` over `AsyncLLM` as the production path and the
  buffered `LLMEngine` constructor as a test seam; `api_server.cpp:971-981`
  drives `set_chunked_content_provider` off `SseStream::next`.
- The harness ENFORCES it rather than assuming it. `run_serve_low.py:296-310`
  refuses a probe with no token-bearing event, refuses a wrong chunk count,
  refuses `first_chunk_s >= total_s`, and refuses a spread below a floor.
- It was demonstrated on hardware. The 2026-07-28 floor run measured our c16
  mean TTFT at 2980 ms against a mean ITL of 154.4 ms over 128 tokens, so first
  byte preceded completion by about twenty seconds. A buffered server cannot
  produce that shape.
- `engine-matrix.md:207` and `async-metrics.md:196` already said so.

Row moves `BLOCKED` to `PARTIAL`, not `DONE`. Named residuals: c1/c2/c4 (SGLang
c1 ran ~13.3 s/it), the in-series vLLM arm, 35B, the `SGLANG-ORACLE-CORRECT`
token-ID cross-check, paired nsys traces, and every Qwen3.8-27B point.

## The oracle said it had never run, after it had run

`.agents/oracles/sglang.md` recorded `gateable = no` with the words "no SGLang
run has been recorded on this project's hardware". `sglang-matrix.md:162` and
`docs/STATUS.md:180` record the opposite from 2026-07-28: the v0.5.15-cu130
arm64 image pulled and ran the 27B-NVFP4 gate model on GB10 sm_121a, three reps
at c8 and c16, 80x128 tokens and zero errors on both arms. `docs/BENCHMARKS.md`
still said "Never ran". Moves to `gateable = yes`, discharging the SGLang third
of the debts #647 holds open.

That run predates #931 and is NOT voided by it: the keepalive needs 15 s of
silence and the worst observed p99 TTFT was 7220 ms. Asked rather than assumed,
because assuming the opposite is the failure #931 documents.

## No single quantization is common to all four engines

The campaign's central design problem, settled from source before any GPU time:

- vLLM at `555967922` has NO in-tree GGUF. `6635279d8` (vllm#39612) deleted the
  loader, the quant config and the CUDA kernels and moved them to an unpinned
  out-of-tree `vllm-gguf-plugin`. `model_loader/__init__.py:33-48` has no `gguf`
  load format. So vLLM vs llama.cpp is NOT COMPARABLE.
- SGLang's `qwen3_5` GGUF failure is NOT the two-line alias table it looks like.
  The alias is real (`loader.py:2129-2142`, exactly `cohere` and `qwen3_moe`),
  but adding it leaves three more blockers, and one of them is silent: `conv1d`
  is a `ColumnParallelLinear` (`qwen3_5.py:195-204`) that would be handed a
  `GGUFLinearMethod` and be wrong rather than refused.
- llama.cpp is the only comparator that runs the Q4_K_M arm.

Two of six pairs are therefore recorded not-comparable, which is the deliverable
rather than a shortfall of it.

## The llama.cpp CUDA arm had no owner

`BACKEND-GATE-CPU-LLAMACPP` is the CPU floor and `-CUDA-LLAMACPP-LEGACY` is
Pascal/Volta/Turing, where vLLM has no entry at all. A GB10 GGUF comparison fell
between them, which is how `bench-27b-five-way.md` came to list a llama.cpp CUDA
arm with nothing tracking it. Adds `BACKEND-GATE-CUDA-LLAMACPP`, `INVENTORIED`,
no run, with the BACKEND ratchet bumped 82 to 83 and a mutation case keyed to
its own row per the precedent the two Tenstorrent bumps set. That case also pins
the trailing pipe in the row match, because the new ID is a strict prefix of the
LEGACY one and a loose match would delete two rows while claiming one.

## 38.28 tok/s is a DRAFTED number, and not reachable at our pin

SGLang published 38.28 tok/s decode on DGX Spark for this model. Their own
wording is "our NVFP4 plus DSpark", so it is speculative decoding, and our
binding 10.756 at c1 is raw. The spec refuses that division and requires every
arm to declare drafted or raw. Unverified and labelled as such: the drafter size,
whether TTFT is excluded, and the claimed 16.6-46.7 reproduction spread. This
tree contains zero occurrences of the string, which is why it is written down
with its provenance attached instead of carried forward as a target.

`python/sglang/srt/speculative/` at `f63458b5` has DFlash, EAGLE, ngram and
frozen-KV MTP and nothing named `dspark`, so their configuration postdates our
pin and reaching it means advancing the pin deliberately.

## Gates

`scripts/agent-preflight.sh` green, 71 gates, and `--staged` green, against
`origin/main` at `598226e962ddd4a83292e3d9264bbea9f41603d2`, which is also this
branch's base. `check-agent-record` reports BACKEND=83.
`tests/scripts/test_agent_record.py::CudaLlamacppRowIsCounted` 4/4, including
the removal mutation that proves the ratchet is load-bearing for the new row.

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [Claude Code]
FOLLOWING_AGENTS_PROTOCOL

Merged so the preflight commit-trailer block executes rather than silently
skipping, which it does whenever origin/main is not an ancestor of HEAD.
origin/main moved from 598226e to 75abd8c while this branch was being
written, picking up two ENG-EXPERT-STREAM commits that touch only
.agents/specs/expert-streaming.md. No overlap with anything here.

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [Claude Code]
…ator

FOLLOWING_AGENTS_PROTOCOL

The spec cited `docs/BENCHMARKS.md:97` for "10.756 against vLLM's 11.250", but
:97 is the vLLM row alone and 10.756 lives on :96. A reader following the anchor
would have found one of the two numbers the sentence compares. Widened to
:96-97.

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [Claude Code]
Takes 265be04 (#981) so the trailer gate runs over a base-current head
before the #979 source-fact corrections land.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [Claude Code]
…e pins

A fresh review re-checked the source claims this spike asserts and two of them
were load-bearing for a recorded verdict. Each is re-derived here against the
pinned tree rather than taken from either the author or the reviewer.

conv1d is NOT silently quantized, and the polarity was inverted. Its own cited
range refutes the claim: qwen3_5.py:199 passes quant_config=None, so
layers/linear.py:176-179 assigns UnquantizedLinearMethod() and never calls
quant_config.get_quant_method (the only call site is the untaken else at
:180-181), ColumnParallelLinear forwards it unchanged at :331-333, and nothing
re-wraps the module. No GGUFLinearMethod is ever attached, so it would fail
loudly. What IS silent is a property of the load path and is proven rather than
swapped in: loader.py:2149-2153 writes the map key with no None check so every
unresolvable name collapses onto one literal None.weight, weight_utils.py:1280
and :1321 skip an unmapped tensor with no else and no counter, and
qwen3_5.py:1359-1412 never compares loaded_params against params_dict. WHICH
parameters fail to resolve is left an OPEN QUESTION with the experiment named,
because it depends on the gguf and transformers packages and we pin neither.

llama.cpp DOES have NVFP4 at 237ad9b96, so the section-2 cell that said no was
false and the two NOT COMPARABLE cells that leaned on it are re-derived from
scratch. GGML_TYPE_NVFP4 = 40 (ggml.h:430), the loader ftype, the type traits,
the CUDA MMQ instance and the ModelOpt-to-GGUF repacking converter are all
UPSTREAM, present in ggml-org master too; only the two sm_121a prefill GEMMs,
including a 493-line W4A4 kernel written for GB10, are fork-local. Both cells
stay NOT COMPARABLE, on the CONTAINER: llama.cpp reads only GGUF, vLLM has no
GGUF reader at all, so no artifact both can open exists for any quantization.
The three-way NVFP4 question is answered honestly rather than dodged. The
converter REPACKS rather than re-quantizes (conversion/base.py:654-676), so an
equivalence proof is a layout proof, and it owes two named assertions: no e4m3
scale byte with its sign bit set (:656,668), and the GDN head permutation at
conversion/qwen.py:378-386 shown value-preserving. It is blocked on #821
regardless.

The DSpark absence claim overreached what the oracle file correctly scopes to
python/sglang/srt/speculative/. git grep -il dspark f63458b5 returns
docs_new/index.mdx, tracked at the pin, linking the 2026-07-06 blog post, three
weeks BEFORE the 2026-07-27 pin, so "that code postdates the pin" is
contradicted by the pin's own documents. SpeculativeAlgorithm.register
(spec_info.py:60) over spec_registry.py's CustomSpecAlgo also means "not in
speculative/" is not "not reachable". The operational conclusion survives on a
stated argument: a drafted arm needs a pinnable configuration, which is a pin
advance or a plugin oracle record.

Our own measured head-to-head was missing, which left 38.28 against 10.756 with
drafted-versus-raw as the only objection, the exact reading the risk table
exists to prevent. Section 3 now carries the 2026-07-28 measurement on
byte-identical NVFP4 weights: ours 2.21x at c16 and 1.44x at c8 on output
throughput, 6x to 12x on TTFT, with TPOT and ITL a reproduced gap in SGLang's
favour, and its narrower scope stated in the same paragraph.

Also: 38.28 gets a retrievable citation (handle, post id, derived date, plus the
NVIDIA forum thread read on 2026-08-16, whose own headline is 38.0 not 38.28);
the gateability debt is a third and not a half, with the three named at
issue-index.md:193; a new section 2.6 says the NVFP4 column presumes a767244d is
NVFP4 on the strength of its name, which this vendor has already broken once
(BENCHMARKS.md:50), and names the manifest that discharges it; and the P2
exact-equivalence residual is added to the two lists that omitted it.

.agents/issue-index.md:266 and commit 17187f1's body carry the withdrawn
wording and CANNOT be repaired. The index is append-only by policy and
check-agent-record.py:1439 additionally refuses a second row for an issue
already listed, because under merge=union a duplicate number is what two
branches appending the same issue look like. A landed commit body is immutable.
This spec is therefore the correction of record for both, and says so under
## Now so a reader of that row lands on it.

No measurement was taken and no GPU was touched.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [Claude Code]
…ot landed

`dadb3d396` recorded `.agents/issue-index.md:266` as impossible to correct, on
the grounds that the index is append-only and a landed row is never edited. That
body carried the mistaken immutability claim, and it inverted the premise the
whole round then acted on. The row has not landed. `git merge-base --is-ancestor
17187f1 origin/main` is false, `origin/main` carries 265 index lines and zero
`#979` rows, and no other local or remote branch carries one. The row exists only
on this branch, introduced by this branch's own unmerged commit `17187f134`.

The append-only rule's own rationale settles it. AGENTS.md and
`scripts/check-issue-index-append-only.py:2-16` give the same reason: under
`merge=union` an EDITED line is duplicated rather than merged. That hazard needs
the line to exist at the merge base, and this one does not. The checker measures
exactly that, diffing the merge base against the head rather than reading one
tree, and it passes on the in-place edit. `scripts/check-agent-record.py` passes
with it. Its duplicate-row refusal at `:1437-1441` is real and was described
correctly, and it is the wrong instrument here, because this corrects the first
row before it lands rather than appending a second.

So row 266 is edited in place and both withdrawn claims are gone. `conv1d` is no
longer recorded as silently wrong: `qwen3_5.py:199` passes `quant_config=None`,
`linear.py:176-179` assigns `UnquantizedLinearMethod`, and
`GGUFConfig.get_quant_method` is never reached, so it fails loudly. The silence
is a property of the load path instead, which the row now says. And "DSpark does
not exist at our SGLang pin" is replaced by the scoped claim that no `dspark`
speculator ships in `python/sglang/srt/speculative/` at `f63458b5`, since
`docs_new/index.mdx:86,107,108,127` links the 2026-07-06 blog at that pin. The
same over-broad wording had also reached `.agents/oracles/sglang.md`, which has
not landed either and is corrected in place with it.

Commit bodies stay the one carrier that cannot be repaired. Under
`squash_merge_commit_message = PR_BODY` no individual commit body reaches `main`
on a squash in any case, so the pull request body is the correction of record for
`17187f134` and `dadb3d396`.

Three anchor repairs ride along, each verified against the tree rather than
against the previous body. `docs/BENCHMARKS.md:97-98` replaces `:96-97` for the
c1 pair: `:96` is the table separator, `:97` is our row carrying 10.756, `:98` is
the vLLM 0.25.0 row carrying 11.250, identical on this branch and `origin/main`.
The previous body inverted both halves. The 15-second SSE keepalive is now
anchored historically as `serving_utils.h:40 @ 638eba2~1`, because at HEAD
`:40-41` records the default as off and a reader following the old anchor
concluded the argument was wrong. And SGLang's `gguf.py` `get_quant_method` spans
`:105-125` with its `return None` at `:125`, not `:106-124`.

Two measurement corrections finish it. vLLM's `LoadFormats` `Literal` runs
`:33-49` and the loader dict `:50-66`, off by one at the seam. And the DSpark
blog precedes the pinned tree by three days rather than three weeks, because
`f63458b5` is dated 2026-07-09 while `pinned_on = 2026-07-27` is the recording
date.

Section 3 also stops understating our own position. It called the TPOT and ITL
deficit a reproduced open gap "not explained away", while
`.agents/sglang-matrix.md:210-224` records a same-day follow-up,
`CLAIM-DECODE-LATENCY-EXPLORE`, that confirmed the cause is batch composition
rather than per-token kernel cost and named the knob. The reconciliation states
the attribution and the knob without overstating either: the shipped default
stays throughput-oriented, so at the configuration that table measured the
deficit is real and stands, and what a latency-oriented default costs elsewhere
is unmeasured.

Records and spec only. Nothing is measured and no host was touched.

FOLLOWING_AGENTS_PROTOCOL

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

Clean merge, no conflicted paths. `main` gained the VT-FP8-SHARED-SEAM refactor
(#940, #973), which touches product code this branch does not: this row carries
records and one spec only. No keyed record needed a scoped re-apply.

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [Claude Code]
@localai-bot
localai-bot merged commit e770a39 into main Aug 16, 2026
24 of 26 checks passed
@localai-bot
localai-bot deleted the row/BENCH-QWEN38-27B-FOUR-WAY branch August 16, 2026 08:44
localai-bot pushed a commit that referenced this pull request Aug 16, 2026
…RES.md by key

`origin/main` advanced to `e770a392f` (#982) while this row was in review.

`docs/FEATURES.md` is a KEYED RECORD and both sides edited it, so the automatic
three-way merge is not accepted on its own word. AGENTS.md asks for the target
version plus the scoped edit reapplied, with unrelated keys proven byte-for-byte
equal, and that is what was checked: **189 unrelated keys compare byte-for-byte
equal**, this row's new `LTX-2.5 DFR base + generated keyframe slots` row is
present and is not a duplicate of anything on the target, and the LTX-2.5 DiT row
differs from the target by exactly the six characters this row owns — `GENkf/`
removed from `GENkf/DiffVAE/ref refused`, because generated keyframes are now
served.

The verifier carries its own floor: a comparison of fewer than 50 unrelated keys
fails, because a parser that matched almost nothing would otherwise report a pass
over an empty set.

`scripts/check-agent-record.py` also moved on the target. The full gate is re-run
on the merged tree rather than inherited, because a clean merge is not a building
merge and because a changed checker is a changed 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 16, 2026
…# Now`

The `## Now` line said "landed on `main`", which it is not: it is open as
#991, measured on both gate hosts, awaiting a fresh review and an operator
merge. A `## Now` that anticipates its own landing is exactly the record
that cannot be trusted afterwards -- the whole point of the line is that a
reader learns the position without asking anyone.

It also names the only red lanes and why they are not this row's:
`windows-msvc-cpu`/`windows-msvc-vulkan` fail at the identical step on
#988 and #982, which share no code with this change, so the arm is
matched rather than assumed; the cause is #968 under #584's PR-only lane
and a fix is already open as #983.

Issue #960.

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 16, 2026
Pinned SHA, per #841. main moved four commits while this row was
measuring and re-landing: #993, #982, #988 and #992. One of them is
directly relevant -- #988 split #810's A2-Q into A2-Q1 and A2-Q2, and
A2-Q1 is the unit this row exists to unblock -- and none of them touch
the fp8 quant registration, the CUDA source list, or either checker this
branch edits.

`.agents/issue-index.md` is the only keyed record both sides wrote.
Verified afterwards that origin/main's copy is a strict PREFIX of the
merged file and that only this branch's own two rows follow it, which is
what append-only means and what a clean-but-wrong interleave would break.

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 16, 2026
…nostic

"Known-red" is not a measurement, and this file was carrying it as one.
The two `windows-msvc-*` jobs now carry the diagnostic that failed them:
`warning C4244: '=': conversion from 'const double' to 'float'`, raised
inside MSVC's own `<vector>` while compiling
`src/vllm/multimodal/ltx2_video.cpp`, promoted to `error C2220` by `/WX`.
That is #968, its fix is already open as #983, and `main` carries no
baseline for those jobs because #584 makes them PR-only. The matched arm
is recorded too: #988 and #982 fail at the identical step and share no
file with this row.

Also records the post-merge full gate: 491/491 rather than 489/489,
because `3ce1cf7c7` adds two suites. Quoting the old number after a merge
that changed the denominator would be a stale measurement presented as a
current one.

Issue #960.

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