Parallel roadmap coordination

August 18, 2026 · View on GitHub

This is the operational control plane for parallel work. The top-level roadmap defines ordering, and each linked area matrix defines the exhaustive row inventory. This document controls who is doing what now.

Canonical hierarchy

LevelPurposeCanonical location
PortfolioOrdered big areas and release blocksroadmap_v1.md
Area inventoryExhaustive, stable row IDs and support status*-matrix.md files linked by the roadmap
Spike/specUpstream/dependency analysis, tests, gates, decompositionspecs/
Active claimAgent, worktree, branch, files, dependencies, hardwareThis document
EvidenceCode/test anchors, oracle and benchmark resultsArea row + parity-ledger.md
Completed blockClosed execution plan/reportcompleted/

The hierarchy is one-way. A portfolio row links area rows; area rows link their spikes and evidence. Do not copy detailed status prose upward.

Row contract

Every claimable area-table row must expose these semantic fields (additional area-specific columns and different ordering are allowed). Generated model and quantization tables may combine Our code with Tests/evidence in one exact cell; every other matrix keeps them separate. A table-level upstream pin may qualify dense registry rows only when each row also names its upstream method/type/target. Summary/roll-up tables must say non-claimable and contain no stable work IDs.

Required fieldRule
IDStable and never reused; use area prefixes (ENG, MODEL, QUANT, KERNEL, BACKEND)
ItemOne independently gateable capability or explicit row block
UpstreamPinned vLLM file:line; include dependency source when it owns execution
Our codeExact implementation file:line, or - when absent; path and line must resolve inside a source/build/tool path class
Tests/evidenceExact tests/goldens/ledger evidence, or - when absent; path and line must resolve inside a test/CI/ledger class, and a combined code/tests cell must contain both classes
Spike/specReal .agents/specs/<slug>.md once state is READY or later
StateOne value from workflow.md
OwnerActive claim ID, or -; completed rows name the closing commit

DONE with -, vague prose, a directory-only pointer, or a dangling spec link is invalid. Its evidence cell links an exact parity-ledger line, and its owner cell is the hexadecimal closing commit; the checker verifies that commit exists in Git history. Split a row when supported and unsupported modes would otherwise be hidden behind one status. Quantization rows, for example, distinguish format recognition, dequantization, compute-in-quant, backend kernels, and e2e gates.

Spike gate

Every item is spiked, including ports that look mechanical. A spike is accepted only when its spec has these sections:

SectionRequired content
ScopeIn/out, exact row IDs, supported modes and dispatch behavior
Upstream chainPinned vLLM and dependency file:line; runtime trace plan where dispatch is dynamic
Our baselineExisting code/test anchors and honest gaps
Port mapUpstream file -> local file, including thin adapters and deviations
Tests to portUpstream test modules/cases, local tier, skip reason if initially blocked
GatesCorrectness, e2e, performance, memory, architectures/backends, exact commands
DependenciesOther row IDs, toolchain, models, hardware, data, licenses
Work breakdownSmall non-overlapping implementation rows suitable for parallel claims
Risks/decisionsProduct calls only; vLLM-defined behavior is not reopened

Spike agents are read-only outside their spec and matrix/coordination rows. A spike can split or reorder work by recording the dependency, but cannot mark an implementation supported.

Claim protocol

  1. Pick the highest-priority READY row whose dependencies are DONE.
  2. For coordinated parallel work, add one active-claim row below before editing. List every file or narrow directory owned; overlapping ownership requires an explicit lead claim. A single-agent ad hoc task does not create a claim unless it is taking ownership of a roadmap row.
  3. For every parallel claim, create an isolated worktree and branch named for the stable row ID. Never share a build directory between claims. Single-agent branch/worktree behavior follows developer-preferences.md.
  4. Update the claim after spike, implementation, and gating handoffs. A stalled agent releases its claim; it does not keep an invisible reservation.
  5. Return commit SHA, exact commands/results, remaining gaps, and every status file that must change. The integrating agent checks the row contract.
  6. Integrate only after the matrix, roadmap, porting inventory, ledger, state, README.md, and docs/BENCHMARKS.md all agree. README and BENCHMARKS are mandatory at every feature/iteration checkpoint, including pending, failed, and void stages rather than only externally visible closure. Merge/push/PR behavior follows developer-preferences.md; this control plane grants no remote authority.

GPU scheduling

The universal invariant is exclusive, demonstrably uncontended benchmark and profile execution. developer-preferences.md selects the local lock command, device-idleness probe, shared-host rules, and any service-quiescence procedure. Do not use an infrastructure-specific lock or manage a service merely because a historical entry names it.

On Ettore's DGX profile, ${GPU_LOCK} is $HOME/gpu.lock — that is the value .env.example ships and the value every script in this repo falls back to, so a .env naming anything else serialises with nobody (#777). The detailed shared-host procedure lives at /home/mudler/_git/skills/sharing-a-gpu-with-flock/SKILL.md. That flock is an inter-agent mutex because the LocalAI worker is normally stopped. Other developers use their selected policy. A sole GPU owner may run correctness work lock-free after verifying the GPU is idle when preferences permit it; benchmark/A-B validity still requires an uncontended GPU either way.

WorkLock rule
Compile, sync files, inspect source, ps/nvidia-smiNo GPU lock needed
CUDA tests, model load, server, benchmark, nsys/ncu${GPU_LOCK} <whole job> when the selected policy requires it
A/B or competitor seriesOne selected exclusion mechanism around every arm and trace; interleaved runs are void
Long background runUse the preference-selected durable lock/job mechanism
TimeoutInspect the selected lock holder; never kill an unowned PID

Each parallel claim records its execution directory and planned exclusion window. One server at a time owns the selected benchmark device. Results without the selected contention proof for their entire run are discarded.

Active claims

New claims go in claims/, one file per claim, named for the claim ID (claims/CLAIM-<SOMETHING>.md). scripts/check-agent-record.py reads that directory AND the table below, so both are equally valid to the gate and nothing here had to be migrated — rows leave as their claims close, and the table empties on its own.

The table is insert-at-one-anchor: every concurrent claim appends at the same line, which made this the largest single conflict source in the repository (8 of the 16 conflicting open PRs at origin/main d928e2c3, six of them one author's sequential ROCm GDN stack whose only conflict was this file). A claim in its own file has one writer and cannot collide — the shape .agents/specs/ already has, which is why specs took zero conflicts. See AGENTS.md §"Records" and specs/retire-shared-record-surfaces.md (issue #364).

Prompt-logprob runner source (SAMPLE-PROMPT-LOGPROBS, 2026-08-09, CLAIM-SAMPLE-PROMPT-LOGPROBS-W1). Claude Code (claude-opus-5), isolated worktree /home/mudler/_git/vllm.cpp-prompt-logprobs, branch row/SAMPLE-PROMPT-LOGPROBS, opened on origin/main bd6b3936, rebased onto 8a6704a2 for the 2026-08-10 review repair and onto e63d11d3 to land. Issue #223, spec prompt-logprobs.md. Scope W1: the runner-side prompt logits source — prepare_inputs row selection, collect_prompt_logprobs, Sampler::compute_prompt_logprobs, the InputBatch::num_prompt_logprobs map, and eight engine-level cases in tests/vllm/v1/test_llm_engine.cpp (§9). NO kernel, NO vt op, NO ABI, NO model file. CPU reference backend only — claims no GPU and takes no benchmark device. Excluded: the OpenAI echo serialization (W2) and #231, both split out.

TRAILER-CONTRACT MISS, recorded by developer decision (2026-08-10). Commits 450a1b69 (the PR-size retirement) and its merge a178f1af reached main in the same minutes that check-commit-trailers.py was tightened on main to require a bare FOLLOWING_AGENTS_PROTOCOL paragraph and an Assisted-by whose agent token carries no space (Claude:claude-opus-5 [ClaudeCode]). Both use the older shape, so commit-protocol-tag is RED for that pushed range and a follow-up commit cannot repair it, because CI checks the pushed range itself.

A corrected single commit with the identical tree was prepared and preflighted green; the developer chose NOT to rewrite shared history for it, so the red stands and this note is the record. Every earlier commit of this session that is already on main carries the same older shape for the same reason: it was compliant when written.

Separately, and not this claim's to fix: the tightened checker also fails commits that are not ours (1078355d carries a forbidden Co-authored-by), so the tightening left older history non-compliant across the repository.

PROTOCOL MISS on CLAIM-SPEC-DSPARK, recorded not waived (2026-08-10). PR #211 was merged at developer instruction while its CI was still pending; the run finished 11 green (including cuda-fat-build, both sanitizers and all three build-test lanes) and 3 red. Reproduced locally against the merged range:

  • pr-sizeproduct changes total 2261 lines against a 900-line budget, and scripts/check-public-doc-tables.py was changed (the STATUS ratchet re-pin) without accompanying mutation evidence in tests/scripts/test_check_public_doc_tables.py. POL-PR-SIZE wanted this split into its slices (spike / W1 / W2+W3 / W4+W5 / the engine fix / the benchmarks) or one exact waiver. It got neither. The slices existed as separate commits, so splitting was available and was not taken.
  • agent-record and commit-protocol-tag — both PASS when re-run against current main (agent record OK: ENGINE=146 MODEL=361 ..., OK: commit trailer contract), so those two were stale-head or PR-base artifacts, not content faults. Verified rather than assumed.

No retroactive waiver is being written: the budget breach is real and the honest record of it is this note. The lesson for the next row is that a 6-slice claim should land as 6 PRs.

AsyncLLM serving-path metric wiring (SERVE-METRICS, 2026-08-10, CLAIM-SERVE-METRICS-ASYNC). Claude Code (claude-opus-5), helper role, isolated worktree /home/mudler/_git/vllm.cpp-metrics-async, branch row/SERVE-METRICS-ASYNC, rebased forward as main landed (base abdc3a26 at creation, 488fca89 at push). PUSHED e8a7624f, PR #297. Issue #277, spec .agents/specs/async-metrics.md. Closes the ROAD-V1-C8 residual "AsyncLLM serving-path metric wiring": the production server serves /metrics off AsyncLLM, whose output handler folds nothing into the PrometheusStatLogger, so a real deployment scrapes a well-formed catalog whose series never move. Owns src/vllm/v1/engine/async_llm.cpp, include/vllm/v1/engine/async_llm.h, the step_with_batch_queue stat stamp in src/vllm/v1/engine/core.cpp, the recorder mutex in {include,src}/vllm/v1/metrics/loggers.{h,cpp}, the async attach in src/vllm/entrypoints/openai/server_main.cpp, the stale residual comments in {include,src}/vllm/entrypoints/openai/api_server.{h,cpp}, new cases in tests/vllm/v1/test_async_llm.cpp, and the SERVE-METRICS / SERVE-RESPONSE-METRICS records. EXCLUDED and untouched: the config-gated metric families (spec-decode / kv-connector / mm / LoRA), which are the sibling residual on the same row. CPU-only gate; no GPU, no model, no checkpoint.

DSpark speculative decoding (SPEC-DSPARK, 2026-08-09, CLAIM-SPEC-DSPARK). Claude Code (opus-5), helper role, isolated worktree /home/mudler/_git/vllm.cpp-spec-dspark, branch row/SPEC-DSPARK, base origin/main bc6e3d72. NOT PUSHED, no PR yet (remote step PENDING developer authority). Developer goal 2026-08-09: "a full DSpark implementation in vllm.cpp, based on vLLM". This entry covers the SPIKE only — new .agents/specs/dspark-spec-decode.md plus the SPEC-DSPARK engine-matrix row, the feature-matrix §8 row and the superseded grounding-note header. NO src/, include/, tests/ or examples/ change in the spike commit. Slice plan W1 config → W2 Markov head/draft model → W3 loader (native + Speculators) → W4 speculator (anchor layout + sequential Markov sampling) → W5 runner/one-surface → W6 gates; W1–W4 are CPU-gateable. PENDING developer authority: checkpoint downloads (2.79–8.80 GB), dgx GPU time, and the push/draft-PR. First blocker to clear is R1 — prove the pinned oracle 555967922 actually RUNS DSpark (it forces the V2 runner, which our oracle recipes have never exercised); if it cannot, the row is oracle-blocked and that is recorded, not worked around.

Vulkan dependency-driven barriers (BACKEND-VULKAN, 2026-08-09, CLAIM-VULKAN-FULL-1). Claude Code (opus-5), isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-aab93052e5a3c7025, branch row/BACKEND-VULKAN-BARRIERS, base origin/main c1716fd0 (rebased forward; the commits main gained carry NO src/, examples/ or gate-test change, so the GB10 evidence stands). NOT PUSHED, no PR, by instruction. Scope: the batched dispatch path's barrier policy in src/vt/vulkan/vulkan_context.{h,cpp}, the SPIR-V binding-access reflection in scripts/gen-vulkan-spirv.py and its two generated artifacts, two new cases in tests/vt/test_vulkan_backend.cpp, and one docs/ENVIRONMENT.md row. NO kernel, shader, model, scheduler or op-table change. The row's headline result is that the llama.cpp Vulkan decode gate is ALREADY MET on current main (4.36 vs 4.35, 7 clean legs) independently of the lever; VT_VULKAN_SMART_BARRIERS is implemented, GB10-gated in 12 combinations, and ships DEFAULT-OFF pending an operator re-measurement. dgx build/gate roots dgx.casa:~/vkbase (main control) and ~/vkbar (this branch), both -DVLLM_CPP_VULKAN=ON, every GPU stage under flock $HOME/gpu.lock.

Server binary release W1-W13 (ENG-RELEASE-BINARIES, 2026-08-09, CLAIM-ENG-RELEASE-BINARIES-W1-W13). Codex (GPT-5), isolated worktree Tenstorrent Blackhole backend spike (BACKEND-TENSTORRENT, 2026-08-09, CLAIM-BACKEND-TENSTORRENT-SPIKE). Claude Code (claude-sonnet-5), isolated worktree /home/lu_zero/Sources/vllmcpp-tenstorrent, branch row/BACKEND-TENSTORRENT, base origin/main 7534da65. Records/spec-only claim proposing a new extension platform (no upstream vLLM equivalent, same class as Metal/Vulkan): DeviceType::kTENSTORRENT as a thin vt::Backend adapter over Tenstorrent's own ttnn C++ tensor-op library rather than hand-written Tensix kernels, mirroring the Metal/MLX decision (E1). Owns only NEW .agents/specs/tenstorrent-backend.md, the new BACKEND-TENSTORRENT backend-matrix row, its porting-inventory.md §9 item 15, and this claim. No code, kernel, build, GPU, model, or service change is in scope. No hardware available in this session to validate anything beyond reading the ttnn C++ API and confirming its CMake package exports (TT-NN/TT-Metalium) resolve externally. Draft PR #197 is the claim, pushed with explicit developer authorization (no Tenstorrent Blackhole backend, W0 skeleton (BACKEND-TENSTORRENT, 2026-08-09, CLAIM-BACKEND-TENSTORRENT-SPIKE). Claude Code (claude-sonnet-5), isolated worktree /home/lu_zero/Sources/vllmcpp-tenstorrent, branch row/BACKEND-TENSTORRENT, base origin/main 7534da65. Real Blackhole hardware is available to this session throughout (a P150 board, used all session for unrelated tt-metal/Gentoo work) — updating the claim's earlier "no hardware available" framing, which was never accurate.

Proposes and lands a new extension platform (no upstream vLLM equivalent, same class as Metal/Vulkan): DeviceType::kTENSTORRENT as a thin vt::Backend adapter over Tenstorrent's own ttnn C++ tensor-op library rather than hand-written Tensix kernels, mirroring the Metal/MLX decision (E1). The design's one open risk (vt::Tensor/ttnn::Tensor storage mismatch) was hands-on resolved first via a standalone program outside this repo's build (Tensor::from_vector uploads, ttnn::operations::matmul::matmul, to_vector reads back — max_abs_diff 0.03375 vs max_ref_mag 4.14 against a host FP32 reference, bf16 tolerance), then landed for real behind the actual vt::Backend/RegisterOp seam: vt::tenstorrent::Backend, a Platform registrar, and ONE op (kMatmul, F32/rank-2 only) — tests/vt/test_tenstorrent_backend.cpp is 3/3 cases, 8/8 assertions, PASS on the real card. Two real bugs surfaced and fixed in the same pass: an nlohmann-json ABI-version collision between vllm.cpp's own vendored copy and tt-metal's (isolated tenstorrent_ops.cpp as its own OBJECT library, same pattern vllm_rocm_platform_syntax_check already uses), and a process-exit segfault from a plain static shared_ptr<MeshDevice>'s destructor running during static teardown (fixed by deliberately leaking the device — see the spec and tenstorrent_device.cpp for both). Owns .agents/specs/ tenstorrent-backend.md, the BACKEND-TENSTORRENT backend-matrix row (now ACTIVE), porting-inventory.md §9 item 15, include/vt/device.h, src/vllm/platforms/{platform,tenstorrent}.cpp, src/vt/tenstorrent/, tests/vt/test_tenstorrent_backend.cpp, the VLLM_CPP_TENSTORRENT CMake wiring, and this claim. Draft PR #197 is the claim, pushed with explicit developer authorization each time (no .agents/developer-preferences.md exists for this session; the example's safe default is ask-first for push/PR, and it was asked every time).

ACTIVE means a gated skeleton, not a supported backend — same caveat Metal/Vulkan's own ACTIVE status carries. Not yet reviewed by a maintainer. Quant/MoE/graph-capture/most ops are unregistered; every op call pays a host round-trip (tenstorrent_backend.cpp's SCOPE note); no model runs.

Server binary release manifest W5 (ENG-RELEASE-BINARIES, 2026-08-08, CLAIM-ENG-RELEASE-BINARIES-W5). Codex (GPT-5), isolated worktree /home/mudler/_git/vllm.cpp-release-binaries, branch row/ENG-RELEASE-BINARIES, base origin/main 81291a89. W5 merged in PR #141 at bd20da30; developer direction binds every remaining W1-W13 checkpoint to the single draft PR #196. W6's clean CPU gate is GREEN: the canonical static-core binary installs through component vllm-server; two package runs produce identical archive bytes; an empty extraction runs --help without a dynamic libvllm; and the existing library/header install remains present. Required W1-W11/W13 implementation is now complete in the same draft PR: ten-SM gencode/AOT, adaptive CPU tiers, extracted-archive and supply-chain gates, least-privilege immutable handoff, eight primary bundles, generated indexes, attestation, and exact-file publication. Local CPU/Vulkan/mutation gates are green. The row remains ACTIVE; hosted ten-SM completion, the full eight-tuple dry run, matching-hardware evidence, merge, and tagged publication remain pending. W12 stays optional/non-primary.

CPU grouped keep-quant GEMM activation-dtype P0 (QUANT-GGUF-CIQ-GEMM, 2026-08-06, CLAIM-QUANT-GGUF-CIQ-GROUPED-DTYPE). Claude Code (claude-opus-5), isolated worktree /home/mudler/_git/vllmcpp-ciq-grouped, branch row/QUANT-GGUF-CIQ-GEMM-grouped-act-dtype, base main 1e4d159b. Fixes the CPU provider of kMatmulBTQuantGrouped, which addressed the activation and output row views as float*/kF32 regardless of dtype and so mis-strode and mis-decoded every bf16/f16 activation — the P0 that made CPU-only test_qwen36_gguf_engine emit 16/16 token-0 from b4f5610a (bisect-confirmed) onward. Owns src/vt/cpu/cpu_quant_gemm.cpp, NEW cases in tests/vt/test_ops_quant_dot.cpp, the QUANT-GGUF-CIQ-GEMM row, this claim, the docs/STATUS.md/docs/BENCHMARKS.md/docs/FEATURES.md checkpoint (including the STATUS ratchet, LOWERED not raised), .agents/benchmark-record.md, .agents/NOW.md and append-only .agents/state.md. CPU-ONLY by developer instruction: no GPU regression suite, no SACRED set, no CUDA test or benchmark was run. GPU-host discipline: every dgx step (CPU build + the 17 GB/25 GB model runs) ran inside ONE flock /tmp/gpu hold, serially, never a build concurrent with a model run.

Interactive CLI chat/complete spike (SERVE-CLI-CHAT, 2026-08-01, CLAIM-SERVE-CLI-CHAT-SPIKE). Codex (GPT-5), isolated worktree /home/mudler/.cache/sdd/localai-org-maint-bot-vllm.cpp/codex-serve-cli-chat-spike, branch codex/serve-cli-chat-spike, base upstream/main 1448e981. CPU-only, records/spec checkpoint: inventory the pinned vLLM CLI surface and the local CLI/engine/serving seams, define exact interactive-chat and one-shot-complete contracts, ported-test inventory, error/exit behavior, and row-sized follow-on leaves. Owns only NEW .agents/specs/cli-chat-complete.md, the SERVE-CLI-CHAT row, this claim, the matching roadmap/status checkpoint text, docs/BENCHMARKS.md, .agents/parity-ledger.md, and append-only .agents/state.md. No source, header, CMake, test, model, kernel, generated fixture, or GPU/model-download change; verification is the CPU record/doc checker suite. The row and open-PR list were unclaimed at selection time.

Canonical DONE-owner reachability repair (KV-PREFIX-CACHE, SAMPLE-LOGPROBS, SPEC-DFLASH, MODEL-SPEC-qwen3-dflash-dflash-qwen3-for-causal-lm, KERNEL-ATTN-DFLASH-BLOCK, KERNEL-ATTN-DFLASH-PAGED-BLOCK, 2026-07-31, CLAIM-RECORD-DONE-OWNER-REPAIR). Codex (GPT-5), isolated worktree /home/mudler/.cache/sdd/localai-org-maint-bot-vllm.cpp/codex-cpu-regression-fix, branch codex/cpu-regression-fix, base upstream/main 0d014016. CPU-only governance repair: scripts/check-agent-record.py currently rejects six DONE rows because their three owner SHAs are not Git objects; replace them with the reachable commits that actually introduced the binding DONE closures. Owns only those six Owner cells, this claim, the minimal append-only state entry, and the required no-lifecycle-change checkpoint notes in docs/STATUS.md and docs/BENCHMARKS.md. No source, test, build, lifecycle, benchmark, README, roadmap, ledger, or support-claim change; verification is the agent-record checker and its mutation suite plus the remaining record/document checkers. No GPU, model, or compiler is required.

Stable C ABI contract spike (SERVE-C-ABI, 2026-07-31, CLAIM-SERVE-C-ABI-SPIKE). Codex (GPT-5), isolated worktree .worktrees/serve-c-abi-spike, branch codex/serve-c-abi-spike, base upstream/main a10bd428. CPU-only records/spec pass: inventory the original packaging layer, its ABI/versioning/ownership/error/concurrency contracts, exact implementation and test anchors, and a row-sized follow-on breakdown. Owns only NEW .agents/specs/c-api-library.md plus the SERVE-C-ABI row, this claim, roadmap/status checkpoint text, README.md, docs/BENCHMARKS.md, .agents/parity-ledger.md, and append-only .agents/state.md. No source, header, CMake, test, model, kernel, or generated fixture changes; verification is the existing CPU C/C++/dlopen/export suite plus all record checkers. The row is unclaimed at base; no GPU or model download is required.

CUDA keep-quant GGUF k-quant GEMM — the kCUDA provider for kMatmulBTQuant (2026-07-29, CLAIM-CUDA-KEEPQUANT-GEMM, LANDED + GB10-GATED, NOT pushed; FULL SHA reported to caller). Base main HEAD 2191f771; isolated worktree /home/mudler/_git/vllm.cpp.wt/feat-cuda-keepquant-gemm, branch feat-cuda-keepquant-gemm. Advances the NEW kernel row KERNEL-QUANT-CIQ-GEMM-CUDA (ACTIVE) and the CUDA compute cell of the DeepSeek-V4 keep-quant encodings. The FIRST CUDA keep-quant GEMM for any GGUF k-quant: MMVQ-style dequant-in-kernel dot (quantize the activation to Q8_K on-GPU, integer-dot against the compressed Q8_K-family weight blocks kept COMPRESSED in the unified pool), a 1:1 port of the landed CPU keep-quant oracle (cpu_quant_dot.cpp/cpu_quant_act.cpp/cpu_quant_gemm.cpp). Registering it flips GgufQuantComputeAvailable TRUE on kCUDA so DeepSeek-V4's routed experts/MLA GEMMs dispatch to the GPU instead of the unified-memory CPU reference tier (experts move OFF the 20 ARM cores). Owns ONLY (additive, no existing file's behavior changed): NEW src/vt/cuda/cuda_quant_dot.cu, NEW src/vt/cuda/cuda_quant_iq_tables.cuh, NEW tests/vt/test_cuda_quant_dot.cpp, their two CMake registration lines (CMakeLists.txt CUDA source list + tests/CMakeLists.txt); the new KERNEL-QUANT-CIQ-GEMM-CUDA row + the check-agent-record.py KERNEL 44→45 bump; the DeepSeek-V4 keep-quant CUDA-compute notes in quantization-matrix.md; and the record surfaces (this claim, roadmap, docs/STATUS, docs/BENCHMARKS, parity-ledger, state, porting-inventory §9). NON-COLLISION: the CPU keep-quant reference (the oracle) is UNTOUCHED — this is an additive kCUDA provider. The .cu compiles only under VLLM_CPP_CUDA, so the CPU build is byte-identical. GATE (DGX GB10 sm_121, flock $HOME/gpu.lock, serialized behind the live a35f6be0/dflash lane — its containers/worktree untouched): test_cuda_quant_dot 2/2 cases · 92401/92401 assertions GREEN vs the CPU oracle (NMSE ≤1e-6, integer core bit-exact) + f64 dequant (NMSE ≤5e-4) over the 7 Q8_K types × M{1,4,32,512} × N{1,7,16}; compute-sanitizer memcheck 0 errors; RED-first PROVEN (IQ2 0.1250.135 fails 24 assertions, revert restores 92401, source md5 9890f7e1…). DeepSeek-V4 experts-on-GPU tok/s is the FOLLOW-ON (the benchmark lane picks it up). DGX left as found (work dir removed). SPEC-DFLASH-GGUF GD9+GD10 - axis-A accept-count RCA, CLOSED (2026-07-29, CLAIM-DFLASH-GGUF-ACCEPT-RCA, LANDED + CPU-GATED + GPU-GATED, RELEASED, NOT pushed). Base main d319b23f (merged into feat/capi-abi-v9-engine-config); worktree /home/mudler/_git/vllm.cpp-abi-v9; CPU Release build plus a production-configured dgx.casa GB10 CUDA build at ~/work/dflash-final/src. Row SPEC-DFLASH-GGUF (engine-matrix), which moves PARTIAL -> DONE for correctness in the closing commit. Owned tests/vllm/models/test_qwen3_dflash_gguf.cpp (one appended case), bar (a) of the axis-A case in tests/parity/test_qwen27_dflash_spec_decode.cpp, the acceptance-telemetry block of src/vllm/v1/worker/gpu/runner.cpp::sample_tokens_with_rejection (an off-by-default VT_SPEC_TRACE trace, no behaviour change), and this row's record surfaces. GD9 established in weight space that the axis-A accept-count RED is ordinary Q4_K_M cost and not a defect. GD10 CONFIRMED IT END TO END and the hardware residual is DISCHARGED: on the GB10 production build (proven three ways, SACRED 235/235) the BF16 GGUF draft reads exactly 47/96, the safetensors draft's own number, at 48 tokens - reproduced 2 of 2 - against Q4_K_M's 46/112 on the same binary in the same flock $HOME/gpu.lock series on an idle box. Bar (a) is consequently split EXACT (cross-format) / BANDED (cross-quantization) with the band derived from the measurement and mutation-proved non-vacuous, and axis B is broadened from one prompt to three. Gate 6 (speed) stays PENDING BY DESIGN and is not owed. GPU exclusion held for the whole series; no contended number published. Claim RELEASED.

xgrammar structured-output backend — W0 spike + W1 CPU brick (2026-07-29, CLAIM-TOOLS-XGRAMMAR, LANDED + CPU-GATED, NOT pushed; FULL SHA reported to caller). Base main HEAD 6d54f242; isolated worktree /home/mudler/_git/vllm.cpp-xgrammar, branch tools-xgrammar; CPU-only Release -Werror (build-cpu, -DVLLM_CPP_CUDA=OFF); DGX offline, not needed (host-side masking). Advances row TOOLS-XGRAMMAR INVENTORIEDACTIVE. W0: spec .agents/specs/xgrammar-backend.md — full spike over vLLM's xgrammar backend (the StructuredOutputBackend interface, the six grammar input modes, auto→ xgrammar selection + fallbacks, the token-bitmask application, exact files to port, upstream tests, gates, W-breakdown), incl. the §9 DECISION: mirror xgrammar's algorithm PORTABLY (reuse the native pushdown-FSM/trie matcher), do NOT vendor the mlc-ai/xgrammar C++ library. W1: XgrammarStructuredOutputBackend behind the shared seam + the xgrammar-faithful JSON-schema→EBNF converter (xgrammar_json_schema.{h,cpp}, SEMANTICS from json_schema_converter.cc @ a32ac89) preserving property DECLARATION order + any_whitespace + basic_* verbatim; JSON + json_object compile→bitmask; ResolveStructuredOutputBackend + MakeStructuredOutputBackendFactory (auto→xgrammar). Gate tests/vllm/v1/structured_output/test_backend_xgrammar.cpp 6/6 (39 asserts), RED-first proven (native key-sort admits a after {", which the xgrammar declaration-order grammar forbids; break→3 cases fail, revert→green). No regression: test_backend_native 4878, test_structured_output 90, test_json_schema_to_gbnf 656 unchanged. Clean CPU -Wall -Wextra -Werror 0-warn (both new TUs recompiled from scratch). Owns ONLY (all NEW except the two CMake list edits + the records): include/vllm/v1/structured_output/ backend_xgrammar.h, src/vllm/v1/structured_output/backend_xgrammar.cpp, include/vllm/v1/structured_output/xgrammar_json_schema.h, src/vllm/v1/structured_output/xgrammar_json_schema.cpp, tests/vllm/v1/structured_output/test_backend_xgrammar.cpp, CMakeLists.txt + tests/CMakeLists.txt (append-only), and the records (engine-matrix TOOLS-XGRAMMAR, feature-matrix, porting-inventory §9, roadmap gap #4, STATUS, BENCHMARKS, this claim, ledger, state). Record checkers rc=0. Residuals (spec §Work breakdown): optional object properties + strict-compact separators (W2); the has_xgrammar_unsupported_json_features guard + validate_xgrammar_grammar feeding the auto fallback + model_loader.cpp production wiring (W2); xgrammar-specific regex + structural-tag parity (W3); GPU oracle parity (W4, DGX-blocked). Did NOT touch README, Metal/demo, SACRED/apex/darwin, or model/kernel source. Not pushed.

--prefix-match-unit (fine-grained prefix-cache matching unit) — W0 spike + W1 resolver (2026-07-28, CLAIM-PREFIX-MATCH-UNIT, LANDED + CPU-GATED, NOT pushed; FULL SHA reported to caller). Base main HEAD 646add3c; isolated worktree off it; branch feat/prefix-match-unit; CPU-only Release -Werror build. Row KV-PREFIX-MATCH-UNIT (engine-matrix). Ports the 0.26-new prefix_match_unit/--prefix-match-unit knob semantics: resolve_kv_cache_block_sizes (vLLM kv_cache_utils.py:626-688) computing (scheduler_block_size, hash_block_size), where hash_block_size is the matching unit (prefix_match_unit if set else gcd(group_block_sizes)). W1 = resolver + RED-first unit tests (default gcd != =16 override; hasher granularity coarse 2 vs fine 4). Owns ONLY (all NEW except the two shared-TU appends): .agents/specs/prefix-match-unit.md (NEW), tests/vllm/v1/test_prefix_match_unit.cpp (NEW), append-only additions to src/vllm/v1/core/kv_cache_utils.cpp + include/vllm/v1/core/kv_cache_utils.h (a NEW free function + decl, no existing symbol touched), one line in tests/CMakeLists.txt, this note + the KV-PREFIX-MATCH-UNIT engine-matrix row + feature-matrix.md row + roadmap_v1.md + docs/STATUS.md + docs/BENCHMARKS.md (PENDING) + parity-ledger.md + state.md. Touches NO scheduler/block_pool/model_loader/ABI (those are W2/W3, some shared with KV-BLOCK-POOL/CLAIM-KV-PERSISTENCE-LMCACHE — coordinate before touching). No counted checker constant bumped. NO README/Metal. DONE for W0+W1 — records + code committed.

vLLM feature-gap analysis — whole-surface sweep (2026-07-28, CLAIM-FEATURE-GAP-SPIKE, records-only, NOT pushed; FULL SHA reported to caller). Base main HEAD 308c312a; isolated worktree .claude/worktrees/agent-a76b7ae648f3cd7d3; CPU/research only — NO build, NO GPU. Scanned pinned vLLM 555967922 (0.26.0.dev0, /home/mudler/_git/vllm HEAD 5559679) across adapters, spec-decode breadth, the quant registry, structured-output backends, pooling tasks, the OpenAI serving surface, engine/runtime (plugins, sleep/wake, RLHF, offload, loaders), parallelism and platforms; cross-checked every candidate against the five matrices so nothing we already HAVE was re-flagged. Verdict: 8 HIGH, ~19 MED, ~16 LOW gaps. Top HIGH (single-box, common): LoRA runtime + endpoints, the pooling/embedding/rerank task class, AWQ+GPTQ native compute, xgrammar backend, fp8-KV, reasoning parsers. Three MED capabilities have NO stable row (records gaps, recommended for future rows named in the spec): generic draft-model + Medusa spec decode, offline Batch API, plugin system. Confirmed NON-gap: vLLM removed prompt adapters. Owns ONLY records: NEW .agents/specs/vllm-feature-gap-analysis.md, the roadmap feature-gap-sweep section + feature-matrix.md callout/gap rows, this note, docs/STATUS.md, docs/BENCHMARKS.md (NOT-APPLICABLE — spike), parity-ledger.md, state.md. Touches NO src//include//cmake//tests/, no counted-matrix rows (no inventory-count bump), no README/Metal. DONE — records committed. ENGINE MM-FORWARD integration — the architectural unlock (2026-07-28, CLAIM-ENGINE-MM-FORWARD, DONE — committed, NOT pushed; FULL SHA reported to caller). Base local main HEAD 308c312a; isolated worktree .claude/worktrees/agent-a2c400785ae707c48; CPU build here (-DVLLM_CPP_CUDA=OFF)

  • DGX GB10 (dgx.casa) for the CUDA token-exact gate (git-archive transfer, md5 verified, flock $HOME/gpu.lock). What it did. Multimodal now runs through the engine's REGISTERED forward (ModelRegistry::Forward), not only the standalone Qwen3VLGenerateGreedy driver — closing the MM-SERVE-E2E/M2c architectural block named in specs/mm-serving.md. (1) ModelForwardInput gains an ADDITIVE, default-nullopt std::optional<MultiModalForwardInput> mm field (merged inputs_embeds + 3-D MRoPE positions + DeepStack, borrowed handles) — nullopt on every text step ⇒ text forwards never read it ⇒ the shared runner/ModelForwardInput path is byte-identical by construction (model_registry.h). (2) Qwen3VLForConditionalGeneration is REGISTER_VLLM_MODEL-registered (new qwen3_vl_registry.cpp TU); the registered forward folds the M2c forked decode into the per-step contract, calling the SHARED Qwen3VLForwardStepLastLogits (= the standalone VLForwardLastLogits), so registered and standalone paths are numeric- identical. VLGenerateCore refactored to a shared VLStepFn, driven by both the standalone driver AND Qwen3VLGenerateGreedyViaRegistry (the engine mm-forward path the MM-SERVE seam uses). (3) test_model_registry synced to reality (24→27 archs: +Qwen3VL, +pre-existing base-red DeepseekV4/Gemma4 list drift). Gates. CPU text inertness (the RED line, shared-path change): test_runner 16/16, test_scheduler 36/36, test_chat_mm 8/8, test_openai_serving 41/41, test_model_registry 24/24 — all green; nullopt-for-text ⇒ byte-neutral by construction. Clean -Werror full-library build (CPU + CUDA/nvcc on DGX, 0 warnings). GPU engine mm-forward token-exact gate test_qwen3vl_registry_e2e (image→text THROUGH ModelRegistry::Forward == the M2c golden gen_tokens_i32.bin, 32/32 STRICT, RED-first) + M2c standalone cross-check test_qwen3vl_e2e 32/32 (byte-neutral refactor); compute-sanitizer memcheck 0 errors on the registered mm forward. Named residual: the in-runner scheduler-fed tower run (runner.cpp builds the mm field from staged encoder outputs) + the full server /v1/chat/completions GPU e2e + multi-image/video/audio/Gemma-4-image through the registered path. Owns ONLY: specs/mm-serving.md, model/engine/feature matrices, roadmap ROAD-V1-MM, STATUS/ BENCHMARKS/ledger/state, this claim, the code above + the two tests; no README/Metal.

DeepSeek-V4 GGUF benchmark loadability — source-level spike (2026-07-28, CLAIM-DSV4-GGUF-SPIKE, records-only, NOT pushed; FULL SHA reported to caller). Base main HEAD e0b233df; isolated worktree .claude/worktrees/agent-a19a1d1e4dc82becb; CPU/research only — NO build, NO GPU, NO download, NO benchmark; read-only source inspection of the DGX (dgx.casa). Question: can we bench our engine vs vLLM on the SAME unsloth/DeepSeek-V4-Flash-GGUF UD-IQ2_XXS (~91 GB)? VERDICT: NO — blocked on BOTH engines. (Q1) vLLM 0.26 moved GGUF OUT-OF-TREE to vllm-gguf-plugin (vllm-src/docs/features/quantization/gguf.md:9); pin has NO in-tree gguf.py / kernels; the plugin DOES dequant IQ2_XXS (triton/dequantize/iq_quant/iq2_xxs.py + CUDA csrc/gguf/dequantize.cuh). (Q2) DeepseekV4ForCausalLM (deepseek_v4/nvidia/model.py:1333) has NO SupportsQuant/packed_modules_mapping/gguf wiring, DeepSeek absent from plugin's tested models → V4 GGUF unproven/broken in vLLM. (Q3) oracle lacks BOTH the gguf lib AND the plugin; plugin pins gguf>=0.17.0 (reads i-quants) — needs a scratch venv. (Q4) OUR deepseek_v4_registry.cpp:61-64 (and v2:67-69) hard-reject GGUF; our dequant (gguf_dequant.cpp:85-160) lacks IQ2_XXS AND Q2_K (only F32/F16/BF16/Q4_0/Q8_0/Q3_K/Q4_K/Q5_K/Q6_K/NVFP4). Q2_K_XL fallback ALSO blocked (same V4-reject + no Q2_K dequant). DGX / at 99% (~53 GiB free) — 91 GB won't fit. FALLBACK: DeepSeek-V4 apples-to-apples = the NVFP4 2×-Spark vehicle; GGUF vehicle stays llama.cpp-on-card reference (ours-only); true same-GGUF cross-engine number only on a Qwen3/dense k-quant both already load. IQ2_XXS port source = llama.cpp ggml-quants.c dequantize_row_iq2_xxs + iq2xxs_grid. Owns ONLY: specs/deepseek-v4-flash.md (new §GGUF benchmark loadability), the BENCHMARKS/STATUS/ledger/state entries, this claim; no code/README/Metal. All 6 record checkers rc=0. Multimodal SERVING — brick 3/3 MM-SERVE-E2E CPU SEAM BODY LANDED (2026-07-28, CLAIM-MM-SERVING-E2E, DONE — committed, NOT pushed; FULL SHA reported to caller). Base local main HEAD 5aace348; isolated worktree .claude/worktrees/agent-acb1c57738b35ab07; CPU-only (-DVLLM_CPP_CUDA=OFF), no GPU build. What it did. (1) The MultiModalChatFn seam BODY: include/vllm/entrypoints/openai/chat_mm.{h,cpp} BuildMarkerInjectedContent + MakeQwen3VLImageChatFn — messages → inject the image placeholder marker at the mm part position → render the chat template → EncodeWithSpecialTokens (the single <|image_pad|> marker → ONE image_token_id) → RouteImageRgb EXPAND to N=196 image tokens + mm_features. (2) examples/server/main.cpp production wiring: guarded on preprocessor_config.json, construct the Qwen3-VL image processor + set_multimodal_chat_fn(...); text-only models leave the seam unset (byte-identical); the PNG/JPEG codec stays a named residual (raw image/x-raw-rgb accepted). Gate. test_chat_mm 8/8 (100 asserts; +1 seam-body test: real tokenizer + chat template → 196 image tokens + mm_features, RED line = text path renders 0); test_openai_serving +1 (the production seam is invoked on an image request + routed to the engine mm generate overload; text-only never touches it; streaming+mm rejected). Clean -Werror library + server build (0 warn). Residual MM-SERVE-E2E GPU forward — ARCHITECTURALLY BLOCKED (not box contention): the engine model runner has no mm forward — ModelForwardInput (model_registry.h:142) has no vision field; runner.cpp ignores Request.mm_features; Qwen3-VL is unregistered (REGISTER_VLLM_MODEL absent); the M2c Qwen3VLGenerateGreedy (qwen3_vl.cpp:502) is a standalone driver outside ModelRegistry::Forward. Fold-into-engine recipe (add a vision-embed field → runner runs the tower via the encoder cache + merge + MRoPE/DeepStack → register the arch → dgx test_openai_serving_chat_mm_e2e.cpp token-exact vs the M2c golden) is in specs/mm-serving.md. DGX dgx.casa: checkpoint cached, disk 99% (53G), not built. Owns ONLY: chat_mm.{h,cpp}, examples/server/main.cpp, tests/.../test_chat_mm.cpp + test_serving.cpp, and the records below. Does NOT touch README/Metal (concurrent session owns them; STATUS flags the README line).

Kimi K3 W0 SCOPE — DERIVE-AND-SHIP (2026-07-28, CLAIM-KIMI-K3-SCOPE, records-only, NOT pushed; FULL SHA reported to caller). Base main HEAD df18ca91; isolated worktree .claude/worktrees/agent-affb2ae9cfb0ca879; CPU-only, NO build, NO GPU, NO download. Scopes KimiK3ForConditionalGeneration (RELEASED 2026-07-27, beyond the pin 555967922) from the HF config.json + its literal text backbone KimiLinearForCausalLM (registered registry.py:140). VERDICT: HEAVY REUSE — K3 text = the pinned Kimi-Linear KDA+MLA+MoE hybrid massively scaled (H=7168, L=93 = 69 KDA + 24 MLA, 896 experts/top-16/2 shared, DeepSeek-V3 MLA geometry); reuses our landed GDN (=KDA parent), DeepSeek MLA, DeepSeek MoE, and the Qwen3.6-35B GDN-hybrid-MoE skeleton. NET-NEW = the KDA kernel delta (shared with the Kimi-Linear row), MXFP4 (compressed-tensors group-32/e8m0; we have NVFP4 group-16 only), AttnRes (report-only, UNCONFIRMED), MoonViT-V2 vision. HW: does NOT fit GB10 — ~1.56 TB MXFP4 ≈ ~12× the 119 GiB pool; no small K3 exists. DERIVE-AND-SHIP: no on-box golden (like the beyond-vLLM CUDA bricks); the REAL signal is the proxy gate of KDA+MLA+MoE on the FITTING Kimi-Linear-48B-A3B (~89–91 GiB) vs the pin + build-verify/structural review. New spec specs/kimi-k3.md; new SPIKE row MODEL-MM-kimi-k3-* (INVENTORIED→SPIKE); roadmap + STATUS lines added; all 6 record checkers rc=0. Owns ONLY: specs/kimi-k3.md, the K3 rows in model-matrix, the roadmap/STATUS/BENCHMARKS/ledger/state entries. NEXT: W1 proxy primitive gate (DGX busy — deferred). CORRECTS the 2026-07-25 sweep note ("loads as DeepseekV3ForCausalLM").

Kimi K3 W2/W5 — CPU structural bring-up (2026-07-28, CLAIM-KIMI-K3-W2-W5, DERIVED+BUILD-VERIFIED, committed on worktree branch, NOT pushed; FULL SHA reported to caller). Base main HEAD 308c312a; isolated worktree branch feat/kimi-k3-w2-w5; CPU-only (-DVLLM_CPP_CUDA=OFF), NO GPU/download. Implements W2 (registry stub + nested config parse) + W5 (scaled hybrid loader + text-forward skeleton, as far as CPU-buildable) for KimiK3ForConditionalGeneration (beyond the pin 555967922). Additive registry TU (hybrid+mm info), ParseKimiK3Params (nested text_config/vision_config/quantization_config descent grounded in configs/kimi_linear.py:11-148), pure EnumerateKimiK3TextBackboneTensors (93-layer KDA/MLA + 896-expert MoE structural name-map grounded 1:1 in kimi_linear.py + kimi_gdn_linear_attn.py), REFUSE-by-name forward (mirrors deepseek_v4.cpp), MXFP4-refuse loader. Clean CPU build; scaffold gate test_kimi_k3_scaffold 6/6 · 63 assertions. NOT-YET-BUILDABLE, correctly deferred (NOT duplicated): MXFP4 → shared DeepSeek-V4 MXFP4 scope (CLAIM-DEEPSEEK-V4-* / quantization-matrix MXFP4 row); KDA kernel delta → Kimi-Linear row (MODEL-TEXT-kimi-linear-*, CLAIM-MLA-DEEPSEEK); MoonViT-V2 vision → W7. Owns ONLY (all NEW except the two CMake + the K3 records): include/vllm/model_executor/models/kimi_k3.h, src/vllm/model_executor/models/kimi_k3{,_registry,_weights}.cpp, tests/vllm/models/test_kimi_k3_scaffold.cpp, the kimi_k3 lines in CMakeLists.txt + tests/CMakeLists.txt, and the K3 rows/entries in model-matrix.md / roadmap_v1.md / docs/STATUS.md / docs/BENCHMARKS.md / parity-ledger.md / state.md / this claim. Does NOT touch README/Metal or any other agent's rows. Row stays SPIKE (no on-box e2e). NEXT: W1 proxy primitive gate on Kimi-Linear-48B (DGX-blocked).

Kimi-Linear-48B-A3B W0 DEDICATED SPIKE — e2e-gateable (2026-08-05, CLAIM-KIMI-LINEAR-W0, DONE — records-only, NOT pushed). Base origin/main HEAD 10dd23ee; pinned oracle 555967922 (0.26.0.dev0). CPU-only, NO build/GPU/ download. Writes the FULL W0 spike contract (specs/kimi-linear.md) for KimiLinearForCausalLM per the spike-first protocol so W1 implementation starts immediately. VERDICT: this is the ONE Kimi text model that earns a REAL e2e SACRED token gate — FITS one GB10 (48.9B bf16 ≈ 91.5 GiB, 0.77× the 119 GiB unified pool) and the pinned oracle constructs+serves it, UNLIKE the 2.8T Kimi-K3 (DERIVE-AND-SHIP, ~12× over). Authoritative config.json fetched 2026-08-05: 27 layers = 20 KDA + 7 NoPE-MLA (full_attn_layers=[4,8,12,16,20,24,27]), MLA kv_lora=512/q_lora=null/qk_nope=128/qk_rope=64/v=128, mla_use_nope=true (rotary_emb=None, positionless MLA); MoE 256e/top-8/ 1-shared sigmoid noaux_tc, routed_scaling_factor=2.446, first_k_dense_replace=1 (layer-0 dense); KDA head_dim=128/num_heads=32/ conv=4; num_nextn_predict_layers=0 ⇒ NO MTP head in this checkpoint. HEAVY REUSE — DeepSeek MLA (campaign W1-W6, mla_attention.{h,cpp}), the sigmoid/ noaux_tc grouped MoE (deepseek_v2.cpp RunMoeBlock), GDN family (KDA's parent, cuda_gdn.cu/gdn_attn.cpp), the Qwen3.6-35B GDN-hybrid-MoE skeleton (qwen3_5_moe.cpp), and the KDA host refs already landed (task #173, CLAIM-KDA-KERNEL, kimi_kda.{h,cpp}, test_kimi_kda 14/14·36). NET-NEW = the KDA device kernel (host-ref-oracled), the NoPE-MLA branch, the hybrid layer-schedule

  • het-KV wiring (GDN state + MLA latent per layer), and the loader name-map. CORRECTS the 2026-07-25 sweep ("full-attn layers are MHA" — they are MLA). Matrix row STAYS SPIKE (actively claimed — protocol forbids READY on a claimed row); the three MUST-route seams are planned (fusion catalog / merged-GEMM / born-on-runner decode), not hand-rolled. Owns ONLY: specs/kimi-linear.md, the MODEL-TEXT-kimi-linear-* row + checklist rollup + this claim/block, roadmap breadth, docs/STATUS.md/docs/BENCHMARKS.md/docs/FEATURES.md one-liners, .agents/NOW.md, .agents/state.md. Touches NO source/CMake/test and no other agent's rows. NEXT: W1 registry + ParseKimiLinearParams (CPU); the W0 GPU golden-capture recipe (spec §8) is ready for the next free GPU slot.

Kimi-Linear-48B-A3B W1 — registry + config + loader scaffolding (2026-08-05, CLAIM-KIMI-LINEAR-W1, DONE — foreground, NOT pushed). Base origin/main HEAD 053116df; pinned oracle 555967922. The additive TU family kimi_linear*.cpp (mirroring the qwen3_5/deepseek_v2/kimi_k3 per-arch split): kimi_linear_registry .cpp (REGISTER_VLLM_MODEL(kimi_linear, "KimiLinearForCausalLM"), info text-gen + is_hybrid, supports_multimodal=false; het KV spec = MLA latent-576 + KDA mamba), kimi_linear_weights.cpp (ParseKimiLinearParams over the authoritative 48B schedule + the NoPE/no-q-lora asserts, EnumerateKimiLinearTensors verified vs the real safetensors index — MoE is block_sparse_moe.*, LoadKimiLinearForCausalLMWeights throws BY NAME on missing/mis-shaped tensors), kimi_linear.cpp (REFUSE-by-name forward), header kimi_linear.h. Gates: test_kimi_linear_scaffold 9/9·83 + test_model_registry 24/24 (arch sorted-set 29→30 + error message + hybrid model-property) + test_kimi_k3_scaffold 6/6 unchanged; clean CPU Release build; the fusion/runner-routing consistency checkers stay green (refuse stub skipped — NO allowlist). Row STAYS SPIKE/📋 (forward refuses; rollup unchanged). NEXT: the W3-W6 forward assembly (KDA device kernel + NoPE-MLA route + sigmoid-noaux MoE + het-KV born-on-runner forward), then the W7 e2e SACRED gate (spec §8 recipe).

Multimodal SERVING — brick 2/3 MM-SERVE-ENGINE LANDED (2026-07-28, CLAIM-MM-SERVING-W2, DONE — committed, NOT pushed; FULL SHA reported to caller). Carries brick 1's parsed MultiModalInputs into the engine request. Base local main HEAD 01105b11; isolated worktree .claude/worktrees/agent-ad563900ac5a35344; CPU-only (-DVLLM_CPP_CUDA=OFF), no GPU. What it did. (1) Engine mm-request overload: InputProcessor::process_inputs_mm (input_processor.{h,cpp}) mirrors upstream input_processor.py:333-379 — builds the EngineCoreRequest from the placeholder-EXPANDED prompt ids AND carries mm_features (the field already existed on EngineCoreRequest/Request; FromEngineCoreRequest already threads it). Strictly ADDITIVE add_request / generate overloads taking multimodal::MultiModalInputs on BOTH LLMEngine (llm_engine.{h,cpp}) and AsyncLLM (async_llm.{h,cpp}); empty mm_features == byte-identical to the tokens overload. (2) Chat-template placeholder-string insertion (chat_mm.{h,cpp}): ImagePlaceholderString / VideoPlaceholderString / AudioPlaceholderString(i) + ChatPlaceholderFor / CollectChatPlaceholders, mirroring vLLM get_placeholder_str (qwen3_vl.py:1714 image <|vision_start|><|image_pad|><|vision_end|>, qwen2_audio.py:333 audio) + _add_placeholder (chat_utils.py:886). The TOKEN-level count-expansion (count == grid/feature count) is brick 1's ExpandImagePlaceholders. (3) serving_chat wiring: an OPTIONAL MultiModalChatFn seam (set_multimodal_chat_fn, default UNSET → text path byte-identical) that, when a request carries mm parts, builds the MultiModalInputs and routes the non-stream path through the engine mm generate overload (streaming mm rejected — named residual). Gate. New test_input_processor +2 (process_inputs_mm carries mm_features + expanded prompt; empty == tokens path) and test_chat_mm +2 (placeholder strings mirror vLLM; full chain parse→route→process_inputs_mmFromEngineCoreRequest — the engine request carries the mm handles + the expanded prompt with the correct 196 image_pad feature count). RED-first: before this brick there was NO engine mm add_request path. Text-path INERTNESS: test_input_processor 10/10, test_chat_mm 7/7, test_llm_engine + test_async_llm + test_openai_serving

  • test_openai_serving_chat_stream all byte-identical; clean CPU -Werror library + server build, 0 warnings. Owns: include/vllm/v1/engine/{input_processor.h,llm_engine.h,async_llm.h}, src/vllm/v1/engine/{input_processor.cpp,llm_engine.cpp,async_llm.cpp}, include/vllm/entrypoints/openai/{chat_mm.h,serving_chat.h}, src/vllm/entrypoints/openai/{chat_mm.cpp,serving_chat.cpp}, tests/CMakeLists.txt
  • tests/vllm/v1/test_input_processor.cpp + tests/vllm/entrypoints/openai/test_chat_mm.cpp, plus the records below. Does NOT touch README/Metal (concurrent session owns them). Residual — MM-SERVE-E2E (MANDATORY closing gate): a real image+prompt OpenAI /v1/chat/completions request → token-correct output on Qwen3-VL-4B vs the mm oracle — needs the DGX + a Qwen3-VL-4B checkpoint. Its remaining pieces: the MultiModalChatFn seam BODY (the model tokenizer that turns the placeholder markers → single placeholder token ids + the qwen3vl/whisper processors) and the mm FORWARD (encoder tower + DeepStack/MRoPE) consuming Request.mm_features on the GPU worker. Also named: streaming mm, multiple images, video, http(s) fetch, PNG/JPEG container decode. Records: .agents/specs/mm-serving.md, engine-matrix.md, feature-matrix.md, model-matrix.md, roadmap_v1.md, this claim, docs/STATUS.md, docs/BENCHMARKS.md (NOT-APPLICABLE — feature), parity-ledger.md, state.md. Gemma-4 W0 — oracle-gateability RUN-VERIFIED, greedy golden captured (2026-07-28, CLAIM-GEMMA4-W0, DONE — committed, NOT pushed; FULL SHA reported to caller). Retires the Gemma-4 mm oracle block by MEASUREMENT (the decisive [[oracle-gateability-model-runs-not-config-constructs]] gate). Base local main HEAD 01105b11; isolated worktree .claude/worktrees/agent-a32070ea95648ba3c; DGX-driven over SSH. What it did. (1) Fetched the ungated unsloth/gemma-4-E4B-it (Gemma4ForConditionalGeneration, 15.99 GB bf16 single shard, gated=False) to the dgx HF cache. (2) Under flock $HOME/gpu.lock, GMU 0.30, ran the DECISIVE gate: vllm.LLM(model=E4B) on the pinned oracle (vLLM 0.25.0 + transformers 5.13.1) — it LOADS + RUNS + GENERATES: arch resolved, Gemma-4 heterogeneous head dims configured (256/512 → forced TRITON_ATTN), weights loaded onto the GB10, KV cache built (85.28x @ 4096), 32 coherent greedy tokens (enforce_eager, temp 0). K=5 self-determinism ALL-DETERMINISTIC ⇒ STRICT future bring-up bar. This is the OPPOSITE of OLMo-3 (constructs but aborts) — Gemma-4 constructs AND runs. (3) Committed the greedy golden fixture tests/parity/goldens/gemma4_e4b_text/gen_manifest.json (prompt + 32 ref token ids + K=5 runs + sha256) + the capture script scripts/mm/g0_gemma4_oracle_capture.py. (4) Updated gemma4-multimodal.md (W0 banner + G0 [DONE] + retired-block §3) and the three Gemma-4 rows in model-matrix.md (both mm rows: CHECKPOINT-GATED → GATEABLE/W0-RUN-VERIFIED, stay SPIKE; the Gemma4ForCausalLM text row: the oracle-support sub-blocker REFUTED, stays BLOCKED as a standalone bare-text vehicle). Owns: the golden fixture + capture script + these record edits. NON-COLLISION: records + a golden fixture + one new capture script ONLY — NO src/include/kernel/model/CMake edit, so every model/regression gate is inert by construction; does NOT touch the Qwen mm rows, multimodal-track.md, README, or Metal. Box restored: GPU freed (run finished, flock released), local-ai-worker was already stopped (left as-found), scratch (/tmp/gemma4_w0_out, /tmp/g0_*.py) pruned; the E4B checkpoint was REMOVED post-run to relieve the shared box (disk had filled to 100% / 6.4 GiB free during the run, largely the concurrent session — removing the 15 GiB E4B restored it to 17 GiB free). The committed golden JSON is the durable anchor; the ungated E4B re-fetches in ~3 min (snapshot_download, max_workers=4) when G1 starts. NEXT (future, out of this claim): the G1 Gemma-4 backbone campaign (PLE/YOCO/Gemma-4-MoE, sweep-gemma §0.1) — now unblocked to start.

Multimodal SERVING — first CPU brick LANDED (2026-07-28, CLAIM-MM-SERVING-W1, DONE — committed, NOT pushed; FULL SHA reported to caller). Opens the ROAD-V1-MM serving track: wire OpenAI multimodal content parts into the chat request and route them to the EXISTING single-sequence mm processors. Base local main HEAD aca8d7d7; isolated worktree .claude/worktrees/agent-a632b85d06e584d4c; CPU-only (-DVLLM_CPP_CUDA=OFF), no GPU. What it did. (1) SCOPED the full wiring path (content-part parse → base64/ data-URI decode → existing processor → placeholder expansion → engine mm_features + encoder-cache) into 3 bricks with vLLM file:line + tests-to-port (.agents/specs/mm-serving.md, rows MM-SERVE-PARSE/MM-SERVE-ENGINE/ MM-SERVE-E2E). (2) Implemented brick 1 MM-SERVE-PARSE: ChatContentPart + ChatMessage.content_parts (protocol.h), array-form from_json(ChatMessage) + ParseChatContentPart (protocol.cpp, mirrors chat_utils.py MM_PARSER_MAP:1478 / _parse_chat_message_content_mm_part:1524), new entrypoints/openai/chat_mm.{h,cpp} (DecodeBase64 RFC4648, DecodeDataUri RFC2397, RouteAudioWav/RouteImageRgb reusing qwen3vl_processor/audio_processor seams → MultiModalInputs). (3) Gate test_chat_mm 5/5 (65 asserts): bare-string INERTNESS (content_parts nullopt, prompt byte-identical), base64/data-URI decode vectors, input_audio part → Whisper processor → features [80,3000] + 1500 placeholder tokens + byte-exact mm-hash, image_url part → Qwen3-VL processor → grid [1,28,28] + 196 merged tokens; reuses the M1/A1 processor-parity fixtures. Inertness suites test_openai_protocol (28/171) + serving/chat-stream byte-identical for bare-string; clean CPU -Werror library+server build. Owns: include/vllm/entrypoints/openai/{protocol.h,chat_mm.h}, src/vllm/entrypoints/openai/{protocol.cpp,chat_mm.cpp}, CMakeLists.txt (+chat_mm), tests/CMakeLists.txt + tests/vllm/entrypoints/openai/test_chat_mm.cpp, plus the records below. Does NOT touch README/Metal (concurrent session owns them; the README "not yet wired into the OpenAI server" line is flagged in STATUS for the e2e brick). Residuals (named): MM-SERVE-ENGINE (attach mm_features to the engine request — no add_request mm overload yet; placeholder-string insertion into the chat template); MM-SERVE-E2E (MANDATORY closing gate — a real image+prompt OpenAI request → token-correct output on Qwen3-VL-4B vs the mm oracle, needs DGX + checkpoint); container-format image decode (PNG/JPEG→RGB — no codec vendored, route takes raw RGB); http(s) media fetch; streaming mm / multiple images / video parts. Records: .agents/specs/mm-serving.md (new), engine-matrix.md, feature-matrix.md, model-matrix.md (the MODEL-MM Qwen3-VL-4B serving note + checklist), roadmap_v1.md, this claim, docs/STATUS.md, docs/BENCHMARKS.md (NOT-APPLICABLE — feature), parity-ledger.md, state.md.

Decode per-token latency (TPOT/ITL) lever EXPLORATION — hypothesis CONFIRMED (2026-07-28, CLAIM-DECODE-LATENCY-EXPLORE, DONE — measurement only, NOT pushed; FULL SHA reported to caller). User-directed: CONFIRM/REFUTE the CLAIM-SGLANG-PERF-BENCH attributed hypothesis ("our throughput win IS the latency cost — larger decode batches raise per-request ITL") and characterize the lever. Base local main HEAD 348ae7c9; isolated worktree .claude/worktrees/agent-a435b290a37d1e715; dgx GB10 sm_121a, ONE flock $HOME/gpu.lock, idle box, serialized vs campaign #2; build tree ~/work/decode-lat-348ae7c. PURE MEASUREMENT — no source/engine/kernel/scheduler changed, no default flipped. What it did. (1) Source-scanned both step compositions: ours mixes prefill+decode via chunked prefill and packs to max_num_seqs (src/vllm/v1/core/sched/scheduler.cpp:267,280,431,432); SGLang runs prefill-first, non-mixed steps (managers/scheduler.py:2598,2700,3041 @ f63458b). (2) Swept OUR decode batch B∈{1,2,4,8,16} and measured ITL/TPOT (27B-NVFP4, 1024/128, greedy, ignore_eos, --max-num-seqs 16, 2 reps, CV<1%). (3) nsys'd the decode step at B=1 vs B=16. Result — CONFIRMED batch-composition, REFUTED kernel-inefficiency: ITL(1)=101.75 ms is already BELOW SGLang's op-point ITL (104–105 ms) → no per-token kernel deficiency; ITL rises monotonically with B (101.75→158.5 ms @ B16; median 101.7→131.1); nsys shows every hot kernel (NVFP4 nvjet/cutlass GEMMs, GDN mamba) is sub-linear in batch (1.6–1.8× for 16× tokens → per-token cost ↓~10×). SGLang's effective decode concurrency ≈4 (40.8 tok/s ÷ 1000/105 ms), not 16 — its 33 s admission queue keeps few decoding → low ITL, low throughput. Same lever. Tradeoff curve measured; knob = max_num_seqs / max_num_batched_tokens (both already exist); recommended latency-oriented point max_num_seqs≈8 (ITL −21%, still 1.38× SGLang throughput); default stays throughput-oriented (unchanged). Owns ONLY records (no source, README, or Metal): .agents/specs/decode-latency-lever.md (new, full data), .agents/sglang-matrix.md (SGLANG-ORACLE-PERF gap row annotated), docs/BENCHMARKS.md (ITL-vs-batch measurement + repro), .agents/roadmap_v1.md (lever disposition), docs/STATUS.md (finding note — no source touched), this claim, .agents/parity-ledger.md, .agents/state.md. Residuals: 35B not swept; the ~8% matched-batch step-overhead residual + mixed-prefill p99 tail not attributed to a named kernel (nsys shows no gross deficiency — low priority); SGLang not re-profiled (ITL from recorded floor per "no re-standup" scoping). Evidence dgx ~/work/decode-lat-348ae7c/{sweep_out/sweep_results.jsonl,nsys_out/decode_b{1,16}.nsys-rep}; sqlite + source tarball pruned (disk 98%-full shared box).

SGLang PERF oracle stand-up + first floor MEASURED (2026-07-28, CLAIM-SGLANG-PERF-BENCH, DONE — reproduced, NOT pushed; FULL SHA reported to caller). User side-quest "do the benchmarks": stand up live SGLang and benchmark our CUDA engine vs the SGLang perf floor. Base local main HEAD 7e9ffbff (git rev-parse HEAD, ≥ the c26ec71e floor); records committed from isolated worktree .claude/worktrees/agent-a5d76a681850df61d; dgx GB10 sm_121a. What it did. Pulled the oracle-spec SGLang v0.5.15-cu130 arm64 image (@sha256:d0a667e, arch digest ce9667f4, 25.6 GB) — it RAN the 27B-NVFP4 gate model (unsloth/Qwen3.6-27B-NVFP4 890bdef7) on GB10 with no from-source build, confirming oracle spec §2. Built ours from HEAD (CUDA, cutlass-ON + FA2-ENABLED, arch 121a). Ran a cache-neutral SGLang-vs-ours comparison at c8/c16 (3 reps + warmup) via the existing tools/bench/run_serve_low.py bench subcommand driving sglang.bench_serving (sglang-oai vs vllm) on a deterministic corpus (80×1024-in/128-out exact, common-prefix ≤32), greedy ignore_eos, KV 20480 tokens matched, idle box, ONE flock $HOME/gpu.lock, engines strictly sequential (SGLang torn down + GPU freed + MemAvailable returned to baseline before ours). All within run-noise (CV mostly <0.1%); both emitted exactly 80×128 tokens, 0 errors. Result (median of 3): ours BEATS the SGLang floor on total/output throughput + req/s (2.21×@c16, 1.44×@c8) and TTFT (6–12× lower); SGLang WINS per-token latency (TPOT/ITL 1.18–1.49× below ours — reproduced OPEN GAP, candidate lever); peak memory ~comparable (proxy). Owns ONLY records (no source/engine/kernel/README/Metal path): .agents/sglang-matrix.md (SGLANG-ORACLE-PERF row INVENTORIED→STOOD UP + new "Perf oracle results" section), .agents/specs/sglang-parity-oracle.md (new §9 Results), docs/BENCHMARKS.md (scoreboard entry + full repro recipe), .agents/roadmap_v1.md (SGLang lane note), this claim, .agents/parity-ledger.md, .agents/state.md, docs/STATUS.md. Residuals (named, not hidden): 35B-A3B not run; c1/c2/c4 low-conc sweep not run (SGLang c1 ~13.3 s/it, impractical for 3-rep reproduction this pass); shared-prefix cache-ON arm (BACKEND-GATE-CUDA-SGLANG-PREFIX) not run; vLLM arm not re-measured (SGLang floor specifically; vLLM stays behavior oracle); SGLANG-ORACLE-CORRECT token-exact cross-check separate/pending; not the full P2 binding grid. Image + build tree PRUNED from the 98%-full shared box after extraction (disk restored to 78 GB); evidence kept at dgx ~/work/sglang-bench-HEAD/evidence. NON-COLLISION: a concurrent session owns README/Metal — untouched; the harness SGLANG_IMAGE pin (serve_low_common.py, still v0.5.13) NOT edited (deliberate re-pin to v0.5.15 recorded, not silently changed in code).

C8 OpenAI-server endpoint-parity note (2026-07-28, CLAIM-C8-SERVE-ENDPOINTS, LANDED + CPU-GATED, NOT pushed — FULL SHA reported to caller). Closes two ROAD-V1-C8 OpenAI-server endpoint-parity gaps under MIRROR-vLLM on base local main a2544e75 (confirmed via git rev-parse HEAD), isolated worktree .claude/worktrees/agent-a77ef0d33874d7aee, branch worktree-agent-a77ef0d33874d7aee, pin vLLM 0.26.0.dev0 555967922. Adds TWO endpoints as ADDITIVE, opt-in routes on ApiServer (a server without the backing is byte-identical — the route simply 404s): (1) GET /tokenizer_info (SERVE-UTILITY-ENDPOINTS) gated behind set_tokenizer_info_enabled mirroring vLLM's enable_tokenizer_info_endpoint (serve/tokenize/api_router.py:95-108 attach_router, serving.py:154-195 get_tokenizer_infoTokenizerInfo.to_dict, protocol.py:185 TokenizerInfoResponse); surfaces EXACTLY the tokenizer_config.json-equivalent fields our byte-level/SentencePiece BPE tokenizer can genuinely back (tokenizer_class from the BPE family, model_max_length, vocab_size, bos/eos_token_id, added_tokens_decoder) and OMITS+NAMES the gaps it cannot (raw chat_template string — lives in the ChatPromptFn seam; HF init_kwargs; added-token normalized/single_word). (2) POST /abort_requests (SERVE-ADMIN, INVENTORIED→ACTIVE; serve/dev/rlhf/api_router.py:94-138) parses {request_ids} and aborts the listed ids via an injected callback wired to AsyncLLM::abort (empty→"abort all"), returning {"status":"aborted","aborted":N} (malformed→400 {"detail":...}, failure→500 {"error":...} — all shapes 1:1). The third targeted endpoint, POST /reset_prefix_cache, was ALREADY landed (CLAIM-ROADMAP-C8) — confirmed present, untouched. Owns ONLY: include/vllm/entrypoints/openai/api_server.h (2 handler decls + set_tokenizer_info_enabled/ set_abort_requests setters + 2 members), src/vllm/entrypoints/openai/api_server.cpp (handle_tokenizer_info/handle_abort_requests + 2 gated route registrations), tests/vllm/entrypoints/openai/test_api_server.cpp (4 NEW cases), the engine-matrix SERVE-UTILITY-ENDPOINTS + SERVE-ADMIN rows (NO new row → ENGINE count unchanged at 122), feature-matrix.md §serving, roadmap_v1.md C8, .agents/specs/utility-endpoints.md (/tokenizer_info section) + NEW .agents/specs/admin-endpoints.md (/abort_requests), this claim, parity-ledger.md, state.md, docs/STATUS.md, docs/BENCHMARKS.md. Gates: test_openai_api_server 31/31 / 379 asserts (was 27/27), NEW: /tokenizer_info backed-fields + named-gap omissions + no-tokenizer 500; /abort_requests shape+callback wiring + aborts an in-flight AsyncLLM request (has_unfinished_requests()→false); opt-in route gate over a real socket (404 flag-off/no-callback → 200 attached), RED-first (disabling the two route registrations flips the enabled-path to 404/empty-body → 5 asserts fail). Inertness: existing test_openai_conformance 23/23 + test_openai_serving 40/40 byte-identical. Clean full-library CPU -Werror (-DVLLM_CPP_CUDA=OFF -DVLLM_CPP_SERVER=ON, Release) 0-warn incl. the server binary. NON-COLLISION: a concurrent session owns README/Metal/demo — untouched; examples/server/main.cpp NOT edited (production wiring of the whole opt-in C8 endpoint family — tokenize/ detokenize/metrics/reset/tokenizer_info/abort_requests — is deferred exactly as the already-landed ones are; NAMED residual). RESIDUAL (honest): production main.cpp wiring + /abort_requests empty-list "abort ALL" enumeration (needs an AsyncLLM active-request-id accessor not exposed today); broader vLLM admin endpoints (/sleep//wake_up//is_sleeping, /pause//resume, /start_profile/ /stop_profile, weight-update/EP) remain INVENTORIED and OUT OF SCOPE.

C8 production endpoint-wiring note (2026-07-28, CLAIM-C8-SERVE-PROD-WIRING, LANDED + CPU-GATED, NOT pushed — FULL SHA reported to caller). Closes the ROAD-V1-C8 residual named by CLAIM-C8-SERVE-ENDPOINTS: the shipped vllm-server binary (examples/server/main.cpp) instantiated oai::ApiServer but called NONE of its opt-in endpoint setters, so a whole family of unit-tested endpoints was DARK in the actual server. Base local main aeb6dccd (confirmed git rev-parse HEAD), isolated worktree .claude/worktrees/agent-a302a31d62e5fefe1, pin vLLM 0.26.0.dev0 555967922. Adds a SINGLE shared wiring seam ConfigureUtilityEndpoints (include/vllm/entrypoints/openai/api_server.h decl + src/vllm/entrypoints/openai/api_server.cpp impl) called by BOTH main.cpp and the gate over a real socket, mirroring vLLM's PER-ENDPOINT default gating: (1) /tokenize+/detokenize ON by default when a tokenizer exists — vLLM always calls attach_tokenize_router (serve/__init__.py:11-31; api_server.py:222; serve/tokenize/api_router.py:36,62) → set_tokenizer. (2) /tokenizer_info OFF behind new CLI flag --enable-tokenizer-info-endpoint, mirroring enable_tokenizer_info_endpoint (serve/tokenize/api_router.py:95; cli_args.py:140 default False). (3) /abort_requests DEV-mode gated behind new CLI flag --enable-server-dev-mode, mirroring envs.VLLM_SERVER_DEV_MODE (api_server.py:238-240register_vllm_dev_api_routers; envs.py:157 default 0); wired to the LIVE AsyncLLM::abort with an EXACT before/after unfinished-count delta. NAMED-BLOCKED (honest, deliberately NOT wired): /metrics — the production frontend is AsyncLLM (main.cpp: loaded->async_engine()), whose output handler records no stats to any PrometheusStatLogger (async stats deferred) and neither LoadedEngine nor AsyncLLM constructs/exposes one (missing LoadedEngine::stat_logger() + a Record() site in AsyncLLM::RunOutputHandler); /reset_prefix_cachereset_prefix_cache() is KVCacheManager-private, mutated only on the EngineCore thread, no thread-safe RPC (missing AsyncLLM::reset_prefix_cache). Attaching either would be a fabricated wiring that never reaches the live engine. /abort_requests empty-list "abort ALL" is a NAMED RESIDUAL (missing AsyncLLM::active_request_ids() → empty ids report 0). Owns ONLY: include/vllm/entrypoints/openai/api_server.h (AsyncLLM fwd-decl + UtilityEndpointOptions

  • ConfigureUtilityEndpoints decl), src/vllm/entrypoints/openai/api_server.cpp (the seam impl + async_llm.h include), examples/server/main.cpp (2 CLI flags + the seam call + banner), tests/vllm/entrypoints/openai/test_api_server.cpp (1 NEW production-wiring case, 4 subcases), the engine-matrix SERVE-UTILITY-ENDPOINTS/SERVE-ADMIN/SERVE-METRICS rows (NO new row → ENGINE count unchanged at 122), feature-matrix.md §9, roadmap_v1.md C8, .agents/specs/utility-endpoints.md + .agents/specs/admin-endpoints.md (Production wiring sections), this claim + the claim-table row, parity-ledger.md, state.md, docs/STATUS.md, docs/BENCHMARKS.md. Gates: test_openai_api_server 32/32 / 420 asserts (was 31/31/379), NEW case "ConfigureUtilityEndpoints wires the production C8 surface" over a real socket — RED-first (no-seam harness → all C8 routes 404, core routes 200), production defaults → /tokenize+/detokenize 200 + /tokenizer_info+ /abort_requests 404, flags-on → 200, live abort exact delta-count==1 + empty→0. Inertness: test_openai_conformance 23/23 + test_openai_serving 40/40 byte-identical. Clean full-library CPU -Werror (-DVLLM_CPP_CUDA=OFF -DVLLM_CPP_SERVER=ON, Release) 0-warn incl. the server binary. NON-COLLISION: a concurrent session owns README/Metal/demo — untouched. RESIDUAL: live /metrics+/reset_prefix_cache backing + /abort_requests abort-ALL enumeration (all need new AsyncLLM/LoadedEngine accessors, named above); broader admin endpoints remain INVENTORIED.

C8 JSON-schema tool-arg type coercion note (2026-07-28, CLAIM-C8-ARG-COERCION, LANDED + CPU-GATED, NOT pushed — FULL SHA reported to caller). Closes the ROAD-V1-C8 parser-correctness residual _fix_arg_types on base local main 6925aec7, isolated worktree .claude/worktrees/agent-abac4e98f77f088e8. Ported 1:1 FROM vllm/parser/engine/parser_engine.py:365 (_fix_arg_types), :269/:227 (_coerce_dict/_coerce_value), :348 (_streamable_string_keys), and vllm/tool_parsers/utils.py:271 (find_tool_properties) — reusing the ALREADY-ported extract_types_from_schema/coerce_to_schema_type (tool_parsers/utils.cpp, priority null>int>number>bool>object>array>string, alias map, _is_json_finite rejection). ParserTool gains the function parameters JSON-schema, threaded from serving_chat.cpp ToParserRequest; both streaming (parse_delta, per-tick coercion + _streamable_string_keys held-back string keys) and one-shot (extract_tool_calls/parse) coerce the assembled tool_calls[].function.arguments to the declared types (int/number/bool/string/ array/null; uncoercible values + non-object args left as-is). With no schema / no tools it is IDENTITY (byte-identical). Additive: parser_engine.{h,cpp} (recursive coercion + find_tool_properties) + serving_chat.cpp schema threading; NO other TU touched; the streaming engine ignores the new fields. Gate test_parser_engine_assembly extended to 30 scenarios / 5038 asserts (27-30: qwen3 typed-schema whole+char, qwen3 schema-mismatch + nullable, kimi_k2 JSON-native "5"->int in the converter-less extract path — streaming raw / extract coerced, divergence gated); RED-first 38 asserts, first boundary qwen3_typed_schema_wholedelta extract tc[0] arguments ({"days": "5", …} vs coerced {"days": 5, "unit": "celsius", "active": true, "temp": 3.14, "tags": [1, 2, 3]}). No-schema inertness: the 26 prior scenarios + test_streaming_parser_engine 586/586 + test_openai_serving_chat_stream 210/210 UNCHANGED (.inc diff = pure insertions). CPU -Werror 0-warn clean full-library build. Goldens byte-reproduced by the extended tools/parity/dump_parser_engine_assembly.py (real coercion oracle copied verbatim from the pin). Row TOOLS-STREAMING-PARSER stays ACTIVE. Did NOT touch model/kernel source, README, Metal/demo, or the metrics/response-timing rows (a concurrent session owns README/Metal/demo).

SGLang SW2 in-batch prefix-collision de-prioritization note (2026-07-27, CLAIM-SGLANG-SW2, LANDED + CPU-GATED, NOT pushed — FULL SHA reported to caller). Ports the named SW1 residual on base local main cc5d2348, isolated worktree .claude/worktrees/agent-afeedca484fb784ed. Extends the kLPM reorder (maybe_reorder_waiting_for_lpm, scheduler.cpp:183-243): walks the pre-sort (arrival) waiting queue building an ephemeral seen-set of OUR block-hash APC keys (Request::block_hashes — NOT a second trie), and de-prioritizes a later request whose in-batch prefix match ≥ kInBatchDeprioritizeThreshold when its real cached match ≤ kInBatchCheckThreshold (both 32 tokens, scheduler.h), sort key mirrors SGLang's float("inf"). Ported 1:1 FROM schedule_policy.py:253-301,311 (_compute_prefix_matches + _sort_by_longest_prefix). Output-neutral (admission ORDER only). Honest finding: the redundant-prefill / hit-rate lever SW2 provides in SGLang is NOT-APPLICABLE here — our APC caches blocks at ALLOCATION time (kv_cache_manager.cpp:267), so the second same-step collider already HITS the first's just-cached prefix; SGLang needs SW2 only because its radix updates post-forward. Gate test_scheduler_lpm 6/6 (47 asserts; SW2: de-prioritizes-collider RED-first, output-neutral hits=112, within-step-dedup NOT-APPLICABLE proof, inert-when-cached gate) + inertness test_scheduler 36/36 + test_prefix_cache_stats 12/12 unchanged; CPU -Werror 0-warn clean full lib. Row ENG-SGLANG-BEHAVIOR-FLAG (stays ACTIVE), sglang-matrix.md SGLANG-SCHED-INBATCH SGLANG-DISTINCT→ACTIVE. Residual: SW3 jump-forward + SW4 eviction knob (named/deferred). Did NOT touch model/kernel source, README, Metal/demo, or the competitor benchmark rows.

SGLang behavior-parity IMPLEMENTATION note (2026-07-27, CLAIM-SGLANG-IMPL, W1+W2 LANDED + CPU-GATED, NOT pushed — FULL SHA reported to caller). Implements the just-merged scope (CLAIM-SGLANG-RADIX-SCOPE) on base local main b0a1bc4c, isolated worktree .claude/worktrees/agent-a338dccee4c21abc3. W1 (flag surface): --enable-radix-attention/--disable-radix-attention server aliases for the APC enable_prefix_caching tri-state (RadixAttention is fused into our block-hash APC — the alias is a no-op wrapper, NOT a distinct path); a C-ABI int32_t vllm_model_params.enable_prefix_caching (0=model default / 1=on / 2=off), ABI bumped v6→v7; --schedule-policy accepted as an SGLang-compatible alias of --scheduling-policy (both fcfs|priority|lpm). W2 (the genuinely-new behavior): SchedulerPolicy::kLPM — cache-aware longest-prefix-match admission, ported 1:1 FROM SGLang schedule_policy.py:205,229 (stable descending sort by matched-prefix tokens +

128-waiting fcfs fallback) onto OUR FCFS waiting deque + OUR block-hash APC longest-match (reused via a side-effect-free num_matched_prefix_tokens, NO second trie, NO stats double-count). Output-neutral (admission ORDER only). Gate test_scheduler_lpm 3/3 + ABI round-trip + full inertness; CPU -Werror 0-warn. Rows KV-SGLANG-RADIX-CACHE + ENG-SGLANG-BEHAVIOR-FLAG SPIKEACTIVE. Residual: SW2 in-batch de-prioritization + SW3 jump-forward + SW4 eviction knob (named/deferred); cache-ON throughput A/B owned by BACKEND-GATE-CUDA-SGLANG-PREFIX. Did NOT touch model/kernel source, README, Metal/demo, or the competitor benchmark rows.

SGLang RadixAttention behavior-parity SCOPE note (2026-07-27, CLAIM-SGLANG-RADIX-SCOPE, DONE, NOT pushed — FULL SHA reported to caller). A read-only scoping spike of SGLang's distinctive runtime techniques (RadixAttention

  • the "etc.") against our engine, returning a fuse-or-flag verdict + flag design per the user directive (2026-07-27). Base main 0f07fe34, isolated worktree .claude/worktrees/agent-a3d07b50194b79eea. SGLang grounded at the project pin v0.5.15 f63458b5beaceabbd9d749b9fc956370e1b649e6 (cloned to /home/mudler/_git/sglang); every SGLang claim cites file:line. VERDICTS: RadixAttention == our block-hash APC (functionally-equivalent automatic prefix sharing; only delta = token/page vs block granularity, bounded + output-neutral) ⇒ already FUSED, --enable-radix-attention = an ALIAS for the APC toggle, NO distinct path; cache-aware LPM scheduling ⇒ FLAG --schedule-policy=lpm (SGLang's own default is fcfs, so the default is already covered); overlap scheduler ⇒ already FUSED (== ENG-ASYNC-SCHED); jump-forward decoding ⇒ FLAG (deferred). Owns ONLY records: .agents/specs/sglang-radixattention.md (new) + .agents/engine-matrix.md (rows KV-SGLANG-RADIX-CACHE + ENG-SGLANG-BEHAVIOR-FLAG, both SPIKE, + summary Total recompute) + .agents/feature-matrix.md + scripts/check-agent-record.py (ENGINE_ROWS 118→120) + docs/STATUS.md + docs/BENCHMARKS.md + .agents/parity-ledger.md + .agents/state.md + this note. Did NOT touch any model/kernel/runtime source, README, Metal/demo, or the BACKEND-GATE-CUDA-SGLANG* competitor benchmark rows (sibling track). No engine code, no measurement (benchmark_binding=false).

SGLang parity PROGRAM SCOPE note (2026-07-27, CLAIM-SGLANG-PARITY-PROGRAM, DONE, NOT pushed — FULL SHA reported to caller). A read-only SCOPING / infrastructure spike establishing the SGLang parity PROGRAM — the vLLM-parity approach replicated for SGLang (user-directed: "we need the same vLLM approach there for reaching parity"). Base main HEAD b0a1bc4c, isolated worktree .claude/worktrees/agent-ab6f8d9efa4c20195. SGLang grounded at pin v0.5.15 f63458b (cloned to /home/mudler/_git/sglang); every SGLang claim cites file:line. DELIVERABLES (docs-only, umbrella — owns NO new claimable execution rows): NEW .agents/sglang-matrix.md — the whole-surface inventory (44 rows classified FUSED 23 / SGLANG-DISTINCT 8 / INVENTORIED 5 / OUT-OF-SCOPE 8); NEW .agents/specs/sglang-parity-oracle.md — SGLang stood up as a correctness cross-check + a binding perf floor (dgx GB10 via the digest-pinned arm64 cu130 image — NO from-source build needed; the perf-gate blocker is our-side SERVE-ASYNC-LLM, not SGLang runnability) + the ranked execution plan. Cross-references (does NOT re-own) the existing rows KV-SGLANG-RADIX-CACHE + ENG-SGLANG-BEHAVIOR-FLAG (owned by CLAIM-SGLANG-RADIX-SCOPE) and the benchmark rows BACKEND-GATE-CUDA-SGLANG, BACKEND-GATE-CUDA-SGLANG-PREFIX, BACKEND-BENCH-CUDA-SGLANG-PREFLIGHT (sibling benchmark track, unchanged). Also touches: AGENTS.md Index pointer, .agents/roadmap_v1.md note (elevates the ROAD-V1-A SGLang floor; NO new portfolio row), .agents/feature-matrix.md cross-ref, docs/STATUS.md, docs/BENCHMARKS.md, .agents/parity-ledger.md, .agents/state.md, this note. Touches NO src//include//cmake//tests/ source, NO README/Metal/demo (concurrent session), and does NOT modify the BACKEND-GATE-CUDA-SGLANG* rows. No engine code, no measurement (benchmark_binding=false). SGLang is a COMPETITOR floor + correctness cross-check, NOT the mirror source — vLLM stays behavior truth.

Pin-advance SCOPE note (2026-07-26, CLAIM-PIN-ADVANCE-SCOPE, DONE, NOT pushed — FULL SHA reported to caller). A CPU/repo-research SCOPE + PLAN for advancing the vLLM parity pin past e24d1b24 (v0.25.0-era) — no venv, no pin swap, no code, no golden re-capture (EXECUTION is GPU-gated, run AFTER the sibling 35B-MTP agent frees ~/venvs/vllm-oracle). Base origin/main 55596792 (vllm.cpp), isolated worktree pin-advance-scope. TARGET: vLLM origin/main 55596792 + transformers 5.14.1 / torch 2.13.0 / flashinfer 0.6.15 / cutlass-dsl 4.6.0 — ONE coherent version unblocks all three blockers (no tradeoff): DFlash vllm#40898 via #47914 (mixed drafts construct under VLLM_USE_V2_MODEL_RUNNER=1 = our MRV2) + follow-ups #48113/#48167/#48524; Gemma-4 mm via transformers 5.14.1 shipping transformers.models.gemma4; OLMo-3 via the new native olmo3.py (rope_parameters.get(attn_type,...)) + 5.14.1 nested schema. No release tag has the fixes (v0.25.0 predates all three) ⇒ target is a main commit. **GOLDEN-DRIFT HONESTY: advancing likely drifts the 2 NVFP4 hybrid gates (27B/35B) + 32B-NVFP4A16

  • Coder (~4 core re-captures) + a diff pass over ~30 model-matrix rows** — the Torch/CUTLASS/FlashInfer + NVFP4-MoE + rmsnorm-quant-fusion changes move the oracle. Owns ONLY records: .agents/specs/pin-advance.md (new) + the record surfaces (.agents/coordination.md this note, .agents/roadmap_v1.md, .agents/state.md, .agents/parity-ledger.md, README.md, docs/BENCHMARKS.md). Did NOT touch any model/kernel/runtime source, any matrix ACTIVE/SPIKE row, or the oracle venv ⇒ SACRED gates byte-identical by construction (not re-run).

Pin-advance EXECUTION W3a-W4 note (2026-07-26, CLAIM-PIN-ADVANCE-W3W4, DONE, NOT pushed — FULL SHA reported to caller). RCA'd the W0-W2 "27B drift", diffed the full drift surface, and re-gated OUR engine against the target stack, on dgx GB10. Base origin/main 36381c1b, isolated worktree pin-advance-w3w4; REUSED ~/venvs/vllm-oracle-next (the W0-W2 staged target 0.26.0.dev0+g5559679); ~/venvs/vllm-oracle (0.25.0) pristine; NO pin flip. VERDICT: the W0-W2 "27B drift" is NOT real drift — it is the already-documented tok6 whitespace near-tie (gap 0.5625 nats; the SAME oracle emits the 198 production branch under the canonical golden-capture config and the 271 emulation branch under the W0-W2 drift_capture.py config). Apples-to-apples re-capture reproduces every measured SACRED golden bit-for-bit (27B W4A4 all tensors 0.0 diff; 32B-NVFP4A16 greedy+dist 0 diff; 35B/Coder byte-stable). Definitive re-capture list EMPTY; W4 kernel re-sync NONE. OUR engine unchanged at 36381c1b rebuilt (Release/sm_121a/cutlass-4.5.0/TRITON=ON; -Werror clean)

  • re-gated GREEN on GB10 (SACRED model + op-parity gates; two PRE-EXISTING stale registry-count CPU tests unrelated to the pin). Owns ONLY records: .agents/specs/pin-advance.md §7 + .agents/{coordination,state,parity-ledger}.md, README.md, docs/BENCHMARKS.md. Did NOT flip the pin, touch AGENTS.md pin refs, the source-repo checkout, the vllm-oracle symlink, or any model/kernel source ⇒ no golden or code change (W5 is the deliberate pin flip).

DFlash D0 readiness note (2026-07-26, CLAIM-DFLASH-D0, DONE, NOT pushed — FULL SHA reported to caller). The gating oracle-gateability check for SPEC-DFLASH (rows SPEC-DFLASH, MODEL-SPEC-qwen3-dflash-dflash-qwen3-for-causal-lm). Base origin/main 8a379182, isolated worktree dflash-d0. VERDICT: DFlash is oracle-BLOCKED on vLLM 0.25.0 — a RUN of LLM(Qwen3.6-27B-NVFP4, speculative_config=dflash z-lab/Qwen3.6-27B-DFlash) on dgx (flock, sole owner) accepts the config + loads the NVFP4 target but ABORTS constructing the mixed-SWA/full draft (qwen3_dflash.py:93 NotImplementedError, upstream vllm#40898); both Qwen3.6 drafts are mixed + no all-full variant exists ⇒ NOT config-fixable; D1–D6 BLOCKED until a pin > 0.25.0 resolves vllm#40898 (same class as Gemma-4/OLMo-3). Owned files ONLY (readiness

  • records, ZERO src//include/): scripts/spec/d0_dflash_oracle_capture.py (new), tests/parity/goldens/dflash_27b/{D0_VERDICT.md,d0_blocked_traceback.txt} (new), and the record surfaces (.agents/specs/dflash-spec-decode.md §0/§6, roadmap ROAD-V1-C3 + C3 checklist, .agents/model-matrix.md the DFlash spec row + checklist, ledger, state, this note, README, docs/BENCHMARKS.md). Did NOT touch any model/kernel/runtime source ⇒ SACRED gates byte-identical by construction (not re-run).

DFlash D0-redo + D1 note (2026-07-26, CLAIM-DFLASH-D0D1, DONE, NOT pushed — FULL SHA reported to caller). UNBLOCKS + advances SPEC-DFLASH (rows SPEC-DFLASH; DF-AUX-TAPS leaf). Base origin/main bc415a3e (the pin-advance commit), isolated worktree dflash-d0d1; dgx oracle ~/venvs/vllm-oracle -> vllm-oracle-next (vLLM 0.26.0.dev0+g5559679). D0 UNBLOCKED (supersedes the CLAIM-DFLASH-D0 blocked verdict above): on the advanced pin 555967922 under VLLM_USE_V2_MODEL_RUNNER=1 the mixed-attn z-lab 27B draft CONSTRUCTS + the drafter is ALIVE (acceptance 2.21/8.80/4.75/ 4.57, all > 1); gate FORM measured STRICT MODE-MATCHED (vLLM-ON run-deterministic K>=3, but != vLLM-OFF at k=16 near-ties). D1 DF-AUX-TAPS DONE: the single hidden tap is generalized to the DFlash multi-tap [T,H×taps], config-gated inert-when-off. Owned files ONLY — include/vllm/model_executor/models/qwen3_5.h (Qwen3_5AuxTaps + ForwardDeviceMultiTap decl), qwen3_5_dense.h (decl), model_registry.h (aux_tap field + fwd-decl), src/vllm/model_executor/models/qwen3_5.cpp (MaybeCaptureAuxTap + ValidateAuxTapLayerIds + both ForwardDeviceMultiTap + ForwardLayers/DenseForwardLayers /ForwardBody/DenseForwardBody pass-through), qwen3_5_moe.cpp + qwen3_5_dense.cpp (routing), tests/vllm/models/test_qwen27_paged_forward.cpp (the multi-tap case), scripts/spec/d0_dflash_oracle_capture.py (extend), tests/parity/goldens/dflash_27b/ (new goldens + rewritten D0_VERDICT.md), and the record surfaces (spec §0/§6, engine-matrix SPEC-DFLASH, roadmap, model-matrix DFlash row, ledger, state, this note, README, docs/BENCHMARKS.md). EXPLICIT NON-COLLISION: does NOT touch the MTP model/ speculator/runner-loop (qwen3_5_mtp.*, spec_decode/mtp/*, the runner.cpp propose loop), the rejection sampler, the GDN spec ops, or the scheduler — only ADDS a parallel aux_tap seam beside the existing hidden_tap. INERTNESS PROVEN (not by construction): CUDA -Werror 0 warnings, compute-sanitizer 0 on the multi-tap, 27B MTP e2e 9/9 + 27B text SACRED 235/235 byte-identical re-run on the new oracle.

DFlash D2 note (2026-07-26, CLAIM-DFLASH-D2, CODE LANDED + CPU-GATED + GPU PROMOTION GREEN on dgx, D2 DONE/ACTIVE, NOT pushed — FULL SHA reported to caller). Advances SPEC-DFLASH (leaf DF-DRAFT-MODEL) + adds kernel row KERNEL-ATTN-DFLASH-BLOCK. Base origin/main 8095b0e3, isolated worktree dflash-d2 (branch off its tip). D2 = the biggest new DFlash brick: the qwen3_dflash draft model, the project's FIRST non-causal / bidirectional attention primitive (vt::DFlashBlockAttention), the fc aux-combine, mask-embed, and the z-lab loader. Owned files ONLY (all NEW except the additive op seams): include/vt/ops.h (kDFlashBlockAttention + DFlashBlockAttentionArgs + Fn typedef + decl — ADDITIVE, no edit to kAttention/AttentionArgs), src/vt/ops.cpp (new wrapper), src/vt/cpu/cpu_ops.cpp (DFlashBlockAttentionKernel

  • register), src/vt/cuda/cuda_ops.cu (CUDA kernel + register), NEW include/vllm/model_executor/models/qwen3_dflash.h, src/vllm/model_executor/models/qwen3_dflash.cpp, qwen3_dflash_weights.cpp, CMakeLists.txt (+2 sources), NEW tests/vt/test_ops_dflash_block_attn.cpp + tests/vllm/models/test_qwen3_dflash_forward.cpp + tests/CMakeLists.txt, NEW scripts/spec/d2_dflash_draft_ref.py, and the record surfaces (spec §0 D2 RESULT + §6 D2 row, kernel-matrix KERNEL-ATTN-DFLASH-BLOCK, model-matrix DFlash rows, engine-matrix SPEC-DFLASH, roadmap, ledger, state, this note, README, docs/BENCHMARKS.md). EXPLICIT NON-COLLISION: does NOT touch the causal kAttention/kPagedAttention/vt::Attention used by every other model (a NEW, SEPARATE op), the MTP model, the D1 aux-tap seam, the rejection sampler, the GDN ops, or the scheduler; NO registry TU (arch registration + speculator wiring is D4, matching the MTP precedent — registering DFlashDraftModel would break the curated test_model_registry count/hybrid golden). CPU GATE GREEN (deterministic, RED-first): op 12/12 (RED non-causal-vs-causal) + model forward 95/95 (RED full-layer-causal-flip, block isolation, fc RED); existing test_ops_attention 9/9·23 + test_qwen3_forward 5/1028 UNCHANGED. GPU PROMOTION GATE GREEN (dgx GB10 sm_121a, 2026-07-26, follow-on commit on branch dflash-d2): (1) CUDA -Werror=all-warnings build clean, 0 warnings (the new kernel compiles as-written); (2) CUDA==CPU test_ops_dflash_block_attn 198412/198412 within the 1e-4 f32-softmax envelope + compute-sanitizer 0 errors; (3) draft-forward parity vs the REAL vLLM draft (test_qwen3_dflash_draft_parity + finalized scripts/spec/d2_dflash_draft_ref.py via collective_rpc) — fc rel-L2 0.46%, per-layer hidden ≤1.30%, final 0.88%, 11 deterministic rows STRICT top-1 + 5 bf16-near-tie cluster-matched; (4) 27B SACRED 235/235 + MTP 9/9 byte-identical. Loader now tolerates the draft ckpt's omitted embed_tokens/lm_head (target-shared). Added fixtures tests/parity/goldens/dflash_27b_draft/ + tests/parity/test_qwen3_dflash_draft_parity.cpp. D2 → ACTIVE/🚧 (drafter brick gated); D3-D6 (context-KV, engine loop, SACRED, CG) remain. NOT pushed; FULL SHA to caller.

Fusion-consistency audit note (2026-07-25, CLAIM-FUSION-CONSISTENCY-AUDIT, DONE, direct-to-main). A READ-ONLY static-analysis audit of whether the KERNEL-FUSION-FRAMEWORK catalog (vt::FusedChain) is used consistently across every model forward, plus ONE additive CI checker — no source/kernel/forward refactor, so the SACRED gates are untouched by construction. Base origin/main 39943fc, isolated worktree (spec/records + checker only). Owned files ONLY: .agents/specs/fusion-consistency-audit.md (new), scripts/check-fusion-consistency.py (new), scripts/fusion-consistency-allowlist.txt (new), tests/scripts/test_check_fusion_consistency.py (new), .github/workflows/ci.yml (wire the new check under the existing agent-record job), the KERNEL-FUSION-FRAMEWORK row narrative in .agents/kernel-matrix.md, and the record surfaces (roadmap C1 note, ledger, state, README, BENCHMARKS, this note). Did NOT touch multimodal-track.md, sweep-kimi-minimax-glm-latest.md, the MODEL-MM-*/Kimi/MiniMax/GLM rows, or any model/kernel/runtime source. VERDICT: MOSTLY consistent. Catalog + dispatch proven (W0-W4, all 4 backends register kFusedChain); qwen3_5 family fully migrated; qwen3/qwen3_moe/deepseek_v2 adopted kFusedAddRmsNorm{,Std}. DRIFT (ranked #1): gemma, gemma2, gemma3, glm4, phi3 hand-call the residual vt::RmsNorm(...,&res) add+RMSNorm chain and never touch the catalog though the recipe already exists — a one-line adoption each (FUSION-DENSE-MIGRATE, follow-on). olmo2/granite/opt are deliberately-not-fused (post-norm / LayerNorm, no chain). GDN glue + MoE-combine remain bespoke (spike §10 W2 remainder, no recipe). Enforcement: scripts/check-fusion-consistency.py flags a model that hand-fuses add+RMSNorm without the catalog unless allowlisted (the 5 drift models are on fusion-consistency-allowlist.txt, keeping the gate GREEN while blocking new silent bypasses); mutation-tested (10/10). No build, no GPU.

Frontier-sweep scoping note (2026-07-25, CLAIM-SWEEP-FRONTIER-KMG, DONE, direct-to-main). A READ-ONLY per-model MECHANICAL-PORT disposition for the three user-named frontier families (Kimi K3 / MiniMax ~M2.7 / GLM latest) — no code, build, download, or gate. Recorded as a NOTE (NOT a SPIKE/ACTIVE matrix row): all three families' rows are already owned by other ACTIVE claimsMODEL-TEXT-kimi-linear-kimi-linear-for-causal-lm, MODEL-TEXT-minimax-m2-mini-max-m2-for-causal-lm and MODEL-TEXT-minimax-m3-mini-max-m3-sparse-for-causal-lm by CLAIM-MLA-DEEPSEEK; MODEL-TEXT-glm4-moe-glm4-moe-for-causal-lm (and the GLM/DSA/V4 set) by CLAIM-GLM-DSA-LATEST-DEEPSEEK — so this note owns ONLY .agents/specs/sweep-kimi-minimax-glm-latest.md and the record surfaces (roadmap breadth block, ledger, state, README, BENCHMARKS single line). It does NOT edit any model-matrix row; its corrections are handed to the two owning claims as CROSS-REFERENCED input (spec §5), the exact precedent of glm-dsa-latest-deepseek.md §0.1 vs the MLA campaign. Base origin/main 39943fc, isolated worktree, metadata-only (HF API + raw/config.json + dgx oracle/cache reads). Gating facts: Kimi K3 is ABSENT from the pin (no arch class; the big Kimi MoE loads as DeepseekV3ForCausalLM, K2.5=KimiK25 mm); MiniMax "M2.7" is not an arch (a ~M2.x ckpt loads as MiniMaxM2ForCausalLM; newest registered = M3 MiniMaxM3Sparse); GLM latest = Glm4Moe/GlmMoeDsa. Fit (119 GiB pool): Kimi-Linear-48B FITS 91.5 GiB (0.77×) = the ONLY frontier model with a REAL e2e SACRED gate (reuses MLA + sigmoid router + bf16 grouped-MoE + GDN; ONE new kernel = the KDA gated-delta gate; needs ~10 GiB dgx-disk reclaim). ★ CORRECTION handed to CLAIM-MLA-DEEPSEEK: its MiniMax-M2 row states "~230B / ~428 GiB bf16 / ~4×"; the checkpoint is fp8-native, 214.3 GiB, 1.80× over (no bf16 checkpoint exists) — a ZERO-new-kernel port, honesty-pass gateable, e2e HW-blocked. ★ To CLAIM-GLM-DSA-LATEST-DEEPSEEK: Glm4Moe is 0-new-kernel and GLM-4.5-Air-FP8 (104.8 GiB) FITS — the fitting variant that would yield the first GLM-MoE e2e if fp8-checkpoint loading lands. Kimi-K2 (958.5 GiB) / MiniMax-M3 (795.5 GiB + sm100 sparse + multimodal) / GLM-5 (1404 GiB + DSA DEP-blocked) = registry/config-resolution only. RANK: Kimi-Linear (real e2e gate)

MiniMax-M2 (cheapest, honesty-pass) > Glm4Moe (honesty-pass; fp8 fitting variant). Did NOT touch any MODEL-MM-* row or multimodal-track.md. No implementation, build, or gate. Not pushed. DFlash readiness-assessment note (2026-07-25, CLAIM-SPEC-DFLASH-READINESS, DONE, direct-to-main). A READ-ONLY design + checkpoint-availability pass, not implementation. Recorded as a note (NOT a SPIKE/ACTIVE matrix row — SPEC-DFLASH stays READY, dispatch-ready): it refreshes the DFlash spec's reuse-vs-new map against the LANDED MTP machinery (SPEC-MTP I1..I7 on 72f9fb1), delivers the D0-D6 W-plan, and returns the checkpoint-fit + oracle verdict. Base origin/main 72f9fb1, isolated worktree (spec/records only, no source/build). Owned files ONLY: .agents/specs/dflash-spec-decode.md, the SPEC-DFLASH row in .agents/engine-matrix.md, this note, and the record surfaces (roadmap C3, ledger, state, README, BENCHMARKS). Did NOT touch any source/kernel/test code, nor any other matrix row, nor the coordination-prohibited landed-ABI areas. Verdict GREEN, no HW/oracle/download blocker: both z-lab drafts exist on HF (27B 1.73 GB / 35B 368 MB bf16) and fit the 119 GiB pool; the dgx oracle vllm-oracle-v0.25.0-stage constructs DFlash; the drafts are not yet on dgx (D0 downloads them) and the sole soft risk is confirming the oracle SERVES DFlash+NVFP4 on sm_121 (D0). k>1 verdict: the landed rejection + GDN paths are mechanically k-general — no mechanism extension needed for DFlash's k=15 blocks, only exercise/validation + the k+1-slot memory measurement. No implementation, no build, no gate. Docs-refresh coordination note (2026-07-25, CLAIM-DOCS-REFRESH, DONE, direct-to-main). Comprehensive README + docs refresh to current git history (base origin/main 72f9fb1), following the CLAIM-DOCS-T2-FIXES precedent. Recorded as a note (no SPIKE/ACTIVE matrix row): it is docs + one CI checker, no capability row and no model/kernel/runtime code, so the SACRED gates are untouched by construction. Isolated worktree (branch docs/refresh-comprehensive). Owned files ONLY: README.md, docs/ENVIRONMENT.md (new), docs/SPECULATIVE-DECODING.md (new), docs/KV-OFFLOAD.md (em-dash fix), scripts/check-env-doc.py (new), scripts/env-doc-allowlist.txt (new), tests/scripts/test_check_env_doc.py (new), .github/workflows/ci.yml (wire the new check), plus the record surfaces (BENCHMARKS, ledger, state, roadmap, this note). Did NOT touch .agents/specs/dflash-spec-decode.md (owned by the sibling DFlash-readiness spike). What it brought current, each re-derived from source, not copied:

  • Spec-decode is now user-facing: fixed the class-B falsehood "Speculative decoding is not user-visible yet" (contradicted by the shipped --speculative-config), collapsed the wall-of-prose SPEC-MTP bullet to a concise current-state disposition, added docs/SPECULATIVE-DECODING.md, added the CLI flag row and the server-flag guide link.
  • C ABI bumped VLLM_ABI_VERSION 5 -> 6 in the README (verified include/vllm.h:60), 19 exported symbols (re-counted VLLM_API decls), added the speculative_config (ABI v6) field note.
  • docs/ENVIRONMENT.md (new): documents the 26 user-facing/behavior-changing env vars (deployment, GGUF loading, rollback/bisect, diagnostic) out of the 153 VT_*/VLLM_* names swept from src/+include/; the ~127 kernel-internal tail is enumerated on scripts/env-doc-allowlist.txt and deferred to the ledger.
  • scripts/check-env-doc.py (new, CI-wired in the agent-record job, mutation-test tests/scripts/test_check_env_doc.py): fails if any scanned production env var is neither documented nor allowlisted, so a new one cannot rot silently.
  • Verified-current counts that needed no change: 36 tool-parser families / 40 accepted names, 7 reasoning parsers, the 16-row Supported-models table vs the model-matrix architecture-support checklist. LMCache/KV-offload doc already current from T2; only the two em-dashes fixed for house style.

Red-gate RCA coordination note (2026-07-24, CLAIM-REDGATE-RCA, DONE, direct-to-main). Cleared the two red gates a sibling surfaced on origin/main. Recorded as a note (no SPIKE/ACTIVE matrix row): it is a correctness fix plus two RCAs, not a new capability row. Worktree /home/mudler/wt-redgates (branch fix/red-gates-tokenizer-anchors, base origin/main 1e14f60), dgx tree ~/redgate/s-1e14f60 transferred by git archive, every GPU stage under flock $HOME/gpu.lock on a verified-idle GPU. Owned files ONLY: src/vllm/tokenizer/tokenizer.cpp, include/vllm/tokenizer/tokenizer.h, tests/vllm/test_bpe.cpp, plus the record surfaces (README, BENCHMARKS, ledger, state, this note). Did NOT touch the coordination-prohibited areas (GDN attention/state-slot path — I4; examples/server/main.cpp + src/vllm/entrypoints/model_loader.cpp — CLI agent; speculative.h, v1/core/sched/*, the rejection-sampler/input-batch layer — landed I2/I3 ABI).

  • RED #1 (test_bpe): a REAL live bug, fixed by implementing the semantics. 4e9f1d2's accept-and-ignore of lstrip/rstrip silently mis-tokenized microsoft/Phi-4-mini-instruct (10 of its 12 added tokens set rstrip=true). Proven on dgx: our tokenize tool on the real Phi-4-mini tokenizer.json matched the HF tokenizers 0.22.2 oracle ONLY after the fix; the accept-and-ignore build diverged on 4/4 prompts. Now the matched token eats the adjacent whitespace exactly like transformers tokenization_utils.py:670-677. single_word stays a loud refusal (unemulated word-boundary semantics).
  • RED #2 (Qwen3-dense + Mistral "anchor drift"): NOT a regression and NOT stale goldens — a BUILD-CONFIG artifact. All three SACRED gates PASS 16/16 on a clean CANONICAL build of current origin/main (1e14f60, CUTLASS 4.5.0 + FA2 + Triton AOT, arch 121a), reproduced 3x. The sibling's failure came from a DEGRADED build (its third_party/cutlass lacked 4.5.0 -> VLLM_CPP_CUTLASS OFF -> the Qwen3-dense/Mistral FlashAttention-2 kernels never compiled, arch 75, Triton OFF). A same-binary A/B on the canonical build (VT_FA2_PREFILL_QWEN3=0 VT_FA2_DECODE_QWEN3=0) reproduces the sibling's BYTE-IDENTICAL signature (q06 p0 tok5->15344, q4b p2 tok11->323, mistral p5 tok10->1281): with FA2 off the fallback attention resolves the model's genuine bf16 near-ties the other way. The sibling's same-tree A/B looked "byte-identical on both arms" because BOTH arms were built FA2-off. Goldens are CORRECT for the production config; md5 unchanged before/after, no regeneration. The ledger row 662 inference "stale anchors, an unclaimed fix" is corrected here.

MTP coordination note (2026-07-24, CLAIM-MTP-I1-HEAD-ORACLE, DONE). Increment I1 of the MTP campaign closed M-mtp-0: it captured the draft-head oracle golden on both gate checkpoints and turned the previously SKIP'd parity case green. It is recorded here as a note rather than in the claims table because that table is reserved for rows in SPIKE/ACTIVE and SPEC-MTP legitimately stays GATING (no e2e spec-decode loop exists yet). Scope was additive/test-only — src/ and include/ untouched; owned files were tools/parity/dump_qwen3_5_mtp.py, the MTP runner + focused case in tests/parity/test_op_parity.cpp, and the new goldens tests/parity/goldens/qwen3_5_mtp_head_{27b,35b}/. Worktree /home/mudler/_git/wt-mtp-i1 (branch mtp-i1-head-oracle, base origin/main f887c34), dgx tree ~/mtp_i1 transferred by git archive, every GPU stage under flock $HOME/gpu.lock on a verified-idle GPU. Concurrent-work note: a sibling agent owns the scheduler-side spec plumbing on mtp-i2-scheduler (src/vllm/v1/core/sched/*, include/vllm/v1/request.h, include/vllm/v1/worker/gpu/input_batch.*, include/vllm/config/speculative.h, the engine-core spec paths); none of those were touched here. Evidence: the parity-ledger row and the .agents/state.md entry of the same date.

Docs coordination note (2026-07-23, CLAIM-DOCS-README-HOUSE-STYLE, DONE). A docs-and-policy-only change (no area-matrix work row, so it is recorded here as a note rather than in the claims table, which is reserved for rows in SPIKE/ACTIVE) curated README.md from a status-tracking log into the LocalAI house-style user-facing document, purged em-dashes from docs/BENCHMARKS.md, relocated the verbose README status prose to the append-only .agents/state.md, added the README-is-a-user-facing-document policy to AGENTS.md, and added the CI checker scripts/check-readme-structure.py (+ mutation test). It touched no src//include/ and moved no row state; see the parity-ledger row and the .agents/state.md entry of the same date. Concurrent-work note: the LMCache W2 agent is also appending to README.md; the new Features table is the single-line insertion point for a feature's current-state row, so a one-line status update folds into the new structure without adding a paragraph.

Docs coordination note (2026-07-23, CLAIM-DOCS-MODEL-CHECKLIST, DONE). Another docs-and-policy-only change (no area-matrix work row, so it is a note here, not a claims-table row): added an at-a-glance architecture-support checklist to the top of .agents/model-matrix.md (a rollup by lifecycle state plus one support-marked line per engaged architecture) and the CI checker scripts/check-model-checklist.py (+ mutation test) that keeps the checklist marks and rollup counts in lockstep with the detailed row states. It touched no src//include/ and moved NO row state; the audit confirmed all 23 engaged rows already accurately stated. Wired into the ci.yml agent-record job; policy added to AGENTS.md; see the parity-ledger row of the same date.

Docs coordination note (2026-07-24, CLAIM-DOCS-COVERAGE, DONE). A documentation-coverage AUDIT, read-only on code, with no area-matrix work row (so it is a note here, not a claims-table row, following the CLAIM-DOCS-MODEL-CHECKLIST precedent above). Isolated worktree scratchpad/wt-docs-audit branch docs-coverage-audit, base f887c34; no build, no GPU. It swept 1115 commits plus every user-facing surface in the tree against README.md, docs/BENCHMARKS.md and the area matrices, and classified every gap A-E in specs/docs-coverage-audit.md. Owned scope: that new spec, this note, the ledger/state entries of the same date, the roadmap section-A A6 row, and the OUTRIGHT-FALSEHOOD doc lines only (the docs/BENCHMARKS.md open-gates external-cache row plus four README lines: the Gemma 1/2 "spiked-only" sentence, the tool-calling bullet, the OLMo-3 "follow-on" clause, and the KV-offload "worker sides wired" overstatement). It touched NO file under src/, include/, tests/, examples/ or cmake/, moved NO matrix row state, and deliberately did NOT restructure the README (the Tier-3 follow-up increment owns that). Headline findings: two class-D overstatements, the louder being that the CPU/disk offloading connector has no worker half at all while its scheduler half still shortcuts prefill (a latent wrong-output path if it is selected on a GPU model, reported not fixed); five stale/contradictory doc lines, four fixed here and one left to the row's owner (the engine matrix still says the C ABI exports 17 symbols; it exports 19); four shipped-but-unreachable features (no --kv-transfer-config anywhere, the bundled server hardcoding the hermes tool parser with reasoning off, and so on); and 153 production environment variables of which exactly one appears in the README. Fix plan in impact order lives in the spec.

T2 fix-wave coordination note (2026-07-24, CLAIM-DOCS-T2-FIXES, DONE). Executed Tier 2 of specs/docs-coverage-audit.md: the D1 safety guard plus the three shipped-but-unreachable user surfaces. Isolated worktree, branch t2-fix-wave, base ba4dd62; CPU build + full CPU ctest, no GPU. Owned scope: include/vllm/v1/kv_offload/kv_connector.h, src/vllm/v1/kv_offload/kv_connector.cpp, include/vllm/v1/kv_offload/lmcache/lmcache_connector.h, src/vllm/v1/kv_offload/lmcache/lmcache_connector.cpp, {include,src}/vllm/config/kv_transfer.*, {include,src}/vllm/entrypoints/openai/tool_parsers/{abstract,detect}.*, {include,src}/vllm/entrypoints/openai/reasoning_parsers/{abstract,detect}.*, examples/server/main.cpp, the BuildKvConnector guard call in src/vllm/entrypoints/model_loader.cpp (three lines, additive — the file is shared with a sibling claim), tests/vllm/v1/test_kv_offload_connector.cpp, tests/vllm/entrypoints/openai/{tool_parsers,reasoning_parsers}/test_detect.cpp, docs/KV-OFFLOAD.md (new), the README flag/model/notes rows, and the engine-matrix SERVE-C-ABI / KV-OFFLOAD / KV-CONNECTORS / TOOLS-CALLING-CORE rows. It moved no matrix row STATE. The honest headline: the disk connector's worker half is still NOT implemented — this wave makes the engine REFUSE it loudly instead of silently serving output computed over KV that was never written. That is a safety fix, not the feature. Deliberately NOT done here: docs/ENVIRONMENT.md (the 153-variable reference, a separate increment) and the Tier-3 README restructuring.

Structured-output coordination note (2026-07-23, CLAIM-CAPI-STRUCTURED-V2, DONE, direct-to-main, user-directed). Production-wired the engine-wide StructuredOutputManager (LoadedEngine -> Scheduler/EngineCore/AsyncLLM) and added the C ABI v2 structured_* constraint fields; engine-matrix row TOOLS-STRUCTURED-CORE stays PARTIAL (upstream backend matrix still unported) with its code/test anchors updated. Scope owned during the change: src/vllm/entrypoints/model_loader.{h,cpp}, {include,src}/vllm/v1/engine/async_llm.*, include/vllm.h, src/capi/vllm_c.cpp, tests/capi/test_capi.cpp. Details in the state-log entry of the same date.

Chat-ABI coordination note (2026-07-24, CLAIM-CAPI-CHAT-V3, DONE, direct-to-main, user-directed). ABI v3: vllm_chat / vllm_chat_stream expose the serving-chat pipeline (template render, structural-tag tool_choice, streaming Hermes tool parsing) through the C ABI for the LocalAI vllm-cpp backend's autoparser-parity tool calling; LoadChatTemplateFromGguf added. Scope owned during the change: include/vllm.h, src/capi/* (incl. the follow-up chat_prompt.* probe/fallback resolution + tests/capi/test_chat_prompt.cpp), {include,src}/vllm/entrypoints/chat_template.*, tests/capi/test_capi.cpp, tests/vllm/entrypoints/test_chat_template.cpp. Serving layer untouched; engine-matrix TOOLS-STRUCTURED-CORE unchanged. Details in the state-log entry of the same date.

Parser-selection coordination note (2026-07-24, CLAIM-CAPI-PARSER-SELECT, DONE, direct-to-main, user-directed, subagent-authored + integrator-verified). ABI v4: vllm_model_params.tool_parser + marker-table auto-detection (tool_parsers/detect.{h,cpp}) feeding the capi chat serving construction; unknown names rejected on first chat call. First slice of the autoparser-parity program (full vLLM tool/reasoning parser port waves follow under TOOLS-STRUCTURED-CORE-adjacent rows). Scope: include/vllm.h, src/capi/vllm_c.cpp, src/capi/engine_handle.h, {include,src}/vllm/entrypoints/openai/tool_parsers/detect.*, tests.

Minja coordination note (2026-07-24, CLAIM-CAPI-MINJA, DONE, direct-to-main, user-directed, subagent-authored + integrator-verified). Vendored google/minja 021c229 as the chat-template engine (low-level Parser/Context API), deleting the homegrown subset renderer behind the same apply_chat_template contract; one documented lstrip guard is the sole local minja delta; 5 subset-era expectations corrected vs real jinja2. Scope: third_party/minja/, src/vllm/entrypoints/chat_template.cpp, include/vllm/entrypoints/chat_template.h comments, src/capi/* comments, tests/vllm/entrypoints/test_chat_template.cpp, tests/capi/test_chat_prompt.cpp, NOTICE, third_party/README.md.

Tool-parser wave B1 coordination note (2026-07-24, CLAIM-TOOL-PARSERS-B1, DONE, direct-to-main, user-directed, four subagent worktrees + integrator). Seven vLLM tool-parser families ported to the text-only C++ seam (12 registered dialects total) with upstream tests case-for-case; detection marker table populated. Scope: {include,src}/vllm/entrypoints/openai/tool_parsers/* (new: mistral, llama, pythonic, llama4_pythonic, granite, granite4, granite_20b_fc, deepseek_v3, deepseek_v31, longcat, utils; refactor: hermes virtual accessors; detect table), tests/vllm/entrypoints/openai/tool_parsers/*, CMake wiring. Details in the state-log entry of the same date.

Tool-parser wave B2 + reasoning seam coordination note (2026-07-24, CLAIM-TOOL-PARSERS-B2, DONE, direct-to-main, user-directed, five subagent worktrees + integrator). Eleven more tool dialects (23 total) + the greenfield reasoning-parser seam (six parsers, serving-chat reasoning-before-tools routing, reasoning chunk field). Integrator fixed two keep-both merge brace artifacts and the example server's ServingChat call site (ctor gained reasoning_parser_name), extended the detection table to 18 ordering-pinned rows. Scope: {include,src}/vllm/entrypoints/openai/ {tool_parsers,reasoning_parsers}/*, serving_chat., protocol., examples/server/main.cpp, tests, CMake. Details in the state-log entry of the same date.

Reasoning-selection coordination note (2026-07-24, CLAIM-CAPI-REASONING-V5, DONE, direct-to-main, user-directed, integrator-authored). ABI v5: vllm_model_params.reasoning_parser + template auto-detection (reasoning_parsers/detect.*), serving ctor wiring, and the non-stream reasoning-span SanitizeUtf8 fix the new capi tests caught. Scope: include/vllm.h, src/capi/*, {include,src}/vllm/entrypoints/openai/reasoning_parsers/detect.*, src/vllm/entrypoints/openai/serving_chat.cpp (sanitize fix), tests.

Tool-parser wave B4 coordination note (2026-07-24, CLAIM-TOOL-PARSERS-B4, DONE, direct-to-main, user-directed, two subagent worktrees + integrator). Final pure-text wave: hunyuan_a13b, apertus, ernie45, gigachat3, lfm2, poolside_v1, functiongemma (30 dialects total). Integrator repaired one keep-both brace artifact, added four detection rows + tests, documented three new explicit-only families. Scope: {include,src}/vllm/entrypoints/openai/tool_parsers/*, detect table, tests, CMake. Details in the state-log entry of the same date.

Structural-tag registry coordination note (2026-07-24, CLAIM-STRUCTURAL-TAGS, DONE, direct-to-main, user-directed, subagent-authored + integrator-verified). Per-family native-syntax tool_choice constraints; wrong-forcing of Hermes syntax on unmapped families REMOVED. Scope: {include,src}/vllm/entrypoints/openai/tool_parsers/ structural_tags.*, serving_chat.* (hermes builder moved, thin wrappers kept), tests/.../test_structural_tags.cpp, CMake. Details in the state-log entry of the same date.

ENG-wave coordination note (2026-07-24, CLAIM-TOOL-PARSERS-ENG, DONE, direct-to-main, user-directed, four subagent worktrees + integrator). The six engine-backed vLLM families text-reimplemented from wire formats (39 registered dialects; only Rust/Harmony remain unported, by decision). Integrator repaired two keep-both brace artifacts, added four detection rows with the seed_oss-before-step3p5 ordering, re-verified. Scope: {include,src}/vllm/entrypoints/openai/tool_parsers/{qwen3_coder,kimi_k2, glm47,minimax_m2,gemma4,seed_oss}.*, structural_tags., utils., detect table, tests, CMake. Details in the state-log entry of the same date. logprobs=-1 engine crash (SAMPLE-LOGPROBS, 2026-08-09, issue #231). Claude Code (claude-opus-5), isolated worktree /home/mudler/_git/vllm.cpp-logprobs-all, branch row/SAMPLE-LOGPROBS-ALL, base origin/main 58f43f66 pinned at worktree creation. Spec logprobs-all-sentinel.md. NOT in the claims table below: that table keys SPIKE/ACTIVE rows, and this is a bugfix to a DONE row with no lifecycle move. Scope: the num_logprobs widening

  • max_num_logprobs() in input_batch.{h,cpp}, the unreachability comment on the sampler's raw-vocab arm, two cases in tests/vllm/v1/test_llm_engine.cpp, the replaced + added cases in tests/vllm/v1/worker/test_input_batch.cpp, and the row's evidence cell. CPU-only; NO kernel, vt op, ABI, CMake, model file, GPU or public-doc change. Does NOT touch the roadmap issue table — PR #235 already registers #231 there and duplicating the row would guarantee a keyed-record conflict.

Record repair to the above (SAMPLE-LOGPROBS, 2026-08-10, issue #231). Claude Code (claude-opus-5), isolated worktree /home/mudler/_git/vllm.cpp-logprobs-record, branch row/SAMPLE-LOGPROBS-RECORD-REPAIR, base origin/main 1c1749cb pinned at worktree creation. Follows the entry directly above: the fix landed as fd9af7d9 (merged 723d96a8, PR #236, from row/SAMPLE-LOGPROBS-ALL-SENTINEL) and the CODE is correct, but an independent review found two shipped records false. (1) The crash site: the SIGSEGV is in LogprobsTensors::slice_request (src/vllm/v1/outputs.cpp:31-37) from scheduler.cpp:920-924, NOT in LogprobsProcessor::UpdateSampleLogprobs — the reviewer instrumented both consumers with the widening reverted and UpdateSampleLogprobs is never entered; reproduced here before the edit. (2) docs/USAGE.md claimed the HTTP logprobs field "keeps its own 0..5 range"; nothing in the tree enforces any range, and upstream deliberately admits -1 on the CHAT surface, so {"logprobs":true,"top_logprobs":-1} is a real capability the widening unblocked and it was untested. Scope: the crash-site attribution in logprobs-all-sentinel.md, the SAMPLE-LOGPROBS evidence cell in engine-matrix.md, the section-8 comment in tests/vllm/v1/test_llm_engine.cpp, the stale guard comment in src/vllm/v1/engine/logprobs.cpp, a strengthened finite-count assertion, one added chat top_logprobs=-1 case in tests/vllm/entrypoints/openai/test_serving.cpp, the SamplingParams::logprobs paragraph in docs/USAGE.md, and this entry. NO behaviour change: add_request, max_num_logprobs() and the sampler are untouched. CPU-only; NO kernel, vt op, ABI, CMake, model file or GPU change. Porting upstream's check_logprobs / max_logprobs validation stays out of scope — that is issue #249. Roadmap issue table still untouched: PR #235 registers #231 there and is open, so adding it again would duplicate a keyed record; AGENTS.md does prescribe how to resolve such a conflict, so this is duplication avoidance rather than an unresolvable clash — and if #235 closes without landing, #231 loses its roadmap registration and this row owes that line.

FUSION-DENSE-MIGRATE merged-GEMM fold (ROAD-V1-C1 punch-list item 15, 2026-08-10, issue #299). Claude Code (claude-opus-5), helper role, isolated worktree /home/mudler/_git/vllm.cpp-fusion-fold, branch row/FUSION-DENSE-MIGRATE, base origin/main c70f42b9 — the branch was rebased onto it (from e17e8f8a pinned at worktree creation, via 688eea12) because main moved 38 commits during the run and a stale base fails pr-size/agent-record with "base must be an ancestor of head". Spec fusion-dense-migrate.md. NOT in the claims table below: that table keys SPIKE/ACTIVE rows, and FUSION-DENSE-MIGRATE is a named tail item of the already-DONE ROAD-V1-C1 cornerstone, not a matrix row with a lifecycle state of its own. Scope: the five gate-up folds in src/vllm/model_executor/models/{commandr,glm4,minicpm,minicpm3,phi3}.cpp, the five removed entries in scripts/merged-gemm-consistency-allowlist.txt, one byte-exact case in tests/vllm/model_executor/layers/test_linear_method.cpp, two regression cases in tests/scripts/test_check_fusion_consistency.py, NEW tests/vllm/models/test_dense_gate_up_seam_forward.cpp + its two tests/CMakeLists.txt lines (the executed CPU coverage of the folded TUs, added on review finding F4), the roadmap issue-table rows for #299/#337/#338, the KERNEL-FUSION-FRAMEWORK evidence prose, the ROAD-V1-C1 tail lines in specs/roadmap-v1-completion.md, docs/FEATURES.md, the parity-ledger line, and this note. Plus one correction this row creates the need for: the glm4/phi3 reasons on the OTHER (glue) allowlist scripts/fusion-consistency-allowlist.txt read pending FUSION-DENSE-MIGRATE, which closing this row would leave pointing at closed work, so they are repointed at the new issue #314 and its roadmap intake row. The glue FOLD itself is NOT done here. NON-COLLISION: touches NO shared layer (linear.h/ nvfp4.h untouched), NO vt:: op, NO checker SCRIPT (only two allowlist DATA files), and no src//include/ file beyond the five folds. The only CMake edit is two additive tests/CMakeLists.txt lines registering the new test binary. CPU-only; the five dgx paged-engine SACRED gates SKIP here and are recorded as OWED, tracked by #337. Two Group-B allowlist REASONS (gemma4_moe, laguna) were rewritten in place on review finding F2 — they claimed a shared-layer blocker and stated none; their STEMS are untouched, so no model's allowlist status moves. Found while reviewing and NOT fixed here, its own issue: #338 (MiniCPM/MiniCPM3 hard-code SiLU where upstream MiniCPMMLP selects FatreluAndMul on hidden_act == "fatrelu").

logprobs_mode modes (SAMPLE-LOGPROB-TOKEN-IDS, 2026-08-10, CLAIM-SAMPLE-LOGPROBS-MODE, issue #238). Claude Code (claude-opus-5), isolated worktree /home/mudler/_git/vllm.cpp-logprobs-mode, branch row/SAMPLE-LOGPROBS-MODE, rebased onto origin/main 5e67fcc2. Spec logprobs-mode.md. Scope: the three unimplemented logprobs_mode values and the deletion of the runtime refusal, in src/vllm/v1/sample/sampler.{h,cpp} plus four cases in tests/vllm/v1/sample/test_sampler.cpp. CPU-only; NO kernel, vt op, ABI, CMake, model file or GPU. Row moves INVENTORIED -> PARTIAL, NOT ACTIVE: logprob_token_ids generative scoring and the config/CLI plumbing to select a mode from outside the library are both still absent. Records a spec-after-code ordering deviation in the spec preamble rather than hiding it behind commit order.

CLAIM-SAMPLE-LOGPROB-TOKEN-IDS (SAMPLE-LOGPROB-TOKEN-IDS, 2026-08-10, issue #264). Claude Code (claude-opus-5), helper role, isolated worktree /home/mudler/_git/vllm.cpp-token-ids, branch row/SAMPLE-LOGPROB-TOKEN-IDS, base origin/main e63d11d3 pinned at worktree creation, PR #267, origin/main 5812b8b6 MERGED in 2026-08-11 (never rebased -- both heads are published and main is never force-pushed). Spec logprob-token-ids.md. NOT in the claims table below: that table keys SPIKE/ACTIVE rows and this row lands PARTIAL (the row was already moved INVENTORIED -> PARTIAL on main by the sibling logprobs_mode claim, so this change moves no lifecycle counter). Scope: SamplingParams::logprob_token_ids + num_logprobs() + its two validations; the InputBatch req_id-keyed map and its make_sampling_metadata emission; GatherSpecificTokenLogprobs + the snapshot/precedence wiring in sampler.cpp; the two num_logprobs-property consumers (scheduler.cpp:920, logprobs.cpp:35); cases in test_sampler.cpp / test_input_batch.cpp / test_sampling_params.cpp / test_llm_engine.cpp; the row + its docs checkpoint; this claim; the #264 roadmap intake row. CPU-only; NO kernel, vt op, C ABI, CMake, model file, GPU or download. Textual overlap RESOLVED: #258 (logprobs_mode) and #223 (prompt_logprobs) landed first and both touched the same sampler.cpp snapshot block and input_batch.{h,cpp}; the 2026-08-11 merge keeps BOTH features -- logprobs_mode selects WHICH tensor the snapshot holds, logprob_token_ids selects WHICH ids are read out of it -- and adds one composition case that neither PR could have written against its own base. Does NOT touch GatherLogprobs -- issue #249's unbounded k is a separate row.

ClaimRow IDsAgentWorktree / remote dirBranchOwned scopeStateLast update
CLAIM-SAMPLE-PROMPT-LOGPROBS-W1SAMPLE-PROMPT-LOGPROBS (ACTIVE; W1 runner source only)Claude Code (claude-opus-5)/home/mudler/_git/vllm.cpp-prompt-logprobs; CPU-only build-gate (-DVLLM_CPP_CUDA=OFF Release) — NO GPU, NO download, claims no benchmark devicerow/SAMPLE-PROMPT-LOGPROBS, opened on origin/main bd6b3936, rebased onto 8a6704a2 for the 2026-08-10 review repair and onto e63d11d3 to land, issue #223The runner-side prompt-logits source ported from _get_prompt_logprobs_dict. Owns ONLY: the prompt_logprob_rows/prompt_logprob_indices block in prepare_inputs.{h,cpp}, collect_prompt_logprobs + in_progress_prompt_logprobs_ in runner.{h,cpp}, Sampler::compute_prompt_logprobs in sampler.{h,cpp}, num_prompt_logprobs in input_batch.{h,cpp}, section 9 of tests/vllm/v1/test_llm_engine.cpp, this claim, the row cells, .agents/NOW.md, .agents/roadmap_v1.md issue rows, one docs/STATUS.md sentence, and the prompt_logprobs paragraph in docs/USAGE.md. NON-COLLISION: NO kernel, NO vt op, NO ABI, NO CMake, NO model file — the full-logits route reuses the existing VT_LOGITS_GATHER=0 path rather than widening any model's gather contract. EXCLUDED: the OpenAI echo serialization (W2) and issue #231, both split out.ACTIVE2026-08-10 — W1 landed then REPAIRED after a fresh review returned VERDICT: FAIL. Review found a REAL bug: the inertness guard keyed on prompt_logprob_indices while the full-logits assertion keyed on prompt_logprob_rows, so a zero-row final chunk (the exact-prefill edge, :5668-5673) beside another multi-token request threw VT_CHECK out of engine.step() and killed the whole batch. Fixed by moving the check inside the num_rows > 0 slice; regression §8(h), RED-first (the throw). Second finding: the on-vs-off inertness case could not see a change to the SHARED route (forcing full logits on every step left it 17/17·346 green), so §8(g) now asserts the route DECISION through a const runner seam and fails under that exact mutation. Third finding recorded, NOT fixed and NOT claimed: the full-logits route hands the sampler a host pointer wearing the device label — sound on unified memory, unverified on CUDA; spec risk 4 + a PENDING CUDA smoke gate, and docs/USAGE.md narrowed to say so. Three latent lifetime divergences recorded as risks 5-7. Gates on the rebased tree (e63d11d3): clean CPU Release build 0 warnings under -Werror, test_llm_engine 21/21 · 384, full ctest -j 6 365/366 with test_openai_conformance (parallel starvation — connection -1s) passing serially 1/1 in 0.39 s. Row stays ACTIVE: W2 echo serialization is the named residual, and the CUDA smoke gate is PENDING.
CLAIM-MOONCAKE-STOREKV-MOONCAKE-STORE (new, SPIKE)Claude Code (opus-5), helper roleisolated worktree /home/mudler/_git/vllm.cpp-mooncake; records-only — NO build, NO GPU, NO download, NO external dependency installedrow/KV-MOONCAKE-STORE, base origin/main 848d4a87The MooncakeStoreConnector spike, records-only in this commit: NEW .agents/specs/mooncake-store-connector.md, the NEW KV-MOONCAKE-STORE engine-matrix row + section/total counters, the ENGINE_ROWS 146→147 bump in scripts/check-agent-record.py with its justification comment, a PROSE-ONLY Mooncake-disposition correction inside the KV-CONNECTORS row (both NOT-SCHEDULED sentences; that row's ANCHOR-BACKFILL state, tier, anchors, evidence, spec link and owner are UNCHANGED, so it is not claimed here), the ROAD-V1-D4 portfolio note + canonical-table link, the roadmap issue-table row for #287, and this claim. NON-COLLISION: touches NO src/, include/, tests/, examples/ or CMake path; the only script touched is the record checker's own row-count constant.ACTIVE2026-08-10 — spec committed. The KV-CONNECTORS spike's blanket "Mooncake NOT SCHEDULED" conflated TWO connectors: MooncakeConnector (P2P prefill/decode over the Transfer Engine — two nodes, fabric, proxy) KEEPS that verdict; MooncakeStoreConnector (shared KV object store, the LMCache analogue) is reopened because (a) Mooncake is NATIVE C++ — mooncake::Client in client_service.h, and the MooncakeDistributedStore vLLM imports is a pybind wrapper over it — so we LINK instead of reimplementing a wire (the inverse of the LMCache cost shape), and (b) its single-node protocol: "tcp" + mooncake_master config is gateable on one box with NO RDMA NIC. The landed W5 KVConnector seam needs NO change. NEXT: W0, the go/no-go link spike (build Mooncake from source, pin the revision, drive mooncake::Client from a standalone C++ TU against a local master over TCP) — a genuine stop point per spec §S1. Speed is recorded as an OPEN axis: the RDMA/GPUDirect path that motivates the connector is unmeasurable for want of a fabric on any box we own. PENDING developer authority: the Mooncake source build, push/PR.
CLAIM-MUSE-GLIMMER-SPECMODEL-MM-muse-glimmer-muse-glimmer-for-conditional-generation (SPIKE)Claude Code (opus-5), helper roleisolated worktree /home/mudler/_git/vllm.cpp-muse-glimmer; CPU-only, records+spec+W0 scaffold — NO GPU, weights on the shared NASrow/MODEL-MUSE-GLIMMER, base origin/main; PR #279 OPENThe Muse Glimmer port. Spec .agents/specs/muse-glimmer.md, the MODEL-MM-muse-glimmer-* matrix row + checklist + rollup, issue-table entry for #268, porting-inventory §9 deviation 16 (the OFF-PIN anchor), check-agent-record.py MODEL count, the W0 scaffold (registry + config parse + weight name map + refuse-by-name forward, gate 11/11), CHECKPOINT_ROOT in .env.example + .agents/environment.md. Those helpers ALL LANDED onto the row branch: W1 the 52-layer text forward, W3 the 50-layer perception encoder, W4 the mm wiring (tower to adapter to projection to perception_emb_norm to the masked scatter; released-30B accounting 1436/1436), W7 the ATEM reasoning + tool parsers. The branch is no longer "records + spec + W0 scaffold" and its forward no longer refuses. CLAIM-MUSE-GLIMMER-FIX (row/MODEL-MUSE-GLIMMER-FIX) then closed the PR #279 review findings: three COVERAGE HOLES that mutation testing found green (perception_emb_norm untested, the whole non-FusedChain fallback arm unexercised, RoPE theta ungated at a realistic magnitude), the stale "OPEN FINDING" that had disarmed the real-weights accounting assertion, and the false claim in both parser headers that the seam has no skip_special_tokens (it does; channel scoping is an OPEN GAP at server defaults, spec §6.7). WHAT IS STILL NOT ESTABLISHED, and must not be implied: the full-depth 52-layer arm never ran (evidence is reduced depth 4/52, 5 prefill argmax positions, no generated tokens), multi-step decode is untested, the perception encoder has no reference check, and nothing has run through the server. Anchored to the UNMERGED vllm#51655 head 075d645af on explicit developer direction 2026-08-10: Muse Glimmer exists neither at the pin 555967922 nor on vLLM main. No speed axis is claimable until #51655 merges and the pin advances — the pinned oracle cannot load the model.ACTIVE2026-08-10
CLAIM-LORA-RUNTIME-W2LORA-RUNTIME (moved ANCHOR-BACKFILL -> ACTIVE in this same change, in the engine matrix and its rollup — W2 of lora-adapter.md, issue #278)Claude Code (opus-5), helper roleisolated worktree /home/mudler/_git/vllm.cpp-lora-w2; CPU-only build-cpu (-DVLLM_CPP_CUDA=OFF Release); NO GPU (owned by another session), NO downloadrow/LORA-RUNTIME-W2, PR #282, origin/main 5812b8b6 MERGED in (never rebased -- a rebase would need a force-push, and main is never force-pushed)W2 packed + merged/TP layers: PackedLoRALayerWeights in include/vllm/lora/lora_weights.h, the multi-slice punica ops in include/vllm/lora/punica.h + src/vllm/lora/punica_cpu.cpp, the NEW include/vllm/lora/layers.h + src/vllm/lora/layers.cpp wrapped-layer family (replicated/column/row/merged-column/qkv/merged-qkv/variable-slice + the fully-sharded slicing overrides + embedding + logits), the NEW tests/vllm/lora/test_lora_layers.cpp port of tests/lora/test_layers.py, their two build-list lines, and the LORA-RUNTIME records. Does NOT own the fully-sharded APPLY path (needs the TP collectives — it REFUSES at tp_size>1), pack_moe (W7), LoRAConfig (W5) or convert_mapping (W3)ACTIVE2026-08-11 — CPU-gated: test_lora_layers 16/16 (4,498 assertions) + test_punica_cpu 8/8 (149 assertions), clean -Werror, full CPU ctest. A fresh review returned FAIL with 2 blocking + 3 major findings and 6 of 9 mutations SURVIVING (two ASan memory-safety bugs among them); all repaired in this same branch, each with a RED-first mutation, and the deferred fully-sharded apply now REFUSES instead of returning a partial delta. ALL SIX previously-surviving mutations were RE-RUN against the repaired head and all six are now CAUGHT (M1/M7 re-run with the newly-unused parameter voided, so the catch is behavioural and not -Werror=unused-parameter); the tree was restored byte-for-byte after each. Re-gated after merging origin/main 5812b8b6.
CLAIM-SPEC-DSPARKSPEC-DSPARK (ACTIVE)Claude Code (opus-5), helper roleisolated worktree /home/mudler/_git/vllm.cpp-spec-dspark; CPU-only so far, NO build, NO GPU, NO downloadrow/SPEC-DSPARK, base origin/main bc6e3d72; NOT PUSHED, no PR yet (remote step PENDING developer authority)The DSpark spike, records-only in this commit: NEW .agents/specs/dspark-spec-decode.md, the SPEC-DSPARK engine-matrix row + section/total counters, the feature-matrix §8 DSpark row, the superseded grounding-note header, this claim, .agents/NOW.md, and the docs/STATUS.md/docs/FEATURES.md/docs/BENCHMARKS.md one-liners. NON-COLLISION: touches NO src/, include/, tests/, examples/ or CMake path. Implementation slices W1-W6 follow under this same claim.ACTIVE2026-08-09 — spike committed. DSpark = the landed DFlash lane + Markov logit-bias head + sequential block sampling + anchor-as-first-prediction layout + d2t reduced vocab + method/config resolution + Speculators-format translation; upstream surface is 1613 lines over 5 files, 3 of them DFlash subclasses. Draft checkpoints exist for both gate models and for the 4B pair the upstream test uses; DeepSeek-V4 DSpark is out of scope (HW-blocked). NEXT: W1 config slice (CPU, RED = speculative.cpp:44 rejects "dspark" today) and R1, prove the pinned oracle 555967922 actually RUNS DSpark (it forces the V2 runner). PENDING developer authority: checkpoint downloads, dgx GPU time, push/draft-PR.
CLAIM-ENG-RELEASE-WINDOWSENG-RELEASE-WINDOWS (ACTIVE; W14-W16)Codex (GPT-5)/home/mudler/.cache/sdd/mudler-vllm.cpp/task-4-workflow; helper worktree under the Windows release operatorrow/ENG-RELEASE-WINDOWS-W15-WORKFLOW, base 27cf2e6eComplete native Windows CPU/Vulkan portability, packaging, ten-tuple workflow, prerelease identity, and truthful records in issue #117's single PR. Excludes Windows CUDA/arm64/installers/WSL/MinGW and any tag or publication before hosted gatesACTIVE2026-08-12 — local W14-W16 implementation and mutation gates in progress; native hosted PR CI, exact merged-SHA dry run, v0.0.3-pre.1 prerelease and 32-asset audit pending
CLAIM-ENG-RELEASE-BINARIES-W1-W13ENG-RELEASE-BINARIES (ACTIVE; complete release matrix)Codex (GPT-5)/home/mudler/_git/vllm.cpp-release-binaries; inline execution in the existing isolated worktreerow/ENG-RELEASE-HANDOFF-FLAT, base origin/main 24306364; follow-up PR pendingComplete W1-W13 contract in one PR; the current follow-up completes the W8/W13 hosted handoff after run 31408404388 built and uploaded all eight required tuples but aggregation failed on nested download-artifact extraction. Owns the workflow-wide flat-download invariant, checker and red-first mutation, hosted dry-run verification, and exact release-readiness audit; no backend/package/manifest behavior change. ROCm remains blockedACTIVE2026-08-09 — required W1-W11/W13 implementation complete; hosted ten-SM completion, full eight-tuple dry run, matching-hardware gates, rebase/merge, and tagged publication pending. Update 2026-08-10: all eight bundles now build and upload, while aggregation still fails before verify because plan/release-plan.json is nested under the artifact name; W12 optional/non-primary
CLAIM-ENG-RELEASE-BINARIES-W5ENG-RELEASE-BINARIES (ACTIVE; W5 only)Codex (GPT-5)/home/mudler/_git/vllm.cpp-release-binaries; CPU/build-time metadata tooling only, no GPU/download/service workrow/ENG-RELEASE-BINARIES, base b38f78a7, claim commit 29107d0b, draft PR #141W5 implemented: versioned manifest schema + deterministic generator/validator, canonical synthetic CPU/CUDA fixtures, fail-closed mutation tests, release checker/registration and required record/doc checkpoints. Excludes W1-W4, W6-W13, archives, install/package/publish workflows and runtime artifactsACTIVE2026-08-08 — W5 19/19; fresh-review production removals 10/10 killed; accepted release suite 30/30; no archive or real runtime/correctness/performance evidence
CLAIM-KIMI-LINEAR-W0MODEL-TEXT-kimi-linear-kimi-linear-for-causal-lm (stays SPIKE — dedicated W0 spike)Claude Code (opus-4-8)isolated worktree .claude/worktrees/agent-a771cc029e6843be0; CPU-only, records-only — NO build, NO GPU, NO download (two GPU jobs queued ahead; the W0 GPU golden capture is a SEPARATE later step)branch worktree-agent-a771cc029e6843be0, base origin/main HEAD 10dd23eeThe FULL dedicated W0 spike for KimiLinearForCausalLM (Kimi-Linear-48B-A3B) per the spike-first protocol, so W1 implementation can start immediately. Owns ONLY: NEW .agents/specs/kimi-linear.md, the MODEL-TEXT-kimi-linear-* matrix row (Spike link → the dedicated spec + note; STAYS SPIKE because it is actively claimed — protocol forbids a claimed row from being READY; checklist mark stays 📋), this claim row + the narrative block below, the roadmap breadth note, docs/STATUS.md/docs/BENCHMARKS.md/docs/FEATURES.md one-liners, the .agents/NOW.md live-claim row + stamp, and one .agents/state.md entry. NON-COLLISION: records-only — touches NO model/kernel/registry/loader source, NO CMake, NO test. Co-owns the Kimi-Linear row with CLAIM-MLA-DEEPSEEK (MLA half) + CLAIM-KDA-KERNEL (KDA host refs), exactly as the K3 row is co-owned by CLAIM-KIMI-K3-SCOPE/CLAIM-KIMI-K3-W2-W5.DONE2026-08-05 — W0 DEDICATED SPIKE LANDED (records-only, NOT pushed). Authoritative config.json fetched (27 layers = 20 KDA + 7 NoPE-MLA; 256e/top-8/1-shared sigmoid noaux_tc routed_scaling=2.446 first_k_dense_replace=1; num_nextn_predict_layers=0 ⇒ no MTP); reuse-vs-new map with our file:line; HW-fit (FITS one GB10, 91.5 GiB / 0.77× pool — real e2e SACRED gate reachable); W0-W7 breakdown + GPU golden-capture recipe. NET-NEW = KDA device kernel (host refs landed, CLAIM-KDA-KERNEL), NoPE-MLA branch, hybrid schedule/het-KV, loader name-map. Record checkers green (check-model-checklist, check-agent-record, check-doc-checkpoint, check-now-current).
CLAIM-KIMI-LINEAR-W1MODEL-TEXT-kimi-linear-kimi-linear-for-causal-lm (stays SPIKE — W1 registry/config/loader scaffolding; forward REFUSES-by-name)Claude Code (opus-4-8)isolated worktree .claude/worktrees/agent-a11ae231a71e8694b; CPU-only build-cpu (-DVLLM_CPP_CUDA=OFF Release); NO GPU, NO download — additive TU + one REGISTER line, forward is a VT_CHECK(false) stubbranch worktree-agent-a11ae231a71e8694b, base origin/main HEAD 053116dfKimi-Linear-48B-A3B W1 — registry + config + loader + KV-spec scaffolding so the W3-W6 forward can start. Owns ONLY: NEW include/vllm/model_executor/models/kimi_linear.h, NEW src/vllm/model_executor/models/{kimi_linear_registry,kimi_linear_weights,kimi_linear}.cpp, NEW tests/vllm/models/test_kimi_linear_scaffold.cpp, its two CMake registration lines (CMakeLists.txt source list + tests/CMakeLists.txt), the KimiLinearForCausalLM sorted-set + error-message + model-property inserts in tests/vllm/models/test_model_registry.cpp, the MODEL-TEXT-kimi-linear-* row cells + checklist Status (STAYS SPIKE/📋 — the forward refuses, rollup UNCHANGED), this claim, .agents/NOW.md, docs/STATUS.md/docs/BENCHMARKS.md/docs/FEATURES.md one-liners, and one .agents/state.md entry. NON-COLLISION: additive TU + one REGISTER line ⇒ ZERO edit to any shared array; the forward is a VT_CHECK(false) refuse stub so NO production/device path changes; co-owns the Kimi-Linear row with CLAIM-MLA-DEEPSEEK + CLAIM-KDA-KERNEL + CLAIM-KIMI-LINEAR-W0; MUST NOT touch README, Metal/SACRED/apex/darwin, or any other model/kernel source.DONE2026-08-05 — W1 CPU SCAFFOLDING LANDED (foreground, NOT pushed). Additive registry (kimi_linear/KimiLinearForCausalLM, is_hybrid, supports_multimodal=false) + ParseKimiLinearParams (20 KDA + 7 NoPE-MLA schedule, MLA 512/128/64/128 q_lora-null, 256e/top-8/1-shared sigmoid noaux_tc 2.446, first_k_dense_replace=1; asserts mla_use_nope/q_lora==null) + EnumerateKimiLinearTensors name-map VERIFIED vs the real HF safetensors index (MoE = block_sparse_moe.*, the correction of the DERIVED K3 mlp.*) + loader THROWS BY NAME on missing/mis-shaped tensors + het KV spec (MLA latent-576 + KDA mamba 12288×312288 \times 3/32×128×12832 \times 128 \times 128) + REFUSE-by-name forward. test_kimi_linear_scaffold 9/9·83 + test_model_registry 24/24 + test_kimi_k3_scaffold 6/6 unchanged; clean CPU Release build; check-fusion-consistency/check-runner-routing-consistency green (refuse stub skipped); record checkers rc=0. RESIDUAL (W3-W6): KDA device kernel + NoPE-MLA route + sigmoid-noaux MoE + het-KV born-on-runner forward + the e2e SACRED gate (spec §8 recipe).
CLAIM-KIMI-LINEAR-W2MODEL-TEXT-kimi-linear-kimi-linear-for-causal-lm (stays SPIKE — W2-W6 CPU REFERENCE forward; the DEVICE runner forward stays refuse-by-name)Claude Code (opus-4-8)isolated worktree .claude/worktrees/agent-aec13af094cd4692f; CPU-only build (-DVLLM_CPP_CUDA=OFF RelWithDebInfo); NO GPU, NO download — additive forward TU + a host-materialization pass in the existing loader + additive testbranch laguna-s21-w7-speed-profile (worktree), base origin/main HEAD 0988db48Kimi-Linear-48B-A3B W2-W6 — the CPU REFERENCE forward, per-op gated, replacing the refuse-by-name host KimiLinearModel::Forward. Owns ONLY: NEW src/vllm/model_executor/models/kimi_linear_forward.cpp, NEW tests/vllm/models/test_kimi_linear_forward.cpp, its two CMake lines (CMakeLists.txt source list + tests/CMakeLists.txt), ADDITIVE host-weight structs + per-op decls in include/vllm/model_executor/models/kimi_linear.h, the host-materialization pass in src/vllm/model_executor/models/kimi_linear_weights.cpp, the device-refuse doc/rename in src/vllm/model_executor/models/kimi_linear.cpp, the MODEL-TEXT-kimi-linear-* row cells + checklist Status (STAYS SPIKE/📋 — the DEVICE forward refuses; rollup UNCHANGED), this claim, .agents/NOW.md, docs/STATUS.md/docs/BENCHMARKS.md one-liners, and one .agents/state.md entry. NON-COLLISION: additive TU + additive header structs; the host Forward becomes real but ForwardDevice (the DEFAULT gather_logits runner path) STAYS VT_CHECK(false) so the born-on-runner CI guard skips it (NO allowlist) and NO production/device path changes; co-owns the Kimi-Linear row with CLAIM-MLA-DEEPSEEK + CLAIM-KDA-KERNEL + CLAIM-KIMI-LINEAR-W0/W1; MUST NOT touch README, Metal/SACRED/apex/darwin, or any other model/kernel source.DONE2026-08-05 — W2-W6 CPU REFERENCE FORWARD LANDED (foreground, NOT pushed). Real host KimiLinearModel::Forward composes the whole 27-layer hybrid from the landed primitives: KDA layer (vllm::kimi_kda refs + the gated-delta recurrence fused_recurrent.py:122-149), NoPE-MLA (materialized-MHA reference, scaling qk_head**-0.5, no RoPE), sigmoid noaux_tc MoE (bias-select/unbiased-weight, renormalize, routed_scaling=2.446) + shared expert, dense layer-0 SwiGLU; loader now MATERIALIZES the host float weights (bf16/f32→f32). test_kimi_linear_forward 6/6·246 (KDA==kimi_kda composition; NoPE-MLA==materialized-MHA ref; router+block==hand-computed; loader materializes; whole 2-layer forward finite/coherent; greedy-decodes 5 tokens, context advances) + test_kimi_linear_scaffold 9/9·83 + test_kimi_kda 14/14 UNCHANGED; clean CPU build; check-fusion-consistency/check-runner-routing-consistency green (DEVICE forward refuse-skipped, no allowlist). RESIDUAL: the DEVICE born-on-runner forward + the W0/W7 e2e SACRED token golden on GB10 (spec §8 recipe) + speed.
CLAIM-KIMI-LINEAR-W6MODEL-TEXT-kimi-linear-kimi-linear-for-causal-lm (SPIKEACTIVE — the born-on-the-runner DEVICE forward SEAM lands; device COMPUTE is the GPU-verify-pending W7 residual)Claude Code (opus-4-8)isolated worktree .claude/worktrees/agent-a01ce06793789391e; CPU-only build-cpu (-DVLLM_CPP_CUDA=OFF Release, -DVLLM_CPP_CUTLASS_DIR=$HOME/cutlass-4.5.0); NO GPU (box down), NO download — ForwardDevice device-resident-logits SEAM + recordsbranch worktree-agent-a01ce06793789391e, base origin/main HEAD 1ea26427Kimi-Linear-48B-A3B W6 — wire the born-on-the-runner DEVICE forward KimiLinearModel::ForwardDevice (replace the refuse-by-name stub). Owns ONLY: src/vllm/model_executor/models/kimi_linear.cpp (ForwardDevice + WrapKimiLinearDeviceLogits + the W7 device-compute reuse-wiring plan comments), the ForwardDevice doc in include/vllm/model_executor/models/kimi_linear.h, the case (e) appended to tests/vllm/models/test_kimi_linear_forward.cpp, the §9 + machine-readable structured-contract appendix in .agents/specs/kimi-linear.md, the MODEL-TEXT-kimi-linear-* row cells + checklist mark (📋🚧) + rollup (SPIKE 7→6 / ACTIVE 9→10), this claim, .agents/NOW.md live-claim row + stamp, docs/STATUS.md/docs/BENCHMARKS.md/docs/FEATURES.md one-liners, and one .agents/state.md entry (+ a records-hygiene repair of the pre-existing glued/mis-ordered state-tail anchor via sort-state-tail.py). NON-COLLISION: additive ForwardDevice body (the CPU reference Forward + the loader/registry are UNTOUCHED) — no new CUDA kernel, no CMake change; co-owns the Kimi-Linear row with CLAIM-MLA-DEEPSEEK + CLAIM-KDA-KERNEL + CLAIM-KIMI-LINEAR-W0/W1/W2; MUST NOT touch README, Metal/SACRED/apex/darwin, or any other model/kernel source.DONE2026-08-05 — W6 DEVICE FORWARD SEAM LANDED (foreground, NOT pushed). ForwardDevice (the DEFAULT gather_logits runner path) no longer refuses — it composes the [rows,vocab] logits via the CPU reference and returns them DEVICE-RESIDENT (a pooled DBuf, wrapped verbatim like deepseek_v2.cpp:633 WrapDeviceLogits; on_device()==true on CPU+CUDA) so the on-GPU sampler consumes them with NO host download — the third MUST-route seam. check-runner-routing-consistency reclassifies Kimi-Linear device-resident (25 routed; refuse-skipped stubs 2→1) with NO allowlist; check-fusion-consistency green. test_kimi_linear_forward 7/7·300 (adds case (e): ForwardDevice == host ref byte-exact + on_device() + greedy-token-identical + logits_indices gather → one device row); test_kimi_linear_scaffold 9/9·83 + test_kimi_kda 14/14 + test_model_registry 24/24 UNCHANGED; clean CPU build; all record checkers rc=0. RESIDUAL (GPU-verify-pending W7): the DBuf-resident device COMPUTE (KDA via the GDN device family + KDA-gate host-fallback, NoPE-MLA via mla::ForwardMlaAttentionBlock, DeepSeek-V2 grouped-MoE, over the paged het-KV; full plan in kimi_linear.cpp + spec §9) + the W0/W7 e2e SACRED golden (spec §8 recipe) + speed. GPU-verify recipe: build with -DVLLM_CPP_CUDA=ON on GB10, run test_kimi_linear_forward (device-resident logits on a CUDA queue) + the §8 oracle golden.
CLAIM-KIMI-LINEAR-W7MODEL-TEXT-kimi-linear-kimi-linear-for-causal-lm (stays ACTIVE — the DBuf-resident device COMPUTE lands, CPU-gated; GPU numerics + e2e SACRED golden stay the NAMED residual)Claude Code (opus-4-8)isolated worktree .claude/worktrees/agent-a1ebc9ca0b6aa195e; CPU-only build-cpu (-DVLLM_CPP_CUDA=OFF); NO GPU (box down), NO download — additive device-compute TU + per-op device gates + recordsbranch laguna-s21-w7-speed-profile (worktree), base origin/main + W1/W2-W6 (0988db48/bcaa1299/4e471f17)Kimi-Linear-48B-A3B W7 — implement the real DBuf-resident device COMPUTE (ForwardDeviceCompute) via the shared vt:: ops, CPU-gated vs the W2 host reference. Owns ONLY: NEW src/vllm/model_executor/models/kimi_linear_device.cpp, its CMake source line (CMakeLists.txt), the per-op device-wrapper + ForwardDeviceCompute + KimiDeviceComputeEnabled decls in include/vllm/model_executor/models/kimi_linear.h, the VT_KIMI_DEVICE_COMPUTE route in src/vllm/model_executor/models/kimi_linear.cpp, cases (f)-(j) in tests/vllm/models/test_kimi_linear_forward.cpp, the VT_KIMI_DEVICE_COMPUTE row in docs/ENVIRONMENT.md, the §9 note in .agents/specs/kimi-linear.md, the MODEL-TEXT-kimi-linear-* row cells (STAYS ACTIVE/🚧 — GPU pending; rollup UNCHANGED), this claim, .agents/NOW.md, docs/STATUS.md/docs/BENCHMARKS.md one-liners, and one .agents/state.md entry. NON-COLLISION: additive device-compute TU; the CPU reference Forward, the loader, the registry and the W6 ForwardDevice seam (default path) are UNTOUCHED — the device compute is opt-in behind VT_KIMI_DEVICE_COMPUTE (default OFF); no new CUDA kernel; co-owns the Kimi-Linear row with CLAIM-MLA-DEEPSEEK + CLAIM-KDA-KERNEL + CLAIM-KIMI-LINEAR-W0/W1/W2/W6; MUST NOT touch README, Metal/SACRED/apex/darwin, or any other model/kernel source.DONE2026-08-05 — W7 DBuf-RESIDENT DEVICE COMPUTE LANDED, CPU-gated (foreground, NOT pushed). ForwardDeviceCompute composes the whole 27-layer KDA/NoPE-MLA + 256-expert-MoE hybrid over POOLED f32 DBufs via the shared vt:: ops (embed/FusedChain(kFusedAddRmsNormStd)/MatmulBT projections/CausalConv1dFwd convs/L2Norm/RmsNormGated/MoeRouterTopK sigmoid-noaux_tc/MoeSiluMul/MoeCombine/lm_head), returning device-resident logits; 2 documented HOST-FALLBACK islands (the KDA per-k-channel gated-delta recurrence + its exp/softplus decay gate — vt::GdnDecode carries only a per-HEAD scalar decay; the NoPE-MLA softmax core — the paged mla::ForwardMlaAttentionBlock device path is born-on-runner) are the W7-speed residuals. CPU-gated vs the W2 host reference (the CPU backend runs the SAME vt:: dispatch; weights alias the host f32 bytes as ResidentWeight does on CPU): test_kimi_linear_forward 12/12·614 (per-op KDA/NoPE-MLA/MoE/dense device==ref within f32 tolerance; whole ForwardDeviceCompute==ref logits + greedy-token-identical + device-resident + logits_indices gather). Runner opt-in VT_KIMI_DEVICE_COMPUTE=1 (default OFF keeps the CPU-verified W6 host-ref compose). test_kimi_linear_scaffold 9/9 + test_kimi_kda 14/14 UNCHANGED; clean CPU build, -Wall -Wextra -Werror clean; check-fusion-consistency/check-runner-routing-consistency/check-env-doc/check-agent-record/check-now-current/check-doc-checkpoint rc=0. HONEST — NOT DONE for GPU: GPU numerics (bf16 activations, GDN Triton-AOT cubins, paged het-KV, grouped-MoE slabs) + the e2e SACRED golden (spec §8) stay a NAMED pending (box down). Box-return: CUDA build, token-exact vs oracle on a CUDA queue, §8 golden, then speed.
CLAIM-LAGUNA-W1W2MODEL-TEXT-laguna-laguna-for-causal-lm (INVENTORIED→ACTIVE)Claude Code (opus-4-8)isolated worktree .claude/worktrees/wf_2ae79b7a-246-1; CPU-only build-cpu (-DVLLM_CPP_CUDA=OFF Release -Werror); NO GPU, NO 73 GB download — structural bring-up + oracle DECISION onlybranch spike/laguna-s21-w1w2, base main 5c3da2f1Laguna-S-2.1 W1 oracle-decision + W2 structural bring-up. Owns ONLY: NEW include/vllm/model_executor/models/laguna.h, NEW src/vllm/model_executor/models/{laguna_registry,laguna_weights,laguna}.cpp, NEW tests/vllm/models/test_laguna_scaffold.cpp, NEW .agents/specs/laguna-s21-w1w2-2026-07-30.md, its two CMake registration lines (CMakeLists.txt source list + tests/CMakeLists.txt), the LagunaForCausalLM sorted-set + error-message insert in tests/vllm/models/test_model_registry.cpp, the MODEL-TEXT-laguna-laguna-for-causal-lm row (INVENTORIED→ACTIVE) + checklist rollup (ACTIVE 23→24 / INVENTORIED 285→284, engaged 42→43), and the record surfaces (this claim, roadmap breadth, docs/STATUS, docs/BENCHMARKS, parity-ledger, state). NON-COLLISION: additive TU + one REGISTER line ⇒ ZERO edit to any shared array; the forward is a VT_CHECK(false) W3 stub so no production path changes; MUST NOT touch README, Metal/SACRED/apex/darwin, or any other model/kernel source.DONE2026-07-30 — W1 oracle-decision + W2 structural bring-up LANDED (foreground, NOT pushed). Registry (laguna/LagunaForCausalLM) + ParseLagunaParams (nested dual-rope + variable Q-head + ungrouped sigmoid-noaux MoE) + GGUF blk.N.* name-map + UD-Q4_K_XL quant-mix (ZERO new decode kernel) + KV-cache spec + per-layer forward-composition scaffold with reuse citations. test_laguna_scaffold 3/3·40 + test_model_registry 24/24; CPU full-library -Werror clean; record checkers rc=0. RESIDUALS (W3/W4): device materialization + real forward + the 3 new ops + strict dual-oracle gate on a fetched checkpoint. SUPERSEDED by CLAIM-LAGUNA-W3 (2026-07-31) which landed the real forward + the 3 new ops.
CLAIM-LAGUNA-W3MODEL-TEXT-laguna-laguna-for-causal-lm (stays ACTIVE; W3 real forward + the 3 new ops landed; real-model dual-oracle gate still PENDING W4)Claude Code (opus-4-8)isolated worktree .claude/worktrees/wf_43e61a78-0e2-1; CPU-only build-cpu (-DVLLM_CPP_CUDA=OFF Release -Werror); NO GPU, NO 73 GB download — real forward CODE + unit gates onlybranch laguna-s21-w3, base main f2e463d5 (confirmed via git rev-parse HEAD)Laguna-S-2.1 W3 — turn the W1/W2 VT_CHECK(false) forward stub into a REAL runnable host-reference composition + land the 3 genuinely-NEW small host ops. Owns ONLY: NEW include/vllm/model_executor/models/laguna_ops.h + src/vllm/model_executor/models/laguna_ops.cpp (softplus head-gate + ungrouped sigmoid-noaux router + dual per-layer RoPE cos/sin builders), the rewritten src/vllm/model_executor/models/laguna.cpp (LagunaModel::Forward real composition), the LagunaParams per-layer variable-Q-head helpers in include/vllm/model_executor/models/laguna.h, the new-op + forward unit cases appended to tests/vllm/models/test_laguna_scaffold.cpp, the laguna_ops.cpp line in CMakeLists.txt, NEW .agents/specs/laguna-s21-w3-2026-07-31.md, the MODEL-TEXT-laguna-laguna-for-causal-lm row cells + this claim, and docs/STATUS + docs/BENCHMARKS pointers. NON-COLLISION: file-disjoint from the concurrent MLA-fold lane (mla_attention.cpp/deepseek_v2.cpp untouched); additive laguna_ops TU + one CMake line; the loaders still VT_CHECK(false) so NO production/device path changes; MUST NOT touch README, Metal/SACRED/apex/darwin, or any other model/kernel source.ACTIVE2026-07-31 — W3 REAL forward + 3 new ops LANDED + UNIT-GATED (foreground, NOT pushed). laguna_ops.cpp: LagunaSoftplusHeadGate (per-head softplus out-gate), LagunaUngroupedRouterTopK (sigmoid noaux_tc MINUS the group step + tie-break razor: lower index on equal choice, UNBIASED weights, renorm, routed_scaling), BuildLaguna{FullYarn,Sliding}CosSin (dual per-layer RoPE, reusing the pinned compute_yarn_inv_freq over the partial-64 dims). LagunaModel::Forward is now a REAL runnable f32 host-reference composition (variable-Q-head GQA + dual RoPE + sliding-window mask + softplus gate + dense L0 / ungrouped-MoE L1..47 + untied lm_head). test_laguna_scaffold 8/8·166 (softplus math; router selection + tie-break RED-first; dual-RoPE cos/sin bit-match vs hand ref; variable-Q-head shapes; forward composition on synthetic weights — RUNS, deterministic, gather==full-row, softplus gate wired) + test_model_registry 24/24; CPU full-library -DVLLM_CPP_CUDA=OFF -Werror clean; all record checkers rc=0. HONEST residual (DEFERRED W4, needs the 73 GB checkpoint): GGUF keep-quant tower materialization (loaders still LOUDLY throw) + device/paged production forward (runner variable-Q-head device wiring) + the strict dual-oracle greedy gate (llama.cpp-Q4_K token-exact + vLLM-NVFP4 near-tie). Risks: dual-RoPE numerics vs the fork on the real config; the reference forward is f32 whole-sequence (bf16 paged token-exactness is a W4 boundary); router tie-break vs the oracle's actual greedy selection. Row stays ACTIVE.
CLAIM-LAGUNA-W4MODEL-TEXT-laguna-laguna-for-causal-lm (stays ACTIVE; checkpoint fetched + fidelity corrected; real-model greedy gate is the W5 close)Claude Code (opus-4-8)isolated worktree .claude/worktrees/wf_63140a7b-03e-1; DGX dgx.casa GB10 for the 73.4 GiB fetch + GGUF metadata read + llama.cpp oracle build (foreground); CPU-verified fidelity corrections; NOT pushedbranch worktree-wf_63140a7b-03e-1, base main 570510a9Laguna-S-2.1 W4 — FETCH the UD-Q4_K_XL GGUF, read its metadata + tensor map AUTHORITATIVELY, and correct the fidelity errors the W1-W3 scaffold made from config.json guesses. Owns ONLY: laguna.h/laguna_ops.{h,cpp}/laguna.cpp/laguna_weights.cpp (QK-RMSNorm + LagunaYarnMscale + separate gate/up + verified name-map/quant-mix), the test_laguna_scaffold.cpp cases for those, NEW .agents/specs/laguna-s21-w4-2026-07-31.md, the MODEL-TEXT-laguna-laguna-for-causal-lm row cells + this claim, docs/STATUS + docs/BENCHMARKS pointers. NON-COLLISION: laguna-only additive edits; loaders still throw the keep-quant residual so NO production/device path changes; MUST NOT touch README, Metal/SACRED/apex/darwin, or any other model/kernel source.ACTIVE2026-07-31 — Checkpoint FETCHED + arch grounded in REAL bytes + 3 fidelity bugs fixed. UD-Q4_K_XL GGUF (73.4 GiB, 3 shards, 814 tensors) fetched to dgx; metadata read authoritatively (arch laguna, expert_gating_func=2 sigmoid, expert_weights_scale=2.5, leading_dense_block_count=1, rope factor 32/yarn_attn_factor 1.0, per-layer head_count [48,72,72,72], quant mix: attn Q8_0 / experts gate-up Q4_K + down Q5_K / shared Q8_0 / router+norms F32). Fixed: (a) per-head QK-RMSNorm attn_q/k_norm (scope MISSED it — no config flag), (b) dual-RoPE mscale via llama.cpp yarn_attn_factor·(1+0.1·ln(factor)) off GGUF factor 32 (not HF 128/1.4852), (c) SEPARATE ffn_gate/up_exps. Oracle = poolsideai/llama.cpp@laguna (mainline b10087+) same-quant; no vLLM-GGUF path for laguna. HONEST residual (W5 close, needs the resident 73 GB run): keep-quant tower materialization (Mw/Sew mirror of ds4) + host-orchestrated ForwardGguf (vt::MatmulBT/GemmRowSlice) + dual-RoPE inv_freq ramp bit-match + the real greedy run vs the llama.cpp same-quant oracle (token-exact or characterized near-tie). Row stays ACTIVE.
CLAIM-SPEC-DRAFT-MEDUSASPEC-DRAFT-MODEL (engine-matrix, NEW row →ACTIVE), SPEC-MEDUSA (engine-matrix, NEW row →SPIKE)Claude Code (opus-4-8)isolated worktree .claude/worktrees/draft-model-medusa (CPU-only build-cpu -DVLLM_CPP_CUDA=OFF Release -Werror; NO GPU, NO download — the draft-model propose brick is a host algorithm reusing the landed verify; DGX offline)branch feat/draft-model-medusa-spec, base main 2d1369fb (confirmed via git rev-parse HEAD)Generic draft-model + Medusa spec-decode RECORDS-GAP (feature-gap analysis lines 82-83), W0 spike + W1 CPU brick. Owns ONLY: NEW include/vllm/v1/spec_decode/draft_model_proposer.h, NEW src/vllm/v1/spec_decode/draft_model_proposer.cpp, NEW tests/vllm/v1/spec_decode/test_draft_model_proposer.cpp, NEW .agents/specs/draft-model-medusa-spec.md; the draft_model accept branch in src/vllm/config/speculative.cpp; its two CMake registration lines (CMakeLists.txt source list + tests/CMakeLists.txt test); the NEW SPEC-DRAFT-MODEL+SPEC-MEDUSA engine-matrix rows + their Speculative-area/Total rollup (Spec Rows 10→12/ACTIVE 3→4/SPIKE 0→1, Total 128→130/ACTIVE 46→47/SPIKE 3→4) + the check-agent-record.py ENGINE_ROWS 128→130 with dated rationale; the feature-gap-analysis lines 82-83 gap-closure note; and the record surfaces (this claim, feature-matrix spec rows, roadmap breadth, docs/STATUS, docs/BENCHMARKS, parity-ledger, state). NON-COLLISION: additive + default-inert — draft_model_proposer.cpp compiles into vllm::vllm but is called from NO production path in W1 (no runner constructs a DraftModelProposer), so every existing engine construction is byte-identical; reuses the existing RejectionSampler verbatim (NO re-ported verify/accept); does NOT touch the existing MTP/DFlash/ngram/EAGLE3 proposers, README, Metal/SACRED/apex/darwin, or any model/kernel source.ACTIVE2026-07-29 — W0 SPIKE + W1 CPU BRICK LANDED (foreground, NOT pushed). DraftModelProposeGreedy/DraftModelProposeBatch — the k-step greedy autoregressive propose over a DraftLogitsFn next-token oracle (draft_model.py:19 + llm_base_proposer.py propose :502-767 reduced to the standalone-LM greedy path), reusing the LANDED SPEC-REJECTION verify/accept UNCHANGED (only the proposer is net-new, mirror of SPEC-NGRAM). test_draft_model_proposer 6 cases / 41 assertions (CPU): propose->verify->accept equivalence (accepted == the target's own greedy run, every draft/target (dis)agreement pattern), full-acceptance on a matching draft (num_sampled==k+1), batch/empty-row, GreedyArgmax tie-break. RED-first proven: dropping the autoregressive feed-back makes 5/6 cases fail (repeated first token under-accepts). ParseSpeculativeConfigJson accepts "draft_model" (requires model + num_speculative_tokens). Clean CPU -Werror full-library build; record checkers rc=0. Medusa: W0 spike ONLY (SPEC-MEDUSA SPIKE) — the multi-head target-tap propose needs the target's Medusa heads (a model change), deferred to W2. RESIDUALS (named W2-W3): the Medusa proposer (W2); the real draft-model forward behind the oracle (paged KV + CUDA-graph) + the DGX e2e greedy our-ON==vLLM-ON token-exact gate + the throughput speed gate (W3, DGX-offline).
CLAIM-TOOLS-XGRAMMARTOOLS-XGRAMMARClaude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm.cpp-xgrammar, base main 6d54f242 (confirmed via git rev-parse HEAD); local CPU-only -Werror build build-cpu (VLLM_CPP_CUDA=OFF); NO GPU (host-side masking), NO pushworktree branch tools-xgrammar, base 6d54f242xgrammar structured-output backend (vLLM's default auto), W0 spike + W1 CPU brick. Owns ONLY: NEW .agents/specs/xgrammar-backend.md, NEW include/vllm/v1/structured_output/{backend_xgrammar,xgrammar_json_schema}.h + src/vllm/v1/structured_output/{backend_xgrammar,xgrammar_json_schema}.cpp, NEW tests/vllm/v1/structured_output/test_backend_xgrammar.cpp, its two CMake registration lines (CMakeLists.txt source list + tests/CMakeLists.txt), the TOOLS-XGRAMMAR row (INVENTORIED→ACTIVE), and the record surfaces (this row + the prose claim, engine-matrix, feature-matrix, porting-inventory §9, roadmap gap #4, docs/STATUS, docs/BENCHMARKS, parity-ledger, state). NON-COLLISION: reuses the existing native matcher via composition (no edit to backend_native.{h,cpp}, manager.cpp, backend_types.h, or json_schema_to_gbnf.*); MUST NOT touch README, Metal/demo, SACRED/apex/darwin, or model/kernel source. W1 is a standalone CPU backend + converter (no production wiring).ACTIVE2026-07-29 — W0 spike + W1 CPU brick LANDED (foreground, NOT pushed). XgrammarStructuredOutputBackend behind the shared seam + xgrammar-faithful JSON-schema→EBNF converter (declaration key order + any_whitespace + basic_* verbatim, SEMANTICS from json_schema_converter.cc @ a32ac89), reusing the native pushdown-FSM/trie matcher (§9: mirror xgrammar's algorithm portably, do NOT vendor the C++ lib); auto→xgrammar selection mirrored. Gate test_backend_xgrammar 6/6 (39 asserts), RED-first (native key-sort admits a token xgrammar forbids). No regression (native 4878 / structured 90 / json-schema 656). CPU -Wall -Wextra -Werror clean. W2-W4 (optional props + compact separators + feature-guard/auto-fallback + production wiring; xgrammar regex/structural-tag; GPU oracle parity) are named next bricks.
CLAIM-CUDA-KEEPQUANT-GEMMKERNEL-QUANT-CIQ-GEMM-CUDA (kernel-matrix, NEW row →ACTIVE)Claude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm.cpp.wt/feat-cuda-keepquant-gemm, base main 2191f771 (confirmed via git rev-parse HEAD); local CPU -Werror build-cpu; DGX GB10 gate via git archive to ~/work/cuda-keepquant (removed after), flock $HOME/gpu.lock serialized behind the live a35f6be0/dflash lane (its containers/worktree UNTOUCHED)worktree branch feat-cuda-keepquant-gemm, base 2191f771The FIRST CUDA keep-quant GGUF k-quant GEMM: the kCUDA provider for kMatmulBTQuant (MMVQ-style dequant-in-kernel dot, weights kept COMPRESSED in the unified pool). Owns ONLY: NEW src/vt/cuda/cuda_quant_dot.cu, NEW src/vt/cuda/cuda_quant_iq_tables.cuh, NEW tests/vt/test_cuda_quant_dot.cpp, its two CMake registration lines (CMakeLists.txt CUDA source list + tests/CMakeLists.txt), the NEW KERNEL-QUANT-CIQ-GEMM-CUDA kernel-matrix row + check-agent-record.py KERNEL 44→45, the DeepSeek-V4 keep-quant CUDA-compute notes in quantization-matrix.md, and the record surfaces (this row + prose claim, roadmap, docs/STATUS, docs/BENCHMARKS, parity-ledger, state, porting-inventory §9). NON-COLLISION: the CPU keep-quant reference (the oracle) is UNTOUCHED — additive kCUDA provider only; the .cu compiles only under VLLM_CPP_CUDA so the CPU build is byte-identical; MUST NOT touch README, Metal/SACRED/apex/darwin, or the CPU keep-quant reference.ACTIVE2026-07-29 — LANDED + GB10-GATED (foreground, NOT pushed). test_cuda_quant_dot 2/2 · 92401/92401 vs the CPU oracle (NMSE ≤1e-6, int core bit-exact) + f64 dequant (NMSE ≤5e-4) over 7 Q8_K types × M{1,4,32,512} × N{1,7,16}; compute-sanitizer memcheck 0 errors; RED-first proven (IQ2 0.125→0.135 fails 24, revert restores 92401, md5 9890f7e1…); registration flips GgufQuantComputeAvailable TRUE on kCUDA (experts dispatch to GPU). DeepSeek-V4 experts-on-GPU tok/s = FOLLOW-ON (benchmark lane). DGX left as found.
CLAIM-KDA-KERNELKERNEL-KDA-DELTA (kernel-matrix, NEW INVENTORIEDSPIKE); unblocks MODEL-TEXT-kimi-linear-kimi-linear-for-causal-lm (KDA kernel campaign named on that row) + MODEL-MM-kimi-k3-kimi-k3-for-conditional-generation (K3 W4).Claude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/kda-kernel-delta; CPU-only build-cpu (-DVLLM_CPP_CUDA=OFF Release) — the KDA deltas are host references, NO GPU/download/oracle needed this brickbranch kda-kernel-delta, base main 42c56b51 (confirmed via git rev-parse HEAD)The KDA (Kimi Delta Attention) kernel delta as portable CPU host references + unit gate, mirroring the DeepSeek-V4 DSA lane. Owns EXACTLY: NEW include/vllm/model_executor/models/kimi_kda.h + src/vllm/model_executor/models/kimi_kda.cpp + tests/vllm/models/test_kimi_kda.cpp, one CMakeLists.txt source line + one tests/CMakeLists.txt test line, NEW .agents/specs/kda-kernel-delta.md, the NEW KERNEL-KDA-DELTA kernel-matrix row + the check-agent-record.py KERNEL count 38→39, and the record surfaces (this claim row, model-matrix Kimi-Linear/K3 row notes, roadmap breadth, docs/STATUS, docs/BENCHMARKS, parity-ledger, state). NON-COLLISION: additive-only — does NOT touch src/vt/cuda/cuda_gdn.cu NOR src/vllm/v1/attention/backends/gdn_attn.cpp NOR any existing forward/registry/loader ⇒ the Qwen3.6-27B/35B GDN gate is byte-identical BY CONSTRUCTION; does NOT touch the CLAIM-KIMI-K3-* kimi_k3 model TUs or the DeepSeek-V4 MXFP4 files.SPIKE2026-07-28 — W0 SPIKE + W1 HOST-REFERENCE BRICK LANDED (CPU-gated, foreground, NOT pushed). Ported the four net-new-vs-GDN KDA deltas as portable host references: KdaLowRankDecay (f_a/f_b [H,D] bottleneck), KdaDecayGate + KdaDecayGateChunkCumsum (-exp(A_log)·softplus_β + chunk-cumsum·RCP_LN2), FusedRMSNormGated (sigmoid/swish gated norm), KdaShortConv (causal depthwise + silu), L2NormRows (q/k L2-norm, SUM-not-mean), each grounded 1:1 in kimi_gdn_linear_attn.py/kda.py file:line. test_kimi_kda 14/14·36 GREEN (hand-derived literals + double-precision rel-L2<1e-6). Honest gate: host-reference + structural review, NOT dumped-oracle — the REAL e2e gate is the DGX-blocked Kimi-Linear-48B-A3B proxy (K3 2.8T does not fit one GB10); the CUDA device kernel is the other named residual. GDN-inert PROVEN (empty git diff over cuda_gdn.cu + gdn_attn.cpp). Clean CPU full-library -Wall -Werror -Wextra build. Record checkers rc=0. NOT pushed; FULL SHA reported.
CLAIM-KIMI-K3-SCOPEMODEL-MM-kimi-k3-kimi-k3-for-conditional-generationClaude Code (opus-4-8)isolated worktree .claude/worktrees/agent-affb2ae9cfb0ca879 (CPU-only, records-only — NO build, NO GPU, NO download; DERIVE-AND-SHIP, no on-box golden; W1 proxy primitive gate is a NAMED next brick, not run — DGX busy)worktree branch, base main df18ca91 (confirmed via git rev-parse HEAD)Kimi K3 W0 SCOPE spike (DERIVE-AND-SHIP). Owns ONLY: NEW .agents/specs/kimi-k3.md (arch primitive map, reuse-vs-new, HW-fit, derive-and-ship plan, W-plan) + the NEW MODEL-MM-kimi-k3-kimi-k3-for-conditional-generation row (KimiK3ForConditionalGeneration, INVENTORIED→SPIKE) + the record surfaces (this row, model-matrix rollup SPIKE 8→9 / Total 326→327, roadmap breadth, docs/STATUS, docs/BENCHMARKS, parity-ledger, state, the check-agent-record MODEL count 326→327). NON-COLLISION: the shared KDA kernel + MXFP4 work must coordinate with CLAIM-MLA-DEEPSEEK (Kimi-Linear row) and the DeepSeek-V4 MXFP4 scope before implementation; this claim only SCOPES, does not steal their rows.SPIKE2026-07-28 — W0 SCOPE LANDED (records-only, foreground, NOT pushed). Verdict: K3 text backbone IS KimiLinearForCausalLM (KDA+MLA+MoE hybrid) massively scaled + MXFP4 + MoonViT-V2; HEAVY reuse of our GDN/MLA/MoE. HW: does NOT fit GB10 (~1.56 TB MXFP4, ~12×); no small K3; proxy = Kimi-Linear-48B. Not in the pinned oracle ⇒ derive-and-ship. NEXT: W1 proxy primitive gate (DGX busy).
CLAIM-DEEPSEEK-V4-SCOPEMODEL-SPEC-deepseek-v4-deep-seek-v4-mtpClaude Code (opus-4-8)isolated worktree .claude/worktrees/agent-a593dcf9e11eb06b3 (CPU-only, records-only — NO build, NO GPU, NO download; the oracle-RUN gate is a NAMED W1 next brick, not run — DGX busy)worktree branch, base main c497668d (confirmed via git rev-parse HEAD)DeepSeek-V4-Flash W0 SCOPE spike. Owns ONLY: NEW .agents/specs/deepseek-v4-flash.md (arch primitive map, reuse-vs-new, quant/HW-fit, oracle-gateability W1 plan, W-plan) + the MODEL-SPEC-deepseek-v4-deep-seek-v4-mtp row (DeepSeekV4MTPModel, INVENTORIED→SPIKE) + the record surfaces (this row, model-matrix rollup SPIKE 7→8 / INVENTORIED 286→285, feature-matrix §8, roadmap breadth, docs/STATUS, docs/BENCHMARKS, parity-ledger, state). NON-COLLISION: the DeepseekV4ForCausalLM row (MODEL-TEXT-deepseek-v4-deepseek-v4-for-causal-lm) stays OWNED by CLAIM-GLM-DSA-LATEST-DEEPSEEK; this claim only APPENDS a dated HW-fit correction + spec cross-reference to that row (does not steal state/owner). Shared sqrtsoftplus/MLA-geometry work must coordinate with CLAIM-MLA-DEEPSEEK/CLAIM-GLM-DSA-LATEST-DEEPSEEK before implementation.SPIKE2026-07-28 — W0 SCOPE LANDED (records-only, foreground, NOT pushed). Verdict: V4-Flash is a NEW multi-brick arch (DSA sparse-MLA + Manifold Hyper-Connections + MegaMoE/NVFP4 + sqrtsoftplus/hash MoE), not a V3 increment. HW-fit: nvidia/DeepSeek-V4-Flash-NVFP4 ~83 GiB FITS 119 GiB + runs on GB10 (sparse-MLA sm_12x backend; MegaMoE SM100-only ⇒ FusedMoE fallback); free DGX disk to ~90 GiB. W1 = prove oracle RUNS NVFP4 within 119 GiB + greedy golden (DEP-risk: flashinfer DSV4 sparse symbols).
CLAIM-DEEPSEEK-V4-MTPMODEL-SPEC-deepseek-v4-deep-seek-v4-mtpClaude Code (opus-4-8)local /home/mudler/_git/vllm.cpp (background agent; CPU build+gate, DGX read-only GGUF-header + vLLM-ref inspection, NO GPU run)deepseek-v4-mtp, base main aed4a498DeepSeek-V4 native MTP (DeepSeekV4MTPModel) W1 self-spec WIRING. Owns ONLY the MODEL-SPEC-deepseek-v4-deep-seek-v4-mtp row (SPIKE→ACTIVE) + .agents/specs/deepseek-v4-mtp.md + the loader/draft-forward code in deepseek_v4.{h,cpp}/deepseek_v4_weights.cpp (nextn head loader/absence-guard + DeepseekV4MtpDraftLogitsHost + the ForwardComposeImpl residual-capture out-param) + test_deepseek_v4_mtp.cpp + record surfaces (this row, model-matrix rollup ACTIVE 22→23 / SPIKE 8→7, docs/STATUS, docs/BENCHMARKS, parity-ledger, state). Handoff FROM CLAIM-DEEPSEEK-V4-SCOPE (W0 landed). NON-COLLISION: the DS4 model row (MODEL-TEXT-deepseek-v4-deepseek-v4-for-causal-lm) stays with CLAIM-DEEPSEEK-V4-IMPL/the DS4 campaign; concurrent GEMM-tuning agent touches cuda_quant_dot.cu only (no overlap).ACTIVE2026-07-30 — W1 LANDED (CPU-gated, foreground, NOT pushed). SCOPE spec + native nextn draft forward (1:1 nvidia/mtp.py:128-258) reusing the DS4 host composition + DeepseekV4GgufHasMtp absence guard; LOSSLESS gate test_deepseek_v4_mtp 5/5·29 (DS4 draft + DS4 target verified by the SHARED RejectionSampler == pure target greedy ⇒ MTP-on == MTP-off), DS4 forward/gguf_load tests non-regressed (6/6, 12/12). BLOCKER: both shipped DS4 GGUFs dropped the nextn tail (verified on dgx) ⇒ real-model gate weight-blocked. Residuals: DS4-native decode-loop propose/verify + engine spec-config registration (R2/R3).
CLAIM-DEEPSEEK-V4-IMPLMODEL-TEXT-deepseek-v4-deepseek-v4-for-causal-lmClaude Code (opus-4-8)isolated worktree .claude/worktrees/agent-a24709ef7e27b11d6 (CPU-side scaffolding — no GPU/download this pass; W1 oracle-run deferred)worktree branch, base main df18ca91 (confirmed via git rev-parse HEAD)DeepSeek-V4-Flash IMPLEMENTATION, W1/W2. Owns the MODEL-TEXT-deepseek-v4-deepseek-v4-for-causal-lm row (TRANSFERRED from the stale/no-worktree CLAIM-GLM-DSA-LATEST-DEEPSEEK, user-directed pickup) + the additive TUs deepseek_v4.{h,cpp} / deepseek_v4_weights.cpp / deepseek_v4_registry.cpp + tests/vllm/models/test_deepseek_v4_scaffold.cpp + the W1/W2 section of .agents/specs/deepseek-v4-flash.md + the record surfaces. Shared sqrtsoftplus/MLA-geometry primitives coordinate with CLAIM-MLA-DEEPSEEK before W3/W6.SPIKE2026-07-28 — W1/W2 CPU SCAFFOLDING LANDED (foreground, NOT pushed). Registry stub + config parse + loader name-map VERIFIED vs the real nvidia/DeepSeek-V4-Flash-NVFP4 header (HTTP-range, NO 156 GiB download): index 135,235 tensors / total_size 156.7 GiB; shard-2 header confirms 512-wide MLA (wq_b [32768,1024]=64×512), grouped OUTPUT-LoRA (wo_a [8192,4096]/wo_b [4096,8192]), NVFP4 U8 experts + weight_scale/weight_scale_2/input_scale, FP8-block MLA/shared linears, MHC hc_attn_fn [24,16384]=(2+4)·4×4·4096, 3 hash layers (tid2eid, no bias), 41 compressor / 21 indexer layers. Clean CPU -Werror build 0-warn; test_deepseek_v4_scaffold 4/4·40 (arch resolves + config descends + topology + reject). HW-FIT REVERSAL: the NVFP4 checkpoint is 156.7 GiB, NOT the spike's ~83 GiB — only the 256 routed experts are W4; the MLA + shared-expert linears are FP8 block + NVFP4 double-scale overhead ⇒ it does NOT fit ONE GB10's 119 GiB unified pool (consistent with the native fp4 148.7 GiB). W1 (single-GB10 oracle run) is therefore MEMORY-INFEASIBLE, not merely disk-contended — needs multi-node TP / CPU offload / a smaller quant. Forward + strict gate are named W3-W8 residuals.
CLAIM-DEEPSEEK-V4-W3KERNEL-ATTN-DSA-SPARSE-INDEX (under CLAIM-DEEPSEEK-V4-IMPL — does NOT own a new model-matrix row; the MODEL-TEXT-deepseek-v4-deepseek-v4-for-causal-lm row stays owned by CLAIM-DEEPSEEK-V4-IMPL, still SPIKE)Claude Code (opus-4-8)isolated worktree .claude/worktrees/agent-ab5af42001c4d40dc (CPU-only; NO GPU/download; foreground; NOT pushed)worktree branch, base main 308c312a (confirmed via git rev-parse HEAD)DeepSeek-V4-Flash W3 — the genuinely-NEW attention primitives, as portable host references + unit gate. Owns the additive TUs deepseek_v4_dsa.{h,cpp} + tests/vllm/models/test_deepseek_v4_dsa.cpp + the new KERNEL-ATTN-DSA-SPARSE-INDEX row + the W3 section of .agents/specs/deepseek-v4-flash.md + the record surfaces. SACRED-inert: additive ONLY — does NOT touch mla_attention.{h,cpp} / cuda_mla_attn.cu (extending the SHARED MLA block risks V2, so V4's new geometry lands as a V4-specific path and the shared-mla extraction is a NAMED W7 follow-on). Coordinated: MLA-geometry generalization deferred to W7 per CLAIM-MLA-DEEPSEEK non-collision.SPIKE2026-07-28 — W3 LANDED (foreground, NOT pushed). Ported + unit-gated the two NEW-vs-V2/V3 primitives: (A) the DSA "Lightning Indexer" sparse SELECTION — weighted-MQA logit Σ_h w·ReLU(q·k) (the per-head ReLU is load-bearing, triton_fp8_mqa_logits.py:129) + weight fold (D^-0.5·H^-0.5) + causal top-k (index_topk=512; short-context all-select); (B) the 512-wide MLA output seams V2/V3 lack — per-head attention-sink softmax + grouped output-LoRA (wo_a bmm→wo_b, o_proj.py:58-73). deepseek_v4_dsa.cpp/.h: DsaIndexerWeightFold/DsaIndexerLogits/DsaTopkSelect/SoftmaxWithSink/GroupedOutputLora. Gate test_deepseek_v4_dsa 13/13·38 — HAND-DERIVED literal cases (ReLU clip, weight fold, short-context, full top-k, tie→smaller-index, causal window, sink mass + stability, grouped-LoRA) + from-first-principles double-precision references (indexer logits + grouped-LoRA rel-L2 < 1e-6). Honest gate form: NOT a dumped-oracle rel-L2 (the arch is a fixed-config 167B, not constructible at a tiny shape) — hand-case + structural review vs vLLM file:line, stated as such. Clean CPU -Wall -Werror -Wextra 0-warn (new lib TU + test). SACRED inertness PROVEN: zero edits to any existing forward; test_deepseek_v4_scaffold still 4/4·40. SGLANG BENCHMARK-REF FINDING (user asked "maybe sglang?"): SGLang v0.5.15 (/home/mudler/_git/sglang) DOES register+implement DeepseekV4ForCausalLM (EntryClass = [DeepseekV4ForCausalLM], python/sglang/srt/models/deepseek_v4.py, 2856 LoC) with the FULL V4 stack — C4Indexer + Compressor (layers/attention/dsv4/), MHC hc_split_sinkhorn (layers/mhc), o_lora, attn_sink — so it is a viable SECOND reference. BUT it faces the SAME single-GB10 memory infeasibility (156.7 GiB NVFP4 / 167 GiB fp8); gateable as (a) a tiny-shape primitive-DUMP oracle if its C4Indexer/Compressor construct at small dims, or (b) a multi-node/2-Spark benchmark reference — recorded in the spec. Residuals: MHC (W5), sqrtsoftplus/hash MoE (W6), device kernel + forward integration + strict gate (W7-W8) = multi-Spark.
CLAIM-DEEPSEEK-V4-W4KERNEL-ATTN-DSA-COMPRESSOR (NEW row, under CLAIM-DEEPSEEK-V4-IMPL — does NOT own a new model-matrix row; the MODEL-TEXT-deepseek-v4-deepseek-v4-for-causal-lm row stays owned by CLAIM-DEEPSEEK-V4-IMPL, still SPIKE)Claude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm.cpp-w4 (CPU-only; NO GPU/download; foreground; NOT pushed)worktree branch claim-deepseek-v4-w4, base main 4d1be010 (confirmed via git rev-parse HEAD)DeepSeek-V4-Flash W4 — the DSA COMPRESSOR forward + the fp8_ds_mla KV-cache state layout, as portable host references + unit gate. Owns the additive TUs deepseek_v4_compressor.{h,cpp} + tests/vllm/models/test_deepseek_v4_compressor.cpp + the new KERNEL-ATTN-DSA-COMPRESSOR kernel-matrix row (+ its check-agent-record.py count bump 39→40) + the W4 section of .agents/specs/deepseek-v4-flash.md + the record surfaces. SACRED-inert: additive ONLY — does NOT touch mla_attention.{h,cpp} / cuda_mla_attn.cu (the shared MLA / V4 512-wide geometry stays a V4-specific path; the shared-mla extraction is a NAMED W7 follow-on) and does NOT touch the GGUF/quant TUs owned by the CLAIM-DSV4-GGUF-* lane.SPIKE2026-07-29 — W4 LANDED (foreground, NOT pushed). Ported + unit-gated the second half of the DSA sparse-attention stack as portable host references: (A) the DSA COMPRESSOR forward — CompressorPoolNorm (the softmax-weighted window pool, softmax(score,dim=0) PER head-dim column then RMSNorm, fused_compress_quant_cache.py:198-218) + CompressorSaveScoreApe (the fused save-time score += ape[pos % compress_ratio], save_partial_states.py:92-101); (B) the fp8_ds_mla KV-cache state read/write layout — MakeFp8DsMlaLayout/Fp8DsMlaEncodeToken/Fp8DsMlaDecodeToken (448-wide NoPE FP8 e4m3 with per-64 UE8M0 power-of-two block scales exp=ceil(log2(absmax/448)) byte exp+127, 64-wide RoPE bf16, 576B token stride, 7+1 scale region, + the dequant read nope=e4m3·2^(byte-127)), fused_compress_quant_cache.py:220-297 + compressor.py:307-309, cross-checked vs SGLang v0.5.15 dsv4/dequant_k_cache.py. Gate test_deepseek_v4_compressor 12/12·164 — hand-derived literals (APE modulo-wrap; per-column softmax pool proven load-bearing; window masking; layout 448/64/576/7+1; all-ones→UE8M0 byte 119; value-3→byte 120; bf16 rope verbatim) + from-first-principles double-precision references (pool+norm rel-L2 < 1e-6; INDEPENDENT UE8M0 scale-byte recompute; encode→decode round-trip < 0.05 fp8 granularity). RED-first PROVEN: scale-bias +127→+126 fails 4/135, revert restores 12/12·164. Honest gate form: hand-case + structural review vs vLLM+SGLang file:line (arch not constructible at a tiny shape ⇒ NOT a dumped-oracle rel-L2). CPU Debug full-library build (the pre-existing GCC-13 -O2 -Werror=array-bounds false positive in voxtral.cpp forces Debug; the new TUs are -Wall -Werror -Wextra-clean). SACRED inertness PROVEN: empty diff over mla_attention/cuda_mla_attn; test_deepseek_v4_dsa still 13/13·38, test_deepseek_v4_scaffold 4/4·40. New kernel row KERNEL-ATTN-DSA-COMPRESSOR (SPIKE). Residuals: MHC (W5), sqrtsoftplus/hash MoE (W6), the fused device kernel + DeepseekV4Model::Forward integration + the compressor state-cache gather addressing (W7), strict/near-tie engine gate (W8) — all multi-Spark.
CLAIM-DEEPSEEK-V4-W5KERNEL-MHC-SINKHORN (NEW row, under CLAIM-DEEPSEEK-V4-IMPL — does NOT own a new model-matrix row; the MODEL-TEXT-deepseek-v4-deepseek-v4-for-causal-lm row stays owned by CLAIM-DEEPSEEK-V4-IMPL, still SPIKE)Claude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm.cpp-w5-mhc (CPU-only; NO GPU/download; foreground; NOT pushed)worktree branch w5-mhc, base main d0bc0f41 (confirmed via git rev-parse HEAD)DeepSeek-V4-Flash W5 — Manifold/Markov Hyper-Connections (MHC), the hardest V4 brick, as portable host references + unit gate. Owns the additive TUs deepseek_v4_mhc.{h,cpp} + tests/vllm/models/test_deepseek_v4_mhc.cpp + the new KERNEL-MHC-SINKHORN kernel-matrix row (+ its check-agent-record.py count bump 40→41) + the W5 section of .agents/specs/deepseek-v4-flash.md + the record surfaces. SACRED-inert: additive ONLY — does NOT touch any existing forward (MHC is a V4-only topology; the shared DeepSeek-V2 MLA + the DSA/compressor TUs are untouched beyond additive) and does NOT touch the GGUF/quant TUs owned by the CLAIM-DSV4-GGUF-* lane; the device kernel + forward assembly are NAMED W7 residuals.SPIKE2026-07-29 — W5 LANDED (foreground, NOT pushed). Ported + unit-gated the MHC residual topology as portable host references: MhcSinkhorn (the 20-iter Sinkhorn: row-softmax seed +eps → col-norm → (iters1)×[rownorm,colnorm](\text{iters}-1) \times [\text{row}-\text{norm},\text{col}-\text{norm}] toward doubly-stochastic), MhcPre (folded weight-free RMSNorm projection → pre/post/comb gates → stream collapse → optional folded attn/ffn RMSNorm), MhcPost (comb mix + post gate residual fold), HcHeadCollapse (weight-free RMSNorm → hc_head_fn → sigmoid gate → weighted stream sum). EAGER-REF FINDING (corrects the W0 "ZERO eager reference upstream" premise, cited in the model-matrix row + this spec): the pinned vLLM DOES ship an eager PyTorch reference — vllm/model_executor/kernels/mhc/torch.py (mhc_pre_torch/mhc_post_torch) + triton.py (head collapse); four upstream impls (torch.py, tilelang_kernels.py _sinkhorn_fwd, tilelang.py, SGLang mhc.py) agree byte-for-byte on the Sinkhorn. Ported that eager ref 1:1 AND derived the Sinkhorn independently in double precision (alternating row/col normalization). Gate test_deepseek_v4_mhc 14/14·125 — hand-derived literals (all-zero→uniform doubly-stochastic 1/hc; symmetric-2×2 fixed point [[.75,.25],[.25,.75]]; iteration-count load-bearing; MhcPre fn=0 gate midpoints; RMSNorm fold [1,3]→[1,3]/√5; MhcPost identity-comb + post-add; mix sums over the first comb index; hc_head fn=0 stream mean) + from-first-principles DOUBLE-PRECISION references (Sinkhorn/MhcPre/MhcPost/HcHead f32==f64 rel-L2 < 1e-5..1e-4; doubly-stochastic convergence). RED-first PROVEN both levers: perturbing the Sinkhorn iteration count (iters-1→iters-2) fails 1 case/9 assertions AND swapping a normalization axis fails 2 cases/12 assertions — caught by a dedicated SMALL-iteration-count (2/3/5) gate, because at 20 iters the Sinkhorn has CONVERGED and ±1 iter is within tolerance (an honesty fix over a naive iters=20-only gate); revert restores 14/14·125. Honest gate form: DERIVED-eager-reference + hand-case + structural review vs vLLM+SGLang file:line (fixed-config 167B not constructible at a tiny shape ⇒ NOT a dumped-oracle rel-L2). OPEN QUESTION: end-to-end bf16 residual/layer_input rounding between steps is a W7 device concern, not folded into these f32/f64 refs. CPU Debug full-library build (the pre-existing GCC-13 -O2 -Werror=array-bounds false positive in voxtral.cpp forces Debug; the new TUs are -Wall -Werror -Wextra-clean). SACRED inertness PROVEN: no existing forward touched; test_deepseek_v4_compressor still 12/12·164, test_deepseek_v4_dsa 13/13·38, test_deepseek_v4_scaffold 4/4·40. New kernel row KERNEL-MHC-SINKHORN (SPIKE). Residuals: sqrtsoftplus/hash MoE (W6), device kernel + DeepseekV4Model::Forward assembly (W7), strict/near-tie engine gate (W8) — all multi-Spark.
CLAIM-DEEPSEEK-V4-W6KERNEL-MOE-SQRTSOFTPLUS-HASH (NEW row, under CLAIM-DEEPSEEK-V4-IMPL — does NOT own a new model-matrix row; the MODEL-TEXT-deepseek-v4-deepseek-v4-for-causal-lm row stays owned by CLAIM-DEEPSEEK-V4-IMPL, still SPIKE)Claude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm.cpp-w6-moe (CPU-only; NO GPU/download; foreground; NOT pushed)worktree branch deepseek-v4-w6-moe, base main 5b843be5 (confirmed via git rev-parse HEAD)DeepSeek-V4-Flash W6 — the sqrtsoftplus + hash-routed MoE, as portable host references + unit gate. Owns the additive TUs deepseek_v4_moe.{h,cpp} + tests/vllm/models/test_deepseek_v4_moe.cpp + the new KERNEL-MOE-SQRTSOFTPLUS-HASH kernel-matrix row (+ its check-agent-record.py count bump 41→42) + the W6 section of .agents/specs/deepseek-v4-flash.md + the record surfaces. SACRED-inert: additive ONLY — does NOT touch any existing forward (the shared DeepSeek-V2 MoE router / grouped GEMM / shared experts + the W3/W4/W5 DSA/compressor/MHC TUs are untouched beyond additive) and does NOT touch the GGUF/quant TUs owned by the CLAIM-DSV4-GGUF-* lane; only the NEW scoring + hash-route + clamp are net-new (the shared grouped-GEMM machinery is REUSED, not re-ported); the device kernels + forward assembly are NAMED W7 residuals.SPIKE2026-07-29 — W6 LANDED (foreground, NOT pushed). Ported + unit-gated the three genuinely-new-vs-V2/V3 MoE primitives as portable host references: SqrtSoftplus (the V4 router score sqrt(softplus(x))), SqrtSoftplusRouteTopk (score→bias-for-selection-only top-k OR tid2eid hash bypass→GATHER weights from UNBIASED scores→renormalize→×routed_scaling_factor), ClampedSwiGLU (SiluAndMulWithClamp: gate max-clamp, up ±clamp, gate·σ(αgate)·(up+β)). Ported 1:1 from vLLM fused_topk_bias_router.py:75-118 (_topk_softplus_sqrt_torch) + activation.py:197-201, cross-checked SGLang v0.5.15 moe/{topk.py, hash_topk.py}. Gate test_deepseek_v4_moe 12/12·716 — hand-derived literals (sqrt∘softplus composition softplus=4⇒score=2; bias flips selection but weight stays UNBIASED 1.0 not 3.0; renormalize by the unbiased sum; routed_scaling_factor; hash picks {3,1} where top-k would pick {2,0}; asymmetric clamp gate=-5 kept vs up clamped to -2; clamp boundaries; alpha/beta) + from-first-principles DOUBLE-PRECISION references (router f32==f64 rel-L2 < 1e-5 + exact ids; SqrtSoftplus f64 + monotonicity; ClampedSwiGLU rel-L2 < 1e-6). RED-first PROVEN all three levers: drop the sqrt → 8 cases/493 assertions fail; gather weights from the BIASED scores → 2 cases/181 fail; symmetric-clamp the gate → 2 cases/6 fail; revert restores 12/12·716. Honest gate form: host-reference + hand-case + structural review vs vLLM+SGLang file:line (fixed-config 167B not constructible at a tiny shape ⇒ NOT a dumped-oracle rel-L2). No OPEN QUESTIONS — every constant grounded (MegaMoE SM100-only is NOT the GB10 target; the FusedMoE-fallback router GB10 runs is mirrored). CPU Debug full-library build (the pre-existing GCC-13 -O2 -Werror=array-bounds false positive in voxtral.cpp forces Debug; the new TUs are -Wall -Werror -Wextra-clean, verified by explicit strict compile). SACRED inertness PROVEN: no existing forward touched; test_deepseek_v4_mhc still 14/14·125, test_deepseek_v4_compressor 12/12·164, test_deepseek_v4_dsa 13/13·38, test_deepseek_v4_scaffold 4/4·40. New kernel row KERNEL-MOE-SQRTSOFTPLUS-HASH (SPIKE). Residuals: device kernels (reuse the existing grouped-GEMM) + DeepseekV4Model::Forward assembly (W7), strict/near-tie engine gate (W8) — all multi-Spark.
CLAIM-DEEPSEEK-V4-W7deepseek_v4.{h,cpp} forward (owns the FORWARD TUs via CLAIM-DEEPSEEK-V4-W7; does NOT own a new model-matrix row — MODEL-TEXT-deepseek-v4-deepseek-v4-for-causal-lm stays owned by CLAIM-DEEPSEEK-V4-IMPL, still SPIKE; advanced to note the W7 forward-assembly landed)Claude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm.cpp-w7-forward (CPU-only build-cpu Debug; NO GPU/download; foreground; NOT pushed)worktree branch deepseek-v4-w7-forward, base main a856383c (confirmed via git rev-parse HEAD)DeepSeek-V4-Flash W7 — the DeepseekV4Model::Forward ASSEMBLY: compose the four landed host-reference primitives (W3 DSA/MLA seams, W4 compressor + fp8_ds_mla KV, W5 MHC + Sinkhorn, W6 sqrtsoftplus/hash MoE) into a REAL forward at a tiny synthetic config, replacing the VT_CHECK(false) stub. Owns deepseek_v4.{h,cpp} (the forward + the host-float weight tower + the RED-first miswire enum + the structural trace) + tests/vllm/models/test_deepseek_v4_forward.cpp + the tests/CMakeLists.txt test wiring + the W7 section of .agents/specs/deepseek-v4-flash.md + the record surfaces. SACRED-inert: additive to the V4-only path ONLY — does NOT touch the shared MLA/MoE (mla_attention.{h,cpp}, cuda_mla_attn.cu, the DeepSeek-V2 MoE), README, Metal, SACRED, apex, darwin, the W3-W6 primitive TUs (beyond calling them), or the GGUF/quant TUs (CLAIM-DSV4-GGUF-*). No new kernel-matrix row (a forward assembly, not a new kernel family) ⇒ no check-agent-record.py count bump.SPIKE2026-07-29 — W7 LANDED (foreground, NOT pushed). Replaced the VT_CHECK(false, "W3-W8 pending") stub with a REAL DeepseekV4Model::Forward + DeepseekV4ForwardHost that composes the four landed host primitives on the portable CPU path at a SMALL synthetic config, producing logits end-to-end. Interleave grounded 1:1 (nvidia/model.py:1080-1148 model.forward + :866-957 decoder.forward): embed → per layer [first-layer MHC-pre stream EXPAND [T,H]→[T,hc,H], else fused MhcPost(prev-ffn)+MhcPre(attn)] → 512-wide MLA (q/kv proj+norms, RoPE, DSA indexer→topk→compressor→fp8_ds_mla KV round-trip, sink softmax, grouped o-LoRA) → fused MhcPost(attn)+MhcPre(ffn) → MoE (sqrtsoftplus/hash router + shared+routed clamped-SwiGLU) → final MhcPost → hc_head collapse → norm → lm_head. Gate test_deepseek_v4_forward 6/6·26 (STRUCTURAL/composition, tiny shape): finite logits end-to-end + deterministic + shape [T,vocab]; MHC stream [T,hc,H] (residual_stream_elems==T4H, hc_mult==4); hash layers route by tid2eid (layer_hash_routed=={1,1,0,0}) vs gated learned top-k; DSA indexer SELECTS (layers 1,3, index_topk=3) + compressor POOLS (layers 1,2,3); logits_indices gather. RED-first PROVEN 3 levers (each changes the output): route hash layers as gated (ignore tid2eid), skip the final MhcPost fold, drop the per-head attention sink. Honest 3-state: the CPU forward assembly at tiny shape = DERIVED + BUILD-VERIFIED (structural) — does NOT claim V4 "runs" a real model; documented tiny-vs-167B divergences (W=2 compressor window, full-latent MLA value, single rope_theta, 1-block quant). SACRED-inert PROVEN: only deepseek_v4.{h,cpp} + the new test + CMake changed; the shared MLA/MoE + W3-W6 TUs empty-diff; prior V4 tests unchanged (scaffold 4/40, dsa 13/38, compressor 12/164, mhc 14/125, moe 12/716). CPU Debug full-library build (the voxtral -O2 -Werror=array-bounds false positive forces Debug; the new TU is -Wall -Werror -Wextra-clean). Residuals: W7-device CUDA kernels (MHC Sinkhorn, DSA indexer/compressor, sqrtsoftplus router, clamped SwiGLU; expert GEMM REUSES NVFP4/FP8 grouped-GEMM) + ForwardDevice; W2b real-checkpoint tower materialization; W8 strict/near-tie engine gate (multi-Spark, 156.7 GiB); the single-Spark IQ2_XXS-GGUF vehicle additionally needs the GGUF blk.N.* name-map (W2, download-blocked on the 1328-tensor manifest).
CLAIM-DEEPSEEK-V4-W7-DEVICEKERNEL-DSV4-W7-DEVICE (NEW row, under CLAIM-DEEPSEEK-V4-IMPL — does NOT own a new model-matrix row; the MODEL-TEXT-deepseek-v4-deepseek-v4-for-causal-lm row stays owned by CLAIM-DEEPSEEK-V4-IMPL, still SPIKE)Claude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm.cpp-w7-device (CPU -Werror build-verify + DGX GB10 CUDA gate under flock /tmp/gpu; docker stop local-ai-worker for the run then restored --restart=always+start; foreground; NOT pushed)worktree branch deepseek-v4-w7-device, base main 33016f34 (confirmed via git rev-parse HEAD)DeepSeek-V4-Flash W7-DEVICE — the CUDA kernels for the four NEW V4 op families + ForwardDevice wiring. Owns the NEW additive TUs src/vt/cuda/cuda_deepseek_v4.cu + include/vllm/model_executor/models/deepseek_v4_device.h + src/vllm/model_executor/models/deepseek_v4_device.cpp + tests/vllm/models/test_cuda_deepseek_v4.cpp, the ForwardDevice wiring in deepseek_v4.{cpp,h} (the V4Backend policy that runs the ONE composition on host refs OR the device kernels), the 4 new kDeepseekV4* OpIds in include/vt/ops.h, the KERNEL-DSV4-W7-DEVICE kernel-matrix row (+ its check-agent-record.py count bump 42→43), the CMake source/test wiring, the W7-device section of .agents/specs/deepseek-v4-flash.md, and the record surfaces. Also neutralized the pre-existing GCC-13 -O2 -Werror=array-bounds/-Wstringop-overflow FALSE POSITIVE in voxtral.cpp (project #155) with a MINIMAL LOCAL scoped #pragma GCC diagnostic around the in-bounds BuildPaddedDecodeAttn copies so the -Werror build links (advances #155). SACRED-inert: does NOT touch the shared MLA/MoE (mla_attention.{h,cpp}, cuda_mla_attn.cu, cuda_moe*.cu — the 512-wide MLA attn + expert grouped-GEMM REUSE the existing NVFP4/FP8 kernels), the W3-W6 host-ref TUs (beyond calling them via the seam), README, Metal, SACRED, apex, darwin.SPIKE2026-07-29 — W7-DEVICE LANDED + DGX-GATED (foreground, NOT pushed). The four families' CUDA kernels (MHC Sinkhorn/pre/post/head; DSA indexer weight-fold/MQA-ReLU-logits/causal-topk + sink softmax + grouped output-LoRA; compressor pool+norm + save-APE + fp8_ds_mla KV encode/decode; sqrtsoftplus/hash router + clamped SwiGLU), each a 1:1 device port of the landed host reference, registered through the OpProvider seam (kDeepseekV4{Mhc,Dsa,Compressor,Moe}) and dispatched by DeepseekV4Model::ForwardDevice. DGX GB10 (sm_121a) UNIT GATE test_cuda_deepseek_v4 11/11 cases · 153 assertions GREEN — BIT-EXACT ids (DSA causal top-k + router selection), -inf mask exact, near-tie rel-L2 < 1e-4 for the fp reductions (device expf/sqrtf/rsqrt vs host), fp8_ds_mla round-trip within e4m3 granularity + bf16 rope bit-exact; PLUS the ForwardDevice composition gate (device forward == host forward, rel-L2 < 2e-3). compute-sanitizer memcheck 0 errors. RED-first PROVEN: dropping the device sqrtsoftplus sqrt fails 3 cases/6 assertions; revert restores 11/11·153. CUDA -Werror clean; CPU -Werror clean (voxtral #155 FP neutralized). SACRED-inert PROVEN: shared MLA/MoE CUDA + W3-W6 host TUs empty-diff; host oracle test_deepseek_v4_forward still 6/6·26 + prior V4 tests unchanged. Honest 3-state: kernels RUNTIME-VERIFIED at small shape on real GB10; the real-checkpoint paged-engine e2e stays W8 (156.7 GiB NVFP4 does not fit ONE GB10) and the single-Spark IQ2_XXS-GGUF vehicle also needs the W2 blk.N.* name-map.
CLAIM-DEEPSEEK-V4-W8KERNEL-QUANT-CIQ-IQUANT (NEW kernel-matrix row) QUANT-GGUF-IQ2_XXS QUANT-GGUF-Q2_K (all advanced to keep-quant compute, ownership transferred from CLAIM-DSV4-GGUF-LOADER); does NOT own a new model-matrix row — MODEL-TEXT-deepseek-v4-deepseek-v4-for-causal-lm stays owned by CLAIM-DEEPSEEK-V4-IMPL, still SPIKE. The IQ3_XXS quantization row was DROPPED from this claim 2026-08-06 by the live-state audit (ACTIVEREADY, no Git evidence for the claim); see the Closing and archival note.Claude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm.cpp-w8-run (CPU-only build-cpu Debug gate; DGX SSH used ONLY read-only to confirm host/disk/mem + HF HTTP-range header fetch — NO 91 GiB download, NO GPU run this lane; foreground; NOT pushed)worktree branch deepseek-v4-w8-run, base main 4d618f59 (confirmed via git rev-parse HEAD)DeepSeek-V4-Flash W8 — the single-Spark GGUF memory enabler + name-map. (1) Keep-quant vec_dot for IQ2_XXS/IQ3_XXS/Q2_K (KERNEL-QUANT-CIQ-IQUANT): owns the NEW src/vt/cpu/cpu_quant_iq_tables.h (shared grids) + the three VecDot* kernels in cpu_quant_dot.cpp + DequantIQ3_XXS in cpu_quant_dequant.cpp + three Q8_K traits rows in cpu_quant_traits.cpp + kIQ3_XXS in dtype.{h,cpp} + the three block structs in cpu_quant_blocks.h + kIQ3_XXS in the two exhaustive DType switches (ops.cpp) + ggml id-18 sizing in gguf_reader.cpp + the kWeightCases extension in tests/vt/test_ops_quant_dot.cpp. (2) The GGUF blk.N.*→V4 name map + FULL 1328-tensor coverage gate: NEW scripts/check-dsv4-gguf-namemap.py + scripts/dsv4_gguf_manifest_names.txt (the real manifest, HTTP-range-fetched). (3) A precise honest registry message advance in deepseek_v4_registry.cpp. Owns the KERNEL-QUANT-CIQ-IQUANT kernel-matrix row (+ check-agent-record.py count 43→44), the quantization-matrix IQ rows, the W8 section of .agents/specs/deepseek-v4-flash.md, and the record surfaces. SACRED-inert: additive to the vt quant tier + V4 GGUF path ONLY — does NOT touch the six existing k-quant kernels' numerics (their gate is UNCHANGED at 130426 of the 130444 assertions), the shared MLA/MoE, README, Metal, SACRED, apex, darwin.SPIKE2026-07-29 — W8 KEEP-QUANT ENABLER + NAME-MAP LANDED (foreground, NOT pushed); the RUN is the honest residual. (1) Keep-quant vec_dot for IQ2_XXS/IQ3_XXS/Q2_K, 1:1 ports of ggml vec_dot_{q2_K,iq2_xxs,iq3_xxs}_q8_K_generic (quants.c:514/855/999) → HasQuantDotKernel TRUE ⇒ the loader keeps these blocks COMPRESSED (the ~91 GiB vs ~316 GiB bf16 OOM enabler). HONEST CORRECTION of the brief's "IQ2_XXS + Q2_K": the real UD-IQ2_XXS manifest uses IQ2_XXS (gate/up experts) + IQ3_XXS (down experts); Q2_K is the sibling UD-Q2_K_XL vehicle — all three landed so both vehicles keep-quant. HONEST finding: there is NO CUDA keep-quant vec_dot for ANY k-quant (kMatmulBTQuant is kCPU-only) — on GB10 keep-quant runs on the 20 ARM cores against the unified pool, so IQ2_XXS/IQ3_XXS/Q2_K match the six existing types (CPU tier). Gate test_ops_quant_dot 19 cases / 130444 assertions GREEN (CPU Debug, new TUs -Werror clean): vec_dot vs INDEPENDENT f64 dequant-dot (≤1e-5·L1), NMSE ≤5e-4 vs dequant-f32 GEMM, bit-exact across threads, ragged-K reject; RED-first PROVEN (perturb IQ2_XXS 0.125 fold → 2 cases/18 fail, revert → 19/130444). (2) blk.N.*→V4 name map with EXACT 1328/1328 coverage, 0 unmapped, 0 leftover (check-dsv4-gguf-namemap.py rc=0) against the REAL manifest fetched via HF HTTP-range (no 91 GiB download); topology verified (43 layers, hash{0,1,2}, indexer 21 = compress_ratio==4, compressor 41). (3) Registry reject replaced with a precise "keep-quant+name-map landed; W2b tower materialization pending" message. HONEST RESIDUAL — the RUN did NOT execute and was NOT faked: it is blocked on the unimplemented W2b (materialize the keep-quant blocks + F32 MHC/DSA tensors into the DeepseekV4 towers via the name map) — a genuine code brick, not just memory/download. Resume: land W2b → free DGX disk ≥100 GiB → flock $HOME/gpu.lock + docker stop local-ai-worker → download unsloth/DeepSeek-V4-Flash-GGUF/UD-IQ2_XXS (3 shards, ~91 GB) → keep-quant load → ForwardDevice greedy → self-consistency + coherence gate. W8-FINAL UPDATE 2026-07-29 (base 376e186b, W2b now landed): the top-level deepseek4 GGUF ENTRYPOINT ARM is LANDED + GATED, and the real RUN is re-scoped to a CODE blocker. Wiring: DeepseekV4HfConfigFromGguf (deepseek_v4_weights.cpp) maps general.architecture=deepseek4→the registered DeepseekV4ForCausalLM (republishing geometry into config.raw for ParseDeepseekV4Config); LoadedEngine::FromModelDir routes via new anon-ns HfConfigFromGgufDispatch. Gate test_deepseek_v4_gguf_load 6/6·168 (CPU Release -Werror-clean; +1 case: config maps + ModelRegistry::Resolve→V4 factory), qwen path byte-neutral (test_model_registry 24/24). The RUN did NOT execute — BLOCKED on a CODE residual (not download/box), NOT attempted (would OOM-reboot the box): the forward (ForwardComposeImpl) reads the FULLY-DEQUANTIZED f32 weights.host tower, and LoadDeepseekV4FromGguf builds it unconditionally (every routed expert HostVec→f32) ≈ ~24 GiB/layer × 43 ≈ ~1.0 TiB f32, past the 119 GiB pool by ~layer 5; the keep-quant weights.gguf (~91 GiB) is built but never read by the forward. Named residual W2c: rewire the forward onto the CIQ kMatmulBTQuant keep-quant blocks + gate off the host dequant, THEN download + GB10 gen + gate + benchmark. NO tokens generated (not faked); DGX left as found (worker untouched, no download). Owns ONLY: the deepseek4 config-builder + dispatch + the +1 test case + these record surfaces (model-matrix cell, spec §W8.5, STATUS/BENCHMARKS/roadmap/ledger/state, this row); no README/Metal/SACRED. Isolated worktree .claude/worktrees/dsv4-w8-entrypoint off main 376e186b.
CLAIM-DEEPSEEK-V4-W2BMODEL-TEXT-deepseek-v4-deepseek-v4-for-causal-lm (advanced: GGUF→tower materialization landed; row still owned by CLAIM-DEEPSEEK-V4-IMPL, stays SPIKE — this claim owns only the GGUF loader wiring, not the model row)Claude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm.cpp-w2b-tower (CPU-only build-cpu Debug; NO GPU/download; foreground; NOT pushed)branch deepseek-v4-w2b-gguf-tower, base main 341dfbb9 (confirmed via git rev-parse HEAD)DeepSeek-V4-Flash W2b — the GGUF keep-quant TOWER materialization: wire the landed blk.N.* name-map + keep-quant blocks into the DeepseekV4 weight towers so the model LOADS from UD-IQ2_XXS. Owns LoadDeepseekV4FromGguf + DeepseekV4ParamsFromGguf + the DeepseekV4GgufWeights tower in deepseek_v4_weights.cpp/deepseek_v4.h, the registry GGUF-reject lift in deepseek_v4_registry.cpp, the new tests/vllm/models/test_deepseek_v4_gguf_load.cpp + its CMake wiring, the W2b section of .agents/specs/deepseek-v4-flash.md, and the record surfaces. Loader-only + SACRED-inert: does NOT touch the forward (deepseek_v4.cpp), the W3-W6 primitive TUs, the shared MLA/MoE (mla_attention, cuda_mla_attn), the W8 keep-quant/name-map TUs (reused as-is), README, Metal, SACRED, apex, darwin. No new kernel-matrix row (loader wiring, not a kernel family) ⇒ no check-agent-record.py count bump.SPIKE2026-07-29 — W2b LANDED (foreground, NOT pushed). LoadDeepseekV4FromGguf routes EVERY GGUF tensor through GgufLoadPolicy::Route with its name-map role: MW/SEW (MLA linears + router gate + shared + 256 routed experts + lm_head) KEEP their blocks COMPRESSED (OwnGgufQuantBlocks); V/ET/HASH (norms, MHC, DSA, sinks, embed, tid2eid, exp_probs_b) dequant. Accounts for every tensor (throws on unmapped/leftover), lifts the registry kGguf reject, and dequants the tiny CPU composition host tower so a loaded model forwards. Gate test_deepseek_v4_gguf_load 5/5·149 (tiny synthetic deepseek4 GGUF, real blk.N.* names + Q8_0 keep-quant): accounting 126/126 == file set (none unmapped/leftover), keep-quant residency (down-experts stay Q8_0, bytes < dequant-f32; expand-policy RED → bf16), load→DeepseekV4ForwardHost finite+deterministic, RED-first (missing/leftover throw). CPU Debug -Werror-clean; SACRED-inert PROVEN (forward + W3-W6 + shared MLA/MoE empty-diff; prior V4 tests 6/26 + 4/40 unchanged). Honest 3-state: tiny-synthetic load→forward = DERIVED+BUILD-VERIFIED; the real 91 GB UD-IQ2_XXS load+generate = W8-FINAL (download + DGX keep-quant load + ForwardDevice greedy + self-consistency/coherence gate + benchmark). Row stays SPIKE.
CLAIM-DEEPSEEK-V4-W2CMODEL-TEXT-deepseek-v4-deepseek-v4-for-causal-lm (advanced: the GGUF forward now consumes the keep-quant tower — memory-feasible; row still owned by CLAIM-DEEPSEEK-V4-IMPL, stays SPIKE; this claim owns only the forward rewire + loader memory fix, not the model row)Claude Code (opus-4-8)isolated worktree /tmp/.../scratchpad/wt-w2c (CPU-only build-w2c Release -DVLLM_CPP_CUDA=OFF; NO GPU/download; foreground; NOT pushed)branch claim-deepseek-v4-w2c, base main 328e6a50 (confirmed via git rev-parse HEAD)DeepSeek-V4-Flash W2c — rewire the forward to CONSUME the keep-quant tower (the last CODE brick before the single-Spark run; W8-final proved the forward read the ~1 TiB f32 host tower and would OOM the box). Owns EXACTLY: deepseek_v4.{h,cpp} (the V4Backend::gguf weight source + the Gemm/GemmRowSlice/GroupedOutputLoraGguf keep-quant GEMM helpers + ForwardComposeImpl rewire + DeepseekV4ForwardGguf + the has_gguf_weights gate in Forward), deepseek_v4_weights.cpp/deepseek_v4.h (drop the big-weight f32 host expansion + the load-time memory VT_CHECK + DeepseekV4{Host,Gguf}ResidentBytes), tests/vllm/models/test_deepseek_v4_gguf_load.cpp (the keep-quant-forward + memory-bound gate), the spec §W2c, and the record surfaces. SACRED-inert: does NOT touch the shared MLA/MoE (mla_attention.{h,cpp}, cuda_mla_attn.cu, DeepSeek-V2 MoE), the W3-W6 primitive TUs (the correctness oracle — kept UNTOUCHED + still passing), README, Metal, SACRED, apex, darwin, the W7/W7-device CUDA path (untouched). No new kernel-matrix row (REUSES the landed kMatmulBTQuant CIQ GEMM) ⇒ no check-agent-record.py count bump.SPIKE2026-07-29 — W2c LANDED (foreground, NOT pushed); the OOM-infeasibility is FIXED. LoadDeepseekV4FromGguf no longer f32-expands the big MLA/MoE/lm_head weights (only small norms/embed/MHC/DSA/hash dequant); DeepseekV4ForwardGguf runs the SAME composition with the 512-wide MLA linears + 256 routed/shared experts + lm_head consuming the COMPRESSED weights.gguf blocks via vt::MatmulBTkMatmulBTQuant. Forward gates on has_gguf_weights (safetensors/NVFP4 + tiny-synthetic host path byte-identical). Gate test_deepseek_v4_gguf_load 7/7·185 (CPU Release -Werror-clean): keep-quant forward RUNS finite+deterministic; keep-quant(Q8_0)==dequant(bf16) RelL2 0.0116 (< 0.05 near-tie); RED-first (no-sink miswire diverges 0.122; a rebuilt f32 tower fails the loader VT_CHECK + the host<gguf-bytes assertion). MEMORY-BOUND asserted: host 23,980 B < keep-quant 141,676 B at tiny shape; PROJECTED full-scale — routed experts alone ~1032 GiB f32 (OOMs the 119 GiB pool) vs keep-quant ~91 GiB + small host < 3 GiB = memory-FEASIBLE. SACRED-inert PROVEN (W3-W6 tests unchanged: dsa 38, mhc 125, moe 716, compressor 164, forward 26, scaffold 40; test_cuda_deepseek_v4 compiles + skips on CPU box). Honest 3-state: tiny keep-quant forward = DERIVED+BUILD-VERIFIED; the real 91 GB run stays the operational W8-run (download + DGX), now memory-feasible. Residual: the operational W8-run (download UD-IQ2_XXS + GB10 generate + benchmark).
CLAIM-DEEPSEEK-V4-W8-RUNMODEL-TEXT-deepseek-v4-deepseek-v4-for-causal-lm (loadability of the ds4 apples-to-apples file PROVEN + 3 real-file loader gaps fixed; row still owned by CLAIM-DEEPSEEK-V4-IMPL, stays SPIKE; this claim owns only the loader/dequant fixes + the ds4-flavor gate)Claude Code (opus-4-8)main working tree /home/mudler/_git/vllm.cpp (CPU-only build-integ Release -DVLLM_CPP_CUDA=OFF; DGX SSH read-only flock/mem/disk + HF HTTP-range HEADER fetch — NO 80 GB download, NO GPU run; foreground; NOT pushed) — NOTE process deviation: edited the main tree, not an isolated worktreebase main edf68c91 (confirmed via git rev-parse HEAD)DeepSeek-V4-Flash W8-run — apples-to-apples oracle (antirez/ds4) selection + prove/extend our engine to load ds4's q2-imatrix file + the run. Owns EXACTLY: src/vllm/model_executor/models/deepseek_v4_weights.cpp (compress_ratios ≥ block_count + swiglu_clamp_exp array fallback), src/vllm/model_executor/model_loader/gguf_dequant.cpp (ggml I32 case), tests/vllm/gguf_builder.h (F32ArrayKv), tests/vllm/models/test_deepseek_v4_gguf_load.cpp (the ds4-flavor case), the spec §W8-run, and the record surfaces. SACRED-inert: does NOT touch the shared MLA/MoE, the W3-W6 primitive TUs, the W7/W7-device CUDA path, README, Metal, SACRED, apex, darwin. No new kernel-matrix row (REUSES kMatmulBTQuant) ⇒ no check-agent-record.py count bump.ACTIVE2026-07-29 — LOADABILITY PROVEN + 3 loader fixes LANDED + GATED (foreground, NOT pushed); the GB10 RUN did NOT execute (nothing faked). ds4's q2-imatrix GGUF (single 80.7 GB; IQ2_XXS gate/up + Q2_K down + Q8_0 attn/shared/out + F16 embed) name-maps 1328/1328 EXACTLY to ours (HF HTTP-range header, no download). Fixed 3 real-file gaps (compress_ratios len 44; per-layer swiglu_clamp_exp — a 0 limit zeroes every expert; I32 ffn_gate_tid2eid). Gate test_deepseek_v4_gguf_load 8/8·288 (CPU Release -Werror), RED-first proven (disable I32 → throws "unsupported ggml type 26"). UPDATE 2026-07-29 — the GB10 RUN EXECUTED (fresh worktree /home/mudler/_git/vllm.cpp-w8run, branch deepseek-v4-w8-run-real, base 858b0b15, NOT pushed). Downloaded the 80.7 GB file (integrity 86,720,111,488 B == Content-Length), built ds4 make cuda-spark + our CPU engine + a NEW greedy driver (examples/deepseek_v4_gen), ran BOTH on the SAME file under flock. ds4 (GB10 GPU): coherent greedy "We need to answer: 'The capital of France is'. This is a straightforward"; ds4-bench prefill 358 tok/s, decode 16.5 tok/s (ctx=1024). OURS: keep-quant LOAD SUCCEEDS on the real 158 B model (43 layers, 256 experts, all 1328 tensors, has_gguf_weights=1, ~78 s, PEAK 116.2 GiB — ~32 GiB above the ~84 GiB projection: OwnGgufQuantBlocks copies rather than mmap-views), but the FORWARD HARD-FAILS: keep-quant GEMM shape mismatch: want [512,4096] got [1024,4096] (deepseek_v4.cpp:234) at layer 2 (first DSA compressor layer) — the W3-W7 forward conflates head_dim=512 with the compressor's real 1024-dim output. NO coherent tokens generated. Residual (the one remaining brick): rework the MLA/DSA forward to the REAL geometry (compressor 1024-dim; audit indexer + grouped output-LoRA at o_groups=8/nh=64/q_lora_rank=1024) against a reference + mmap-view the keep-quant load. Download + load + tokenizer + greedy driver + ds4 oracle are DONE. Box restored (worker up --restart=always, flock free, 80.7 GB file retained at $HOME/w8run). Row stays SPIKE. UPDATE 2026-07-29 (2) — GEOMETRY FIXED, the forward now RUNS the real 158 B model end-to-end (worktree /home/mudler/_git/vllm.cpp-w8geom, branch deepseek-v4-w8-geom, base fba56f9b, NOT pushed). The compressor projects to 2*head_dim (ds4 coff=2), so the real keep-quant run uses DENSE MLA (EXACT for seq ≤ 512; sparse DSA at real geometry = named residual), guarded by a real-ish gate (test_deepseek_v4_gguf_load 9/9·388, RED-first). Also: mmap-view load (PEAK 116.2→86.1 GiB, byte-identical, load 78→6 s), per-layer YaRN RoPE (compressed layers base 160000/scale 1/16), fp8-KV-roundtrip skip. The forward now runs ALL 43 layers at ~1.4-1.7 s/tok / peak 86 GiB, but greedy output is a degenerate 2-cycle loop (201 7249 465 7249…) — INCOHERENT. A different prompt gives different ids → the body is input-responsive; the failure is a numerical/scaling fidelity error (suspects: MoE routing/expert-scale/shared-expert, MHC Sinkhorn at hc=4, keep-quant IQ2_XXS/Q2_K numerics). Ruled out: geometry, attention scale+structure (match ds4), fp8, memory path, rope. ours CPU-tier (~0.6 tok/s decode) vs ds4 16.5 (GPU) — GPU-expert wiring is a named residual. Remaining brick (to coherence): instrumented per-layer diff vs the ds4 oracle. Box restored (worker up, flock free, file retained). Row stays SPIKE. UPDATE 2026-07-29 (3) — COHERENCE FIXED; the single-Spark run WORKS; model-matrix row ADVANCES SPIKE→ACTIVE (worktree /home/mudler/_git/vllm.cpp-w8dbg, base eeef1695, NOT pushed). The decisive dump-point-aligned L00 experiment (ours' post-input-norm attn INPUT vs ds4's attn_norm) forked H1/H2: attention input rel-L2 0.0000 (bit-exact — H2/MHC refuted), KV latent 0.0179, but the q operand rel-L2 0.9646 → the MLA q projection. Root cause + cite: the forward OMITTED the per-head query RMS-norm ds4 applies after wq_b (head_rms_norm_inplace: each head's [head_dim=512] scaled by 1/√(mean(q²)+eps), NO weight; the KV correctly gets only its attn_kv_a_norm, which is why kv matched and q did not). Fix: new DeepseekV4QHeadRmsNormInplace (after wq_b, before RoPE) + a spec-anchored RED-first doctest (test_deepseek_v4_gguf_load 10/10·403). Second confirmed fix — the inverse-RoPE on the attention output (ds4 rope(heads,inverse=true); identity at pos 0, load-bearing pos>0) via a new inverse param on RopeInplaceLayer. Proof on the real 80.7 GB model: L00 q 0.9646→0.0013, attn_out 0.5956→0.0175, and the FULL 43-layer folded-state curve COLLAPSED to the keep-quant floor (MAX 0.0334; L33 0.5286→0.0029; L34 6.0239→0.0031). Generation (greedy, chat-templated): "The capital of France is Paris.<|end▁of▁sentence|>" (ids 671 6102 294 8760 344 11111 16 1 — correct + EOS), deterministic/self-consistent. Benchmark: ours CPU-tier decode ~3.3 s/tok, peak resident 85.8 GiB (ds4 GPU: prefill 358, decode 16.5 tok/s). Named residuals (row ACTIVE, not DONE): GPU-expert dispatch (CPU queue), DSA-sparse ctx>512 (dense-fallback, exact short gen), paged-engine integration. Spec §W8-run.9 + 9 structured sections appended; model-matrix row SPIKE→ACTIVE (rollup ACTIVE 21→22 / SPIKE 9→8). Box restored (worker up, flock free, file retained). All 7 record checkers rc=0. Row ACTIVE.
CLAIM-DEEPSEEK-V4-FORWARD-DEVICEMODEL-TEXT-deepseek-v4-deepseek-v4-for-causal-lm (speed campaign on the already-coherent ACTIVE model; row owned by CLAIM-DEEPSEEK-V4-IMPL, stays ACTIVE)Claude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm.cpp-fwddev (CPU build + DGX GB10 benchmark under flock $HOME/gpu.lock, docker stop local-ai-worker then restored; foreground; NOT pushed)branch deepseek-v4-forward-device, base main fd9e191c (confirmed via git rev-parse HEAD)The staged ForwardDevice parity push (target ds4 prefill 326 / decode 16.5 on one GB10), each stage correctness-gated BEFORE speed. Owns: deepseek_v4.{h,cpp} (the DeepseekV4KvCache + cache-aware AttentionBlock + DeepseekV4ForwardGgufCached), examples/deepseek_v4_gen/main.cpp (--kv-cache), tests/vllm/models/test_deepseek_v4_gguf_load.cpp (the equivalence gate), .agents/specs/deepseek-v4-forward-device.md, and the record surfaces. SACRED-inert: additive to the V4-only forward; the null-cache path is byte-identical; does NOT touch the shared MLA/MoE, README, Metal, SACRED. No new kernel-matrix row (Stage 1 host-orchestration REUSES kMatmulBTQuant) ⇒ no check-agent-record.py count bump.ACTIVE2026-07-29 — Stage 0 (scope, 71fd270f) + Stage 1 (KV cache, e85eee01) LANDED + DGX-benchmarked (NOT pushed). Stage 0 spec grounds the plan (KV object = per-layer deck latent [head_dim]; real run dense MLA so no compressor/indexer/other cross-token state — mirror of ds4 raw_kv ds4.c:12351; #183 device-kernel inventory for stages 2-3). Stage 1: incremental decode against the cached KV, rollback-able (--kv-cache; default/--gpu byte-identical). Pure-equivalence gate test_deepseek_v4_gguf_load 11/11·430 (prefill BIT-identical, incremental TOKEN-identical over 6 greedy steps, RED-first forgetful-cache diverges). DGX GB10 (80.7 GB ds4 file, --gpu): TOKEN-IDENTICAL to full-recompute (" Paris. The capital of France is Paris", ids 11111 16 455 6102 294 8760 344 11111); decode 0.68 → 4.79–5.35 tok/s (7.9×; 0.19–0.21 s/tok), ~1/3 of ds4's 16.5; prefill 6.19; peak 86.33 GiB; nvidia-smi 29–46% util, compute-app deepseek-v4-gen (PID 53933) DURING run. Residual to ds4 = host-orchestration + per-GEMM sync at T=1 → Stages 2 (device-resident activations via #183 kernels) + 3 (overlap/graphs) await coordinator review before starting. Box restored (worker up --restart=always, flock free). Row ACTIVE. Stage 2 (profiler + deferred-sync drain batching, 816aa446, base 17ec33ea) — HONEST NEGATIVE RESULT, DGX-measured. Added VT_V4_PROF → the 0.18s decode step splits sync 0.073s(40%) + gemm-dispatch 0.074s(40%) + host-glue 0.034s(18%). Batched the stream drains (21 routed+shared expert GEMMs/layer → 2; grouped o-LoRA → 2; defer_sync+DrainDevice), byte-identical (test_deepseek_v4_gguf_load 11/11·430; CPU-queue drains are no-ops so default/non-gpu path unchanged). DGX (--gpu --kv-cache): decode 0.20 s/tok (5.11 tok/s), token-identical ("…Paris."), util ~49%, NO speedup (sync 0.073→0.071s). CORRECTION: the "sync" bucket is the host BLOCKING ON GPU COMPUTE of ~1100 tiny T=1 GEMMs, not sync-call overhead; both buckets scale with GEMM count, not sync-call count. Real lever (named, corroborated by the Qwen3-Coder W7 decode-graph row): a grouped MoE GEMM (18 tiny expert matvecs → ~3 kernels) + a decode CUDA graph. Recommend re-scoping Stage 2 to the grouped keep-quant MoE GEMM before Stage 3. NO speedup claimed; the profiler + byte-identical batching land as the reviewable artifact. Awaiting coordinator direction. Stage 2 RE-SCOPED (grouped keep-quant MoE GEMM, cb787fa8, base 05f6318c) — REAL SPEEDUP, DGX-measured. NEW vt op kMatmulBTQuantGrouped (out[P,N]=act[p]·weight[expert_ids[p]*N+n]), mirrors kMoeGroupedGemmBf16 (ops.cpp:696), extends the #195 kMatmulBTQuant kernel (cuda_quant_dot.cu): CUDA QuantDotGemmGroupedKernel (same dot core, per-group weight-row index, one QuantizeQ8K + one launch over P·N warps) + CPU provider (loops MatmulBTQuant per group = byte-identical ref). MoeBlock collapses the 6 routed experts × {gate,up,down} = 18 matvecs/layer → 3 grouped launches (shared stays per-expert; block-quant-guarded so the bf16 near-tie oracle uses per-expert). VT_V4_GROUPED_MOE=0 rolls back (kMatmulBTQuantGrouped is an ADDITIVE extension of the CIQ keep-quant GEMM family, not a new kernel-matrix row). TOKEN-IDENTICAL (grouped ON==OFF==="…Paris.", 11111 16 455 6102 294 8760 344 11111); gate test_deepseek_v4_gguf_load 12/12·531 (+grouped==per-expert byte-identical, RED-first permuted map). DGX --gpu --kv-cache: decode 5.83 tok/s (23-tok) / 6.60 (11-tok), ~22% over Stage 1's 4.79 at equal length; prefill 7.6–8.1; peak 86.33 GiB; ~35% of ds4's 16.5. nvidia-smi util did NOT rise (36%) — decode is now clearly host-launch-bound → Stage 3 = decode CUDA graph (mirrors Qwen3-Coder W7). Rollback-able; box restored (worker up restart=always, flock free). Awaiting review before Stage 3. Stage 3 (decode CUDA graph) — BLOCKED, architectural finding (base 3eb018df, NO code change). The vt capture contract (cuda_backend.cu:173-182: no Synchronize / host<->device blocking copies / malloc; captured pointers fixed) requires a pure ASYNC device sequence; the dense/DFlash graphs capture a device-resident ForwardLayers over persistent DBufs (qwen3_5.cpp:5820/5747). DeepSeek-V4's GGUF forward (ForwardComposeImpl, device=false) runs MHC/Sinkhorn, the attention QK/softmax/AV Dot loop, rope, RMSNorms, the MoE router (decides expert_ids), SwiGLU + combine ON THE HOST over std::vector between the GPU GEMMs (reads each via SyncDeviceGemm) → no contiguous async device sequence to capture; the host syncs abort capture; the #183 glue kernels Upload/Download+cudaStreamSynchronize per call (cuda_deepseek_v4.cu:533) and there is NO device attention kernel (QK/AV is a host loop); no host-node fallback (cudaGraphAddHostNode/cudaLaunchHostFunc unused repo-wide). PREREQUISITE = a device-resident DeepSeek-V4 decode forward (every glue op a REAL parallel device kernel on persistent DBufs incl. a device MLA attention kernel), a multi-brick port, NOT the #183 <<<1,1>>> correctness kernels. FINAL campaign result: decode 0.68 → 5.83 tok/s (~8.6×), token-identical ("…Paris."), ~35% of ds4's 16.5 (Stage 1 KV cache 7.9× + Stage 2 grouped MoE GEMM +22%, both merged). Named final residual = host-orchestration launch/dispatch overhead (util ~36%), removable only by the device-resident forward. Parity push COMPLETE through Stage 2; Stage 3 is the named honest residual. Spec §Stage 3 updated. Row ACTIVE.
CLAIM-DEEPSEEK-V4-DEVICE-DECODEMODEL-TEXT-deepseek-v4-deepseek-v4-for-causal-lm (device-resident decode campaign on the ACTIVE model; row owned by CLAIM-DEEPSEEK-V4-IMPL, stays ACTIVE)Claude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm.cpp-dd (CPU build + DGX GB10 build/gate/benchmark under flock $HOME/gpu.lock, docker stop local-ai-worker then restored; foreground; NOT pushed)branch deepseek-v4-device-decode, base main 59260579 (confirmed via git rev-parse HEAD)The device-resident decode forward (unblocks the Stage-3 decode graph), STAGED: Brick 0 scope → A device MLA attention → B device glue kernels → C assemble device-resident decode → D capture the decode graph. Owns: src/vt/cuda/cuda_deepseek_v4.cu (+DecodeAttnKernel), include/vllm/model_executor/models/deepseek_v4_device.h (+decode_attn in DsaDeviceKernels), src/vllm/model_executor/models/deepseek_v4.cpp (the AttentionBlock device-attn path + DeviceAttnEnabled), tests/vllm/models/test_cuda_deepseek_v4.cpp (+the device-vs-host case), .agents/specs/deepseek-v4-device-decode.md, scripts/env-doc-allowlist.txt (VT_V4_DEVICE_ATTN), and the record surfaces. SACRED-inert: additive to the V4-only device path (extends DsaDeviceKernels); the host path stays default (flag OFF); does NOT touch the shared MLA/MoE, README, Metal, SACRED. Brick A is an ADDITIVE V4 device kernel (extends the existing KERNEL-DSV4-W7-DEVICE family) ⇒ no new kernel-matrix row / no check-agent-record.py count bump.ACTIVE2026-07-29 — Brick 0 (scope, d9724e7e) + Brick A (device MLA attention kernel, 57f5483b) LANDED + DGX-gated (NOT pushed). Brick 0 spec = bricks A→B→C→D, persistent-DBuf layout, per-brick gates, HONEST ceiling (a graph likely ~10-13 tok/s but SHORT of ds4's 16.5 — fp8 KV + tuned fp4/MMQ expert GEMM are a named follow-on). Brick A = first REAL device V4 forward kernel: DecodeAttnKernel replaces the host QK/softmax-sink/AV Dot loop, reads the unified KV latent IN PLACE (no Upload/Download — unlike #183), num KV heads=1, preserves host SoftmaxWithSink accumulation order (only expf vs std::exp differs); used under VT_V4_DEVICE_ATTN=1 + CUDA + dense-causal, else host (default OFF). GATE = correctness: CUDA test_cuda_deepseek_v4 12/12·412 (+device decode_attn == host ref RelL2<1e-5, RED-first no_sink); test_deepseek_v4_gguf_load 12/12·531; real-model TOKEN-IDENTICAL (VT_V4_DEVICE_ATTN=1 == OFF == 11111 16 455 6102 294 8760 344 11111 = "…Paris."). Speed (not Brick A's gate; measured): decode 6.23 tok/s (24-tok) vs 5.83 baseline (~7%, grows with ctx); util ~35% (payoff at Brick D's graph); peak 86.33 GiB. Rollback-able. Bricks B→C→D await review. Box restored (worker up restart=always, flock free, no stray). Row ACTIVE. Brick B increment 1 (device clamped-SwiGLU in place, f09437ef, base 21191ce2) LANDED + DGX-gated (NOT pushed). Brick B reimplements the decode glue as in-place device kernels (no Upload/Download/Sync — the Brick-A pattern), landed in gated increments to hold the correctness bar. Inc 1 = MoE clamped-SwiGLU: ClampedSwiGLUInPlaceLaunch reuses the tested #183 ClampedSwiGLUKernel on the caller's unified gate_up/out; clamped_swiglu_ip in MoeDeviceKernels; DispClampedSwiGLU routes to it under VT_V4_DEVICE_GLUE=1 + CUDA + V4DeviceKernelsAvailable() (default OFF). CHARACTERIZED NEAR-TIE (stated): RelL2<1e-5, device expf vs host std::exp in the SiLU — NOT bit-identical. GATE: CUDA test_cuda_deepseek_v4 13/13·671 (+in-place==host RelL2<1e-5, RED-first clamp-limit diverges); test_deepseek_v4_gguf_load 12/12·531; real-model TOKEN-IDENTICAL despite the near-tieVT_V4_DEVICE_GLUE=1 (and combined with VT_V4_DEVICE_ATTN=1, all device kernels on) == OFF == "…Paris." (argmax robust to the ULP). Speed flat (6.53 tok/s glue-on 11-tok; 6.12 attn+glue 24-tok vs 5.83; util ~38% — payoff at Brick D). VT_V4_DEVICE_GLUE allowlisted. Remaining Brick-B glue (router, MHC pre/post/head/Sinkhorn, RMSNorm, RoPE, MoE combine) = next gated increments. Box restored. Row ACTIVE. Brick B increment 2 (MHC-post/head + router device glue; MhcPre FINDING, 3046f087) LANDED + DGX-gated. In-place launchers reusing the tested #183 kernels for MHC pre/post/head + router; DispMhcPost/DispHcHead/DispRoute route to them under VT_V4_DEVICE_GLUE. KEY FINDING (Iron Law, measured): the #183 MhcPreKernel/HcHeadKernel are <<<1,1>>> SINGLE-THREAD stubs — routing MhcPre (86 calls/step over hc*H=16K, one GPU thread) REGRESSED decode ~10× (0.59 vs 6.5 tok/s), so MhcPre STAYS HOST until a REAL PARALLEL MhcPre kernel exists (folded RMSNorm + 20-iter Sinkhorn + gates + collapse — the hardest remaining piece). The Grid-launched glue (SwiGLU, router, MHC-post, hc_head[1/step]) IS on device + FLAT. GATE: CUDA test_cuda_deepseek_v4 14/14·749 (in-place == round-trip #183 bit-identical, RED-first); test_deepseek_v4_gguf_load 12/12·531; real model TOKEN-IDENTICAL all-device-on (attn+swiglu+router+mhcpost+hchead) "…Paris.", decode 6.38 tok/s (flat vs 6.5). BRICK B NOT COMPLETE: parallel glue (SwiGLU/Router/MHC-post/hc_head) done + gated; remaining = a real PARALLEL MhcPre kernel + RMSNorm + RoPE + MoE combine — the next increments on this branch (I did NOT ship the 10×-regressing single-thread MhcPre). Box restored. Row ACTIVE. Brick B increment 3 (PARALLEL MhcPre kernel + the per-op-sync-tax finding, 9bd51523) LANDED + DGX-gated. The crux: MhcPreParallelKernel (one block, 256 threads over the hc·H=16K width — block-tree reductions in double; the tiny hc gates + 20-iter Sinkhorn on thread 0 in HOST ORDER) replaces the <<<1,1>>> stub; MhcPreInPlaceLaunch launches it (no single-thread); DispMhcPre re-enabled. CHARACTERIZED NEAR-TIE (stated): RelL2<1e-3 (width reductions reorder vs single-thread float accumulation). GATE: CUDA test_cuda_deepseek_v4 14/14·736 (MhcPre parallel == round-trip #183 RelL2<1e-3 near-tie, RED-first residual perturbation); test_deepseek_v4_gguf_load 12/12·531; real 80.7 GB model all device kernels on (attn+swiglu+router+mhcpost+hchead+MhcPre-PARALLEL): TOKEN-IDENTICAL "…Paris.", decode 5.43 tok/s (24-tok). KEY FINDING — per-op SYNC tax, NOT single-thread poison: parallel MhcPre is fine (the 10× poison=0.59 is GONE); the ~21% dip vs host-glue (5.43 vs 6.84 glue-off, 24-tok) is the ~560 per-op device-glue drains/step — inherent to Brick B's host-orchestrated + per-op-synced structure, exactly what Brick C (drop per-op sync) + Brick D (graph = one cudaGraphLaunch) remove. NO single-thread on the hot path. STATUS: the crux (parallel MhcPre) + all Disp*-routed glue (SwiGLU/router/MHC pre/post/head) on device + token-identical; remaining for FULL device-residency = device RMSNorm, RoPE, MoE combine (can fold into Brick C's device-resident assembly — they'd add more per-op-sync dip with no Brick-B benefit; the dip only resolves at the graph). Box restored. Row ACTIVE. Brick C part 1 (folded-in device glue kernels: RMSNorm/RoPE/combine, d68768b4, base f2fff1ee) LANDED + DGX-gated (NOT pushed). The device kernels the resident assembly needs (rec-(b)): RmsNormKernel (parallel block reduction; has_w=false → per-head q-RMS), RopeKernel (per-row sequential YaRN recurrence, inverse flips sin), MoeCombineKernel (Σ_a w_a·eo_a). Added to the seam (rms_norm/rope in DsaDeviceKernels, moe_combine in MoeDeviceKernels; registered kDsa/kMoe); NOT wired into the forward yet (they land in the resident assembly). ALL THREE CHARACTERIZED NEAR-TIES (stated): RMSNorm (reduction reorder, RelL2<1e-5), RoPE (cos/sin lib, RelL2<1e-5), and a new FMA finding — combine is a near-tie, NOT bit-identical (device fused multiply-add vs host separate mul+add; my == assertion correctly failed → fixed to RelL2<1e-5 + corrected kernel/header comments). GATE: CUDA test_cuda_deepseek_v4 15/15·1106 (RMSNorm/RoPE/combine == host RelL2<1e-5, RED-first each — RMSNorm no-weight, RoPE inverse, combine negated weights); test_deepseek_v4_gguf_load 12/12·531 (kernels unused by the forward). Brick C part 2 (the SPEED part) REMAINS: thread the T=1 decode through persistent DBufs across the 43-layer stack (mirror Qwen3_5DenseDecodeGraph, qwen3_5.cpp:5747/5820), consume these + the Brick-A/B kernels resident, drop the ~560 per-op drains (sync only at the step-boundary logits read) — that recovers + exceeds 5.83. Box restored. Row ACTIVE. Brick C part 2 (device-resident T=1 decode assembly, 3a635624, base 24bddf15, branch deepseek-v4-resident-assembly) LANDED + DGX-gated — CORRECT, but eager-SLOWER (honest launch-bound finding). ForwardResidentDecodeGguf: the whole 43-layer T=1 step as ONE async device chain over the unified buffers — every GEMM defers (GemmIntoKq/GemmRowSliceInto/GemmGroupedInto); the small host primitives run on the Brick-C device kernels IN PLACE (q/kv/final RMSNorm + batched per-head q-RMS rms_norm_rows, dual+inverse RoPE, MHC pre/post/head, router, clamped-SwiGLU, combine, decode_attn — none draining); routing RESIDENT (device router → i32 topk_ids consumed by the grouped expert GEMM + topk_weights consumed by combine — no host gather); KV append writes the new deck row into the cache slot; async cudaMemcpyAsync for the grouped-GEMM broadcast + [gate,up] pairing. Flag VT_V4_RESIDENT_DECODE=1 (default OFF). New tiny glue: rms_norm_rows (batched nh=64 q-RMS in ONE launch) → DsaDeviceKernels+kDsa. Also FIXED a guard bug (rejected on config compress_ratios; the keep-quant run is dense dsa_dense regardless → resident never engaged on the first run). GATE (DGX GB10, deepseek-v4-gen --gpu --kv-cache, real 80.7 GB, 24 decode): CUDA unit 16/16·33877 (+rms_norm_rows case); test_deepseek_v4_gguf_load 12/12·531; resident ON == host OFF TOKEN-IDENTICAL ("…Paris.", exact 25 ids). SPEED (honest): resident-eager 5.17 tok/s vs host 6.44 (−20%); util 38%→55% (GPU busier, ~45% idle). Attribution: NOT a correctness bug (tokens identical), NOT the router-gate drains (bf16 gate → 43 CPU-GEMM drains = ~2.8ms = ~1.4%/step) — launch/host-gap bound: ~1700 small device-kernel launches/step replace fast host-ARM glue, leaving ~45% GPU idle. This is the spec-§4 "may improve" precondition, NOT the payoff — Brick D (collapse the ~1700 launches into ONE cudaGraphLaunch) is the payoff: 55%→~100% GPU-busy is ~1.8× → ~9 tok/s (would exceed 6.44), PROVIDED the bf16 router gate is first device-ified (the one remaining non-capturable host op). Rollback-able. Box restored (worker Up restart=always, flock free, no stray). STOPPED for review before Brick D. Row ACTIVE. Brick D (decode CUDA graph) — step 1 LANDED+gated; step 2 infra LANDED+unit-gated but capture BLOCKED on the model's Q8_0 weights (a grounded architectural finding), base 24bddf15, branch deepseek-v4-brick-d, commits 3c262cea(step1)+f62de523(step2). STEP 1 = device router gate (RouterGateKernel: [ne,H] BF16 ffn.gate.weight × f32 x, sequential f32 + exact bf16 upcast, bit-identical to the host CPU MatmulBT) → the resident MoE no longer CPU-GEMMs the router; gated: CUDA unit 17/17·33919, real model resident==host TOKEN-IDENTICAL. STEP 2 = the graph: decode_attn_g (reads KV length from a DEVICE buffer, attends cache[0..len)+deck_new, fixed shmem — one graph serves a growing context) + V4Graph (persistent buffers, fixed-cap KV, cold→warm→capture→replay, deck_new→cache appended between replays on-stream) + opaque holder on DeepseekV4KvCache; flag VT_V4_DECODE_GRAPH=1 (default OFF). Unit 18/18·34176 (decode_attn_g == eager decode_attn BIT-IDENTICAL + RED-first bad length); test_deepseek_v4_gguf_load 12/12·531. BUT the capture ABORTS: matmul_bt_quant: keepquant CPU-fallback drain: operation not permitted when stream is capturing. GROUNDED ROOT CAUSE (gguf dump): the model has 345 Q8_0 tensors — the MLA projections (attn_q_a/attn_kv/wq_b/wo_a/wo_b), the shared experts, and output.weight (the "AProjQ8/SExpQ8/OutQ8" in the filename); IsCudaKeepQuantSupported returns FALSE for Q8_0 (only IQ2/IQ3/Q2_K…Q6_K have a CUDA keep-quant GEMM), so every one of the ~15 Q8_0 GEMMs/layer CPU-fallbacks with a cudaStreamSynchronize — legal eager, ILLEGAL during capture. This REVISES the Brick C attribution: the eager-resident ~45% GPU-idle is dominated by these ~646 Q8_0 CPU-fallback GEMM drains/step (the MLA/shared/lm_head matmuls run on the ARM CPU, not the GPU), NOT primarily device-kernel launch overhead. UNBLOCK = a CUDA Q8_0 keep-quant GEMM — which IS the "tuned expert GEMM" follow-on the campaign named as the last mile (a USER decision; the coordinator said don't start it). So Brick D's graph infrastructure is COMPLETE + unit-gated + capture-hazard-safe (every input a persistent buffer), landing behind a default-OFF flag, blocked from replaying on THIS model by Q8_0. FINAL honest table (real 80.7 GB, 24 decode): host 6.44 tok/s · eager-resident ~5.0-5.2 (Q8_0-CPU-drain-bound) · graph BLOCKED (Q8_0 CPU fallback) · ds4 16.5. Rollback-able (both flags OFF default). Box restored (worker Up restart=always, flock free, no stray). Row ACTIVE. Q8_0 CUDA keep-quant GEMM (the graph unblocker + the dominant lever) LANDED + DGX-gated — CAMPAIGN COMPLETE with an honest speed finding, base 93e72203, branch deepseek-v4-q8-cuda-gemm, commit fcf3003c. Added a self-contained on-GPU Q8_0 path to cuda_quant_dot.cu (both kMatmulBTQuant + kMatmulBTQuantGrouped): QuantizeQ8_0Kernel (bit-exact port of the CPU QuantizeRowQ8_0 — 32-block, ternary amax, d=amax/127, y.d=DF32ToF16(d), qs=roundf(x·id); Q8_0 pairs with a Q8_0 ACTIVATION not the K-quants' Q8_K) + QuantDotGemmQ8_0Kernel(+grouped) (one warp/output, per-32-block int dot × f16 scales, warp-reduce; INTEGER core bit-identical to VecDotQ8_0Q8_0, float-scale reassociated — same NMSE band as the K-quants); wired as a branch BEFORE the CPU-fallback in both providers ⇒ Q8_0 runs on the GB10 with NO stream sync. GATE: test_cuda_quant_dot 2/2·105601 (Q8_0 CUDA == CPU nmse≤1e-6 + f64 dequant≤5e-4, m∈{1,4,32,512}); test_cuda_deepseek_v4 18/18·34176; test_deepseek_v4_gguf_load 12/12·531; real 80.7 GB model — host, eager-resident, AND the GRAPH all TOKEN-IDENTICAL ("…Paris.", exact 25 ids); THE DECODE GRAPH NOW CAPTURES + REPLAYS (the Q8_0 CPU-fallback abort is gone; 0 errors, token-verified across 24 steps). THE HONEST SPEED RESULT (2 stable runs, real 80.7 GB, 24 decode): host 7.22 tok/s · eager-resident 5.64 · GRAPH 5.57 · ds4 16.5. The Q8_0-on-GPU GEMM lifted the HOST (shipped-default) path 6.44→7.22 (+12%) — the real win, the dominant lever the coordinator predicted. But the device-resident + graph track does NOT beat the host path (5.6 vs 7.22): with Q8_0 on GPU the resident path is GPU-COMPUTE-bound (util 94-95%) — the correctness-grade device glue kernels (RMSNorm/RoPE/MHC/router/SwiGLU/combine, un-tuned for T=1) do MORE GPU work than the host's ARM-CPU glue, and the graph recovers NOTHING because there is no host-gap idle left (util already 94%). So this REVISES the Brick-C/D thesis a second time: the eager-resident slowness is now device-glue kernel-efficiency bound, not launch-bound; the graph works + is token-identical (infra proven) but is a speed dead-end on GB10 while the ARM CPU out-runs the un-tuned T=1 device glue. NAMED LAST MILE to ds4's 16.5 (not started, user decision): perf-tune the device glue kernels (the resident/graph potential is real but the kernels are correctness-grade), fp8 KV, and an async HOST path that overlaps the CPU glue with the GPU GEMMs (kills the ~560-sync tax on the 7.22 winner). Rollback-able (all three flags default OFF; the Q8_0 GEMM is always-on + benefits every path). Box restored (worker running restart=always, flock free, no stray). Row ACTIVE. GLUE-KERNEL TUNE (top-3 offenders → vLLM-faithful parallel): THE GRAPHED DECODE NOW BEATS HOST, base f83c8065, branch deepseek-v4-glue-tune, commit e232146f. After the profile-first decision (glue 44% of GPU time, tunable-win verdict), tuned the top-3: (1) RouterGateKernel one-thread-per-expert → ONE WARP per expert — 18× (7.5%→0.6%); (2) MhcPreParallelKernel (the #1 kernel, <<<1,256>>> doing 24 SEQUENTIAL block reductions in ONE SM) → split into MhcPreDotsKernel (one block per mix dot → concurrent across SMs, BIT-IDENTICAL — same 256-thread reduction) + MhcPreFinishKernel4.8× (25.5%→7.5%); (3) HcHeadKernel <<<1,1>>> single-thread → one-block parallel — 42× (3.75 ms→88 µs/instance, 2.1%→0.1%). GATE: test_cuda_deepseek_v4 18/18·34176 (the tuned kernels' equivalence cases stayed green — bit-identical where order preserved, characterized near-tie where the reduction reorders); test_deepseek_v4_gguf_load 12/12·531; real 80.7 GB model host + resident + graph all TOKEN-IDENTICAL ("…Paris."), graph 0 errors. THE NEW TABLE (2 stable runs, 24 decode): host 7.20 tok/s · eager-resident 7.96 · GRAPH 7.92 · ds4 16.5 — THE GRAPHED DECODE BEATS HOST (+10%). New nsys breakdown: GEMM ~78% · GLUE ~21% · ATTN ~1.3% (the tuned kernels collapsed the glue from 44%→21%; the step is now GEMM-bound). Remaining glue (RoPE 7.3% recurrence+trig-bound, MhcPreFinish 6.0% incl. the irreducible Sinkhorn floor, Route 4.7% top-k) is material but partly irreducible; with the step GEMM-bound, full glue elimination caps at ~10 tok/s → the true last mile to ds4's 16.5 is GEMM/quant microarch (fp8 KV, tuned MMQ), a named residual. The H2H-memcpy lever I flagged is NOT on the critical path (util 95% GPU-bound + the path beats host). RECOMMEND flipping the device-resident/graph default ON — it is now the fastest path (user/coordinator decision; flags still default OFF pending that call). Box restored (worker Up restart=always, flock free, no stray). Row ACTIVE. DEFAULT FLIPPED: device-resident decode is now the SHIPPED DEFAULT after broad validation (2026-07-30, base 73d4799c, branch deepseek-v4-resident-default, commit 75c3697a). Coordinator greenlit the flip after broad validation. STEP 1 — BROADENED VALIDATION (real 80.7 GB, resident vs host, 4 distinct prompts × 256 tokens): P0 (factual) TOKEN-IDENTICAL (258 toks); P1/P2/P3 (open-ended: story/list/explanation) diverge ONLY at genuine near-tie positions into COHERENT, deterministic continuations (both paths deterministic run-to-run; bounded kernel noise — the unit-gated RelL2 — can only flip host's ~tied top-2, so every divergence is by construction a near-tie, not a bug), 0 errors — the ratified COHERENT-NEAR-TIE gate is met. Resident is ~1.8× the host path at a grown 256-tok KV context (7.8 vs 4.3 tok/s). STEP 2 — FLIP: ResidentDecodeEnabled default OFF→ON (VT_V4_RESIDENT_DECODE=0 is the rollback off-switch → host ForwardComposeImpl). The guard (CanRunResidentDecode) is UNCHANGED so CPU / non-dense / T>1 (prefill) / no-KV-cache still fall back to host (verified: prefill→host every run; test_deepseek_v4_gguf_load 12/12 with the new default). GATE: test_cuda_deepseek_v4 18/18·34176; test_deepseek_v4_gguf_load 12/12·531; real model new DEFAULT (resident) 8.01 tok/s vs VT_V4_RESIDENT_DECODE=0 (host) 7.24, both "…Paris." token-identical. STEP 3 — the CUDA graph stays OPT-IN (VT_V4_DECODE_GRAPH default OFF): graph 7.92 ≈ eager-resident 7.96 (once GPU-bound at 95% the graph collapses no host-gap idle on GB10 → adds nothing here + carries the capture-hazard surface); recorded honestly. Docs updated: STATUS + BENCHMARKS + state + ledger + model-matrix (DeepSeek-V4 decode = device-resident-default, ~7.96 tok/s, ~48% of ds4, GEMM-bound) + a README models-table row. Rollback via VT_V4_RESIDENT_DECODE=0. Box restored (worker Up restart=always, flock free, no stray). Row ACTIVE.
CLAIM-C7-N-SAMPLINGSAMPLE-NClaude Code (opus-4-8)isolated worktree .claude/worktrees/agent-aedf7ae2165086ea7 (CPU build build-cpu + CPU run; NO dgx — the request→sequence→output fan-out is device-neutral)branch worktree-agent-aedf7ae2165086ea7, base main ca1c1b51The OpenAI n sampling parameter (parallel sampling / multiple output sequences per request), previously n==1-only. A request with n>1 fans out into n prompt-sharing child sequences aggregated back into one RequestOutput / n indexed OpenAI choices; the n==1 default path stays byte-identical. Owns ONLY: NEW include/vllm/v1/engine/parallel_sampling.h + src/vllm/v1/engine/parallel_sampling.cpp (ParentRequest); src/vllm/v1/engine/llm_engine.{h,cpp} (FanOutParallelSampling + the n>1 branch); include/vllm/v1/engine/output_processor.h + src/vllm/v1/engine/output_processor.cpp (parent_req aggregation + parent_requests_); CMakeLists.txt (one source line); the matching tests (test_llm_engine, test_openai_serving); .agents/specs/sampling-controls-c7.md (SAMPLE-N section) + the C7 SAMPLE-N row + Total/Sampling rollup + scripts/check-agent-record.py ENGINE 120→121; the record surfaces (this row, parity-ledger.md, state.md, docs/STATUS.md, docs/BENCHMARKS.md). NON-COLLISION: concurrent session owns README/Metal/demo — untouched; no src/ overlap with the C7 sampler claims (those own sample/, this owns engine/).ACTIVE2026-07-28 — LANDED + CPU-GATED (foreground, NOT pushed). Fan-out mirrors vLLM parallel_sampling.py/llm_engine.py:270-293/output_processor.py:323-331. Gates: test_llm_engine 8/8 (NEW n>1 case: RED-first REQUIRE(1 == 4) before fan-out → GREEN n=4 outputs, each index 0..n-1 token-identical to BOTH top_k=1 and greedy single-sequence; the other 7 cases prove n==1 inertness), test_openai_serving 28/28 (NEW n>1: n indexed deterministic choices), plus inertness test_output_processor 64, test_scheduler 423, test_engine_core 44, test_async_llm 309, test_input_processor 37 all unchanged. Clean full-lib CPU -Werror 0-warn. Determinism gate uses top_k=1 because vLLM (and we) FORBID greedy n>1 (_verify_greedy_sampling). RESIDUALS (named): best_of/beam (SAMPLE-BEAM), async-streaming per-child collation, C-ABI n (needs ABI bump).
CLAIM-C7-BEAMSAMPLE-BEAMClaude Code (opus-4-8)isolated worktree .claude/worktrees/agent-a6591476c75bce7fe (CPU build build-cpu -DVLLM_CPP_CUDA=OFF -DVLLM_CPP_SERVER=ON + CPU run; NO dgx — beam search is an outer engine loop, its scoring/selection/EOS/length-penalty are device-neutral + deterministic ⇒ token-exact)branch worktree-agent-a6591476c75bce7fe, base main 8ad4370b (confirmed via git rev-parse HEAD)Beam search (SAMPLE-BEAM), the sibling multi-sequence feature to SAMPLE-N: an OUTER loop over the engine that per step runs one decode per beam (logprobs=2*beam_width), expands + scores by get_beam_search_score (cumulative logprob / seq_len**length_penalty), keeps the top-beam_width, retires EOS beams, and returns beam_width outputs (REUSES the SAMPLE-N multi-output seam; does NOT perturb the n>1 / n=1 / plain-sampling paths). Owns ONLY: NEW include/vllm/entrypoints/beam_search.h + src/vllm/entrypoints/beam_search.cpp (BeamSearchParams/BeamSearchSequence/BeamSearchInstance/get_beam_search_score/SortBeamsKey/BeamSearchStep model-free core + BeamSearch(LLMEngine&, …) driver); CMakeLists.txt (one source line); NEW tests/vllm/entrypoints/test_beam_search.cpp + tests/CMakeLists.txt (one line) + one case + include in tests/vllm/v1/test_llm_engine.cpp; .agents/specs/sampling-controls-c7.md (SAMPLE-BEAM section) + the C7 SAMPLE-BEAM row (INVENTORIED→ACTIVE) + Total/Sampling rollup (no ENGINE count change — existing row); the record surfaces (this row, feature-matrix.md §6, roadmap_v1.md C7, parity-ledger.md, state.md, docs/STATUS.md, docs/BENCHMARKS.md). NON-COLLISION: concurrent session owns README/Metal/demo — untouched; NEW additive TU/header with ZERO edits to any existing compiled path (no sample/ or engine/ src touched).ACTIVE2026-07-28 — LANDED + CPU-GATED (foreground, NOT pushed). Mirrors vLLM entrypoints/generate/beam_search/{utils,offline}.py + sampling_params.py:1114. std::stable_sort DESCENDING reproduces sorted(reverse=True). Gates: NEW test_beam_search 5/5 (45 asserts) model-free token-EXACT vs a hand-computed beam tree (scoring formula incl. length_penalty≠1/eos-decrement, two full expand/score/select/EOS steps + final top-k, ignore_eos, null-dict, exhaustion), RED-first — stubbing BeamSearchStep to no-op fails the toy REQUIRE(1 == 2) beams and the e2e 1 == 5; real expand/select → GREEN. test_llm_engine 9/9 (NEW e2e over the synthetic CPU Qwen3.6: beam_width distinct descending-score continuations, bw=1==greedy token-identical, wider beam ≥ cumulative logprob). Inertness: test_sampler 11/11, test_output_processor 8/8, test_scheduler 36/36, test_openai_serving 28/28 UNCHANGED. Clean full-lib CPU -Werror (-Wall -Wextra -Werror) 0-warn. RESIDUALS (named): OpenAI use_beam_search/best_of→beam wiring, C-ABI beam params, grammar-constrained beams, encoder-decoder/LoRA beams, multi-prompt batch.
CLAIM-C7-BESTOF-BEAM-APISAMPLE-BEST-OF SAMPLE-BEAM (endpoint) SAMPLE-N (endpoint)Claude Code (opus-4-8)isolated worktree .claude/worktrees/agent-a4354159cb677d86b (CPU build build-cpu -DVLLM_CPP_CUDA=OFF -DVLLM_CPP_SERVER=ON Release + CPU run; NO dgx — the request→params mapping + serving choice-assembly are device-neutral, gated exactly on the CPU engine)branch worktree-agent-a4354159cb677d86b, base main 54767c9f (confirmed via git rev-parse HEAD)The OpenAI-ENDPOINT surface for best_of + use_beam_search — the named residuals of SAMPLE-N (8ad4370b) and SAMPLE-BEAM (54767c9f). best_of>n fans out via the SAMPLE-N ParentRequest machinery (sp.n=best_of, forced ranking logprob) and the serving layer returns the top-n by cumulative logprob (SelectBestOf, re-indexed); use_beam_search routes the (chat-rendered) prompt through the merged BeamSearch driver over the SYNC LLMEngine seam and returns beam_width beams as choices. STRICT default-path inertness: a request with NEITHER best_of>n NOR use_beam_search is byte-identical. Owns ONLY: include/vllm/entrypoints/openai/protocol.h+src/.../protocol.cpp (best_of/use_beam_search/length_penalty fields + from_json + ApplyBestOf + to_beam_search_params), include/vllm/entrypoints/openai/serving_utils.h+.cpp (SelectBestOf), include/vllm/entrypoints/openai/serving_completion.{h,cpp} + serving_chat.{h,cpp} (beam routing + set_beam_search_tokenizer + best_of trim), tests/vllm/entrypoints/openai/test_serving.cpp (9 NEW cases), scripts/check-agent-record.py (ENGINE 121→122), the C7 SAMPLE-BEST-OF NEW row + SAMPLE-N/SAMPLE-BEAM residual edits + Total/Sampling rollup in engine-matrix, feature-matrix.md §6, roadmap_v1.md C7, .agents/specs/sampling-controls-c7.md (NEW SAMPLE-BEST-OF/endpoint section), parity-ledger.md, state.md, docs/STATUS.md, docs/BENCHMARKS.md. NON-COLLISION: concurrent session owns README/Metal/demo — untouched (examples/server/main.cpp NOT edited — the sync-only driver makes async-HTTP beam a named residual); reuses the LANDED SAMPLE-N/SAMPLE-BEAM cores without touching engine/ or beam_search.cpp.ACTIVE2026-07-28 — LANDED + CPU-GATED (foreground, NOT pushed). HONEST 0.26 FINDING: use_beam_search IS a real vLLM-0.26 OpenAI-server surface (completion/serving.py:173-205 + chat_completion/serving.py:319-343 → to_beam_search_paramsself.beam_search); best_of HAS BEEN DROPPED from 0.26's live path (grep -rn best_of vllm/ → only a vestigial NEVER-consumed BatchChatCompletionRequest field, chat_completion/protocol.py:1048) → we implement the CLASSIC OpenAI/V0 best_of contract gated on our own fan-out (no 0.26 best_of oracle). Gates: test_openai_serving 9 NEW cases / 62 asserts (SelectBestOf rank/tie/inert; best_ofsp.n=4 + forced logprob=0 RED-first, user count not clobbered; best_of<n rejected; e2e best_of=4,n=2→EXACTLY 2 ranked re-indexed choices; unset/==n inertness; to_beam_search_params round-trip; completion + chat endpoint beam choices IDENTICAL to the direct BeamSearch driver over a fresh identical engine; streaming+beam rejected) — full suite 37 cases GREEN, the pre-existing 28 UNCHANGED (default-path inertness). Clean full-lib CPU -Werror (-Wall -Wextra -Werror) 0-warn incl. the server binary. RESIDUALS (named): beam over the PRODUCTION AsyncLLM HTTP server (driver is LLMEngine&-based; needs an async driver mirroring online.py), streaming beam (rejected like upstream), C-ABI best_of/beam fields (ABI bump), AsyncLLM streaming per-child best_of collation, grammar-constrained beams.
CLAIM-C7-BEAM-ASYNCSAMPLE-BEAMClaude Code (opus-4-8)isolated worktree .claude/worktrees/agent-ae5914d10673378cc (CPU build build-cpu -DVLLM_CPP_CUDA=OFF -DVLLM_CPP_SERVER=ON Release + CPU run; NO dgx — beam is an outer engine loop, deterministic ⇒ token-exact device-neutral)branch worktree-agent-ae5914d10673378cc, base main aed4718e (confirmed via git rev-parse HEAD)Beam search on the PRODUCTION AsyncLLM HTTP server — the named residual of CLAIM-C7-BESTOF-BEAM-API (aed4718e): today use_beam_search works only over the SYNC LLMEngine seam; on the real server (examples/server/main.cpp holds an AsyncLLM) a beam request raised "requires the synchronous engine". Adds BeamSearchAsync(AsyncLLM&, …) mirroring vLLM online.py, driving the AsyncLLM per-beam single-token generate and calling the SAME merged BeamSearchStep/get_beam_search_score (algorithm shared verbatim via a template driver body; only the engine object differs). Routes the server's use_beam_search to BeamSearchAsync when async-backed; wires set_beam_search_tokenizer on the production handlers. STRICT inertness: a non-beam async request is byte-identical; the sync beam seam still produces the exact same beams. Owns ONLY: include/vllm/entrypoints/beam_search.h+src/vllm/entrypoints/beam_search.cpp (BeamSearchAsync + shared BeamSearchDrive template; sync BeamSearch unchanged behavior), include/vllm/v1/engine/async_llm.h+src/vllm/v1/engine/async_llm.cpp (pre-tokenized add_request/generate overloads), src/vllm/entrypoints/openai/serving_completion.cpp+serving_chat.cpp (async beam routing), examples/server/main.cpp (beam-tokenizer wiring on the production handlers), the tests (test_llm_engine, test_openai_serving), the C7 SAMPLE-BEAM row (async coverage; NO ENGINE count change — existing row) + feature-matrix.md §6 + roadmap_v1.md C7 + .agents/specs/sampling-controls-c7.md (async beam section) + this claim + parity-ledger.md + state.md + docs/STATUS.md + docs/BENCHMARKS.md. NON-COLLISION: concurrent session owns README/Metal/demo — untouched; examples/server/main.cpp is the production server path (in scope), not a doc.ACTIVE2026-07-28 — LANDED + CPU-GATED (foreground, NOT pushed). Mirrors vLLM entrypoints/generate/beam_search/online.py:28-220 (BeamSearchOnlineMixin.beam_search) + async_llm.py generate-single-step contract. Gates: test_llm_engine 10/10 (NEW: BeamSearchAsync == sync BeamSearch token-IDENTICAL — tokens/order/cum_logprob/finish_reason/text — for beam_width 1/2/3 over the synthetic CPU Qwen3.6; the 9 prior incl. the sync beam e2e UNCHANGED), test_openai_serving 40/40 (NEW: completion + chat use_beam_search over the PRODUCTION AsyncLLM engine returns choices IDENTICAL to the direct driver — no longer rejected; tokenizer-less async beam still rejected; the prior 37 incl. the sync-seam beam + inertness UNCHANGED), test_beam_search 5/5 + test_async_llm 8/8 UNCHANGED. RED evidence: pre-wiring the async block was if (sync_engine_ == nullptr …) throw "beam search requires the synchronous engine and a tokenizer" (removed in the diff); the async handler (sync_engine_ null) now returns correct choices. Clean full-lib CPU -Werror (-Wall -Wextra -Werror) 0-warn incl. the server binary. HONEST CONCURRENCY FINDING: per-step beam decodes are driven SEQUENTIALLY (one isolated request each) → byte-identical to the sync driver; online.py's asyncio.gather per-beam CONCURRENT stepping is a NAMED RESIDUAL (AsyncLLM supports concurrent requests — a future throughput optimization; correctness-first here). OTHER RESIDUALS: streaming beam (rejected like upstream), C-ABI beam, grammar-constrained beams, encoder-decoder/LoRA beams.
CLAIM-CUDA-DATACENTER-SCOPEBACKEND-CUDA-SM090 BACKEND-CUDA-SM100 BACKEND-CUDA-SM103 BACKEND-CUDA-SM110 BACKEND-CUDA-COMP-MACHETE BACKEND-CUDA-COMP-DSV3 BACKEND-CUDA-COMP-MOE-CUTLASS BACKEND-CUDA-COMP-W4A8 BACKEND-CUDA-COMP-MLA BACKEND-CUDA-COMP-FLASHMLA BACKEND-CUDA-COMP-DEEPGEMMClaude Code (opus-4-8)isolated worktree .claude/worktrees/agent-a83ea76d85c22b27b (SCOPING — read-only on production code, NO build, NO dgx, NO GPU); pin vLLM 555967922 + flashinfer-ref + cutlass 4.5.0branch worktree-agent-a83ea76d85c22b27b, base main HEADSCOPING SPIKE only — the Hopper (sm_90a) + datacenter-Blackwell (sm_100/103/110) FAST-PATH kernel-body derive-and-ship plan. Owns ONLY records: NEW .agents/specs/cuda-arch-datacenter-fastpath.md, the 11 row State→SPIKE edits in .agents/backend-matrix.md, this claim + note in .agents/coordination.md, .agents/parity-ledger.md, .agents/state.md, docs/STATUS.md, docs/BENCHMARKS.md. Touches NO src//include//cmake//tests/, no Ampere/breadth rows (sibling agents), no roadmap/README/Metal.SPIKE2026-07-27 — spike committed; per-fast-path inventory (vLLM+dep file:line) + portability verdict (1:1-portable CUTLASS C3x/FP4/MoE vs codegen-blocked DeepGEMM) + SIGNAL matrix (RUNTIME-VERIFIED / DERIVED+BUILD-VERIFIED / NOT-YET-BUILDABLE) + HW-per-target (cloud H100/B200). NOT pushed; FULL SHA reported.
CLAIM-CUDA-BREADTH-SCOPEBACKEND-CUDA-SM075 BACKEND-CUDA-SM070 BACKEND-CUDA-SM060 BACKEND-CUDA-SM061Claude Code (opus-4-8)isolated worktree .claude/worktrees/agent-a161dbd9bd2409e46 (CPU/read-only spike; NO dgx, NO GPU, NO build — inventory of llama.cpp source only)branch worktree-agent-a161dbd9bd2409e46, base main 11e0ba36SPIKE/scoping ONLY — the beyond-vLLM CUDA breadth lane (Pascal/Volta/Turing, arches vLLM DROPS but llama.cpp SUPPORTS). Owns ONLY: NEW .agents/specs/cuda-arch-breadth-fp16.md; the BACKEND-CUDA-SM075/SM070/SM060/SM061 rows + BACKEND-GATE-CUDA-LLAMACPP-LEGACY + count invariants + the sm_70/75 intro sentence in .agents/backend-matrix.md; the record surfaces (this coordination note+row, .agents/parity-ledger.md, .agents/state.md, docs/STATUS.md, docs/BENCHMARKS.md). NON-COLLISION: does NOT touch Ampere/Hopper/datacenter rows (sibling arch agents), the roadmap, README, Metal/demo, or ANY src//include//cmake/ production code (read-only).SPIKE2026-07-27 — SPIKE COMMITTED (read-only, NOT pushed). Inventoried llama.cpp 237ad9b96 ggml-cuda fp16/non-tensor-core kernels (attention fattn-tile.cu:5+fattn-vec.cuh:21, no-tensor-core dispatch fattn.cu:523-537, GEMM mmvf/cuBLAS ggml-cuda.cu:1668, CC gates common.cuh:50-326). Precise toolkit split: Turing sm_75 = DERIVE-AND-SHIP NOW (nvcc 13.0 accepts it; guard the bf16-WMMA TU at cuda_paged_attn.cu:706 + port fp16 body → build+SASS); Volta sm_70 + Pascal sm_60/61 = NOT-YET-BUILDABLE (need CUDA <13 toolkit, none here). Per-arch SIGNAL matrix (RUNTIME-VERIFIED / DERIVED+BUILD-VERIFIED testing-welcome / NOT-YET-BUILDABLE) + honest oracle gap (no vLLM on these cards → llama.cpp-on-card + portable cross-check). Rows moved to SPIKE; W-breakdown W1-W8.
CLAIM-CUDA-TURING-SM75BACKEND-CUDA-SM075 (W1 of the fp16 breadth lane, spec specs/cuda-arch-breadth-fp16.md)Claude Code (opus-4-8)isolated worktree .claude/worktrees/agent-a281fbfba6b35a55e; dgx COMPILE-VERIFY scratch ~/sm75 (git archive transfer, pruned after)worktree branch, base main 034be66eW1 build-verify ONLY (COMPILE-ONLY, GPU-SAFE — nvcc only, no kernels, no runtime). Owns: the additive/neutral #if __CUDA_ARCH__ >= 800 guard on the 5 bf16-WMMA prefill kernels in src/vt/cuda/cuda_paged_attn.cu; records .agents/backend-matrix.md (BACKEND-CUDA-SM075 cells + intro), .agents/specs/cuda-arch-breadth-fp16.md (W1/B0/B1), .agents/feature-matrix.md, .agents/roadmap_v1.md ROAD-V1-D1-CUDA, docs/STATUS.md, docs/BENCHMARKS.md, .agents/parity-ledger.md, .agents/state.md, this claim. NON-COLLISION: touches NO other kernel/model/test TU, NO README/Metal. Row stays SPIKE, owner cell unchanged (CLAIM-CUDA-BREADTH-SCOPE); this claim records the build-verify leg (mirrors the AMPERE-FA2-WA1 pattern)DONE (DERIVED+BUILD-VERIFIED)2026-07-28 — guard landed; dgx nvcc 13.0.88 single-arch 75 TU compile -Werror=all-warnings 0-warn EXIT=0 + cuobjdump real cuda_paged_attn.cu.1.sm_75.cubin; the :1797 __nv_bfloat16 fragment error GONE (RED: unguarded HEAD fails 21 errors); sm_121a neutrality same TU 0-warn + 0 SASS instruction diffs; NO Turing board ran it — build+SASS only, testing-welcome; NOT pushed
CLAIM-CUDA-SM100-NVFP4BACKEND-CUDA-SM100 (NVFP4 tcgen05 leg, DC1 of the datacenter fast-path spec specs/cuda-arch-datacenter-fastpath.md §9)Claude Code (opus-4-8)isolated worktree .claude/worktrees/agent-ad159ce8889b8b23c; dgx COMPILE-VERIFY scratch ~/sm100_spike (scp transfer, pruned after cuobjdump)worktree branch, base main 64b08aeaDC1 build-verify ONLY (COMPILE-ONLY, GPU-SAFE — nvcc only, no kernels, no runtime, no gpu.lock; disk-guarded 73G≥25G, scratch pruned). Owns: NEW TU src/vt/cuda/cuda_matmul_nvfp4_sm100.cu (faithful 1:1 port of vLLM Fp4GemmSm100, tcgen05); NEW cutlass-nvfp4-sm100 cell in cmake/CudaArchFeatures.cmake + its CI assertions in cmake/CudaArchFeaturesTest.cmake; CMakeLists.txt resolve/report/flag/target-block; records .agents/backend-matrix.md (BACKEND-CUDA-SM100 cells + intro, row stays SPIKE), .agents/specs/cuda-arch-datacenter-fastpath.md §9 DC1, .agents/kernel-matrix.md (NVFP4 row cross-ref), .agents/roadmap_v1.md ROAD-V1-D1-CUDA, docs/STATUS.md, docs/BENCHMARKS.md, .agents/parity-ledger.md, .agents/state.md, this claim. NON-COLLISION: the sm_12x NVFP4 body + cutlass-nvfp4/fp4-mma cells are UNCHANGED; no README/Metal/model/other-arch edit. Row owner cell stays CLAIM-CUDA-DATACENTER-SCOPE; this claim records the DC1 build-verify legDONE (DERIVED+BUILD-VERIFIED)2026-07-28 — NVFP4 sm100 tcgen05 GEMM build-verified; dgx nvcc 13.0 + cutlass 4.5.0 single-arch -arch=sm_100a TU compile (production flag set -DVT_CUTLASS_NVFP4_SM100=1 --expt-relaxed-constexpr --expt-extended-lambda -diag-suppress=20012 -isystem cutlass) 0-warn/0-err EXIT=0 + cuobjdump -lelf real cuda_matmul_nvfp4_sm100.1.sm_100a.cubin (arch = sm_100a). Feature-table CI test ALL PASS (100a→ENABLED, 121a/120a/103a/110/90a/80→EMPTY). RED: HEAD 100acutlass-nvfp4 DISABLED, no sm100 cell. sm_121a neutrality: cell DISABLED + TU inert (0-warn, 0 sm_100 content). Native fp4-mma (mma.sync kind::mxf4nvf4) stays sm_12x-only — does NOT port to sm_100 tcgen05. NO B200 board ran it; NOT pushed; FULL SHA reported
CLAIM-CUDA-SM90-C3XBACKEND-CUDA-SM090 (CUTLASS C3x FP8 scaled-mm leg, DC2 of the datacenter fast-path spec specs/cuda-arch-datacenter-fastpath.md §9)Claude Code (opus-4-8)isolated worktree .claude/worktrees/agent-a5560ba236f3039d7; dgx COMPILE-VERIFY scratch ~/work/c3x_sm90 (git archive transfer, pruned after cuobjdump)worktree branch, base main 00dd512eDC2 build-verify ONLY (COMPILE-ONLY, GPU-SAFE — nvcc only, no kernels, no runtime, no gpu.lock; disk-guarded 73G≥25G twice ~20s apart, scratch pruned). Owns: NEW TU src/vt/cuda/cuda_scaled_mm_c3x_sm90.cu (faithful 1:1 port of vLLM cutlass_3x_gemm_sm90_fp8, wgmma/TMA); NEW scaledmm-c3x-sm90 cell in cmake/CudaArchFeatures.cmake + its CI assertions in cmake/CudaArchFeaturesTest.cmake; CMakeLists.txt resolve/report/flag/target-block; records .agents/backend-matrix.md (BACKEND-CUDA-SM090 cells, row stays SPIKE), .agents/specs/cuda-arch-datacenter-fastpath.md §9 DC2, .agents/kernel-matrix.md (KERNEL-GEMM-FP8 arch cross-ref), .agents/roadmap_v1.md ROAD-V1-D1-CUDA, docs/STATUS.md, docs/BENCHMARKS.md, .agents/parity-ledger.md, .agents/state.md, this claim. NON-COLLISION: the sm_12x FP8 body (cuda_matmul_fp8_cutlass.cu) + cutlass-fp8/cutlass-nvfp4/cutlass-nvfp4-sm100 cells are UNCHANGED; no README/Metal/model/other-arch edit. Row owner cell stays CLAIM-CUDA-DATACENTER-SCOPE; this claim records the DC2 build-verify legDONE (DERIVED+BUILD-VERIFIED)2026-07-28 — Hopper sm90 C3x FP8 scaled-mm build-verified; dgx nvcc 13.0 + cutlass 4.5.0 single-arch -arch=sm_90a TU compile (production flag set -DVT_SCALEDMM_C3X_SM90=1 --expt-relaxed-constexpr --expt-extended-lambda -diag-suppress=20012 -isystem cutlass) 0 compiler-warn/0-err EXIT=0 (only ptxas info C7510 naming wgmma.mma_async + the Sm90 warp-specialized FP8FastAccum kernels) + cuobjdump -lelf real cuda_scaled_mm_c3x_sm90.1.sm_90a.cubin (arch = sm_90a). Configure 90ascaledmm-c3x-sm90 ENABLED. Feature-table CI test ALL PASS (90a→ENABLED, 121a/120a/100a/80→EMPTY; RED-preserving 90acutlass-fp8 EMPTY). RED: HEAD table had no cell (vt_cuda_feature_archs fatal unknown CUDA feature 'scaledmm-c3x-sm90'). sm_121a neutrality: cell DISABLED + cutlass-fp8/cutlass-nvfp4 still ENABLED for 121a + TU inert (0-warn, 0 C3x symbols vs 6 in the sm_90a object). sm90 int8/blockwise + sm100 C3x legs are residual bricks. NO H100/H200 board ran it; NOT pushed; FULL SHA reported
CLAIM-CUDA-SM100-C3XBACKEND-CUDA-SM100 (CUTLASS C3x FP8 scaled-mm tcgen05 leg, DC3 of the datacenter fast-path spec specs/cuda-arch-datacenter-fastpath.md §9)Claude Code (opus-4-8)isolated worktree .claude/worktrees/agent-ae11fa3852269e1b3; dgx COMPILE-VERIFY scratch ~/work/dc3-c3x-sm100 (git archive transfer, pruned after cuobjdump)worktree branch, base main 65b0d522DC3 build-verify ONLY (COMPILE-ONLY, GPU-SAFE — nvcc only, no kernels, no runtime, no gpu.lock; disk-guarded 71G≥25G twice ~40s apart, scratch pruned). Owns: NEW TU src/vt/cuda/cuda_scaled_mm_c3x_sm100.cu (faithful 1:1 port of vLLM cutlass_3x_gemm_sm100_fp8, ArchTag=Sm100+KernelScheduleAuto→tcgen05); NEW scaledmm-c3x-sm100 cell in cmake/CudaArchFeatures.cmake + its CI assertions in cmake/CudaArchFeaturesTest.cmake; CMakeLists.txt resolve/report/flag/target-block + the CUTLASS-header OR-guards; records .agents/backend-matrix.md (BACKEND-CUDA-SM100 cells, row stays SPIKE), .agents/specs/cuda-arch-datacenter-fastpath.md §9 DC3, .agents/kernel-matrix.md (KERNEL-GEMM-FP8 arch cross-ref), .agents/roadmap_v1.md ROAD-V1-D1-CUDA, docs/STATUS.md, docs/BENCHMARKS.md, .agents/parity-ledger.md, .agents/state.md, this claim. NON-COLLISION: the sm_12x FP8 body (cuda_matmul_fp8_cutlass.cu) + cutlass-fp8/cutlass-nvfp4/cutlass-nvfp4-sm100/scaledmm-c3x-sm90 cells are UNCHANGED; the sm100 NVFP4 cell (DC1) coexists (both resolve for 100a, independent TUs); no README/Metal/model/other-arch edit. Row owner cell stays CLAIM-CUDA-DATACENTER-SCOPE; this claim records the DC3 build-verify legDONE (DERIVED+BUILD-VERIFIED)2026-07-28 — datacenter-Blackwell sm100 C3x FP8 scaled-mm build-verified; dgx nvcc 13.0.88 + cutlass 4.5.0 single-arch -arch=sm_100a TU compile (production flag set -DVT_SCALEDMM_C3X_SM100=1 --expt-relaxed-constexpr --expt-extended-lambda -diag-suppress=20012 -isystem cutlass -Werror all-warnings) 0 compiler-warn/0-err EXIT=0 + cuobjdump -lelf real cuda_scaled_mm_c3x_sm100.1.sm_100a.cubin (arch = sm_100a); bonus tcgen05 proof: 3 Sm100TmaUmmaWarpSpecialized kernels naming SM100_MMA_F8F6F4_{SS,2x1SM_SS} + SM100_TMA_2SM_LOAD_MULTICAST + SM100_TMEM_LOAD, SASS carries LDTM/tmem. Configure 100ascaledmm-c3x-sm100 ENABLED. Feature-table CI test ALL PASS (100a→ENABLED, 121a/120a/120a;121a/103a/110/90a/80→EMPTY; RED-preserving 100acutlass-fp8/scaledmm-c3x-sm90 EMPTY; neutrality 121acutlass-fp8/cutlass-nvfp4 ENABLED + cutlass-nvfp4-sm100 DISABLED). RED: HEAD table had no cell (vt_cuda_feature_archs fatal unknown CUDA feature 'scaledmm-c3x-sm100'). sm_121a neutrality: cell DISABLED + cutlass-fp8/cutlass-nvfp4/cutlass-nvfp4-sm100 byte-unchanged + TU inert (0-warn, 0 tcgen05 symbols vs 3 in the sm_100a object). sm100 int8/blockwise + MoE/MXFP4/MLA legs are residual bricks. NO B200/sm_100 board ran it; NOT pushed; FULL SHA reported
CLAIM-CUDA-SM110-RUNTIMEBACKEND-CUDA-SM110 (runtime leg of BACKEND-CUDA-ARCH-ADDITIVITY §W10)Claude Code (opus-4-8)isolated worktree .claude/worktrees/agent-a47bcf2794041ed3b off main 0f07fe34; Thor build/run dir ~/vllmcpp-thor on ssh 192.168.68.23 (git archive, NOT rsync); dgx.casa only as the checkpoint sourcebranch main-based worktree, base 0f07fe34RECORDS-ONLY runtime-proof + records. Owns ONLY the record surfaces: .agents/backend-matrix.md (BACKEND-CUDA-SM110 row + intro), .agents/specs/cuda-arch-additivity.md §W10 runtime leg, docs/STATUS.md (Backend detail CUDA-arch para), docs/BENCHMARKS.md (the Thor gate entry), .agents/roadmap_v1.md ROAD-V1-D1, .agents/environment.md (Thor profile), parity-ledger.md, state.md, this coordination.md. NON-COLLISION: ZERO source/CMake/kernel/test edits (concurrent sessions own README/Metal/demo — untouched); the committed golden tests/parity/goldens/llama_greedy_1b/our_ids.i32 was written only transiently on Thor's copy, not in this tree.IMPLEMENTED2026-07-27 — FIRST NON-GB10 RUNTIME PROOF (not pushed). Real NVIDIA Jetson Thor (ssh 192.168.68.23, on-box nvidia-smi compute_cap=11.0 CONFIRMING inferred sm_110; aarch64, JetPack R38, driver 580.00, nvcc /usr/local/cuda-13.0 V13.0.48; cutlass ABSENT + not needed). Native build -DVLLM_CPP_CUDA_ARCHITECTURES=110 -DVLLM_CPP_TRITON=OFF Release: all 5 fast paths DISABLED for [110], -Werror (CUDA -Werror=all-warnings + compute_110/sm_110 gencode; CXX -Wall -Wextra -Werror) 0 warnings, cuobjdump 16 sm_110 TUs + nothing else. test_llama_paged_engine (unsloth/Llama-3.2-1B bf16) on sm_110: STRICT token-exact 12/16 prompts = 192/192 tokens vs the committed vLLM oracle golden (all vLLM-deterministic prompts) + 15/16 bit-identical to the GB10 sm_121a anchor; the 4 remaining are the ratified bf16 near-tie prompts (committed teacher-forced gap 0.000 nats), 3/4 == GB10 anchor. PASS under the near-tie distributional gate. SCOPE: RUNTIME-VERIFIED = portable bf16 path ONLY (fp8/fp4/CUTLASS fast paths EMPTY on sm_110, DERIVED/NOT-YET). Honest: the gate's hard anchor-REQUIRE (GB10 bit-identity, pre-multi-arch) aborts at p0/t12; a fresh oracle teacher-force could NOT run (dgx oracle degraded — 0.26 editable dangling / 0.25 EngineCore crash), so p0's near-tie rests on the committed gap-0 golden. local-ai-worker on Thor STOPPED for the GPU run and RESTORED (Up, restart=always). llama.cpp A/B not run.
CLAIM-CUDA-ORIN-SM87-RUNTIMEBACKEND-CUDA-SM087 (runtime leg; WA-O1 of specs/cuda-arch-ampere-fastpath.md)Claude Code (opus-4-8)isolated worktree .claude/worktrees/agent-a6e411e998298fdb5 off main c14b9919; Orin build/run in docker container vllmcpp-orin (base nvcr.io/nvidia/l4t-jetpack:r36.4.0) with /home/kairos/orin-work bind-mount on ssh kairos@192.168.68.113 (git archive, NOT rsync); model fetched on-boxbranch main-based worktree, base c14b9919RECORDS-ONLY runtime-proof + records. Owns ONLY record surfaces: .agents/backend-matrix.md (BACKEND-CUDA-SM087 row + Orin intro), .agents/specs/cuda-arch-ampere-fastpath.md (WA-O1 result + Orin env), docs/STATUS.md (CUDA-arch para), docs/BENCHMARKS.md (Orin gate entry), .agents/roadmap_v1.md ROAD-V1-D1-CUDA, .agents/parity-ledger.md, .agents/state.md, this coordination.md. NON-COLLISION: ZERO source/CMake/kernel/test edits in this tree (the anchor-REQUIRE softening was transient on the Orin source copy only, like the Thor gate); does NOT touch README/Metal or any other arch row.IMPLEMENTED2026-07-28 — SECOND NON-GB10 RUNTIME PROOF (not pushed). Real NVIDIA Jetson AGX Orin (Tegra R36.4.3 / JetPack 6, kernel 5.15.148-tegra, aarch64; on-device vt CUDA backend self-reports CUDA compute capability: sm_87, integrated=1; driver CUDA=12.6). CUDA-13 L4T image BLOCKED by nvidia-container-runtime (cuda>=13.0 (cuda=12.6)) → built in l4t-jetpack:r36.4.0 (nvcc 12.6). Toolchain: g++-11 fails (-Wdangling-pointer pragma → -Werror=pragmas), g++-12 fails (libstdc++ -Wrestrict false positive), g++-13.4 builds clean. git archive c14b9919 → Orin; -DVLLM_CPP_CUDA_ARCHITECTURES=87 -DVLLM_CPP_CUDA=ON -DCMAKE_BUILD_TYPE=Release (g++-13): all 7 CUTLASS/fp8/fp4 features DISABLED for [87], FA2 arch-listed but CUTLASS headers absent → OFF ⇒ PORTABLE-ONLY, -Werror EXIT=0. Runtime on sm_87: test_cuda_backend 6/6 (25 assert, device=sm_87) + test_cuda_ops 12/12 (436 assert) — real kernels on-device; test_llama_paged_engine (unsloth/Llama-3.2-1B bf16) with VT_ASYNC_RUNNER=0: 16/16 prompts PASS near-tie gate, 13/16 STRICT token-exact vs vLLM 0.25.0 oracle golden, 3/16 near-tie-band (gap 0 nats), 0 forward-divergent (exceeds Thor's 12/16); 1 benign anchor-drift vs GB10 sm_121a (prompt 9 tok 14, gap 0 nats). SCOPE: RUNTIME-VERIFIED = portable bf16 SYNC path ONLY. HONEST sm_87 BUG: the DEFAULT async runner path CRASHES on first forward (cudaFree: illegal memory access) — unblock item; SYNC path is the verified one. fp8/fp4/CUTLASS/FA2 fast paths EMPTY on sm_87 (DERIVED/NOT-YET). local-ai container STOPPED for the GPU run and RESTORED (Up); scratch + build container removed; root / untouched. GGUF leg + llama.cpp A/B not run.
CLAIM-ROADMAP-D3SPEC-NGRAMClaude Code (opus-4-8)isolated worktree branch spec-ngram-eagle3-d3 (CPU build build-cpu-dbg); dgx ~/work/ngram-d3/tree (git archive, CUDA build-cuda, all GPU work under ONE flock $HOME/gpu.lock, gates STANDALONE)branch spec-ngram-eagle3-d3, base origin/main 9167b834ROAD-V1-D3 spec-decode BREADTH reusing the LANDED MTP/DFlash verify/reject/take_draft_token_ids loop: SPEC-NGRAM the draft-FREE n-gram proposer (1:1 port of ngram_proposer.py) wired as a third --speculative-config method; SPEC-EAGLE3 W0 RUN-verify + honest scope. Owns ONLY: NEW include/vllm/v1/spec_decode/ngram_proposer.h + src/vllm/v1/spec_decode/ngram_proposer.cpp, include/vllm/config/speculative.h (ResolveNgram/use_ngram/prompt_lookup_*) + src/vllm/config/speculative.cpp (parse ngram), src/vllm/entrypoints/model_loader.cpp (ResolveSpecConfig ngram branch), src/vllm/v1/worker/gpu/runner.{h,cpp} (propose_drafts_ngram + use_ngram() + hidden-tap gate), CMakeLists.txt (1 line), NEW tests/vllm/v1/spec_decode/test_ngram_proposer.cpp + tests/parity/test_qwen27_ngram_spec_decode.cpp + tests/CMakeLists.txt (2 lines), scripts/spec/ngram_27b_golden.py, tests/parity/goldens/ngram_27b/, .agents/specs/spec-decode-breadth-d3.md, the §8 rows SPEC-NGRAM/SPEC-EAGLE3 in engine-matrix + feature-matrix, ROAD-V1-D3 in roadmap_v1 + the punch-list D3 line. NON-COLLISION with CLAIM-ROADMAP-C7 (sibling, sampler/serving §6): does NOT touch the sampler (sampler.cpp/rejection_sampler.*/cuda_sample.*), input-batch, protocol, or C7 rows; the runner edit is a NEW additive propose_drafts_ngram branch + a use_ngram() predicate, gated OFF by default.ACTIVE2026-07-27 — SPEC-NGRAM LANDED + GATED (foreground, NOT pushed). 27B ngram gate test_qwen27_ngram_spec_decode 5/5 STRICT our-ngram-ON == vLLM-ngram-ON (deterministic repetitive battery) + 180/180 drafts accepted (28 assertions); unit test_ngram_proposer 19/19 (ports test_ngram.py). Inertness spec-OFF byte-identical: SACRED 27B test_qwen27_paged_engine 235/235, MTP test_qwen27_spec_decode 9/9, DFlash test_qwen27_dflash_spec_decode 27/27. CUDA -Werror clean (GB10 sm_121a, cutlass 4.5.0); host-side proposer, NO new kernel (no compute-sanitizer surface). SPEC-EAGLE3 = BLOCKED (honest, no fabrication): no ungated oracle-runnable EAGLE3 draft arch/checkpoint for a Qwen3.6 gate model at pin 555967922 (registry has no Eagle3Qwen3_5*; dgx cache 0 eagle checkpoints; z-lab published DFlash not EAGLE3); port scoped for when a checkpoint lands. ROAD-V1-D3 → DONE (ngram gated + EAGLE3 honestly reachable-blocked).
CLAIM-ROADMAP-C8-PARSERTOOLS-STREAMING-PARSERClaude Code (opus-4-8)isolated worktree .claude/worktrees/agent-acde2845d19401df6 (CPU build build-cpu + CPU run; NO dgx — a parser is a device-neutral pure function of the token stream)branch worktree-agent-acde2845d19401df6, base origin/main c0abfa3fROAD-V1-C8 residual: TOOLS-STREAMING-PARSER the vLLM 0.26 unified streaming parser ENGINE CORE (declarative StreamingParserEngine: token-ID scanner + prefix-buffering incremental lexer + transition state machine + JSON-arg brace hold-back + drop-info) with qwen3/seed_oss/kimi_k2 configs + the unified name->config registry, EXACT-gated event-for-event vs vLLM 0.26. Owns ONLY: NEW include/vllm/parser/engine/{events,parser_engine_config,incremental_lexer,token_id_scanner,streaming_parser_engine,configs,registry}.h + src/vllm/parser/engine/{incremental_lexer,token_id_scanner,streaming_parser_engine,configs,registry}.cpp, CMakeLists.txt (5 src lines), NEW tests/vllm/parser/engine/test_streaming_parser_engine.cpp + ..._goldens.inc + tests/CMakeLists.txt (1 line), NEW tools/parity/dump_streaming_parser_engine.py, NEW .agents/specs/streaming-parser-engine.md, the TOOLS-STREAMING-PARSER row in engine-matrix + the §7 row in feature-matrix, ROAD-V1-C8 in roadmap_v1 + the punch-list C8 line. NON-COLLISION with the D4-APC-W3 sibling (prefix-cache/KV/§2, GPU): touches NO prefix-cache/KV/§2 files; a NEW additive parser/engine/ subsystem, no existing tool_parsers/serving_chat TU modified (dispatch swap is a named residual).ACTIVE2026-07-27 — TOOLS-STREAMING-PARSER core LANDED + CPU-GATED (foreground, NOT pushed). test_streaming_parser_engine 2/2 cases, 586/586 assertions: 8 exact-parity scenarios (qwen3 reasoning+XML tool call char-by-char & whole; thinking-off plain; two consecutive calls tool_index++; unfinished call flushed by finish(); kimi_k2 JSON args with held-back top-level brace; token-ID-driven stream via TokenIDScanner+mock vocab) matched event-for-event (type,value,tool_index) vs the vLLM 0.26 Python engine; goldens captured by tools/parity/dump_streaming_parser_engine.py from the pinned source, reproduce the committed .inc byte-identically. RED-first: dropping the held-back arg delta fails 12 asserts at the divergent } boundary; restoring → 586/586. Inertness: additive opt-in subsystem, git diff --stat = new files + 6 explicit wiring lines, no existing parser/serving TU altered; plain generation byte-identical. CPU -Werror clean (full vllm lib). All seven record checkers bare rc=0. RESIDUAL (honest, stays open under this row): the assembly layer (SemanticEvent->DeltaMessage/ExtractedToolCallInformation) + serving-SSE dispatch swap + the other 6 engine configs (gemma4/deepseek_v4/v32/minimax_m2/nemotron_v3/glm47_moe/inkling) + regex terminals.
CLAIM-ROADMAP-C8-ASSEMBLYTOOLS-STREAMING-PARSER (assembly sub-item; row stays ACTIVE)Claude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm.cpp-c8-assembly (CPU build build-cpu-c8 Release + CPU run; NO dgx — a parser is a device-neutral pure function of the token stream)branch road-v1-c8-assembly, base origin/main 5a549d58ROAD-V1-C8 residual: the parser ASSEMBLY layer on top of the merged engine CORE — the vLLM 0.26 ParserEngine (SemanticEvent -> streaming DeltaMessage + one-shot ExtractedToolCallInformation) with qwen3/seed_oss/kimi_k2 assembled parsers + the parser_manager name->parser dispatch, EXACT-gated field-for-field vs vLLM 0.26. Owns ONLY: NEW include/vllm/parser/engine/{parser_engine,py_json}.h + src/vllm/parser/engine/parser_engine.cpp, NEW include/vllm/parser/{kimi_k2,parser_manager}.h + src/vllm/parser/{kimi_k2,parser_manager}.cpp, additive assembly fields in include/vllm/parser/engine/parser_engine_config.h + src/vllm/parser/engine/configs.cpp (engine core ignores them), CMakeLists.txt (3 src lines), NEW tests/vllm/parser/engine/test_parser_engine_assembly.cpp + ..._goldens.inc + tests/CMakeLists.txt (1 line), NEW tools/parity/dump_parser_engine_assembly.py, NEW .agents/specs/parser-assembly-c8.md, the TOOLS-STREAMING-PARSER row in engine-matrix + the §7 row in feature-matrix, ROAD-V1-C8 in roadmap_v1 + the punch-list C8 line. NON-COLLISION with the D4-APC W3 sibling (prefix-cache/KV, GPU): touches NO prefix-cache/KV/§2 files; a NEW additive assembly on parser/engine/, no existing tool_parsers/serving TU modified (dispatch swap is a named residual).ACTIVE2026-07-27 — PARSER ASSEMBLY LANDED + CPU-GATED (foreground, NOT pushed). test_parser_engine_assembly 2/2 cases, 1652/1652 assertions: 9 scenarios (qwen3 reasoning+XML tool call whole-delta & char-by-char; reasoning-suppressed include_reasoning=false; thinking-off plain content; two consecutive tools tool_index 0->1; unfinished call flushed by finish(); seed_oss wrapper-token variant; kimi_k2 JSON args held-back top-level brace char-by-char & whole-delta) matched field-for-field (streaming DeltaMessage role/content/reasoning/tool_calls[i].{index,id,type,name,arguments} AND one-shot extract_tool_calls) vs the vLLM 0.26 Python assembly. Tool-call ids made deterministic on both sides (chatcmpl-tool-; production keeps random uuid). Goldens captured by tools/parity/dump_parser_engine_assembly.py, reproduce the committed .inc byte-identically. RED-first: dropping the held-back tool-args tail in _safe_arg_prefix fails 32 asserts, first boundary qwen3_reasoning_xml_wholedelta delta[3] tc[0] tc args (expected {"city": "Tokyo, break emitted {"city": ); restoring -> 1652/1652. Inertness: additive opt-in, engine-core gate still 586/586, no existing parser/serving TU altered, plain generation byte-identical. CPU -Werror clean (full vllm lib, 0 warn). RESIDUAL (honest, stays open): serving-SSE dispatch swap (NOT wired — behind the existing --tool-call-parser seam); JSON-schema type coercion (_fix_arg_types with a tool schema — modeled identity, no schema carried); the other 6 engine configs (gemma4/deepseek_v4/v32/minimax_m2/nemotron_v3/glm47_moe/inkling); live-engine metric wiring; chat-form /tokenize.
CLAIM-ROADMAP-C8-SERVINGTOOLS-STREAMING-PARSER (serving-SSE dispatch sub-item; row stays ACTIVE)Claude Code (opus-4-8)isolated worktree .claude/worktrees/agent-acdbd43d775405d62 (CPU build build + CPU run; NO dgx — the parser is a device-neutral pure function of the streamed deltas)branch worktree-agent-acdbd43d775405d62, base main bd3e15edROAD-V1-C8 residual: the serving-SSE dispatch swap — route the OpenAI chat streaming path's --tool-call-parser seam through parser_manager get_parser_engine so an engine-backed parser (qwen3/seed_oss/kimi_k2) drives the streamed DeltaMessage (reasoning + content + tool-call name/arg deltas) and the one-shot non-stream parse, EXACT-gated chunk-for-chunk vs vLLM 0.26's chat_completion_stream_generator. Owns ONLY: additive lines in include/vllm/entrypoints/openai/serving_chat.h + src/vllm/entrypoints/openai/serving_chat.cpp (ShapeChatDeltaEngine/ShapeChatMessageEngine/MakeParserEngine + 3 name-selected drive-site branches + ChatSseStream engine member), the faithful include_reasoning request field in include/vllm/entrypoints/openai/protocol.h + src/vllm/entrypoints/openai/protocol.cpp, NEW tests/vllm/entrypoints/openai/test_serving_chat_stream.cpp + ..._goldens.inc + tests/CMakeLists.txt (1 line), NEW tools/parity/dump_serving_chat_stream.py, the TOOLS-STREAMING-PARSER row in engine-matrix + the §7 row in feature-matrix, ROAD-V1-C8 in roadmap_v1 + completion spec C8 line. NON-COLLISION with the sibling GPU MM agent: touches NO multimodal/MM record files; a serving-seam-only wiring, no parser/engine-core/assembly/tool_parsers TU modified.ACTIVE2026-07-27 — SERVING-SSE DISPATCH SWAP LANDED + CPU-GATED (foreground, NOT pushed). test_openai_serving_chat_stream 2/2 cases, 210/210 assertions: 9 scenarios driven through the production serving dispatch (get_parser_engine selection == MakeParserEngine; ShapeChatDeltaEngine -> parse_delta) + the production ChatCompletionStreamResponse SSE framing, matched chunk-for-chunk (role frame; per-delta delta.{reasoning,content,tool_calls[].function.{name,arguments}}; terminal finish_reason tool_calls flip; withheld-null skip) vs the vLLM 0.26 SSE stream captured by tools/parity/dump_serving_chat_stream.py (reuses the assembly sandbox oracle). Plus a name-selected dispatch case (qwen3/seed_oss/kimi_k2 -> engine; hermes/mistral/"" -> legacy seam). RED-first: mis-wiring the dispatch (parser not driven -> plain-content delta) fails 6 CHECKs, first divergent boundary qwen3_reasoning_xml_wholedelta chunk[1] (want delta.reasoning="Let me check the weather.", got raw delta.content="<think>...</think>") + a chunk-count divergence (189 raw-char deltas vs 62 parser-coalesced); restoring -> 210/210. Inertness: name-selected + OFF by default — the legacy tool_parsers path stays byte-identical (test_openai_serving 421/421 unchanged); git diff --stat code = new test/dump + additive serving-seam lines. CPU -Werror clean (full vllm lib + full test suite, 0 warn). RESIDUAL (honest, stays open under the row): JSON-schema arg-type coercion; the other 6 engine configs; live-engine per-step metric wiring; SERVE-RESPONSE-METRICS (INVENTORIED); chat-form /tokenize.
CLAIM-ROADMAP-C8-CONFIGSTOOLS-STREAMING-PARSER (engine-config-families sub-item; row stays ACTIVE)Claude Code (opus-4-8)isolated worktree .claude/worktrees/agent-a99f3d3d056329649 (CPU build build Release + CPU run; NO dgx — a parser is a device-neutral pure function of the token stream)branch worktree-agent-a99f3d3d056329649, base main 22a9db5eROAD-V1-C8 residual: port the REMAINING engine-backed streaming tool-call parser CONFIGS (vLLM 0.26 vllm/parser/ + registered_adapters.py), as additive ParserEngineConfig builders + assembled adapters + registry/parser_manager registration, honesty-gated (port only what fits the literal-lexer engine + existing hooks; defer genuine cases with the exact missing feature). Owns ONLY: additive builders/converters in include/vllm/parser/engine/configs.h + src/vllm/parser/engine/configs.cpp, dispatch in src/vllm/parser/engine/registry.cpp + src/vllm/parser/parser_manager.cpp, NEW include/vllm/parser/glm47_moe.{h,cpp}, CMakeLists.txt (1 src line), the extended tests/vllm/parser/engine/test_parser_engine_assembly.cpp + regenerated ..._goldens.inc + tools/parity/dump_parser_engine_assembly.py, .agents/specs/parser-assembly-c8.md, the TOOLS-STREAMING-PARSER row in engine-matrix + §7 row in feature-matrix, ROAD-V1-C8 in roadmap_v1 + completion spec C8 line, append-only ledger/state. NON-COLLISION with the sibling GPU MM agent: touches NO multimodal/MM record files; additive parser configs only — no engine-core/assembly/serving logic modified.ACTIVE2026-07-27 — 5 CONFIGS PORTED + CPU-GATED, 2 DEFERRED (foreground, NOT pushed). PORTED (exact-gated): minimax_m2, glm47_moe, deepseek_v4, deepseek_v32, nemotron_v3 — additive ParserEngineConfig builders + _minimax_m2/_glm47/_dsml std::regex arg-converters (mirror qwen3), glm47 name-.strip() via Glm47MoeParser over the EXISTING emit_name_delta/handle_tool_end hooks. test_parser_engine_assembly 2/2 cases 3510/3510 assertions (was 1652), 19 scenarios (+10: each family whole-delta AND char-by-char) field-for-field (streaming DeltaMessage + one-shot extract_tool_calls) vs vLLM 0.26; goldens byte-reproduced by the extended dump_parser_engine_assembly.py (copies the REAL vLLM family modules, no hand-transcription). deepseek string="true/false" typed values gated (days→int 5, count→int 3). RED-first: disabling glm47 name-.strip() fails exactly 2 asserts at glm47_reasoning_xml_wholedelta delta[2] tc[0] tc name (want get_weather, break emitted get_weather\n) + the char-by-char twin delta[54]; restoring → 3510/3510. DEFERRED (honest, NOT stubbed): gemma4 needs an unported per-parser _events_to_delta reasoning-rewrite hook (thought\n channel-prefix strip, gemma4.py:530) + _preprocess_feed channel-opener injection (:424); inkling needs a virtual _extract_args_value args-wrapper unwrap hook (inkling.py:402, the base extract_name_and_args inlines a fixed key list) + _single_pass_parse trailing-text flush (:376). Both require editing the assembly core (out of scope). Inertness: engine-core gate still 586/586, serving-SSE still 210/210 — UNCHANGED; only new configs/adapters + registration added. CPU -Werror clean (full vllm lib clean-rebuild, 0 warn). RESIDUAL (stays open under the row): gemma4 + inkling (need the named assembly hooks); JSON-schema arg-type coercion; live-engine metric wiring; SERVE-RESPONSE-METRICS (INVENTORIED).
CLAIM-ROADMAP-C8-CONFIGS-2TOOLS-STREAMING-PARSER (engine-config-families sub-item, C8-2; row stays ACTIVE)Claude Code (opus-4-8)isolated worktree .claude/worktrees/agent-aca996f0b3f998b5b (CPU build build-cpu Release + CPU run; NO dgx — a parser is a device-neutral pure function of the token stream)branch worktree-agent-aca996f0b3f998b5b, base main 9b27e9c2ROAD-V1-C8 residual: port the LAST 2 deferred engine-backed families gemma4 + inkling, closing vLLM tool-parser family parity, by ADDING the specific per-parser assembly-core virtual seams each needs as default-inert virtual methods (existing 8 families byte-identical) + the two configs/converters + the two subclasses. Owns ONLY: additive virtual seams in include/vllm/parser/engine/parser_engine.h + src/vllm/parser/engine/parser_engine.cpp (preprocess_feed, virtual events_to_delta/single_pass_parse/reset/extract_reasoning, args_wrapper_keys from _extract_args_value), gemma4_config/inkling_config + converters in configs.{h,cpp}, NEW include/vllm/parser/{gemma4,inkling}.{h,cpp} + src/vllm/parser/{gemma4,inkling}.cpp, dispatch in registry.cpp + parser_manager.cpp, CMakeLists.txt (2 src lines), the extended tests/vllm/parser/engine/test_parser_engine_assembly.cpp + regenerated ..._goldens.inc + tools/parity/dump_parser_engine_assembly.py, .agents/specs/parser-assembly-c8.md, the TOOLS-STREAMING-PARSER row in engine-matrix + §7 row in feature-matrix, ROAD-V1-C8 in roadmap_v1 + completion spec C8 line, append-only ledger/state. NON-COLLISION with the sibling GPU MM agent: touches NO multimodal/MM record files; additive parser seams/configs only.ACTIVE2026-07-27 — gemma4 + inkling PORTED + CPU-GATED — vLLM tool-parser family parity CLOSED (foreground, NOT pushed). Added 4 assembly-core virtual seams (all default-inert; the 8 existing families produce byte-identical output): preprocess_feed (parser_engine.py:210), virtual events_to_delta (:706), virtual single_pass_parse (:645), args_wrapper_keys factored out of _extract_args_value (:1064) + virtual reset/extract_reasoning. gemma4 (Gemma4Parser): _preprocess_feed channel-opener injection (gemma4.py:424) + _events_to_delta thought\n channel-prefix strip (:530) + extract_reasoning strip (:572) + _gemma4_arg_converter key:value scanner. inkling (InklingParser): args_wrapper_keys args-unwrap (inkling.py:402) + _single_pass_parse trailing-text flush (:376) + _inkling_arg_converter JSON-span carver; MESSAGE_HEADER-initial. test_parser_engine_assembly 3/3 cases 4526/4526 assertions (was 3510), 26 scenarios (+7: gemma4 explicit+elided channel, inkling think/tool/trailing-text + non-object-args fallback, each whole-delta AND char-by-char) + a NEW non-streaming parse() test case; goldens byte-reproduced by the extended dump_parser_engine_assembly.py (copies the REAL vLLM gemma4/inkling modules). RED-first for all 4 seams: gemma4 _events_to_delta skip → 13 asserts at gemma4_channel_tool_wholedelta delta[0] reasoning; gemma4 _preprocess_feed identity → 5 asserts at gemma4_elided_channel_wholedelta delta[0] content (only the elided scenario, isolating injection); inkling args_wrapper_keys drop-args → 4 asserts at inkling_nonobject_args_wholedelta extract tc[0] arguments (want [1, 2, 3], break emitted the {"args": [1, 2, 3]} wrapper); inkling _single_pass_parse skip → 2 asserts at inkling_think_tool_text_wholedelta parse content (want Here you go., break emitted none); each restored → 4526/4526. INERTNESS: engine-core gate 586/586 + serving-SSE 210/210 UNCHANGED byte-identical (seams inert; existing 3510 stream/extract goldens byte-identical — .inc diff is pure insertions). CPU -Werror clean full vllm lib clean-rebuild, 0 warn. RESIDUAL (C8 stays PARTIAL): JSON-schema arg-type coercion; SERVE-RESPONSE-METRICS; live-engine metric wiring; chat-form /tokenize. Note: inkling's _extract_args_value is a converter-FAILURE fallback (well-formed args unwrap via _inkling_arg_converter); gated via the non-object-args scenario.
CLAIM-SPEC-GDN-I4SPEC-GDN-SEGMENTSClaude Code (opus-4-8)isolated worktree /home/mudler/_git/wt-i4-gdn-spec (CPU build build-cpu + CPU ctest); dgx ~/i4gdn/s-a9840fc (git archive, CUDA build, all GPU work under one flock $HOME/gpu.lock, big-model gates STANDALONE one at a time)branch i4-gdn-spec, base origin/main 1e14f60 (rebased to 262fc14)SPEC-MTP increment I4, the GDN half: the GDN speculative metadata split + decode→prefill reclassification, the T>1/IS_SPEC GDN recurrence with per-timestep snapshots, the conv sliding window honouring num_accepted_tokens, and the k+1 state-slot allocation. Claims ONLY row SPEC-GDN-SEGMENTS; SPEC-MTP STAYS GATING (a one-line note only). Owns ONLY: include/vllm/v1/attention/backends/gdn_attn.h + src/vllm/v1/attention/backends/gdn_attn.cpp (GDN metadata builder); the additive kGdnSpecDecode/kCausalConv1dSpecUpdate ops in include/vt/ops.h, src/vt/ops.cpp, src/vt/cpu/cpu_ops.cpp, src/vt/cuda/cuda_gdn.cu; MakeQwen3_5KVCacheSpec in src/vllm/model_executor/models/qwen3_5_common.{h,cpp}; and the tests tests/vllm/v1/attention/test_gdn_metadata_builder.cpp, tests/vt/test_ops_gdn.cpp, tests/vllm/models/test_model_registry.cpp. EXPLICIT NON-COLLISION: does NOT touch the sampler/input-batch-expansion/rejection-kernel layer (I3's rejection_sampler.*, cpu_sample.cpp, cuda_sample.cu, prepare_inputs.*, runner.* — I4 CONSUMES num_accepted_tokens, never defines the rejection rule); does NOT touch include/vllm/config/speculative.h, src/vllm/v1/core/sched/*, include/vllm/v1/request.h, include/vllm/v1/engine/core.* (I2's FROZEN ABI); does NOT touch examples/server/main.cpp or src/vllm/entrypoints/model_loader.cpp (CLI/docs agent).ACTIVE2026-07-24 — I4 IMPLEMENTED AND GATED. RED-first by experiment (four reverted stubs: hardwired-0 metadata fails 11/20 cases; final-slot snapshot fails 2 rollback cases; ignore-accepted read fails 30 assertions; 1+k conv advance fails 12). ROLLBACK PROVEN bit-exact (memcmp, no tolerance) at the real 27B Hv=48 / 35B Hv=32 dims (Dk=Dv=128), CPU + CUDA: for every rejection point j, the surviving SSM state and conv window equal running only the accepted prefix through the shipped vt::GdnDecode/CausalConv1dUpdate; a T==1/accepted==1 spec call is bit-identical to vt::GdnDecode. DEFAULT-OFF INERT: num_spec==0 ⇒ the identical pre-I4 non-spec branch; both spec kernels are NEW op ids so no shipped kernel branched. EVIDENCE: CPU clean full -Werror 0 warnings; full CPU ctest zero NEW failures (the 5 test_model_registry count-drift + test_model_loader_gguf + test_bpe + -j flakes are PRE-EXISTING, proven by stashing this branch's test file at HEAD — my added Qwen3.5 KV-cache spec case passes 28/28). dgx CUDA clean full -Werror 0 warnings (501 objects, cuda_gdn.cu.o recompiled); test_ops_gdn 63/63 (3630 assertions), test_gdn_metadata_builder 20/20 (483), test_model_registry spec case 1/1 (28); compute-sanitizer memcheck on the spec kernel path 0 errors. SACRED GDN-bearing gates STANDALONE under flock: 27B 235/235, 35B 315/315, Coder 138/138 — MANDATORY re-runs (I edit the GDN path), all PASS. Non-GDN gates (Qwen3-dense, GLM-4/4.7, Gemma 1/2/3, OPT, DeepSeek-V2, Llama, Mistral, OLMo-2, Granite-3) are byte-identical BY CONSTRUCTION: the git diff --stat touches only the GDN metadata/kernels/kv-cache of the qwen3_5 family + additive op ids, no other model's forward TU. benchmark_binding=false, no speed claim — the honest denominator is vLLM with the same spec config, owed by M-mtp-1. Resume point for M-mtp-1: the verify/propose runner must feed num_decode_draft_tokens_cpu (−1 sentinel for non-spec rows) into GDNAttentionMetadataBuilder::build's spec overload, and the qwen3_5 GDN layer-forward must route spec rows through vt::GdnSpecDecode + vt::CausalConv1dSpecUpdate (the layer wiring qwen_gdn_linear_attn.py:1344-1356,1455-1476 is NOT yet ported — the ops + metadata are).
CLAIM-SPEC-MTP-I5ASPEC-GDN-SEGMENTSClaude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm.cpp-i5a; dgx ~/work/vllm.cpp-i5a (git archive, CUDA build, all GPU work under ONE flock $HOME/gpu.lock, big-model gates STANDALONE one at a time)branch i5a-gdn-spec-routing, base origin/main 594980fMTP increment I5a (first of the 4 scoped M-mtp-1 sub-increments: I5a GDN layer wiring → I5b prepare_prefill → I5c MTP paged propose → I5d config+runner-loop+27B token gate, spec §5): the GDN layer-forward spec routing (GdnBlockPaged PURE-spec branch) + the runner's spec-metadata upload. Owns ONLY: src/vllm/model_executor/models/qwen3_5.cpp (GdnBlockPaged spec branch, StepDevInputs/BuildStepDevInputs, ValidateGdnAttentionMetadata, the two decode-graph Refresh copies, GdnBlockPagedForTest), src/vllm/model_executor/models/qwen3_5_internal.h, the NEW tests/vllm/models/test_qwen3_5_gdn_spec_routing.cpp, one tests/CMakeLists.txt line. EXPLICIT NON-COLLISION: does NOT touch src/vllm/v1/worker/gpu/runner.* or src/vllm/v1/attention/backends/gdn_attn.* (the build() spec feed + the MIXED-batch split/merge are I5d's runner loop — keeps the shared runner.cpp TU out of the diff so non-GDN byte-identity is by-construction); consumes I4's vt::GdnSpecDecode/CausalConv1dSpecUpdate + GDNAttentionMetadataBuilder spec output, never redefines them.ACTIVE2026-07-24 — I5a IMPLEMENTED AND GATED. RED-first by a reverted stub (spec recurrence zeroed ⇒ synthetic test 4/8 fail, maxΔ 1.3-1.6). BIT-EXACT vs the I4 ops applied as a token-sequential decode chain, at real 27B (Hv=48)/35B (Hv=32) GDN dims (Dk=Dv=128), CPU bit-exact + CUDA on-device (test_qwen3_5_gdn_spec_routing 2 cases/8 assertions, compute-sanitizer memcheck 0 errors — passes UNDER the sanitizer). MIXED spec batch refused loudly (I5d). DEFAULT-OFF INERT. EVIDENCE: CUDA cutlass-ON banner CONFIRMED (cutlass-nvfp4/fp8 + FA2 ENABLED, CUTLASS @ ~/cutlass-4.5.0); clean full CUDA -Werror/-Werror=all-warnings build 0 warnings (290 objects, libvllm.a). I4 tests green (test_ops_gdn 3630, test_gdn_metadata_builder 483). MANDATORY spec-off SACRED gates STANDALONE under flock: 27B 235/235, 35B 315/315, Coder 138/138 — ALL PASS. Non-GDN gates (Qwen3-dense, GLM, Gemma, OPT, DeepSeek-V2, Llama, Mistral, OLMo-2, Granite-3) byte-identical BY CONSTRUCTION — git diff --stat touches only qwen3_5.cpp (+ internal header + new test + 1 CMake line), no other model forward TU. benchmark_binding=false, no speed claim. SPEC-MTP STAYS GATING. Resume point (I5b/I5d): the runner loop feeds num_decode_draft_tokens_cpu (−1 sentinel) + num_accepted_tokens into GDNAttentionMetadataBuilder::build's spec overload and produces the MIXED batch the GdnBlockPaged split/merge (currently refused) must then handle.
CLAIM-SPEC-MTP-I5BSPEC-REJECTIONClaude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm.cpp.wt/i5b (CPU build build-cpu + CPU ctest; NO dgx — CPU-unit-only increment, no CUDA kernel added)branch spec-mtp-i5b, base origin/main 3ae5cfeMTP increment I5b (second of the 4 scoped M-mtp-1 sub-increments: I5a GDN layer wiring → I5b prepare_prefill → I5c MTP paged propose → I5d config+runner-loop+27B token gate, spec §5): the DRAFTER prefill input-prep (shift input_ids left one within each query span, splice the just-sampled next token, query_len -= num_rejected, emit last-token index / query_start_loc / seq_lens). Advances the ACTIVE SPEC-REJECTION row's explicitly-deferred I5 resume point (its I3 note hands "the speculator ... the draft-token splice into input_ids, still deferred in combine_sampled_and_draft_tokens" to I5); SPEC-MTP STAYS GATING (a prose note only, no e2e loop). Owns ONLY: NEW include/vllm/v1/worker/gpu/spec_decode/autoregressive/prepare_prefill_inputs.h + src/vllm/v1/worker/gpu/spec_decode/autoregressive/prepare_prefill_inputs.cpp, NEW tests/vllm/v1/spec_decode/test_prepare_prefill_inputs.cpp, one CMakeLists.txt line + one tests/CMakeLists.txt line. DESIGN: a HOST routine over std::vectors (no new vt::/CUDA kernel) — mirrors our DEVICE-NEUTRAL prepare_inputs/combine_sampled_and_draft_tokens family; I5d's runner leaf ports the loop to the Triton kernel over the draft input_buffers. EXPLICIT NON-COLLISION: does NOT touch GdnBlockPaged/qwen3_5.cpp/gdn_attn.* (I5a/I4), the I4 ops/metadata, I3's rejection_sampler.*/prepare_inputs.*/runner.* (I5b adds a SEPARATE new TU under the spec_decode tree — it does NOT modify SPEC-REJECTION's existing files), the I2 FROZEN ABI (speculative.h, sched/*, request.h, engine/core.*), or examples/server/main.cpp/model_loader.cpp (I5d CLI/config). Consumes the I2 ABI (num_accepted_tokens, num_rejected, spec_token_ids), never modifies it.ACTIVE2026-07-24 — I5b IMPLEMENTED AND GATED (CPU-unit). Host routine + SpecPrefillInputs output struct mirroring _prepare_prefill_inputs_kernel + prepare_prefill_inputs (speculator.py:469-588 @ e24d1b24), k=1 early-exit (:236-238) the tested shape. GATE: test_prepare_prefill_inputs 7 cases / 27 assertions GREEN — perfect-accept (k=1 shift by k+1), early-mismatch (k=1 j=0 + k=3 j=1 general shape), single-token (k=0), multi-request (different k_i), chunked-prefill (num_sampled==0 → next_prefill_tokens), CUDA-graph padding. No upstream UNIT test (e2e-covered), oracle derived from the kernel algorithm (as test_combine_tokens.cpp). RED-FIRST by experiment: reverted no-shift/no-splice stub fails 7/7 (12/27 assertions); real routine 7/7 (27). CPU clean full -Werror 0 warnings; prepare_prefill_inputs.cpp.o compiles into libvllm. No CUDA kernel ⇒ CUDA==CPU / compute-sanitizer clauses N/A, no dgx run. ADDITIVE / DEFAULT-OFF: git diff --stat code = two NEW files + one NEW test + 2 one-line CMake additions — NO existing forward/runner/kernel TU altered, so every SACRED gate (incl. GDN-bearing 27B/35B/Coder) is byte-identical BY CONSTRUCTION and NO dgx re-run is owed. SPEC-MTP STAYS GATING. benchmark_binding=false, no speed claim. Resume point (I5c/I5d): the runner loop calls prepare_prefill_inputs after the verify rejection sampler, drives the Qwen3_5MTP paged propose (I5c) over the shifted input_ids/positions, samples at last_token_indices.
CLAIM-SPEC-MTP-I5CSPEC-GDN-SEGMENTSClaude Code (opus-4-8)isolated worktree /home/mudler/_git/wt-i5c (CPU build-cpu + CPU tests); dgx ~/mtp_i5c (git archive, CUDA build-cuda, all GPU work under ONE flock $HOME/gpu.lock, big-model gates STANDALONE one at a time)branch spec-mtp-i5c, base origin/main 9721e84MTP increment I5c (third of the 4 scoped M-mtp-1 sub-increments: I5a GDN layer wiring → I5b prepare_prefill → I5c MTP paged propose + draft KV layer → I5d config+runner-loop+27B token gate, spec §5): Qwen3_5MTPModel::ForwardPaged (head + one full_attention layer over the head's OWN paged draft KV layer via FullAttnBlockPaged), the draft KV layer in MakeQwen3_5KVCacheSpec(num_spec>0), the target-forward [T,H] hidden tap (ForwardDeviceTap), and the callable k=1 MtpProposePrefill. Advances the ACTIVE SPEC-GDN-SEGMENTS row's qwen3_5.cpp / MakeQwen3_5KVCacheSpec surface (the I5a/I4 resume point named the paged propose + draft KV as the MTP-forward wiring owed on that path); SPEC-MTP STAYS GATING (a prose note only — the runner loop + e2e token gate are I5d). Owns ONLY: src/vllm/model_executor/models/qwen3_5.cpp (MTP ForwardPaged + head/finalize/full-attn-stepinput helpers + the INERT ForwardLayers/DenseForwardLayers hidden-tap param + ForwardDeviceTap), include/vllm/model_executor/models/qwen3_5.h + qwen3_5_dense.h + qwen3_5_mtp.h (the new decls + fwd-decl), MakeQwen3_5KVCacheSpec in qwen3_5_common.cpp (the fa_draft group), NEW include/vllm/v1/worker/gpu/spec_decode/mtp/speculator.{h,cpp}, tests tests/vllm/v1/spec_decode/test_mtp_speculator.cpp + tests/parity/test_op_parity.cpp (RunQwen35MtpHead paged arm) + tests/vllm/models/test_model_registry.cpp (draft-KV sizing), one CMakeLists.txt line. EXPLICIT NON-COLLISION: does NOT touch GdnBlockPaged spec routing / gdn_attn.* (I5a/I4 — the GDN target layers), the I4 ops/metadata, I3's rejection_sampler.*, the I2 ABI (speculative.h, sched/*, request.h, engine/core.*), prepare_prefill_inputs.* (I5b — CONSUMED, not modified), or the CLI/entrypoints config (I5d). Reuses I5a's StepDevInputs/FullAttnBlockPaged/RunDense/RunLayerPaged (added a full-attn-only StepDevInputs builder, no GDN metadata needed for the draft layer).ACTIVE2026-07-24 — I5c IMPLEMENTED AND GATED (CPU + dgx CUDA). CORE PROOF: the PAGED MTP forward reproduces I1's oracle-argmax result over a 1-block draft KV on BOTH gate checkpoints — test_op_parity RunQwen35MtpHead paged arm 28/28: paged argmax vs oracle 26/26 unambiguous (27B+35B), paged logits 0/216 out-of-tol at atol+rtol (I1's bound), paged==standalone on 26/26 unambiguous rows. RCA (honest): on CUDA the paged path takes the PRODUCTION FA2 prefill over a bf16 draft KV while the standalone head uses dense f32, so paged-vs-standalone differs by max abs 0.166/0.125 (27B/35B, within rtol*val); the CPU build (both non-FA2) is bit-exact (max abs 0), isolating the head math as identical. Draft-KV write/read proven by a synthetic two-step drive (step 1 writes, step 2 decode reads) BIT-EXACT vs the combined forward, with the in-test RED control (fresh-KV) diverging; RED-first ALSO proven by a reverted experiment (routing ForwardPaged to the non-paged RunDenseLayer makes with-step1 == fresh-KV, test fails). Draft-KV sizing in test_model_registry (num_spec>0 adds the fa_draft FullAttentionSpec group; num_spec==0 = 2 groups byte-identical). MtpProposePrefill k=1 tested. DEFAULT-OFF INERT: no SpeculativeConfig ⇒ draft KV layer not allocated, tap nullptr, target forward byte-identical. EVIDENCE (CPU): clean full -Werror 0 warnings; test_mtp_speculator 12/12 (161 assertions, +5 I5c cases), test_model_registry KV-spec case 1/1 (41), affected paged-forward tests green (tap inert). dgx CUDA gates + cutlass-ON banner: SEE state.md entry. SPEC-MTP STAYS GATING. benchmark_binding=false, no speed claim. Resume point (I5d): wire MtpProposePrefill (or the speculator class) into the runner step loop after the verify rejection sampler, add --speculative-config parse + arch resolve + the take_draft_token_ids out-of-band path + the GDN builder spec feed + the MIXED spec batch split/merge, then the 3-way 27B token gate.
CLAIM-SPEC-MTP-I5D-PRESPEC-GDN-SEGMENTSClaude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm-i5dpre (CPU build-cpu + CPU tests); dgx ~/work/vllm-i5dpre (git archive, CUDA build-cuda, all GPU work under ONE flock $HOME/gpu.lock, big-model gates STANDALONE one at a time, foreground)branch spec-mtp-i5d-pre, base origin/main 01cfd9bMTP increment I5d-pre (the registry/forward-seam ENABLING refactor that unblocks I5d's verify/propose loop; recorded in spec §5 before I5d). A scoping pass found the model seam is fully TYPE-ERASED, so the runner cannot reach the concrete target weights, the hidden-state tap, or the loaded MTP weights the loop needs. FOUR ADDITIVE, INERT-WHEN-SPEC-OFF access paths + one latent-bug fix: (1) the Qwen3_5MTPHiddenStates* hidden_tap out-field on the type-erased ModelForwardInput, with the Qwen3.5 dense+MoE ModelForwardFn routing to the EXISTING Qwen3_5{,Dense}Model::ForwardDeviceTap when non-null (byte-identical when null); (2) a LoadedModel::BuildMtpDraft(config) virtual (+ AttachMtpDraftWeights/supports_mtp_draft) that builds the Qwen3_5MTPModel draft from the retained MTP weights + the concrete target weights (default null for non-MTP); (3) MTP weight loading + shard retention in FromModelDir behind EngineParams::speculative_config (loads mtp.* while shards alive; GGUF+MTP rejected); (4) the GPUModelRunner ctor widened with optional draft model + draft KV + SpeculativeConfig (defaulted → today's behavior at every existing site) and the LATENT full-attn-group bug FIX (initialize_kv_cache now selects the FIRST non-eagle full-attn/MLA group as the target, so a third fa_draft group can't displace it; byte-identical at num_spec==0). References the ACTIVE SPEC-GDN-SEGMENTS row (this seam is what makes I5d's GDN-builder spec feed + the MTP paged draft reachable from the runner); SPEC-MTP STAYS GATING — no spec loop, no e2e result. Owns ONLY: include/vllm/model_executor/models/model_registry.h + src/.../model_registry.cpp (fwd-decls, ModelForwardInput::hidden_tap, the LoadedModel virtuals + base defaults), src/.../qwen3_5_dense.cpp + qwen3_5_moe.cpp (the concrete overrides + tap routing), include/vllm/entrypoints/model_loader.h + src/.../model_loader.cpp (EngineParams::speculative_config + the FromModelDir MTP load), include/vllm/v1/worker/gpu/runner.h + src/.../runner.cpp (ctor widening + the full-attn-group fix), tests tests/vllm/models/test_qwen27_paged_forward.cpp + tests/vllm/v1/spec_decode/test_mtp_speculator.cpp + tests/vllm/v1/worker/test_runner.cpp. EXPLICIT NON-COLLISION: does NOT modify the I2 ABI (speculative.h, sched/*, request.h, engine/core.* — consumed only), the I3 rejection sampler (rejection_sampler.*), the I4 GDN ops/metadata (gdn_attn.*, the vt spec ops), the I5a GDN routing (GdnBlockPaged), the I5b prepare_prefill_inputs, or the I5c MtpProposePrefill/ForwardPaged/qwen3_5.cpp (it ENABLES their reachability; it does not touch their TUs). The verify/propose loop + mixed batch + --speculative-config runtime are I5d.ACTIVE2026-07-25 — I5d-pre IMPLEMENTED AND GATED (CPU + dgx CUDA). Four seam changes above, all DEFAULT-OFF INERT. LATENT-BUG proof: RED-first — the buggy last-wins loop reports full_attn_group_id()==2 with a synthetic third fa_draft group (test CHECK(2==0) FAILS); the fix reports 0; at num_spec==0 there is one full-attn group so it is byte-identical. Unit coverage (RED-first): hidden-tap out-field captures post-final-norm [T,H] + byte-identical logits vs the untapped path (test_qwen27_paged_forward +1 case/15 assertions, memcmp bit-identity of both logits and the bf16 hidden vs a direct ForwardDeviceTap); BuildMtpDraft builds a valid Qwen3.5 draft sharing embed/lm_head + null for a non-MTP model + attach-throws (test_mtp_speculator +1 case/8 assertions); full-attn-group target selection with a third fa_draft group unmarked and eagle-marked (test_runner +1 case/5 assertions). EVIDENCE (CPU): clean full CPU -Werror 0 warnings; test_runner 16/16 (257), test_mtp_speculator 13/13 (169), test_qwen27_paged_forward 18/18 (99). dgx CUDA gates + cutlass-ON banner + the MANDATORY spec-off SACRED regressions (GDN trio 27B/35B/Coder + dense set): SEE state.md entry. SPEC-MTP STAYS GATING. benchmark_binding=false, no speed claim. Resume point (I5d): wire the speculator/MtpProposePrefill into the runner step loop (this ctor now accepts the draft), add --speculative-config parse + arch resolve + take_draft_token_ids + the GDN builder spec feed + the MIXED spec batch split/merge, then the 3-way 27B token gate.
CLAIM-SPEC-MTP-I5DSPEC-GDN-SEGMENTSClaude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm.cpp.wt/i5d (CPU build-cpu); dgx ~/work/vllm-i5d (git archive, CUDA build-cuda cutlass-ON, all GPU work under ONE flock $HOME/gpu.lock, big-model gates STANDALONE one at a time, foreground)branch spec-mtp-i5d, base origin/main 8e50a18MTP increment I5d (final scoped M-mtp-1 sub-increment): the --speculative-config config runtime + the k=1 verify/propose runner loop + the 27B three-way token gate. Owns: examples/server/main.cpp (--speculative-config flag), include/vllm/config/speculative.h + NEW src/vllm/config/speculative.cpp (ParseSpeculativeConfigJson), include/vllm/entrypoints/model_loader.h + src/vllm/entrypoints/model_loader.cpp (ResolveSpecConfig/MakeKVCacheMaybeSpec/MakeScheduler(spec)/ctor wiring), include/vllm/v1/worker/gpu/runner.h + src/vllm/v1/worker/gpu/runner.cpp (the runner loop: splice/tap/GDN spec feed/propose_drafts/take_draft_token_ids/spec-slot remap + widened conv cache + draft-KV alloc/acceptance telemetry), NEW tests/parity/test_qwen27_spec_decode.cpp, CMakeLists.txt + tests/CMakeLists.txt. Consumes I2-I5c + I5d-pre ABIs; does NOT modify them.PARTIAL2026-07-25 — CONFIG + RUNNER LOOP LANDED, spec-OFF byte-identical; the three-way 27B token GATE is NOT yet passing (SPEC-MTP STAYS GATING). Config runtime + full verify/propose loop implemented; CUDA -Werror 0 warnings, cutlass-ON banner (CUTLASS 4.5.0 + FA2 + Triton AOT, 121a). Spec-OFF SACRED regressions STANDALONE under flock (byte-identical — all changes gated on spec_on()): 27B 235/235, 35B 315/315, Coder 138/138; unit test_runner 257, test_mtp_speculator 169, test_gdn_metadata_builder 483, test_ops_gdn 3630 — ALL PASS. MEASURED RCA (test_qwen27_spec_decode): the spec-ON engine resolves config, allocates the widened + draft KV, runs the target forward with the hidden tap, reaches the GDN layer, then THROWS on the FIRST prefill step at vt: gdn_state_gather: working/cache row shapes must match (src/vt/ops.cpp:1773). The gap: I4's spec conv rollback REQUIRES the conv row widened to (conv_kernel-1)+num_spec, but the non-spec GDN conv ops (GdnStateGather/CausalConv1dFwd/CausalConv1dUpdate) assume (conv_kernel-1), so the prefill conv gather shape-mismatches the widened cache. Remaining before SPEC-MTP leaves GATING: (1) widened-cache-aware non-spec GDN conv ops (the measured blocker), (2) the MIXED GdnBlockPaged split/merge (still refused loudly; needs a row IndexSelect/IndexCopy vt op; only trips under concurrency), (3) the passing three-way token gate + nonzero acceptance, (4) same-spec-config A/B. NOT overclaimed. benchmark_binding=false. Full SHA reported in the session (not pushed).
CLAIM-SPEC-REJECTION-I3SPEC-REJECTIONClaude Code (opus-4-8)isolated worktree scratchpad/wt-i3 (CPU build + CPU ctest; dgx ~/work/spec-i3 for the CUDA -Werror build, test_cuda_ops and compute-sanitizer)branch spec-i3-rejection, base origin/main 86fff01SPEC-MTP increment I3, the VERIFY half: input-batch logits expansion + the greedy rejection sampler. Claims ONLY row SPEC-REJECTION; the SPEC-MTP row is NOT claimed — its text gets a one-line note that I3 landed and it STAYS GATING under the MTP campaign. Owns ONLY these files — NEW include/vllm/v1/spec_decode/rejection_sampler.h, src/vllm/v1/spec_decode/rejection_sampler.cpp, tests/vllm/v1/spec_decode/test_rejection_sampler.cpp; the additive kGreedyRejectionSample op in include/vt/ops.h, src/vt/ops.cpp, src/vt/cpu/cpu_sample.cpp, src/vt/cuda/cuda_sample.cu; the expansion in include/vllm/v1/worker/gpu/prepare_inputs.h + src/vllm/v1/worker/gpu/prepare_inputs.cpp; the routing in include/vllm/v1/worker/gpu/runner.h + src/vllm/v1/worker/gpu/runner.cpp; the two CMake lines; and the tests in tests/vllm/v1/worker/test_prepare_inputs.cpp + tests/vt/test_cuda_ops.cpp. EXPLICIT NON-COLLISION (three live siblings): does NOT touch src/vllm/v1/core/sched/*, include/vllm/v1/request.h, include/vllm/config/speculative.h or include/vllm/v1/engine/core.* (I2's FROZEN ABI — consumed, never modified); does NOT touch the MTP model/parity layer (qwen3_5_mtp.*, tools/parity/dump_qwen3_5_mtp.py, tests/parity/goldens/qwen3_5_mtp_head_*, owned by the head-parity agent); does NOT touch examples/server/main.cpp or src/vllm/entrypoints/model_loader.cpp (owned by the CLI/docs agent).ACTIVE2026-07-24 — I3 IMPLEMENTED AND GATED (CPU). RED-first by experiment (a deliberately wrong stub kernel kept the ABI compiling: 10/10 ported cases and 44/76 assertions FAILED before the real accept rule landed; 10/10 and 139/139 after). Greedy rule as implemented, mirroring rejection_sampler_utils.py:564-585,628 + :828-841,846-849: accept draft i iff it equals argmax(logits[cu[r]+i]), store the draft when accepted and the TARGET ARGMAX on the first mismatch (then stop), store the bonus argmax when all k_r accept, num_sampled = accepted + 1, num_rejected = k_r - accepted. DEFAULT-OFF INERT: no SpeculativeConfig ⇒ no drafts ⇒ cu_num_logits == arange(num_reqs+1), logits_indices unchanged, rejection branch never entered; no model/kernel forward TU touched, so the SACRED gates are byte-identical by construction. SPEC-REJECTIONACTIVE (not DONE: the M-mtp-1 e2e greedy token gate is owed); SPEC-MTP stays GATING. Resume point for I5: StepInputs::{cu_num_logits,num_draft_tokens_per_req,num_draft_tokens} and GPUModelRunner::sample_tokens_with_rejection are the seam — I5 owns the speculator, take_draft_token_ids, and the draft-token splice into input_ids (still deferred in combine_sampled_and_draft_tokens). EVIDENCE: CPU clean -Werror 0 warnings + full ctest 232/238 with zero new failures (test_model_loader_gguf/test_model_registry pre-existing per I2; test_bpe pre-existing and traced to 4e9f1d2, proven from the compiler dependency files — 0 of the 10 changed files reach its TUs; test_engine_core_proc/test_openai_api_server/test_openai_conformance are -j20 flakes, 10/10 + 22/22 + 23/23 standalone). dgx CUDA clean -Werror 0 warnings; test_rejection_sampler 10/10 (139 assertions); CUDA==CPU bit-exact at vocab 248320; compute-sanitizer memcheck 0 errors. SACRED under flock: OPT 63/63, Llama 92/92 PASS; Qwen3-dense + Mistral anchor drift is PRE-EXISTING — a same-tree A/B with base runner/prepare_inputs swapped in reproduces a BYTE-IDENTICAL failure signature, so no sampled token changes. benchmark_binding=false, no speed claim. NOTE for the orchestrator: the Qwen3-dense/Mistral anchor goldens on dgx are STALE at base 86fff01 and need a refresh by whoever owns them — an unclaimed fix, like the test_bpe expectation.
CLAIM-MLA-PREFIX-CACHE-ASSERTMODEL-TEXT-deepseek-v2-deepseek-v2-for-causal-lm (bugfix — restores its SACRED gate under asserts-enabled builds; the shared prefix-cache manager assertion it relaxes stays owned by CLAIM-PREFIX-PROMPT-CACHING, no row-state change to that row)Claude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm.cpp-mla-fix (branch fix/mla-prefix-cache-assert, base 6abe09c); dgx repro /home/mudler/repro_deepseek (unfixed) + /home/mudler/repro_fixed (fixed)fix/mla-prefix-cache-assertsrc/vllm/v1/core/single_type_kv_cache_manager.cpp (assert only) + tests/vllm/v1/test_single_type_kv_cache_manager.cpp (new MLA cases)DONE (2026-07-23)2026-07-23 root-caused + fixed the DeepSeek-V2 assert abort
CLAIM-PREFIX-PROMPT-CACHINGENG-CASCADE-ATTN, KV-MAMBA-ALIGN, KV-EVENTSClaude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-af1befeda4d311f2c (spike only — no build, no GPU work, no download)worktree branch, base 1cb5f64SPIKE ONLY, no implementation. Owns .agents/specs/prefix-prompt-caching-parity.md — the UMBRELLA parity surface for prompt/prefix caching — plus the three SPIKE rows above. It also CORRECTS three already-evidenced rows in place without claiming them: KV-BLOCK-POOL (ANCHOR-BACKFILL -> PARTIAL, spike gap closed and the row's scope was undersold), KV-HYBRID-COORD (stays PARTIAL; the full cross-group intersection is ported verbatim, residue is assert-guarded), KV-PREFIX-CACHE (stays PARTIAL; gaps re-stated to what the source actually shows). EXPLICIT NON-COLLISION: .agents/specs/prefix-caching.md remains the accepted cache-policy/coordinator-selection leaf and is NOT edited or superseded — the new spec cross-references it and flags exactly one stale statement in it (its W3 "blocked on a supported non-hybrid model family", now false since five dense models landed and dense defaults APC ON). Does NOT own KV-OFFLOAD / KV-EXTERNAL-CACHE / KV-CONNECTORS (ROAD-V1-D4), SERVE-METRICS or SERVE-UTILITY-ENDPOINTS; the spec only states what each owes the caching feature. Key dispositions: ENG-CASCADE-ATTN is VERIFIED NOT OWED on the MRV2 path we mirror (default-off + absent from the V2 runner + unreachable on Blackwell) and is deliberately NOT scheduled; upstream cache_partial_block is DEAD CODE, so it is to be ported as an unwired primitive only W1 IMPLEMENTATION 2026-07-22. Owns include/vllm/v1/metrics/stats.h (new) plus the statistics wiring in src/vllm/v1/core/kv_cache_manager.cpp, include/vllm/v1/core/kv_cache_manager.h, src/vllm/v1/core/sched/scheduler.cpp, include/vllm/v1/core/sched/scheduler.h, include/vllm/v1/engine/core.h, include/vllm/v1/engine/llm_engine.h, include/vllm/v1/request.h (num_preemptions un-deferred), and tests/vllm/v1/test_prefix_cache_stats.cpp. Landed in the same commit as CLAIM-KV-PERSISTENCE-LMCACHE W1-W3 by design: that claim's gate 6 inherits these counters. W2-W9 are NOT startedSPIKE2026-07-22 — W1 IMPLEMENTED AND GATED. Prefix-cache statistics exist for the first time; log_stats defaults ON per the parity-enabler rule. First measured hit rate 0.75 (1920/2560 tokens over 16 requests sharing a 128-token prefix), caching-OFF control 0.0. The BACKEND-GATE-CUDA-SGLANG-PREFIX hit-proof blocker is CLOSED. Resume point: W2 extra keys, then W3 the first cache-ON dense model gate on dgx
CLAIM-ROADMAP-D4-KV-EVENTSKV-EVENTSClaude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-add5bb82fe2773676 (CPU build build-cpu + CPU doctest only; no GPU, nothing downloaded; reference bytes captured from a local msgspec 0.21.1 pip in the scratchpad)worktree branch, base ffff4ebOwns ONLY these NEW files: include/vllm/distributed/kv_events.h + src/vllm/distributed/kv_events.cpp (the BlockStored/BlockRemoved/AllBlocksCleared + KVEventBatch types, the msgpack payload encoder, and the EventPublisher/NullEventPublisher/CollectingEventPublisher/EventPublisherFactory seam), tests/vllm/v1/test_kv_events.cpp, .agents/specs/kv-events.md. Additive edits to shared files, all KV-EVENTS-scoped (no collision with the sibling CLAIM-KV-PERSISTENCE-LMCACHE, CLAIM-PREFIX-PROMPT-CACHING, CLAIM-ROADMAP-D4APC, or the concurrent MM claim): include/vllm/v1/core/kv_cache_utils.h + src/vllm/v1/core/kv_cache_utils.cpp (ExternalBlockHash + maybe_convert_block_hash ONLY — appended after none_hash_provenance), include/vllm/v1/core/block_pool.h + src/vllm/v1/core/block_pool.cpp (the KVCacheEvent alias replacing the SPIKE placeholder + the three emission sites the spike left as marked-out no-ops + emit_cached_block_events/_build_block_stored_event/_emit_block_removed_events), and one source line in CMakeLists.txt + one test line in tests/CMakeLists.txt. MUST NOT touch any MM record/file or any other sibling's filesACTIVE2026-07-27 — event GENERATION + PAYLOAD IMPLEMENTED AND GATED (CPU). The KV-cache event system is ported 1:1 from vllm/distributed/kv_events.py @ 555967922: the event data types, the emission at the BlockPool store/remove/clear sites (guarded by enable_kv_cache_events, default OFF ⇒ default path byte-identical), and the msgpack payload encoder that is BYTE-EXACT vs msgspec.msgpack.Encoder() on the upstream struct definitions (two golden vectors: default int-truncated hashes AND raw-bytes hashes). Gate test_kv_events 6 cases / 62 assertions: byte-exact serialization + the store→reuse→evict→reset event SEQUENCE with correct hashes/token_ids/parent/group_idx, RED-first proven (mis-wired hash + dropped AllBlocksCleared ⇒ 4 failing asserts). Default-off + APC unchanged: test_block_pool 132/132, test_prefix_cache_stats 36/36, test_kv_cache_manager 74/74, coordinator 106/106, utils 253/253. Clean full-library CPU -Werror 0 warnings. DEFERRED (honest D4 residual): the LIVE ZMQ transport (PUB/ROUTER sockets, replay buffer, publisher thread, DP port offset) is stubbed behind the faithful seam (EventPublisherFactory throws loudly on "zmq"), and the engine/scheduler wiring of the batch envelope + report_mode=="full" reuse path is not wired (our Request has no kv_cache_report_mode). W6/W7 + the larger-model LMCache grid remain the broader D4 residuals
CLAIM-GLM-DSA-LATEST-DEEPSEEKMODEL-TEXT-chatglm-chat-glmfor-causal-lm, MODEL-TEXT-glm-glm-for-causal-lm, MODEL-TEXT-glm4-moe-glm4-moe-for-causal-lm, MODEL-TEXT-glm4-moe-lite-glm4-moe-lite-for-causal-lm. The GLM-4-9B dense row was DROPPED from this claim 2026-08-06 by the live-state audit (ACTIVEREADY, no Git evidence for the claim); see the Closing and archival note.Claude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-aea3b1eba5776ab41 (spike only — no build, no GPU work, no download)worktree branch, base aa65ce7SPIKE ONLY, no implementation. Owns .agents/specs/glm-dsa-latest-deepseek.md plus the seven model-matrix rows above. Covers: the complete GLM family inventory and per-variant GB10 hardware fit; the two NEW shared primitives GLM needs (partial rotary factor, sandwich norms — we have neither); the full DSA (DeepSeek Sparse Attention) delta over dense MLA and the sm_121 sparse-backend verdict; and the V3.2-vs-V3 / V4-vs-V3 architectural deltas including the V4 tokenizer risk. EXPLICIT NON-COLLISION: CLAIM-MLA-DEEPSEEK owns .agents/specs/mla-deepseek-campaign.md and the five rows including MODEL-TEXT-deepseek-v2-deepseek-v3-for-causal-lm (which carries DeepSeek-V3.2). This claim does NOT edit that file or those rows; its DSA findings are supplied as CROSS-REFERENCED input, and the three places where it CORRECTS or EXTENDS that spike are enumerated in its §0.1 for the user to reconcile. SHARED WORK to coordinate before implementing: the vt::MoeRouterTopK extension (sigmoid + e_score_correction_bias + group masking + routed_scaling_factor) is the same gap both campaigns identified; whoever lands it first unblocks the other, and it must not be implemented twice. 2026-07-28: RELEASED MODEL-TEXT-deepseek-v4-deepseek-v4-for-causal-lm to CLAIM-DEEPSEEK-V4-IMPL (user-directed DeepSeek-V4-Flash implementation pickup — this claim held that row SPIKE-only with no worktree on it).ACTIVE2026-07-24 — G2 LANDED: Glm4ForCausalLM (GLM-4-9B-0414), the first GLM-family model, SACRED gate 16/16 vs vLLM 0.25.0 (STRICT token-exact 13/16 + near-tie 3/16, max gap 0 nats; vLLM K=5 self-deterministic ⇒ STRICT bar). Row MODEL-TEXT-glm4-glm4-for-causal-lm SPIKE→ACTIVE (correctness DONE, speed PENDING). New files (glm4.{h,cpp}, glm4_weights.cpp, glm4_registry.cpp) + one REGISTER; the two "new primitives" reduced to existing infra (partial+interleaved RopeFromCache is_neox_style=false; standalone vt::RmsNorm sandwich norms). Clean -Werror 0 warnings; rope unit 6692/6692; loader 523 tensors. Worktree glm4-g2-bringup, base 99a43c6. 2026-07-21 — spike committed. Recommended order: G2 (partial rotary + sandwich norms, fully independent of MLA) FIRST, then G1 (Glm4MoeLite on GLM-4.7-Flash) once CLAIM-MLA-DEEPSEEK reaches its W6. Nothing claims READY/ACTIVE/DONE 2026-07-22 — CROSS-CLAIM DISPOSITION recorded by CLAIM-MLA-DEEPSEEK W10 (the blocked-row honesty pass), with this claim's consent-by-record and no other edit to its rows or spec: the GLM-5 row (GlmMoeDsa) is RELEASED from this claim's active row list and set to BLOCKED — HW-BLOCKED at 1404.2 GiB against 119 GiB of unified memory, and additionally DEP-BLOCKED because GLM-5.x is DeepSeek-V3.2 verbatim and therefore a SPARSE/DSA model, for which the sm_121 backend filter leaves FLASHINFER_MLA_SPARSE_SM120 as the sole candidate and that path dispatches to flashinfer's dense-only XQA kernel (this spike's own §0.2 finding). Nothing else in this claim moves; its six remaining rows stay SPIKE, and MODEL-TEXT-glm4-moe-lite-glm4-moe-lite-for-causal-lm (GLM-4.7-Flash, 31.2B / 58.2 GiB, FITS GB10) is now the MLA campaign's NAMED NEXT VEHICLE because it is the only reachable checkpoint that closes both of that campaign's permanent coverage gaps (q_lora_rank=768 and noaux_tc with correction bias). 2026-07-24 — G1 LANDED: Glm4MoeLiteForCausalLM (GLM-4.7-Flash, 31.2B), SACRED gate 8/8 vs vLLM 0.25.0 (STRICT token-exact 1/8 + near-tie 7/8, 69/128 tokens strictly exact, max teacher-forced gap 0.0 nats, 0 forward-divergent; vLLM K=5 self-deterministic ⇒ STRICT bar). Row MODEL-TEXT-glm4-moe-lite-glm4-moe-lite-for-causal-lm SPIKE→ACTIVE (correctness COMPLETE, speed PENDING). The scope was much smaller than the spike estimated: the noaux_tc router ALREADY landed in the MLA campaign's W3, and GLM reuses the ENTIRE DeepSeek-V2 MLA stack over the SAME DeepseekV2Weights. Genuinely-new = an additive head_dim-256 MLA-prefill dispatch (256 kernel already compiled for 27B/35B; 192 byte-identical), MTP-tolerant parse/loader (allow_mtp_tail, defaulted false), the GLM registry TU, and a scoring-func fix (GLM omits scoring_func, noaux_tc defaults to sigmoid; DeepSeek greedy→softmax UNCHANGED). CLOSES the MLA campaign's C2 gaps (q_lora branch + noaux_tc router now e2e-gated). Loader 3/3·57117 (9491 mapped, 212 MTP-tail skipped, 0 unmapped/0 missing); router unit at GLM dims CUDA==CPU, memcheck 0; eager==graph; clean -Werror 0 warn. Regressions ALL byte-identical STANDALONE under flock: 27B 235/235, 35B 315/315, Coder 138/138, dense 184/184, OPT 63/63, DeepSeek-V2 223/223 (Release AND asserts-on exit 0, the shared-TU canary), Llama 92/92, Mistral 92/92. Worktree glm4-moe-lite-g1, base b568d20. Not pushed. G3/G4/G5 remain blocked-honesty passes.
CLAIM-QUANT-NVFP4-CT-W4A16QUANT-NVFP4-CT-W4A16, MODEL-TEXT-qwen3-qwen3-for-causal-lm (extend)Claude Code (opus-4-8)isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-a141e107f210eb6c6; dev-box host build build-host; DGX build/gate ~/scratch/nvfp4a16-src (production flags, flock /tmp/gpu per gate series)main (worktree)compressed-tensors NVFP4A16 (W4A16) bring-up on the ALREADY-DONE dense Qwen3ForCausalLM forward — the breadth-sweep QUANT-SCHEME additivity row (rank 3, .agents/specs/breadth-sweep-plan.md §B.3). OWNS the new files: include/vllm/model_executor/models/dense_nvfp4_gemm.h, include/vllm/model_executor/models/dense_device_glue.h, tests/vllm/models/test_qwen3_32b_nvfp4a16_{load,paged_engine}.cpp, scripts/qwen3-32b-nvfp4a16-oracle-capture.py, tests/parity/goldens/qwen3_32b_nvfp4a16_greedy/, .agents/specs/sweep-qwen3-32b-nvfp4a16.md. APPEND-ONLY additions to shared files: include/vllm/model_executor/models/dense_weight_loaders.h (+IsCtNvfp4Projection/LoadCtNvfp4W4A16/LoadMergedCtNvfp4W4A16/ReadCtF32Scalar; NO existing helper touched), tests/CMakeLists.txt (two test rows), tests/vllm/models/test_qwen3_forward.cpp (one NEW case). Qwen3-dense-only edits: include/vllm/model_executor/models/qwen3.h (fp4 weight fields + IsNvfp4()), src/vllm/model_executor/models/qwen3_weights.cpp (per-Linear .weight_packed probe), src/vllm/model_executor/models/qwen3.cpp (MlpBlock branch). ONE shared-header structural change: include/vllm/model_executor/models/dense_attn_block.h — a PURE VERBATIM RELOCATION of Dev/DBuf/MakeTensor/Reshape/DevicePoolPolicy into the new dense_device_glue.h (same namespace ⇒ every consumer resolves unchanged) plus two NVFP4 dispatch branches in AttnBlock. MUST NOT touch qwen3_5*.{h,cpp} (the 27B/35B hot path stays byte-untouched by construction), any CUDA kernel, the runner, scheduler, platforms, the attention registry, or hf_config.{h,cpp}ACTIVE2026-07-21 W4b DIAGNOSIS LANDED (worktree agent-aa857f4152f4e9b03, base 80d1da0) — the strict-gate 4/6 is RESOLVED and CORRECTNESS IS CLOSED. The named teacher-forcing isolation was RUN (new scripts/qwen3-32b-nvfp4a16-neartie-gap.py + a VT_DUMP_IDS=1 bootstrap in the gate): all 29 divergent positions gap <= 0.0625 nats, 28/29 EXACTLY 0.0 (our token IS vLLM's own argmax given OUR prefix). prompt[5] tok1 is an EXACT bf16 tie where vLLM's teacher-forced argmax is OURS and vLLM contradicts its own incremental greedy; prompt[2] tok1 gaps 0.0625 nats against 0.125 nats of vLLM's OWN batch-composition jitter at that position. VERDICT: NOT a W4A16 defect — the pre-existing dense-forward bf16 near-tie drift, recorded against MODEL-TEXT-qwen3-qwen3-for-causal-lm, NOT this quant row. Gate converted to the ratified near-tie-robust bar WITH the evidence committed as goldens (our_ids.npy / neartie_gap_mnats.npy) and a hard anchor REQUIRE: 6/6 PASS (strict 4/6 + band 2/6, max gap 0.062 nats, 0 forward-divergent). NO engine/library source changed (diff = 1 test + 1 script + 2 goldens) ⇒ memcheck 0 and every regression preserved by construction and RE-CONFIRMED: 27B 235/235, 35B 315/315, Coder 138/138, Qwen3-dense 664/664, OPT 36/36, loader 5144/5144, -Werror 0-warn. SPEED (W5) still NOT started ⇒ row stays ACTIVE. Prior context: 2026-07-21 W0-W3 LANDED + dgx W4 gate run. Checkpoint premise VERIFIED FIRST (unlike OPT the plan's §B.1 claim was CORRECT: 5 shards / 20.6 GB / 1603 tensors, oracle loads it). vLLM 0.25.0 greedy MEASURED DETERMINISTIC on this checkpoint (K=5, 0 multi-valued cells) ⇒ SACRED gate is STRICT token-exact. vLLM's dispatch OBSERVED (not inferred): Using MarlinNvFp4LinearKernel for NVFP4 GEMMuse_a16 FORCES Marlin on sm_121. ADDITIVITY VERDICT: the KERNEL layer was fully additive (the vendored 35B Marlin W4A16 GEMM carries this scheme with ZERO new kernel code); the leaks were the device-glue header layering (fixed by a verbatim relocation) and — the standing one — the still-absent QuantizationConfig/LinearMethod abstraction (scheme selection remains a per-model tensor-name probe). SPEED bar explicitly PENDING — row stays ACTIVE, not DONE
CLAIM-MODEL-QWEN3-DENSEMODEL-TEXT-qwen3-qwen3-for-causal-lm, ENG-RUNNER-MODELSHAPEClaude Code (opus-4-8)include/vllm/model_executor/models/qwen3.h, include/vllm/model_executor/models/dense_weight_loaders.h (W2 shared helpers), src/vllm/model_executor/models/qwen3_dense.cpp, src/vllm/model_executor/models/qwen3_weights.cpp (W2 loader), src/vllm/model_executor/models/qwen3_5_dense_weights.cpp (W2 helper extraction, byte-identical), src/vllm/v1/worker/gpu/runner.cpp (W1 generalization only), CMakeLists.txt (TU add), tests/CMakeLists.txt (W2 test), tests/vllm/models/test_model_registry.cpp, tests/vllm/models/test_qwen3_load.cpp (W2 load gate), tests/vllm/v1/worker/test_runner.cpp, tests/vllm/test_model_loader_gguf.cpp (arch-list msg), scripts/qwen3-neartie-gap.py, tests/parity/test_qwen3_paged_engine.cpp, tests/parity/goldens/qwen3_greedy_0_6b/*, tests/parity/goldens/qwen3_greedy_4b/* (W4), src/vt/cuda/cuda_flash_attn_fa2.cu + src/vt/cuda/cuda_paged_attn.cu + tests/vt/test_ops_paged_attn.cpp (SPEED: d128 FA2 prefill + decode default flip), include/vllm/model_executor/models/device_pool.h (NEW: shared DevicePool extraction), src/vllm/model_executor/models/qwen3_5.cpp (uses the extracted header, byte-identical), src/vllm/model_executor/models/qwen3.cpp (pooled DBuf + VT_QWEN3_ROPE_CACHE opt-in rope) [TTFT-levers 2026-07-20, worktree agent-aea71a6a5024b17d4], include/vt/ops.h + src/vt/ops.cpp + src/vt/cuda/cuda_glue.cu + src/vt/cpu/cpu_ops.cpp (NEW QkvSplit/kQkvSplit GQA merged-qkv split op) + src/vllm/model_executor/models/qwen3.cpp (VT_QWEN3_QKV_MERGE merged-QKV path, default-off) + docs/bench-evidence/qwen3-4b-binding-20260721.log [SPEED re-binding + qkv-merge NEUTRAL 2026-07-21, worktree agent-a5dfd17cc56194abc]worktree agent-af01f4e66c3cc6c98 (W4; W0-W3 in agent-a4eabfb705beb4ce9)First additive-model bring-up: Qwen3 dense (Qwen3ForCausalLM) on Qwen3-0.6B BF16 — spike first-additive-model-qwen3-dense.md. W0+W1 LANDED 2026-07-20: W0 = new registry TU + header (REGISTER_VLLM_MODEL(qwen3,"Qwen3ForCausalLM") + full-attention-only MakeQwen3ForCausalLMKVCache + stub factory; forward throws until W3) resolving via the CLEAN model-factory seam (zero shared-array edit); W1 = the runner generalization (ENG-RUNNER-MODELSHAPE, seam gaps #1 runner.cpp:458 layer_types indexing on pure-dense, #2 :651-680 unconditional GDN metadata/step) — model-agnostic has_mamba_group/gdn_group_id_>=0 guards. GATES PASSED: dgx CUDA -Werror 0-warn; 27B 235/235 + 35B 315/315 token-exact UNCHANGED (behaviour-preservation); new CPU runner tests RED(SIGSEGV)→GREEN; registry resolves Qwen3ForCausalLM; ASan/UBSan clean on affected paths; full CPU ctest green (test_capi flaky-passes on rerun). W2 LANDED 2026-07-20: weight loader qwen3_weights.cpp (LoadQwen3ForCausalLMWeights) fills Qwen3DenseWeights from Qwen3-0.6B safetensors — merged qkv/gate_up raw-NK (vLLM packed_modules_mapping), per-head q/k RMSNorm, tied lm_head aliasing embed_tokens (checkpoint lm_head.weight skipped, mirroring vLLM skip_prefixes=["lm_head."]); tie_word_embeddings/attention_bias parsed from config.raw (deferred from W0). Shared BF16 helpers (LoadBf16Direct/LoadBf16Transposed/LoadMergedBf16RawNK + MakeOwned/TransposeBf16) extracted from qwen3_5_dense_weights.cpp anon-ns to dense_weight_loaders.h (vllm::dense_loaders) — 27B load byte-identical (SEAM GAP #3). GATES PASSED: dgx CUDA -Werror 0-warn; W2 load gate test_qwen3_load 1567/1567 on dgx (all 311 tensors mapped, shapes exact, tied lm_head resolves, NO leftover); 27B 235/235 + 35B 315/315 token-exact UNCHANGED (extraction behaviour-preserving); compute-sanitizer memcheck 0 err / 0 leak on the load path; full CPU ctest 125/125. W3 LANDED 2026-07-20: dense forward qwen3.cpp (Qwen3DenseModel::Forward/ForwardDevice) composed from public vt:: ops + the fusion catalog, wired into the factory (replacing the stub). 2 NEW recipes in include/vt/recipes.h (kFusedAddRmsNormStd non-gemma add-RMSNorm at the 3 norm sites via vt::FusedChain; kAttnQkNormRope non-gated qk-norm-rope composite) each byte-exact composite-tested. bf16 attention numerics (qkv/q-k-norm/RoPE/query/attn all bf16) mirror vLLM's bf16 per-op rounding. Two GENUINE latent bugs the first pure-dense bf16 model forced out + FIXED: (a) tokenizer kQwen2Classic (the classic Qwen2/Qwen3 pre-tokenizer regex was hard-rejected — pretokenizer.{h,cpp},tokenizer.cpp; test_bpe/test_pretokenizer updated + new mark-split case); (b) cuda_paged_attn.cu WMMA prefill gated to head_dim 256 (the tensor-core ladder mistokenizes at d≠256 — validated only for the gate models). New files qwen3.cpp, test_qwen3_forward.cpp, test_qwen3_paged_engine.cpp, scripts/qwen3-oracle-capture.py. W4 GATING 2026-07-20 — NOT token-exact yet: Qwen3-0.6B greedy vs vLLM 0.25.0 oracle = 11/16 prompts (all 16 first-tokens exact; 5 fail at late-decode SEMANTIC near-ties). Isolated as per-op bf16-rounding drift vs vLLM's kernels (CPU-exact-f32 also 10/16, overlapping divergences; RMSNorm rounding verified matching vLLM csrc) — structurally correct, NOT a bug. GATES: dgx CUDA -Werror 0-warn CLEAN rebuild; 27B 235/235 + 35B 315/315 UNCHANGED; forward memcheck 0 err; recipes byte-exact CPU. W4 near-tie RAZOR 2026-07-20 — 16/16-EXACT IS ILL-POSED (record-only, no code change): ISOLATE-then-BIT-MATCH showed vLLM's OWN bf16 greedy (FA2, head_dim 128) is non-deterministic on these near-ties — vLLM ↔ its golden = 16·15·16 (N=3), flips 7/16 prompts over N=10 (p6 4/10, p15 3/10); all 5 of our divergences sit on gaps ≤0.125 nats (p5@5 EXACT 0.0 tie) and we emit vLLM's MAJORITY on p6/p15. vt::GreedyArgmax already mirrors torch.argmax lowest-index tiebreak. ⇒ not a kernel bug, no fixed golden to bit-match to; correct closure = a near-tie-robust distributional gate (user gate-design decision). Regression preserved by construction (binary byte-identical to ec7f8a0). Row stays ACTIVE. W4 CORRECTNESS COMPLETE 2026-07-20 (worktree agent-af01f4e66c3cc6c98): CORRECTED the razor's premise — vLLM greedy non-determinism was a BATCHING artifact; PER-PROMPT (batch=1, the gate's regime) vLLM 0.25.0 is DETERMINISTIC (0.6B 0-multi/K=10, 4B 0-multi/K=5). Near-tie robustness now comes from TEACHER-FORCING vLLM on OUR exact prefix (scripts/qwen3-neartie-gap.py): at all-but-2 positions vLLM's own argmax GIVEN OUR PREFIX is our token (gap 0.0000, bit-identical logprobs) — our forward matches vLLM's prefill logits; residual flips are bf16 near-ties (0.6B ≤0.125 nats, 4B ≤0.25) where vLLM's OWN prefill argmax disagrees with its decode. Gate (test_qwen3_paged_engine.cpp rewritten, 2 cases): PASS if our token within 0.5 nats of vLLM's teacher-forced argmax. 0.6B 16/16 (strict 12 + near-tie 4, max 0.125) + BIGGER-MODEL PROOF Qwen3-4B 16/16 (36L, GQA 32/8, hidden 2560, same forward code; strict 10 + near-tie 6, max 0.25). GATES: CUDA -Werror 0-warn; 27B 235/235 + 35B 315/315 UNCHANGED (no engine source); memcheck 0; CPU syntax RC=0. New files scripts/qwen3-neartie-gap.py + goldens tests/parity/goldens/qwen3_greedy_{0_6b,4b}/{greedy_dist,our_ids,neartie_gap_mnats}.npy. Row stays ACTIVE until vLLM-throughput SPEED parity (DONE = correctness + speed). STRICT-DECODE RAZOR 2026-07-20 (worktree agent-a7e66dd02ed286cb2, INVESTIGATION only — reverted, no code landed): the group-swap FA2 split-KV d128 route measured WORSE (0.6B 12→11/16, 4B 10→9/16); vLLM runs FA2 varlen (flash_attn_varlen_func, fa_version 2 sm_121), not the group-swap kvcache path — remaining scope = FA2 VARLEN d128 decode, spec specs/qwen3-decode-strict-bitmatch.md. Byte-identical to HEAD (27B 235/235 + 35B 315/315 + near-tie band gate unchanged by construction). FA2 VARLEN d128 RESOLVED 2026-07-20 (worktree agent-a31b006ff4766f03b): vendored the EXACT vLLM varlen decode — NEW src/vt/cuda/flash_attn/src/flash_fwd_split_hdim128_bf16_{,causal_}sm80.cu + LaunchDecodeVarlenFA2Bf16 (src/vt/cuda/cuda_flash_attn_fa2.cu: plain varlen, no group swap, num_splits=exact heuristic) routed by Fa2DecodeQwen3Enabled/fa2_decode_qwen3 (src/vt/cuda/cuda_paged_attn.cu, VT_FA2_DECODE_QWEN3 default OFF, d128-scoped so d256 arms untouched) + op-parity in tests/vt/test_ops_paged_attn.cpp + CMakeLists.txt. The kernel BIT-MATCHES vLLM's decode attention OUTPUT (teacher-forced gap 0.0000 at all-but-near-tie positions) but STRICT 16/16 is bf16-tie-bounded, NOT reached: FA2-varlen 0.6B 11/16 & 4B 9/16, ONE WORSE than the CUDA-core fallback (12/16 & 10/16). Shipped OPT-IN; near-tie-robust gate stays the closure; engine gate NOT tightened. GATES: -Werror 0-warn, op-parity 23/23 (454433 assertions), memcheck 0, 27B 235/235 + 35B 315/315 + default Qwen3 gate 16/16 UNCHANGED.ACTIVE (correctness COMPLETE — 0.6B + 4B gates PASS 16/16; SPEED re-bound 2026-07-21 same-session matching-recipe: c1 EFFECTIVE EVERY-AXIS PARITY (tput 0.98× / TTFT 0.90× WIN / TPOT 1.01× / P99 ITL 0.996× WIN); c8 decode residual (tput 0.93× / TTFT 0.38× WIN / TPOT 1.10× / P99 ITL 1.12×). TTFT residual RESOLVED — the prior 2.27×/5.85× + c8 ITL 4.3× were bad-denominator/num-prompts artifacts (fresh vLLM c1 TTFT ~152 ms; ours WINS TTFT both concurrencies). qkv-merge (QkvSplit op, mirrors vLLM QKVParallelLinear) implemented + MEASURED NEUTRAL (c8 decode 93% GPU-busy/compute-bound) ⇒ DEFAULT-OFF. cutlass RESOLVED (27B 235/235 on flashinfer-cutlass). Named residual = c8 decode-GEMM efficiency; claim does NOT close)2026-07-20 (W0-W4 landed; near-tie gate PASS 0.6B + 4B, re-passed with FA2 prefill+decode ON; SPEED Qwen3-4B vs graphed vLLM: d128 FA2 varlen prefill + FA2 decode default-ON → total tput 0.90×/0.62× (from 0.80×/0.48×), c1 TPOT 1.04× / ITL P99 0.98× WIN, prefill A/B +7%/+41% total & −55%/−48% TTFT; residual TTFT 5.85×/10.2× + c8 TPOT 1.38×; ledger 2026-07-20 FA2-prefill SPEED row. TTFT LEVERS 2026-07-20 (base 812a57a): DevicePool extracted to shared device_pool.h (byte-identical; A/B-MEASURED PERF-NEUTRAL — "44% GPU-idle" premise disproven); RoPE cos/sin cache shipped OPT-IN VT_QWEN3_ROPE_CACHE (default OFF/RopeNeox) — MEASURED the dominant dense-TTFT lever (c1 median TTFT 209→135 ms = 0.87× vLLM parity, c8 316→144 ms = 0.38×) but not default: byte-identity unreachable on CUDA (FMA) + exposes FA2-split-KV near-tie nondeterminism (flaky strict gate); default gate 16/16 both models deterministic 4/4 + 27B 235/235 + 35B 315/315 UNCHANGED, -Werror 0-warn). RoPE cos/sin cache flipped DEFAULT-ON 2026-07-20 (worktree agent-a8c0b2005b8b5ff51, base 4f84850): the opt-in blocker (b) — the alleged FA2-split-KV-combine run-to-run nondeterminism → flaky gate — was GROUNDED + DISPROVEN (engine byte-deterministic run-to-run: RoPE-off gate 4/4 + RoPE-on md5 3/3 + flipped gate 16/16 K=5; and num_splits==1 on the short gate contexts ⇒ the combine kernel never launches). RopeCacheEnabled default-true (src/vllm/model_executor/models/qwen3.cpp); near-tie goldens regenerated on the CANONICAL $HOME/cutlass-4.5.0 build (the flashinfer-bundled cutlass copy tips the 27B tok6 razor to 271→234/235; cutlass-4.5.0 gives 198→235/235 — Qwen3 near-ties are likewise cutlass-content-sensitive). Gate 16/16 both (0.6B strict 10+nt 6 max 0.0; 4B strict 11+nt 5 max 0.25) deterministic K=3; 27B 235/235 + 35B 315/315 on the canonical build (RoPE flip isolated to the Qwen3-dense TU); -Werror 0-warn. SPEED (RoPE-ON default vs vLLM 0.25.0 production, in1024/out128): c1 total 0.97× / TPOT 1.00× / ITL P99 0.96× WIN / TTFT 2.27×; c8 total 0.82× / TTFT 1.90×; RoPE A/B c1 TTFT −34%, c8 −43% / total +10%; total tput 0.90×→0.97× (c1)/0.62×→0.82× (c8). Row stays ACTIVE — residuals = prefill-STEP non-attention glue (TTFT) + c8 split-KV decode occupancy. Files: qwen3.cpp (RoPE default), tests/parity/goldens/qwen3_greedy_{0_6b,4b}/{our_ids,neartie_gap_mnats}.npy (canonical-build regen), README/BENCHMARKS/model-matrix/roadmap/ledger/state

| CLAIM-BACKEND-METAL-M3A-1 | BACKEND-METAL-MLX (study work row M3a — THE FIRST MODEL ON A NON-CUDA BACKEND; the row stays ACTIVE, because correctness is met and SPEED is a separate, unmet bar) | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-a5bedee70b3431835, base 72f5db2; M4 build/gate 192.168.68.103:~/vllmcpp-metal with an UNMODIFIED 72f5db2 baseline tree at ~/vllmcpp-base for the pre-existing-failure A/B, and the md5-verified OPT-125m bf16 checkpoint at ~/models/opt-125m-bf16-st; Linux CPU build build-cpu in the worktree; dgx build/gate dgx.casa:~/vllmcpp-metal, the whole regression series under ONE flock $HOME/gpu.lock | worktree branch, base 72f5db2 | Bring OPT-125m (OPTForCausalLM) up END TO END on Apple GPU and gate it. Owns EXACTLY: the five new MSL kernels + their host encoders and registrations in src/vt/metal/metal_msl.h and src/vt/metal/metal_ops.mm; MetalPlatform::get_attn_backend_priority + the new supports_model_architecture override in src/vllm/platforms/metal.cpp; the Platform::supports_model_architecture DEFAULT-true virtual in include/vllm/platforms/interface.h; SelectQueue in src/vllm/entrypoints/model_loader.cpp; the kFlashAttnMetal NAME registration in src/vllm/v1/attention/backend.cpp; the KV-cache residency predicate at src/vllm/v1/worker/gpu/runner.cpp:516; and tests/vt/test_metal_backend.cpp / tests/vllm/models/test_opt_paged_engine.cpp. Owns NO op wrapper body, NO CUDA/Vulkan/CPU kernel, NO model forward, and NO scheduler/runner algorithm — and touched none of them | LANDED + TRI-BOX GATED 2026-07-22. OPT-125m runs on Apple GPU and is STRICT token-exact 6/6 prompts / 96/96 tokens vs the SAME committed dgx-captured vLLM 0.25.0 goldens the CUDA arm uses — a DEVICE-INDEPENDENT bar, so Metal met the bar CUDA already met rather than one re-derived on Metal. Registered Metal ops 10 -> 15 of 75 (kEmbedding, kQkvSplit, kReshapeAndCache, kPagedAttention, kGreedyArgmax). METAL EXECUTION PROVEN, NOT INFERRED: runner().device().type == kMETAL plus, for all NINE ops OPT dispatches, selections > 0 AND declines == 0 (kPagedAttention selections 1152); per-op unit tests NaN-poison every output so an un-executed kernel cannot pass numerically. Per-op vs the CPU oracle: four ops BIT-EXACT, kPagedAttention NMSE 4.99e-13 (bar 5e-4, bit-exactness explicitly NOT claimed — online vs materialized softmax is a different reduction order by construction). SEAM FIXES: study predicted 4 — 2 CONFIRMED+fixed (hardcoded kCUDA loader queue; empty Metal attn priority), 1 REFUTED BY MEASUREMENT (the runner's vt/cuda/ include is declaration-only and links fine on a Metal-only macOS build — no change needed or made), and 1 NEW BUG THE STUDY MISSED: runner.cpp:516 gated KV-cache DEVICE RESIDENCY on is_cuda(), handing a HOST pointer to a device kernel (same class as the earlier dense_attn_block.h bug, invisible for the same reason — no test sees it until a model runs off-NVIDIA). NEW SEAM forced by the above: Platform::supports_model_architecture() (default true => CUDA/CPU byte-unchanged), because once SelectQueue asks the platform, "which device am I on" stops being "which device can run THIS model"; caught by the macOS regression suite, not by design, and recorded as such. Tree-friction counts RE-JUDGED: OPT-on-Metal needed 2 of the 13 is_cuda() sites and 0 of the 5 CUDA includes — no tree-wide unpicking campaign started or warranted. EVIDENCE — M4: clean -Werror 0 warn on a CLEAN FULL rebuild (AppleClang 21, CLT-only, MSL at RUNTIME); test_metal_backend 12 cases / 18,535 assertions; full ctest 154/156, both misses documented pre-existing platform gaps, and test_capi's standalone macOS failure PROVEN pre-existing by reproducing the identical CHECK(1 == 2) on an unmodified 72f5db2 build on the same box. Linux CPU: clean -Werror 0 warn. dgx: clean CUDA -Werror 0 warn; ALL SIX REGRESSIONS UNCHANGED, each STANDALONE. NO METAL SPEED NUMBER IS CLAIMED OR OWED — the M4 could not be quieted (root LaunchDaemon needs interactive sudo; the desktop aerial wallpaper is the larger contender), so any timing is void under the standing rule; correctness and speed are separate bars and only correctness is met, which is why the row stays ACTIVE. BACKEND-GATE-METAL-MLXLM correctly stays INVENTORIED — it binds on Qwen3-dense (M3b), the model MLX also runs. Still owed: M2r, M3b (+RoPE), M3c (batched encoders), M4, W0b-3 | 2026-07-22 | | CLAIM-BACKEND-METAL-M3B-1 | BACKEND-METAL-MLX (study work row M3b — Qwen3-dense, the SECOND model on a non-CUDA backend; row stays ACTIVE, correctness met, SPEED unmet) + BACKEND-GATE-METAL-MLXLM (the native-competitor MLX benchmark cell) | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm-metal-qwen3 (branch metal-qwen3-dense), base origin/main 4884d03; M4 build/gate/bench 192.168.68.103:~/work/m3b-qwen3 (Qwen3-0.6B gate + Qwen3-1.7B bench); dgx CUDA-build + Qwen3-dense-gate regression check dgx.casa:~/work/m3b-cuda-check under flock $HOME/gpu.lock | worktree branch, base 4884d03 | Bring Qwen3-dense (Qwen3ForCausalLM) up END TO END on Apple GPU, gate it token-exact, and produce the binding MLX-vs-ours benchmark on the model MLX also runs. Owns EXACTLY: the three new RoPE MSL kernels + host encoders + registrations in src/vt/metal/metal_msl.h and src/vt/metal/metal_ops.mm; the Qwen3ForCausalLM entry in MetalPlatform::supports_model_architecture (src/vllm/platforms/metal.cpp); the Metal-aware branch + provider proof in tests/parity/test_qwen3_paged_engine.cpp; the three new RoPE cases in tests/vt/test_metal_backend.cpp. Owns NO op wrapper body, NO CUDA/Vulkan/CPU kernel, NO model forward, NO scheduler/runner algorithm | LANDED 2026-07-23 (M4-gated; dgx CUDA-build check DONE). dgx: clean CUDA -Werror 0 warn on the only dgx-compiled change (test_qwen3_paged_engine.cpp); device correctly stays CUDA (no metal branch); CUDA/CPU anchor path diff-verified behaviour-preserving. PRE-EXISTING stale-golden finding (NOT an M3b regression): the Qwen3-dense CUDA gate is currently RED at the hard our_ids anchor — dgx CUDA gives 15344 at prompt[0] tok=5 vs committed golden 9625; airtight attribution — git diff 4884d03 HEAD is 5 files (3 Metal-only not compiled on Linux + 2 tests), CUDA engine byte-identical to base, AND the M4 Metal run produced the SAME 15344, so two devices corroborate the committed goldens (captured 2026-07-20 e510e85 on canonical cutlass-4.5.0) are stale vs the current runtime (same class as the 27B NVFP4-emulation control). Goldens NOT modified (refresh needs a fresh dgx oracle capture, out of M3b scope). Other 5 suites have zero changed compiled code on dgx → unchanged by construction, not re-run. Qwen3-dense runs on Apple GPU; Qwen3-0.6B SACRED gate 16/16 on Metal (10 STRICT token-exact vs vLLM 0.25.0 greedy, 2 near-tie-band, 4 cross-device near-ties all at gap 0 nats, 0 forward-divergent). Metal op set 15→18/75 (kRopeFromCache bit-exact, kRopeCosSinCache/kRopeNeox NMSE 0/4e-15). Metal execution PROVEN (device==kMETAL, selections>0 ∧ declines==0 all 9 ops, kRopeFromCache/kPagedAttention 7168). Study prediction CORRECTED: the default VT_QWEN3_ROPE_CACHE-ON path needs kRopeCosSinCache + kRopeFromCache (not kRopeFromCache alone); kRopeNeox is the cache-off opt-out. test_metal_backend 15 cases / 19,331 assertions, -Werror 0 warn on the M4. DSR holds 86. BENCHMARK (INDICATIVE / BLOCKED-ON-SUDO): Qwen3-1.7B bf16 p512 g128 same box/session — ours (Metal) decode 4.29→2.14 tok/s/stream, TTFT 4.9→47.2 s, peak 7.36→8.78 GB vs MLX 27.77→211.55 tok/s, TTFT 0.47→7.16 s, peak 3.78→5.28 GB (b=1→16); ours a knowingly-unoptimised FLOOR ~6–11× slower decode, ~7–10× TTFT, ~2× memory. The Mac could NOT be quieted (no passwordless sudo; root com.localai.worker + aerial wallpaper up), so NOT binding. Metal TUs VLLM_CPP_METAL AUTO→OFF on Linux so the only dgx-compiled change is test_qwen3_paged_engine.cpp (behaviour-preserving on CUDA). Still owed: M2r, M3c (batched encoders — the named speed lever), M4, W0b-3 | 2026-07-23 | | CLAIM-BACKEND-ACCEL-PROVIDER-1 | BACKEND-ACCEL-PROVIDER, KERNEL-ACCEL-PROVIDER-SELECT, BACKEND-METAL-MLX | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-aa2995d59156dd2b5; Mac build/gate ~/vllmcpp-accel on 192.168.68.103 (build = Metal, build-mlx = Metal+MLX) with a c603ebc baseline tree at ~/vllmcpp-base for the pre-existing-failure A/B; dgx build/gate ~/vllmcpp-accel on dgx.casa, every GPU stage under flock $HOME/gpu.lock | worktree branch, base c603ebc | The vt::OpProvider seam (study work row W0b-2) plus the Metal dense GEMM and the gated MLX provider (work row M5). Owns EXACTLY: include/vt/op_provider.h, src/vt/op_provider.cpp, the three registration/lookup symbols removed from src/vt/ops.cpp, src/vt/metal/metal_msl.h, src/vt/metal/metal_ops.mm, src/vt/metal/metal_mlx_provider.mm, the ResidentWeight* predicate in include/vllm/model_executor/models/dense_attn_block.h, the VLLM_CPP_MLX/MLX_ROOT CMake block, and tests/vt/test_op_provider.cpp / tests/vt/test_metal_backend.cpp / tests/vt/test_fused_chain_additivity.cpp. Owns NO op wrapper body, NO model, NO CUDA/Vulkan/CPU kernel | ACTIVE | 2026-07-22 | | CLAIM-BACKEND-FANOUT-1 | BACKEND-METAL-MLX (W0 IMPLEMENTATION — shared seam repair + the Metal vt::Backend/Platform skeleton), BACKEND-VULKAN, BACKEND-XPU (both still SPIKE-only) — USER PRIORITY 3 | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-afaddd725a246ee5b; M4 probe root 192.168.68.103:~/vllmcpp-probe (throwaway, source-only); dgx Vulkan probes /tmp/vkprobe* under $HOME/gpu.lock; W0 implementation worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-a030355a8517870f9, base fe53176; M4 build/gate root 192.168.68.103:~/vllmcpp-metal-w0 (both a Metal-ON build/ and a Metal-OFF build-nometal/ for the additivity A/B); dgx build/gate root dgx.casa:~/vllmcpp-metal-w0 under $HOME/gpu.lock (tree DELETED after gating — dgx runs at 96-97% full and partial ENOSPC builds produce bogus failures; re-transfer with git archive, never rsync, and md5-verify the 475 goldens before AND after) | main (worktree), base 429e19d W0 OWNED FILES (implementation, 2026-07-22): NEW src/vt/metal/{metal_context.h,metal_context.mm,metal_buffers.h,metal_backend.mm,metal_msl.h,metal_ops.mm}, NEW src/vllm/platforms/metal.cpp, NEW tests/vt/{test_metal_backend.cpp,test_backend_cross_device.cpp}; the APPLE/-force_load + VLLM_CPP_METAL blocks in CMakeLists.txt, the OBJCXX arm in cmake/CompilerWarnings.cmake, the two test rows in tests/CMakeLists.txt; the SEVEN Clang-only -Werror fixes (sched/scheduler.h virtual dtor, kv_cache_coordinator.{h,cpp}, chunked_local_attention.cpp, v1/engine/input_processor.{h,cpp}, test_qwen36_weights.cpp, test_ops_gdn.cpp, test_bpe.cpp, test_nvfp4_persistent_cache.cpp); the OpRegistered declaration in include/vt/ops.h + its move out of src/vt/ops.cpp's anonymous namespace; the kMETAL->kXPU stand-in switch in tests/vt/test_backend.cpp + tests/vllm/platforms/test_platform.cpp. MUST NOT touch model/runner/scheduler ALGORITHMS, CUDA kernels, or the op-table semantics — and did not. | .agents/specs/backend-fanout-metal-vulkan-xpu.md (NEW), the three BACKEND-METAL-MLX/BACKEND-VULKAN/BACKEND-XPU rows of .agents/backend-matrix.md, the ROAD-V1-D1 roadmap row, .agents/environment.md (stale M4 toolchain lines), ledger/state/README/BENCHMARKS checkpoint entries. NO source file, NO CMake edit, NO kernel — the seam repairs the spike names (W0) are SPECIFIED here and IMPLEMENTED under a future claim | W0 LANDED + TRI-BOX GATED 2026-07-22 (SPIKE -> ACTIVE for BACKEND-METAL-MLX only; Vulkan/XPU unchanged). ACTIVE = a gated SKELETON, NOT a supported backend: no model runs on Metal. Linux: clean CPU -Werror 0 warn, full CPU ctest 155/155. M4: clean -Werror 0 warn on the WHOLE tree with Metal ON; test_backend 7/7 (18/18) (was 5/7 FAIL — the registrar bug, which also blocked BACKEND-CPU on macOS); test_metal_backend 6/6 (59/59); test_backend_cross_device 5/5 (73/73); op NMSE vs the CPU oracle worst-case 1.9e-14 vs the 5e-4 bar, with Copy/Memset and the bf16<->f32 codec BIT-EXACT. dgx: clean CUDA -Werror 0 warn and ALL SIX REGRESSIONS UNCHANGED, each run STANDALONE — 27B 235/235, 35B 315/315, Qwen3-Coder 6/6, Qwen3-32B-NVFP4A16 dense 6/6 (142 assertions), OPT 6/6 (96/96 tokens), DeepSeek-V2 8/8, and the FULL dgx ctest suite 190/190, 100% passed. The new cross-device harness ALSO runs CPU-vs-CUDA on dgx and caught a real cross-backend difference: CUDA __float2bfloat16 emits NaN payload 0x7FFF where our CPU codec emits 0x7FC0 — every finite value, +-0, +-inf and all 16 exact rounding ties are bit-identical, so this is an architectural NaN-payload difference, not a rounding defect; carved out narrowly and documented in the test, with quiet-NaN-ness still asserted. The spike's remaining W0 items (5-8: CUDA-include guards, the hardcoded kCUDA loader queue, lifting QuantTypeTraits, vt::arch_tactics) are DEFERRED to W0b — they block a MODEL on a non-CUDA backend and W0 ships none. VULKAN V1 LANDED + DUAL-BOX GATED 2026-07-22 (BACKEND-VULKAN SPIKE -> ACTIVE; XPU unchanged), base 13bb724, worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-a21a9f3cf1c659785, dgx build/gate root dgx.casa:~/work/vllm.cpp-vulkan-w0 (TWO build dirs: build = production Vulkan-OFF for the regressions, build-vk = Vulkan-ON for the backend gates). V1 OWNED FILES (all NEW except three): NEW src/vt/vulkan/{vulkan_loader.h,vulkan_loader.cpp,vulkan_context.h,vulkan_context.cpp,vulkan_buffers.h,vulkan_backend.cpp,vulkan_ops.cpp,vulkan_spirv.h} + src/vt/vulkan/shaders/{vt_common.glsl,vt_add.comp,vt_relu.comp,vt_cast.comp,vt_silu_and_mul.comp,vt_rms_norm.comp,vt_layer_norm.comp,vt_fused_chain.comp}, NEW src/vllm/platforms/vulkan.cpp, NEW scripts/gen-vulkan-spirv.py, NEW tests/vt/test_vulkan_backend.cpp, NEW third_party/vulkan/ (Khronos TYPE headers @ vulkan-sdk-1.4.328.1, VK_NO_PROTOTYPES, nothing linked); MODIFIED only the additive VLLM_CPP_VULKAN blocks in CMakeLists.txt, the one test row in tests/CMakeLists.txt, and the third_party/README.md table. NO existing source file was changed to enable the backend, and VLLM_CPP_VULKAN AUTO resolves OFF (deliberately unlike Metal's AUTO — Vulkan overlaps CUDA on the gate box) so the CUDA gate builds are byte-identical to before. tests/vt/test_backend_cross_device.cpp was NOT modified: it already enumerates every registered non-CPU backend, so it picked Vulkan up unchanged — which is the additivity claim demonstrated rather than asserted. ACTIVE = a gated SKELETON, NOT a supported backend: no model runs on Vulkan. Dev box (llvmpipe, NO GPU): clean -Werror 0 warn; test_vulkan_backend 8/8 (82/82); test_backend_cross_device 5/5 (73/73); full ctest 155/156 (the one failure test_openai_conformance is the known -j parallelism flake, PASSES on rerun) — a GPU-FREE CI PATH IS PROVEN. dgx/GB10 (NVIDIA GB10, Vulkan API 1.4, every stage under one flock $HOME/gpu.lock, GPU verified idle first): clean CUDA -Werror 0 warnings on BOTH builds; test_vulkan_backend 8/8 (82/82); test_backend_cross_device 5/5 (144/144) — DOUBLE the dev box because the SAME BINARY gates the CPU oracle against both CUDA and Vulkan, the cross-backend oracle this spike promised; test_backend 7/7, test_platform 7/7. Worst-case Vulkan op NMSE 2.92e-14 vs the 5e-4 bar, within 1.3x of CUDA's own worst case on the same box; Copy/Memset and the bf16<->f32 codec bit-exact. ALL SIX REGRESSIONS UNCHANGED, each run STANDALONE on the production Vulkan-OFF build — 27B 235/235, 35B 315/315, Qwen3-Coder 138/138, Qwen3-dense 664/664, OPT 36/36, DeepSeek-V2 223/223; golden corpus md5 over 475 files IDENTICAL before and after (2965ef5772b556d3f3f86fedf4221b2f). Shader route DETERMINED AND RECORDED: SPIR-V compiled AHEAD OF TIME and COMMITTED (glslang 16.4.0) because no box has a GLSL compiler, the Vulkan dev package or sudo, and libshaderc is a forbidden compiled dep — so the build needs NO shader toolchain anywhere. W0b and V2/V3/V4 remain open. METAL/MLX REUSE STUDY + PROVIDER SEAM + MLX BASELINE LANDED 2026-07-22, worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-a35b37f8bb1e496c7, base 1cb5f64, M4 MLX root 192.168.68.103:~/mlx-venv + ~/hf-cache. OWNED FILES: NEW .agents/specs/metal-mlx-reuse-study.md ONLY, plus record surfaces (.agents/specs/backend-fanout-metal-vulkan-xpu.md header cross-link, the BACKEND-METAL-MLX + BACKEND-GATE-METAL-MLXLM rows of .agents/backend-matrix.md, ROAD-V1-D1, this claim row, ledger/state/README/BENCHMARKS, .agents/environment.md). NO source file, NO CMake, NO kernel, NO test was changed — the existing gates stand by construction and nothing was rebuilt. Answers the user directive "we need to build it in a way that we can extend acceleration easily to other platforms, and e.g. integrate with MLX". REUSE MAP: first model on Apple GPU = 10 ops Qwen3-dense (7 new) / 9 OPT (6 new); engine, all ops.cpp validation, the 9-recipe fusion catalog, sampler source and weight loading (0 OpIds) transfer unchanged; OPT's four TUs contain ZERO CUDA references -> cheapest first non-CUDA model. SEAM VERDICT: a new PLATFORM plugs in through what exists (measured — Vulkan V1 edited exactly 2 pre-existing files), but src/vt/ops.cpp:10-15,98-102 is a flat one-void*-per-(OpId,DeviceType) table with silent last-writer-wins, so a second PROVIDER cannot coexist; recommendation is to generalize cuda_arch_tactics (CUDA couplings verified exactly 3, all shallow) into vt::OpProvider — ~50 lines, zero call-site edits, one mechanism for MLX/cuBLASLt/CUTLASS/flashinfer/llama.cpp. Merges W0b item 8; W0b item 7 restated as SPLIT-not-lift. MLX LAZY-EVAL OBJECTION REFUTED BY SOURCE (backends.md:84-90 was wrong): the graph terminates at mlx/backend/metal/eval.cpp:32-48 and the compute entry points are free functions (steel_matmul, matmul.h:105-142), with a zero-copy bridge through array::set_data + a no-op deleter. MLX is viable as an optional gated provider for GEMM; native MSL stays the default; MLX has NO paged-KV attention so kPagedAttention is ours regardless. MLX BASELINE MEASURED, BLOCKED-ON-SUDO/INDICATIVE: mlx 0.29.3 / mlx-lm 0.29.1 via the venv route (brew NOT used), mlx-community/Qwen3-1.7B-bf16 @ 9cd6692855d3e06772228e9a962b2606359b2d24, MLX-LM's OWN harness, p=512 g=128 x3 trials — 27.57 tok/s @ b=1 -> 213.39 @ b=16, TTFT 470 ms -> 6857 ms, peak 3.78 -> 5.28 GB, spread 0.12-0.63%. The com.localai.worker daemon could NOT be stopped (no passwordless sudo) though it was MEASURED idle (0.0% CPU, ioreg GPU utilization 0); a second contender (the desktop aerial video wallpaper, 8.2% CPU) was found and recorded. NO "ours" column exists or was manufactured; NO Metal speed result is claimed. BACKEND-GATE-METAL-MLXLM deliberately STAYS INVENTORIED — a competitor baseline is not a gate; with no implementation code and no ours-vs-MLX evidence there is nothing to anchor, and promoting it would be the ungrounded transition the record checker rejects. It moves at M3b. TWO OPEN DEFECTS FOUND, NEITHER FIXED: dense_attn_block.h:140,157 hands a HOST pointer to a DEVICE kernel on any non-CUDA device backend (hard M3 blocker), and test_fused_chain_additivity.cpp:420-439 gates 7 of 9 declared recipes so its count guard has drifted. | 2026-07-22 | CLAIM-FP8-MERGED-QKV-1 (row KERNEL-GEMM-FP8, merged-QKV FP8 sub-lever) is COMPLETE and released 2026-07-19. Extended the fp4-only merged-QKV projection fusion to the 35B FP8 W8A8 full-attn path: ONE fp8 GEMM over the N-concatenated Q/K/V operand + per-column dequant (NEW vt::MulColVecF32) replacing 3 separate per-shard GEMMs (concat RAW fp8 bytes + GEMM alpha=1 + resident per-column alpha; fp8 is PER-TENSOR scaled so a single-alpha concat is incorrect — the fp4 per-block merge does not transfer directly). VT_FP8_MERGED_QKV opt-in. Owned files: NEW vt::MulColVecF32 (ops.h/ops.cpp/cpu_ops.cpp/cuda_glue.cu); Fp8QkvDev/ResidentFp8Qkv/MergedFp8QkvEligible/MergedFp8QkvD + the ProjectFullAttnQkv fp8 branch + the strided-value materialization in FullAttnBlock (qwen3_5.cpp); the strided-aware CastBf16 (ops.cpp/cuda_glue.cu); resident fields (qwen3_5_weights.h); test_ops_glue.cpp; .agents/specs/fp8-merged-qkv-projection.md. CPU GREEN (glue 10/10 incl. 2 new byte-exact MulColVecF32, fp8_cutlass 6/6, matmul 7/7, clean -Werror). DGX GREEN (~/work/vllm.cpp-fp8-merged-qkv @ e9ce593, production flags, clean CUDA -Werror 0 warn, one flock): 35B 315/315 token-exact both arms + 27B 235/235 both arms (inert); merge proven to fire (its strided value view triggered — then was fixed for — a downstream cast_bf16 contiguity check); compute-sanitizer memcheck 0 errors. In-situ 35B TPOT A/B NEUTRAL (c1/c8 ~0%, c2/c4 −0.5%, all ≤0.9% within rep noise) ⇒ landed OPT-IN (default OFF; no flip). The broad KERNEL-GEMM-FP8 row stays ANCHOR-BACKFILL for its remaining scope. Worktree agent-ae7c66925cee71cbd released. Follow-up: GDN qkvz/BA fp8 merge (30 layers).

CLAIM-MODEL-SELFREG-1 (row MODEL-FACTORY-registry) is complete and released 2026-07-19 (closing 669679a): extensibility item 5 — model self-registration + per-arch entry-point TU split LANDED as a behavior-preserving refactor. Replaced the fixed constexpr std::array<ModelRegistration,2> kRegistrations with a REGISTER_VLLM_MODEL(...) static-Registrar idiom (include/vllm/model_executor/models/model_registry.h:167-189, copies RegisterOp/RegisterBackend/RegisterPlatform); moved the Qwen dense/MoE arch-specific registry entry points out of the model_registry.cpp monolith into NEW per-variant TUs qwen3_5_dense.cpp + qwen3_5_moe.cpp over NEW shared qwen3_5_common.{h,cpp}; model_registry.cpp is now the generic family-agnostic registry. Adding a model = 1 new TU + 1 REGISTER line, ZERO shared-array edit. Deviation: canonical sort by architecture name for deterministic order (C++ static-init order across TUs is unspecified; cosmetic — resolution is order-independent). Deep qwen3_5.cpp machinery factoring DEFERRED (scope discipline; qwen3_5.cpp UNTOUCHED, no overlap with the other qwen3_5.cpp-owning claims). Dual-config gate PASSED: CPU clean -Werror build + test_model_registry 138 assertions (adds self_registration) + full CPU CTest (all 125 pass in isolation; 5 HTTP/bench/capi were -j nproc port/resource flakes) + tools 164/164 + record/doc-checkpoint checkers green; DGX (~/work/vllm.cpp-model-selfreg @ 669679a, production flags CUTLASS sm120a + FA2 sm_121a + Triton AOT, one flock) clean CUDA -Werror build 0 warnings + 27B test_qwen27_paged_engine 235/235 + 35B test_qwen36_paged_engine 315/315 token-exact + compute-sanitizer memcheck 35B 0 errors. MODEL-FACTORY-registry returns to GATING (its broader gate-model perf-campaign scope is orthogonal and still deferred under CLAIM-SERVE-GATE-1). Worktree agent-adea89f825548e7e0 released; evidence dgx:/tmp/selfreg_{cfg,build,memcheck}.log.

CLAIM-FP8-PLAN-CACHE-1 (row KERNEL-GEMM-FP8) is complete and released 2026-07-18: the fp8 cuBLASLt matmul PLAN CACHE (per-device {desc, layouts, algo} reuse keyed on the full shape/config, src/vt/cuda/fp8_plan_cache.h + cuda_matmul.cu; new CPU tests/vt/test_fp8_plan_cache.cpp + byte-exact tests/vt/test_ops_fp8_cutlass.cpp) landed OPT-IN (VT_FP8_PLAN_CACHE=1), default OFF. It is BIT-EXACT (algo process-deterministic per shape) — byte-exact cached==fresh, CPU key/flag 4/4, DGX 27B 235/235 + 35B 315/315 at both flags — but MEASURED PRODUCTION-NEUTRAL: the grounded "~0.8 ms removable host gap before the fp8 GEMM" premise is NOT reproduced (same-binary 35B A/B wall-clock neutral on prefill TTFT async-on/off + c1/c4 decode TPOT; nsys pre-GEMM GPU gap unchanged 210 µs off / 204 µs on — prefill GPU-bound, decode graph-captured so the heuristic runs at capture not per replay-step). The KERNEL-GEMM-FP8 row stays ANCHOR-BACKFILL (this sub-feature does not close the whole fp8 family). Closed by this change (closing ledger 2026-07-18 fp8-plan-cache row); the sibling attention-path / qwen3_5 attention gate was not touched. DGX build/gate ~/work/vllm.cpp-fp8plancache, evidence dgx:/tmp/fp8pc-* + ~/work/prefill-attr-35b.

CLAIM-ASYNC-SCHED-W3 (row ENG-ASYNC-SCHED) and the diagnostic CLAIM-W3-ASYNC-DISC are complete and released 2026-07-17: the W3 async-scheduling default is flipped ON (mirror vllm/config/vllm.py:992-1044), ENG-ASYNC-SCHEDDONE (owner 6ea7856, closing ledger #L502), DGX-re-confirmed TOKEN-NEUTRAL (shipping default async ON + RMSNorm-fast OFF → 27B 235/235 + 35B 315/315, log "Asynchronous scheduling is enabled (max_concurrent_batches=2)"; both rollback arms VT_ASYNC_RUNNER=0 / VT_ASYNC_SCHED=0 235/235 + 315/315, log "disabled"; async arms bit-identical). The same DGX paged_ENGINE gate incidentally caught and rolled back a pre-existing RMSNorm-fast 27B token regression (VT_RMSNORM_DECODE_FAST default-ON 696a991 diverges from the pip-vLLM oracle 234/235 vs fast-OFF 235/235; its 696a991 gate used only paged_FORWARD) — the VT_RMSNORM_DECODE_FAST default returns to OFF (kernel opt-in via =1; KERNEL-EW-NORM-ACT stays DONE, fast-default perf lever reopened, closing ledger #L503). Evidence dgx:~/work/vllm.cpp-async-flip; full record: state.md 2026-07-17, async-serving.md 2026-07-17 addendum, w3-async-ttft-discriminator-2026-07-16.md.

CLAIM-SERVE-GATE-1 owns the binding grid and finalized exact-c2 evidence. Root 179a0fc, status 9e0143fa…7b57, proves the selected 193 vs 97 BF16 projection topology; detailed precursor chronology remains only in the append-only record. KERNEL-GEMM-BF16 BA-only W1 is implemented/GATING and its implementation claim is released; the serving claim owns immutable evidence execution only. The exact structural marker is complete at 0091cd1; Projection and 35B/GGUF inertness close at f925294; the first downstream boundary is now identified and owned by KERNEL-GDN-PACKED-DECODE. Clean f18ca23 closes immutable G0 and clean 9ad8fb7 closes W1D1/G1. Production model semantics and immutable G2 close at clean f344dec. Clean 7ff713e, finalized by 24cea4f, closes W1D3 structural evidence; the c16 slot defect was fixed and proven at c172336. W1D3 then CLOSES on EQUIVALENCE at the eighth seal (e47b4d6, complete-failed 38/40 + 8/8 memory, paired-consistency PASS at both concurrencies): no stable regression on any axis, packed proven mirror-correct and GPU-cheaper, so KERNEL-GDN-PACKED-DECODE is DONE. qkvz (KERNEL-GEMM-BF16 W2A) DGX gates closed green (45f9e6d), and the authorized exact grid (fresh vLLM denominators; --mamba-ssm-cache-dtype float32; cite 702f481) has now RUN — new binding 246a23c: 49/124 (supersedes 3f256ab's 55/124). 35B performance stays excluded until 27B reaches 124/124.

RMSNorm decode-fast NUMERICS REWORK (2026-07-17, completed follow-up on the DONE KERNEL-EW-NORM-ACT row; no separate claim — a DONE row is not re-claimable; CLAIM-EW-NORM-ACT-2 used only for worktree coordination, now released). The 2026-07-16 RmsNormRowFastKernel default-ON flip was rolled back (a0013a2) after test_qwen27_paged_engine caught a 27B token-7 near-tie flip (234/235). The rollback note's premise was WRONG: the oracle golden is generated with enforce_eager=True (tools/parity/dump_qwen36.py:242, pip-vllm:0.24.0), so the oracle rmsnorm is the EAGER csrc cub::BlockReduce<float,1024> kernel, NOT Inductor-Triton (a bit-verified 0.25.0-Triton reproduction ALSO gave 234/235 — the premise, not the reproduction, was the dead-end). Fix = TRUE 1:1 csrc port using the ACTUAL cub::BlockReduce (was a hand warp-shuffle approximation). DGX proof ~/work/vllm.cpp-ewnorm-numerics: test_qwen27_paged_engine 235/235 + test_qwen36_paged_engine 315/315 fast-ON, both rollback arms 235/235+315/315, paged_forward 84/84+8/8, CUDA parity 132/132, perf nsys 2.66 µs vs shipped 8.66 µs (~3.2×, within vLLM 2.37-2.68 µs). c16 in-situ A/B (w0+3 pairs) = NO WIN (fast −0.60% tput / +0.34 ms meanTPOT, 3/3; contradicts gate4's +1.1% — NULL within noise). VT_RMSNORM_DECODE_FAST STAYS DEFAULT OFF (opt-in); NOT re-flipped — the token-exactness blocker is FIXED (the achievement) but the flip acceptance (a confirmed c16 win) is not met; the kernel is now token-safe to enable (=1) + the true vLLM mirror, and the default flip awaits an in-situ win (c2 target). Recorded in the KERNEL-EW-NORM-ACT row cell, the spec addendum, the ledger (#L504), README/BENCHMARKS, and state. Owned files: src/vt/cuda/cuda_ops.cu (RmsNormRowFastKernel + TryLaunchRmsNormDecodeFast), src/vt/cuda/rmsnorm_decode_fast.h, tests/vt/test_cuda_ops.cpp, tests/vt/test_rmsnorm_decode_fast.cpp — none overlapping another active claim; GPU work ran under one flock /tmp/gpu per series.

Decode recurrence perf lever (2026-07-16, completed follow-up on the DONE KERNEL-GDN-PACKED-DECODE row; no separate claim — a DONE row is not re-claimable). The naive register-resident hand port PROOF-FAILED; Phase-1 cuobjdump MEASURED the codegen cause (vLLM FLA decode cubin REG:205/0-spill vs the hand port REG:255+STACK:48 spill — register allocation, the sanctioned- exception premise), so vLLM's exact decode kernel was vendored as the AOT cubin gdn_decode_h48 (27B-only) behind VT_GDN_PACKED_DECODE_TRITON (landed 9dd7d3f default OFF; flipped default ON 2026-07-16 — MIRROR policy, it is vLLM's exact kernel; =0 rolls back to the hand kernel). DGX-gated GREEN (AOT op test 28/28, full GDN 49/49, oracle boundary 12/12, 27B model gate 235/235 token-exact with the Triton path ON, memcheck 0/0); recorded in the KERNEL-GDN-PACKED-DECODE row cell, the spec, the ledger, and porting-inventory §9. Owned files: the shim, the cmake decl, the vendored cubin, TryTritonPackedDecode + counter in cuda_gdn.cu, and the AOT test — none overlapping another active claim; GPU work ran under one flock /tmp/gpu per series. The default flip (2026-07-16, CLAIM-GDN-DECODE-TRITON-FLIP, referencing the ACTIVE SERVE-GATE-ONLINE since the underlying row is DONE) adds the CPU-testable default-ON predicate header src/vt/cuda/gdn_packed_decode_triton.h

  • CPU flag test, flips the launcher/AOT-case/comments, and re-runs the flip gates (27B default + =0 rollback 235/235; 35B both arms inert; AOT/GDN/boundary/memcheck green). 35B needs NO specialization (dense-only ShouldUsePackedGdnDecode excludes the MoE 35B; the launcher guard rejects its Hv=32 shape anyway).

CLAIM-LOAD-WINDOWED-1 (row LOAD-SAFETENSORS) is complete and released 2026-07-15: implementation cb2d310 plus the measured one-flock VmHWM A/B (OFF 48,285,916 kB vs ON 24,750,704 kB = VmRSS, −23.54 GB; ON-arm smoke 6/6; evidence ~/work/vllm.cpp-windowed-load/cb2d310c…518/evidence, artifact hashes in the 2026-07-15 ledger row). The row returns to PARTIAL unclaimed — the remaining scope is the direct-to-device streaming redesign; binding memory-axis credit comes only from the authorized exact grid (projected PASS).

CLAIM-BLOCKTABLE-HOST-CLUSTER (row ENG-CUDAGRAPH + rescan §1/§5/§6 host plumbing) is complete and released 2026-07-16: items c/d/e landed bit-identical (8a717b2 block-table tail-pad, 81afc36 max_num_seqs-derived decode-graph capture set incl. the 24 bucket, 0c4b41c SamplingMetadata batch-change gate + SchedulerOutput move; spec blocktable-host-cluster-cleanup.md), and the DGX token-exactness gate PASSED on the pushed e027ad5 build (GB10 sm_121a, CUTLASS 4.5.0 at ~/cutlass-4.5.0, one flock /tmp/gpu series, root dgx:~/work/vllm.cpp-blocktable-gate, gate.done GATE_FINISHED=0): 27B default 235/235, 27B VT_GDN_PACKED_DECODE=0 rollback 235/235, 35B 2 cases 315/315, all exit 0. ENG-CUDAGRAPH returns to PARTIAL unclaimed (broader capture/replay-mode scope remains). benchmark_binding=false, no speed credit — payoff measured by the c2/c8 probe + the next authorized exact grid. Rescan §1 items a-runner/b stay with the async/GDN runner.cpp owners.

| CLAIM-CUDA-ARCH-ADDITIVITY | BACKEND-CUDA-ARCH-ADDITIVITY | Claude Code (opus-4-8) | worktree agent-a19d3c1e79b99c4f9; dgx scratch ~/work/vllm.cpp-arch-additivity | worktree branch, base c56ab28 | cmake/CudaArchFeatures.cmake, the CUDA block of CMakeLists.txt, src/vt/cuda/cuda_device_caps.h, src/vt/cuda/cuda_arch_tactics.{h,cu}, the LaunchFp4Fp4 seam in src/vt/cuda/cuda_matmul_nvfp4.cu, the smem opt-in helper in src/vt/cuda/cuda_paged_attn.cu, the capability virtuals in include/vt/backend.h, the registrar in src/vt/cuda/cuda_backend.cu, tests/vt/test_cuda_backend.cpp, tests/vt/test_ops_nvfp4_fp4.cpp, .agents/specs/cuda-arch-additivity.md | IMPLEMENTED — the four §A.2 seam-gaps landed, behavior-preserving on GB10 by construction; ONE tactic registered. Per-source gencode narrowing and every cross-family tactic body remain HW-blocked (ROAD-V1-D1). Does NOT move any arch off INVENTORIED. | 2026-07-21 | | CLAIM-CUDA-SM120-BRINGUP | BACKEND-CUDA-SM120 (W8 of BACKEND-CUDA-ARCH-ADDITIVITY) | Claude Code (opus-4-8) | worktree agent-a4e52891bbc7e9ac7; dgx scratch ~/work/sm120a | worktree branch, base 13bb724 | cmake/TritonAOT.cmake (multi-arch diagnosis only), cmake/CudaArchFeaturesTest.cmake (new), the VLLM_CPP_CUDA_ARCHITECTURES cache entry in CMakeLists.txt, the cuda-arch-features job in .github/workflows/ci.yml, .agents/specs/cuda-arch-additivity.md §W8, .agents/backend-matrix.md BACKEND-CUDA-SM120 | IMPLEMENTED — sm_120a is BUILD-supported, not runtime-supported. Proven: the same-family fat build "120a;121a" configures, compiles -Werror 0-warn and carries real sm_120a SASS in 38 TUs; the feature table resolves all five capabilities for 120a and 120a;121a; GB10 regressions UNCHANGED on the fat binary. NOT proven: any sm_120 execution — no such board here. Zero kernel, model, runner or feature-table edits were needed, which is the §A.3 additive prediction confirmed by measurement. Triton AOT stays single-arch by cubin nature and now says so; no cubins were faked. | 2026-07-22 | | CLAIM-CUDA-SM090-BRINGUP | BACKEND-CUDA-SM090 (W9 of BACKEND-CUDA-ARCH-ADDITIVITY) | Claude Code (opus-4-8) | worktree /home/mudler/_git/vllm.cpp-wt-sm90a; dgx scratch ~/work/sm90a | worktree branch sm90a-bringup, base 4884d03 | src/vt/cuda/cuda_matmul_nvfp4.cu (the 3 native-fp4-helper guards ONLY), cmake/CudaArchFeaturesTest.cmake (90a/100a/90 single-arch EMPTY assertions), tests/vt/test_ops_nvfp4_fp4.cpp (cross-family registry test), .agents/specs/cuda-arch-additivity.md §W9, .agents/backend-matrix.md BACKEND-CUDA-SM090, README, docs/BENCHMARKS.md, roadmap, ledger, state | IMPLEMENTED — sm_90a (Hopper) is BUILD-supported, single-arch, PORTABLE-KERNELS-ONLY, the first CROSS-FAMILY arch off INVENTORIED. Proven (dgx nvcc 13.0, ~/work/sm90a): -DVLLM_CPP_CUDA_ARCHITECTURES=90a resolves all five fast paths DISABLED (no Hopper body — deviation #2), compiles/links -Werror 0-warn (BUILD_90A_EXIT=0), cuobjdump shows 16 TUs with real sm_90a SASS and nothing else. The guard fix is GB10-byte-identical (all 3 guards are no-ops when VT_FP4_MMA_SM120A is defined) — GB10 regression battery re-run on a production 121a build to prove it. NOT proven: any sm_90 execution — no Hopper board here — and there are NO Hopper fast-path kernels at all. The cross-family FAT build "90a;121a" still does NOT compile (ptxas rejects sm12x fp4 PTX for compute_90a); per-source gencode narrowing is the named next row (spec W7). Copying vLLM's 90a fast paths (FA3/CUTLASS-C3x/Machete/DeepGEMM) is a Hopper wgmma/TMA kernel campaign, out of scope. | 2026-07-23 | | CLAIM-CUDA-ARCH-EXPANSION | BACKEND-CUDA-SM080, BACKEND-CUDA-SM086, BACKEND-CUDA-SM087, BACKEND-CUDA-SM089, BACKEND-CUDA-SM100, BACKEND-CUDA-SM103, BACKEND-CUDA-SM110 (W10 of BACKEND-CUDA-ARCH-ADDITIVITY) | Claude Code (opus-4-8) | worktree arch-expansion (scratchpad); dgx COMPILE-VERIFY scratch ~/work/archexp | worktree branch arch-expansion, base origin/main b28174e6 | cmake/CudaArchFeaturesTest.cmake (EMPTY-resolution expectations for 80/86/87/89/100a/103a/110), the VLLM_CPP_CUDA_ARCHITECTURES doc comment in CMakeLists.txt (comment only), .agents/specs/cuda-arch-additivity.md §W10 + status/work-breakdown, .agents/backend-matrix.md (the seven rows + intro), README, roadmap, ledger, state | IMPLEMENTED — the CROSS-FAMILY BUILD-SUPPORTED FAN-OUT. Ampere/Ada sm_80/86/87/89 (major 8), datacenter Blackwell sm_100a/103a (major 10) and sm_110 (major 11) move INVENTORIED -> BUILD-supported, single-arch, PORTABLE-KERNELS-ONLY, mirroring sm_90a exactly (all five fast-path FEATURE-TABLE cells resolve EMPTY). Proven (dgx nvcc 13.0, cutlass 4.5.0, ~/work/archexp, base b28174e6, -DVLLM_CPP_TRITON=OFF): every added arch configures all five features DISABLED; the per-major representatives sm_80, sm_100a, sm_110 each compile/link -Werror 0-warn (EXIT=0) with cuobjdump -lelf showing 16 TUs of real per-arch SASS and nothing else (the 22 fast-path TUs absent — the sm_90a shape); same-major siblings share the identical portable bodies and are pinned in CudaArchFeaturesTest.cmake. ZERO kernel/model/runner/sampler edits — W9's VT_FP4_MMA_SM120A guards already generalized the compile — so the sm_121a GB10 default build config is byte-identical (the only CMakeLists change is comment text). NOT proven: any execution on any of these boards (none here) and there are NO fast-path kernels for these families at all. SCOPED-OUT, non-additive, recorded honestly: sm_70 (Volta, nvcc-13-rejected + no bf16 tensor cores), sm_75 (Turing, portable bf16-WMMA TU fails to compile — needs an fp16 kernel body), sm_101a (nvcc-13-rejected, toolkit-blocked here). This is a BUILD claim, NOT runtime support. | 2026-07-26 | | CLAIM-CUDA-AMPERE-SCOPE | BACKEND-CUDA-SM080, BACKEND-CUDA-SM086, BACKEND-CUDA-SM087, BACKEND-CUDA-SM089, BACKEND-CUDA-COMP-ALLSPARK, BACKEND-CUDA-COMP-SCALEDMM-C2X | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-adb843dde95033953 (SPIKE ONLY — no build, no GPU, no download; read-only on production code) | worktree branch worktree-agent-adb843dde95033953, base local main 11e0ba36 | SPIKE ONLY. Owns EXACTLY .agents/specs/cuda-arch-ampere-fastpath.md (new) + the six rows above + the Ampere fast-path intro paragraph in .agents/backend-matrix.md; CROSS-REFERENCE-only edits to BACKEND-CUDA-COMP-MARLIN/BACKEND-CUDA-COMP-FA Spike/spec+State cells (they STAY PARTIAL — not regressed); records (docs/STATUS.md, docs/BENCHMARKS.md, .agents/parity-ledger.md, .agents/state.md, this claim). MUST NOT touch any kernel/model/runner TU, the umbrella roadmap, README, or Metal/demo files (concurrent session owns those). Scopes the DERIVE-AND-SHIP port of the Ampere major-8 fast-path kernel bodies (FA2 table-edit, Marlin int4 W4A16 + fp8-input, AllSpark W8A16, scaled-mm C2x int8/fp8) 1:1 from vLLM 555967922 + the AGX Orin (sm_87) runtime-gate plan (the one reachable non-GB10 board → RUNTIME-VERIFIED; everything else DERIVED+BUILD-VERIFIED, testing-welcome) | SPIKE | 2026-07-27 — spike written; six rows moved to SPIKE; MARLIN/FA cross-referenced (kept PARTIAL); records + checkers green; NOT pushed | | CLAIM-CUDA-AMPERE-FA2-WA1 | BACKEND-CUDA-SM080, BACKEND-CUDA-SM086, BACKEND-CUDA-SM087, BACKEND-CUDA-SM089 (FA2 leg) — WA-1 of .agents/specs/cuda-arch-ampere-fastpath.md | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-a85d473507104438b; dgx GB10 build-verify scratch ~/ampere-fa2-verify (git archive transfer), all GPU under flock $HOME/gpu.lock | worktree branch worktree-agent-a85d473507104438b, base local main 2bf1aaa9 | DERIVE-AND-SHIP (build-verify). Owns the fa2 FEATURE-TABLE cell (cmake/CudaArchFeatures.cmake), the VLLM_CPP_CUTLASS_HEADERS + FA2-gate host-predicate in CMakeLists.txt, the fa2 assertions in cmake/CudaArchFeaturesTest.cmake, and the FA2-leg cells of BACKEND-CUDA-SM080/086/087/089 + BACKEND-CUDA-COMP-FA Ampere leg + the WA-1 intro note in .agents/backend-matrix.md; records (docs/STATUS.md, docs/BENCHMARKS.md, roadmap_v1.md ROAD-V1-D1-CUDA, specs/roadmap-v1-completion.md, specs/cuda-arch-ampere-fastpath.md WA-1, .agents/parity-ledger.md, .agents/state.md, this claim). MUST NOT touch README/Metal/demo (concurrent session owns those), or any kernel/model/runner TU. Ships LABELED DERIVED+BUILD-VERIFIED (testing-welcome) — NO Ampere board here. | DONE (DERIVED+BUILD-VERIFIED) | 2026-07-27 — fa2 cell → 8.0,8.6,8.7,8.9,12.0a,12.1a + FA2 gate decoupled onto VLLM_CPP_CUTLASS_HEADERS; dgx 87+80 -Werror 0-warn + cuobjdump sm_87/sm_80 FA2 cubins (7 TUs); resolver test ENABLED 80/86/87/89; sm_121a OLMo-2 SACRED gate 16/16; records + checkers green; NOT pushed | | CLAIM-MLA-DEEPSEEK | MODEL-TEXT-deepseek-v2-deepseek-v2-for-causal-lm, MODEL-TEXT-deepseek-v2-deepseek-for-causal-lm, MODEL-TEXT-kimi-linear-kimi-linear-for-causal-lm | Claude Code (opus-4-8) | worktree agent-a5c1b57e0f74e4423 (W8; dgx goldens/build/gates at ~/w8mla); earlier legs agent-a06bba75ea226aadc (W7, ~/w7mla_src), agent-a05498a1005f452af (W6, ~/w6mla), agent-a43819c9776dc1585 (W5, ~/w5mla) | worktree branch, base 04f5c01 (W8); earlier legs ce43c51 (W7), 2846467 (W6), 5395203 (W5), ed2c342 (W4), a05437f (W2+W3), fb3fd5d (W0+W1), b4f14ee (spike) | SPIKE ONLY, no implementation. Owns .agents/specs/mla-deepseek-campaign.md plus the five model-matrix rows above and the corrective dependency-cell edits on the two MiniMax-M3 rows (which stay INVENTORIED). Determined: (1) MLA architecture + the full upstream chain incl. the dependency chain below vLLM (Triton MLA decode = vLLM <- SGLang <- lightllm); (2) GB10/sm_121 selects TRITON_MLA for dense MLA (vllm/platforms/cuda.py:129-133 — the major == 12 list has exactly two entries and the other is sparse-only) and FLASH_ATTN for MLA prefill (mla/prefill/selector.py:74-77), so every sm90/sm100-only MLA kernel (FlashMLA, CUTLASS MLA, FlashInfer MLA, TokenSpeed) is out of reach and out of scope; (3) the CROSS-CUTTING COST = the compressed-latent KV cache (one 576-wide latent per token, num_kv_heads=1, no separate V; upstream cache shape is 3D at mla_attention.py:1216-1224), which our tree cannot express — runner.cpp:487-492 hardcodes the K+V factor 2 and derives shape from the HF config, and vt::ReshapeAndCache/vt::PagedAttention (include/vt/ops.h:1167,1201) have K/V-pair signatures. Block manager/prefix caching are NOT affected (upstream maps MLA onto the stock FullAttentionManager, single_type_kv_cache_manager.py:1539); (4) HW verdict — only DeepSeek-V2-Lite (~29.3 GiB bf16) fits GB10; V3/V3.2 (~1250 GiB), Kimi-K2.5 (~2000 GiB), MiniMax-M2 (~428 GiB) and M3 are HW-BLOCKED e2e (dgx has 238 GiB free disk, 119 GiB unified); Kimi-Linear-48B (~89.4 GiB) is HW-MARGINAL; (5) three inventory corrections — Kimi-Linear IS MLA (NoPE), MiniMax M2/M3 are NOT MLA, DeepseekForCausalLM is NOT MLA (plain MHA); plus the user-premise correction that no "Kimi K3" exists at the pin (K2.5 is newest). W0-W10 breakdown recorded in the spike §10. W0 + W1 LANDED 2026-07-21 (worktree agent-a95c0c3038971eb12, base fb3fd5d; dgx scratch ~/scratch_mla_w1). W0 = ground the facts, NO code: DeepSeek-V2-Lite fetched to dgx (30 GB, 4 shards, snapshot 604d5664) and loaded in the vLLM 0.25.0 oracle; both flagged source reads CONFIRMED BY OBSERVATION on sm_121 — the oracle prints Using TRITON_MLA attention backend out of potential backends: ['TRITON_MLA'] and Using FLASH_ATTN MLA prefill backend, so W4/W5 target the right kernels and the sm90/sm100-only MLA family stays out of scope; the real config.json confirms every geometry number (576-wide latent = kv_lora_rank=512+qk_rope=64, qk_nope=128, v_head_dim=128, q_lora_rank=null, n_group=topk_group=1 softmax/greedy, 64+2 experts, 27 layers) plus is_neox_style=False and the mscale^2 correction; both recorded coverage gaps are real (no fused_qkv_a_proj branch, no e_score_correction_bias -> unit-gated only). Incidental W9 input: the oracle's MoE backend is FlashInfer CUTLASS, not Triton fused_moe. W1 = spec-driven KV allocation, ZERO MLA math: MLAAttentionSpec (factor-1 page formula, KVCacheSpecKind::kMlaAttention, registered against the ORDINARY FullAttentionManager per single_type_kv_cache_manager.py:1539), ResolveKvCacheDType() centralising the KV storage dtype onto the spec, and runner.cpp sizing every attention buffer as num_blocks * spec->page_size_bytes() + building its PagedKvCache view from the spec instead of the HF config. Owns additionally: include/vllm/v1/kv_cache_dtype.h (new), include/vllm/v1/kv_cache_interface.h, src/vllm/v1/kv_cache_interface.cpp, src/vllm/v1/kv_cache_spec_registry.cpp, src/vllm/v1/worker/gpu/runner.{h,cpp}, the three model KV factories (qwen3_5_common.cpp, qwen3_dense.cpp, qwen3_moe_registry.cpp), tests/vllm/v1/test_kv_cache_interface.cpp, tests/vllm/v1/worker/test_runner.cpp. Gated: clean dgx CUDA -Werror 0 warn/0 err; 27B 235/235 + 35B 315/315 + Qwen3-Coder 6/6 + Qwen3-dense 16/16 UNCHANGED; test_runner 15/15, test_kv_cache_interface 21/21, test_llm_engine 5/5; new path proven EXERCISED via fa_page_size_bytes() + a page_size_padded case. NO MLA ops, NO MLA model, NO backend-selection change — no model row moves off SPIKE W2 + W3 LANDED 2026-07-21 (worktree agent-afc317d70ffbd733f, base a05437f). W2 = the MLA branch of _get_backend_priorities, as DATA: the whole of cuda.py:84-176 (BOTH branches — MLA sm_100 incl. the :96-115 adaptive sparse tail, MLA sm_12x, MLA else, and the two pre-existing non-MLA arms) is now a TABLE in the NEW header include/vllm/platforms/cuda_attn_priority.h, one row per upstream arch arm keyed on (use_mla, major); a new arch is a ROW. It is a HEADER, not the CUDA-only TU, so the CPU test tier asserts the REAL table and the pre-W2 hand-copied FakeCudaPlatform duplicate is deleted. AttnSelectorConfig (interface.h) carries use_mla/use_sparse/num_heads/quantized_kv_cache, all defaulting to the pre-W2 dense answer. The DSA/sparse seam is left OPEN and unit-proven: GB10 keeps BOTH upstream entries and the sparse one is eliminated by a real FILTER — AttentionBackend::is_mla()/is_sparse() compared against the request in SelectAttentionBackendName, mirroring backend.py:307-360 validate_configuration — so a future DSA backend is selected by declaring is_sparse() == true, with ZERO edit to the table or the selector (the test registers a stand-in sparse backend and shows both directions). TritonMLABackend registers the NAME + upstream's 3-D get_kv_cache_shape (mla_attention.py:1216-1224, no K/V axis, num_kv_heads != 1 REFUSED) with get_impl_cls() deliberately still nullptr. MLA prefill priority ported too (mla/prefill/selector.py:47-76; GB10 -> [FLASH_ATTN] alone). W3 = two new vt:: ops, both CPU-reference-gated. (a) vt::ConcatAndCacheMlaOpId::kConcatAndCacheMla + validation + CPU ref + CUDA, ported 1:1 from csrc/libtorch_stable/cache_kernels.cu:401-442 (+ wrapper :842-905). Per the whole-chain rule this was VERIFIED rather than assumed: _custom_ops.py:2532 binds straight to torch.ops._C_cache_ops.concat_and_cache_mla from vLLM's OWN csrc — there is no flashinfer/cutlass/TRT-LLM variant in the dense-bf16 path, the only sibling being the out-of-scope concat_and_cache_ds_mla_kernel fp8 layout (which our dtype check refuses); the only thing that displaces it is the COMPILE-TIME mla_rope_kvcache_cat_fusion.py:40 RoPE fold, deferred to W9. It concatenates the latent + rope part into ONE 576-wide entry — the write ReshapeAndCache's (k,v,k_cache,v_cache) signature cannot express — and is STRIDE-driven on every operand so a per-layer cache slice and the two column halves of kv_a_proj_with_mqa both work copy-free. (b) The SHARED vt::MoeRouterTopK grouped-topk (noaux_tc) extension this table flagged as owed to both campaigns — landed HERE, so CLAIM-GLM-DSA-LATEST-DEEPSEEK consumes it and must NOT reimplement it. Additive MoeRouterTopKArgs fields (scoring_func/num_expert_group/topk_group/routed_scaling_factor) + an optional trailing e_score_correction_bias tensor; ported 1:1 from grouped_topk_router.py:106-161. The existing router is byte-identical BY CONSTRUCTION, not by measurement: num_expert_group == 0 dispatches the ORIGINAL kernel on both devices and a separate MoeRouterGroupedTopKKernel implements the new path. Recorded deviation: upstream torch.topk has unspecified tie order; we keep lowest-index-wins for both group and expert selection, which is what makes CPU and CUDA agree bit-for-bit. The noaux_tc evidence is UNIT-ONLY and says so: V2-Lite has n_group=topk_group=1 and no bias, so the e2e vehicle exercises none of it; tests/vt/test_ops_moe_router_grouped.cpp runs at V3's REAL dims (256 experts, n_group=8, topk_group=4, top_k=8, sigmoid, scaling 2.5, WITH the bias) against an INDEPENDENT sort-based transcription of the upstream formula. Owns additionally: include/vllm/platforms/cuda_attn_priority.h (new), include/vllm/platforms/interface.h, src/vllm/platforms/{cuda,cpu}.cpp, include/vllm/v1/attention/{backend,registry}.h, src/vllm/v1/attention/{backend,registry}.cpp, include/vt/ops.h, src/vt/ops.cpp, src/vt/cpu/{cpu_cache,cpu_ops}.cpp, src/vt/cuda/{cuda_cache.cu,cuda_moe.cu}, tests/vllm/v1/attention/test_attn_backend_registry.cpp, tests/vt/test_ops_mla_cache.cpp (new), tests/vt/test_ops_moe_router_grouped.cpp (new), tests/CMakeLists.txt. NO MLA attention math, NO MLA model, NO forward — no model row moves off SPIKE. W4 LANDED 2026-07-22 (worktree agent-a3de4e8cccbae9c23, base ed2c342, dgx scratch ~/w4mla; rows STAY SPIKE — W4 adds a kernel and fills a nullptr, it makes no model supported). W4 = the MLA DECODE kernel vt::MlaDecodeAttention — the MQA decode over the compressed latent (QK 576 / V 512, num_kv_heads == 1) reading the paged 3-D cache W3 writes. STRUCTURE port with file:line on both sides, of the pair W0 OBSERVED EXECUTING: MlaDecodeStage1 <- triton_decode_attention.py:278-458 _fwd_grouped_kernel_stage1 (the IS_MLA branch), MlaDecodeStage2 <- :575-639 _fwd_kernel_stage2, launchers <- :470-573/:642-682/:719-754, ComputeNumKvSplits <- triton_mla.py:40-47, TritonMLAImpl::forward_mqa <- :189-260, the split workspace <- :57-78 (as the house grow-only per-stream scratch with RetireGraphScratch), and the CPU reference's numerics <- csrc/cpu/mla_decode.cpp. The ACTUAL Triton was read, not the wrapper — which is how :424-431's v = tl.trans(k) was ported correctly: under IS_MLA NO V tile is loaded at all, V is the leading 512 columns of the SAME latent row already loaded as K, so one shared-memory tile is both. Honest FA-2 reuse verdict, recorded in the TU header: our FA-2 split+combine fit at the ALGORITHM level (split schedule + LSE merge algebra + the fixed-ascending / never-atomicAdd determinism rule) and NOT at the code level — the vendored launcher takes separate 4-D k/v caches and is instantiated only for symmetric head_dim {128,256}, which cannot express a 3-D single-buffer cache with QK 576 / V 512; generalizing it is W5's PREFILL job. Evidence is UNIT-LEVEL and deliberately strong (no e2e model until W7): tests/vt/test_ops_mla_attn.cpp ports test_mla_decode_cpu.py — its ref_mla as an INDEPENDENT TWO-PASS oracle (a different algorithm from the streaming online-softmax both impls use), its full parametrization, both varlen arms, and its NaN-padding out-of-bounds detector — plus the test_mla_backends.py shape sweep, all at the REAL V2-Lite geometry (576/512/64, block 16, the mscale^2-corrected scale, reverse-interleaved block tables so any page-stride assumption fails): ragged 1/15/16/17/255/256/257/300, multi-block, single-block single-token, EVERY split boundary ({1,2,3,4,5,8,16,17,64,300,512} incl. splits > seq_len, the empty-split path both stages must skip), 128-head V3 (head_tiles > 1), head counts 1/3/17 that do not fill a BLOCK_H tile, a 288/256 block-32 geometry, bf16 + f32, run-to-run BIT-exact over 5 runs. dgx/sm_121: 11/11 cases, 2,303,193 assertions, with the 7 CUDA cases proven to EXECUTE (2,106,080 alone) and the output pre-poisoned to NaN. Memory safety run DELIBERATELY per the W3 lesson: memcheck 0 errors, and because this is a __syncthreads-coordinated shared-memory kernel (a class memcheck does NOT cover) racecheck 0 hazards and synccheck 0 errors too. TritonMLABackend::get_impl_cls() now returns a real TritonMLAImpl + MLACommonMetadata; PREFILL is W5 and forward() refuses a prefill-shaped batch BY NAME. Recorded deviations: RegisterOp table not cuda_arch_tactics (no per-arch tactic exists to choose between yet — a W9 concern); fp8 KV cache + logit_cap NOT ported (out of scope / unreachable, both refused); seq_len == 0 writes zeros; TritonMLAImpl::queue replaces torch's ambient stream. Gated: clean dgx CUDA build 0 warn / 0 err; 27B 235/235 + 35B 315/315 + Coder 6/6 + Qwen3-dense 16/16 + OPT 6/6 UNCHANGED; benchmark_binding=false (decode perf is W9). Owns additionally: include/vt/ops.h, src/vt/ops.cpp, src/vt/cpu/cpu_mla_attn.cpp (new), src/vt/cuda/cuda_mla_attn.cu (new), include/vllm/v1/attention/backend.h, src/vllm/v1/attention/backend.cpp, tests/vt/test_ops_mla_attn.cpp (new), tests/vllm/v1/attention/test_attn_backend_registry.cpp, CMakeLists.txt, tests/CMakeLists.txt. NO MLA PREFILL, NO MLA MODEL, NO FORWARD, NO WEIGHT ABSORPTION — no model row moves off SPIKE. W5 LANDED 2026-07-22 (worktree agent-a43819c9776dc1585, base 5395203, dgx scratch ~/w5mla; rows STAY SPIKE). W5 = MLA PREFILL + the CHUNKED-CONTEXT LOOP. Three new vt:: ops plus a device-agnostic driver, each file:line-cited both sides: vt::MlaPrefillAttention <- mla/prefill/flash_attn.py:153-248 (FlashAttnPrefillBackend), the ONLY MLA prefill backend reachable on sm_121 (mla/prefill/selector.py:66-76, which HARD-RAISES with no fallback at :191-194) and the one W0 OBSERVED the oracle logging; vt::GatherMlaCache <- csrc/libtorch_stable/cache_kernels.cu:992-1064; vt::MergeAttnStates <- csrc/libtorch_stable/attention/merge_attn_states.cu:18-192; and the loop itself in the NEW header include/vllm/model_executor/layers/attention/mla_chunked_context.h <- mla_attention.py:1422-1451 (workspace sizing), :1667-1745+:1837-1855 (the chunk grid), :2094-2199 (_compute_prefill_context), :2344-2425 (forward_mha). THE FA-2 LAUNCHER WAS GENERALIZED — W4's prediction held, and the reason is that upstream does not ask FA-2 for asymmetric head dims either: requires_v_padding is TRUE on GB10 (flash_attn.py:88-99), so V is ZERO-PADDED 128->192 and the output sliced back (:164-168, :196-197), leaving a plain SYMMETRIC head_dim-192 kernel. The whole generalization is (a) two new explicit instantiations of the UNCHANGED generic run_mha_fwd_splitkv_dispatch<bf16,192,{true,false}>, (b) a NEW entry point LaunchMlaPrefillFA2Bf16 for the CONTIGUOUS-varlen mode (cu_seqlens_k instead of block_table+seqused_k, already supported at flash_fwd_kernel.h:584-590), (c) the pad/slice pair. Existing models proven byte-identical STRUCTURALLY and BY GATE: the diff of cuda_flash_attn_fa2.cu is 211 insertions / 0 deletions, the vendored FA-2 tree gains only 2 files, and LaunchPrefillFA2Bf16 — the paged launcher every non-MLA prefill calls — is textually untouched; 27B 235/235 + 35B 315/315 + Coder 138/138 + Qwen3-dense 664/664 + OPT 36/36 ALL UNCHANGED. Evidence is UNIT-ONLY and held to the W4 bar: tests/vt/test_ops_mla_prefill.cpp 4/4 cases / 2,377,052 assertions (port of test_mla_backends.py + the bf16 arm of test_mla_prefill_quant_output.py; its fp8 arms are NOT ported and say so — they need device-capability family 100, unreachable on sm_121) and tests/vt/test_ops_mla_chunked_context.cpp 5/5 / 306,037 assertions, both on dgx sm_121 at the REAL V2-Lite prefill geometry (QK 192 = 128 nope + 64 rope, V 128, latent 576, block 16, mscale^2 scale). The oracle is INDEPENDENT (double-precision TWO-PASS softmax, a different algorithm from FlashAttention's streaming online-softmax), and the chunked loop is additionally gated against a SINGLE-SHOT whole-sequence oracle that NEVER CHUNKS — exact / +1 / -1 chunk boundaries, a request with no context at all, a chunk in which a request contributes ZERO keys, ragged multi-chunk, V3's 128 heads; ADVERSARIAL reverse-interleaved block tables throughout; NaN-poisoned outputs; run-to-run BIT-exact over 5 runs. memcheck 0 errors, racecheck 0 hazards, synccheck 0 errors on BOTH binaries; clean dgx CUDA build 0 warn / 0 err. An upstream FA-2 QUIRK was found and worked around, recorded as a deviation: with unpadded_lse = true the MAIN path writes LSE at the unpadded offset (flash_fwd_kernel.h:1038-1041) but the EMPTY-K early exit (:1030-1043) ignores the flag and writes at the PADDED offset — and a zero-key request IS reachable in the chunked loop (the very case merge_attn_states.cu:100-106 documents), so the mixed layout would clobber valid rows and write out of bounds. We run with unpadded_lse = false into a [b,h,max_seqlen_q] scratch and convert, normalizing FA-2's +INFINITY empty-row LSE to -inf (the value the merge normalizes it to anyway). Other deviations: MergeAttnStates is SCALAR not 128-bit-packed (same arithmetic, any head_size/stride; vectorization is W9); the kv_b_proj up-projection is a CALLBACK because it is a MODEL weight (W6); DCP/context-parallel and fp8-prefill NOT ported (single-GPU; capability-family-100 only). Owns additionally: src/vt/cpu/cpu_mla_prefill.cpp (new), src/vt/cuda/cuda_mla_prefill.cu (new), src/vt/cuda/flash_attn/src/flash_fwd_split_hdim192_bf16{,_causal}_sm80.cu (new), include/vllm/model_executor/layers/attention/mla_chunked_context.h (new), tests/vt/test_ops_mla_prefill.cpp (new), tests/vt/test_ops_mla_chunked_context.cpp (new), plus append-only additions to include/vt/ops.h, src/vt/ops.cpp, src/vt/cuda/cuda_flash_attn_fa2.cu, CMakeLists.txt, tests/CMakeLists.txt. NO MLA MODEL, NO MLA FORWARD, NO WEIGHT ABSORPTION — no model row moves off SPIKE. W6 LANDED 2026-07-22 (base 2846467; rows STAY SPIKE — W6 adds an attention LAYER, not a model). The MLA attention BLOCK + LOAD-TIME WEIGHT ABSORPTION — the layer that finally COMPOSES W3's cache write, W4's MQA decode and W5's MHA prefill (mla_attention.h, mla_attention.cpp): the projections with BOTH q_lora_rank branches (fused_qkv_a_proj -> q_a_layernorm -> q_b_proj, or the direct q_proj), the two RMSNorms (the rope part deliberately NOT normed, deepseek_v2.py:516), the DECOUPLED RoPE (is_neox_style=False, only the 64-dim trailing slice rotates) with its YaRN cos/sin cache and the SEPARATE mscale^2 softmax-scale correction, the kv_b_proj -> W_UK/W_UV split, the prefill-MHA / decode-MQA dispatch (decode tokens packed FIRST, mla_attention.py:700-709), and the kv_b_proj up-projection callback W5 left open. Absorption needed NO new attention kernel — it is a load-time weight transform plus TWO BATCHED GEMMs exactly as the spike's §2.2 predicted — so the whole new-kernel surface is two general primitives: vt::BatchedMatmul <- torch.bmm (mla_attention.py:789, :1034; on CUDA torch resolves that to cuBLAS gemmStridedBatchedEx, and ours is the cuBLASLt strided-batched form of the same GEMM) and vt::ConcatMlaNopeRope <- concat_mla_q (csrc/libtorch_stable/concat_mla_q.cuh + cache_kernels.cu:1555-1600) generalized to also serve _concat_k_nope_k_pe (:2063-2092). THE ABSORBED-vs-UNABSORBED EQUIVALENCE IS PROVEN NUMERICALLY, THREE WAYS, not argued: (1) an INDEPENDENT double-precision block oracle computes the attention BOTH ways and they agree to < 1e-11 (the identity itself); (2) our absorbed decode reproduces the UNABSORBED oracle to < 2e-4 in f32; (3) — the strongest — the SAME batch is driven once through our ABSORBED MQA decode kernel (QK 576 / V 512, one KV head, K/V never materialized) and once through our UNABSORBED materialized-MHA prefill path (QK 192 / V 128 over kv_b_proj output plus the chunked-context loop), agreeing to < 3e-4 (CPU f32) / < 4e-2 (CUDA bf16) — nothing but the weights is shared, so an absorption bug cannot cancel out. Evidence on dgx sm_121: test_mla_attention_block.cpp 10/10 cases / 2,372,644 assertions and test_ops_mla_absorb.cpp 9/9 / 1,644,807 assertions (CUDA cases proven to EXECUTE, 124,941 + 290,835 when run alone; NaN-poisoned outputs; run-to-run BIT-exact). Ports tests/kernels/test_concat_mla_q.py (both arms, incl. the transposed-nope case, compared bit-exactly). Clean dgx CUDA build 0 warn / 0 err; compute-sanitizer memcheck 0, racecheck 0 hazards, synccheck 0 (the last needing --num-cuda-barriers 65536 — the default barrier table OVERFLOWS on a binary that drives this many kernel families and the tool then reports a bogus unspecified launch failure; recorded because it looks exactly like a real defect). REGRESSION SET UNCHANGED: 27B 235/235, 35B 315/315, Qwen3-Coder 138/138, Qwen3-dense 664/664, OPT 36/36. Coverage gap stated plainly: the q_lora query branch has NO e2e coverage and cannot get any here — DeepSeek-V2-Lite has q_lora_rank=null, so it is UNIT-GATED ONLY (at DeepSeek-V3's real 7168/128-head/1536 dimensions); GLM-4.7-Flash (q_lora_rank=768, 58.2 GiB, FITS GB10) is what would close it later and was deliberately NOT attempted. Deviations: the A-projections are issued per weight ROW-SLICE rather than one fused GEMM (vt::RmsNorm needs contiguous inputs; the checkpoint PACKING is unchanged and this is the dense block's own default — a fused A-GEMM is a W9 A/B); vt::ConcatMlaNopeRope is SCALAR not 128/256-bit vectorized (a concat is a pure copy, so the bytes are identical; W9); and two ADDITIVE relaxations — vt::RopeFromCache stride-driven on q/k and vt::MatmulBT accepting a row-strided ACTIVATION — both integer-identical for contiguous tensors and so bit-identical for every existing model by construction AND by gate. An upstream ORDERING INVARIANT was found and documented: within the prefill tail the WITH-CONTEXT requests must come FIRST (prefill_tokens_with_context = query_start_loc[num_prefills_with_context], :1806-1810), which W7 must honour. NO MLA MODEL, NO MODEL FORWARD, NO REGISTRY ENTRY — no model row moves off SPIKE. Owns additionally: include/vllm/model_executor/models/mla_attention.h (new), src/vllm/model_executor/layers/attention/mla_attention.cpp (new), tests/vt/test_ops_mla_absorb.cpp (new), tests/vllm/model_executor/layers/attention/test_mla_attention_block.cpp (new), plus additive edits to include/vt/ops.h, src/vt/ops.cpp, src/vt/cpu/cpu_ops.cpp, src/vt/cuda/cuda_matmul.cu, src/vt/cuda/cuda_mla_attn.cu, src/vt/cuda/cuda_ops.cu, CMakeLists.txt, tests/CMakeLists.txt. W7 LANDED 2026-07-22 (base ce43c51; dgx build + gates at ~/w7mla_src). THE DEEPSEEK-V2 MODEL — registry + config parse + loader + forward. The first MLA MODEL in the tree: deepseek_v2.h, deepseek_v2_weights.cpp, deepseek_v2.cpp, deepseek_v2_registry.cpp, plus the ONLY shared-code edit — a two-line additive condition in runner.cpp recognising a KVCacheSpecKind::kMlaAttention group as the model's attention group (upstream maps MLA onto the ordinary FullAttentionManager, single_type_kv_cache_manager.py:1539, so block tables/prefix caching/eviction are untouched). LOADER GATE PASSED on the real 4-shard checkpoint: 5291/5291 tensors accounted for, ZERO unmapped and ZERO leftover (test_deepseek_v2_load.cpp 4/4 cases / 37,331 assertions), every shape asserted including the LOAD-TIME kv_b_proj -> W_UK_T [16,128,512] / W_UV [16,512,128] absorption split (mla::AbsorbKvBProjBf16 applied while the checkpoint bytes are in hand — the same transform, at the same lifecycle point, as upstream's process_weights_after_loading, mla_attention.py:875-962). V2-Lite takes the DIRECT q_proj query branch (q_lora_rank: null, deepseek_v2.py:1028-1034) — asserted, with fused_qkv_a_proj/q_a_layernorm/q_b_proj EMPTY on every layer; the fused branch is implemented (the loader un-fuses packed_modules_mapping["fused_qkv_a_proj"]) but stays e2e-uncovered on this box, exactly as the spike §5.1 recorded. FORWARD GATE PASSED and obviously right, not merely finite: the real DeepSeek-V2-Lite prefill of The capital of France is -> argmax Paris (top-5 Paris, the, a, one, also; run-to-run bit-exact) — the direct analogue of the Qwen3-Coder W3 sanity case. BATCH-ORDERING GATE: BuildMlaBatchSplit is a PURE HOST reproduction of split_decodes_and_prefills (mla_attention.py:1640-1649, reorder_batch_threshold == 1 at :1420) + prefill_tokens_with_context (:1806-1810) that VALIDATES both orderings instead of assuming them — a decode after a prefill THROWS and a with-context prefill after a context-free one THROWS, each naming the request index and citing the upstream line; W6 measured 0.86 relative error from exactly the second violation, which is now unrepresentable rather than silent. SHARED EXPERTS (new for this family) gated TWO ways: DeepSeek's shared expert is a plain MLP ADDED to the routed sum (deepseek_v2.py:344-357, moe_runner.py:407) with NO sigmoid gate unlike Qwen3.6's — (1) with every routed expert zeroed a MoE layer is BIT-IDENTICAL (memcmp) to a dense layer holding the same MLP, (2) turning the shared expert off CHANGES the logits, so the path demonstrably runs. THE CUDA PATH IS EXERCISED, NOT MERELY COMPILED: a CUDA case at the REAL MLA head geometry (QK 192 / V 128 / 576 latent — the only head_dim W5's FA-2 MLA prefill is instantiated for) drives the CUDA MLA kernels, vt::ConcatAndCacheMla, vt::BatchedMatmul and the CUDA-ONLY grouped bf16 MoE GEMM branch, bit-exact run to run on device and agreeing with the CPU reference path to 0.0061 worst relative logit error; test_deepseek_v2_forward.cpp 11/11 cases; compute-sanitizer memcheck 0, racecheck 0 hazards, synccheck 0 (--num-cuda-barriers 65536). Clean dgx CUDA build 0 warn / 0 err. A LATENT TREE-WIDE HAZARD WAS FOUND (pre-existing, NOT MLA): the shared DevicePool (device_pool.h) is a process-wide singleton keyed only on a byte size class and documents itself "backend-agnostic" — safe for the engine (one device per process) but NOT for a test binary running both a CPU and a CUDA forward, which hands the second backend the first's recycled pointers (observed as a SIGSEGV dereferencing a CUDA block on the host). Worked around TEST-LOCALLY with a per-arm DevicePool via the existing ActivePoolScope; the hazard itself is recorded, not papered over. DEVIATIONS: (1) only DeepseekV2ForCausalLM is REGISTERED, not the four aliases the plan namedDeepseekForCausalLM is plain MHA (deepseek_v2.py:1201-1211), V3 is fp8/671B (no bf16 loader path, no hardware), V3.2 needs the DSA indexer; all three are REFUSED BY NAME in the config parse and W10 owns their honest rows; (2) the MoE block does NOT reuse RunMoeBlock — DeepSeek's router is grouped and its shared expert ungated, so reusing Qwen's block would have applied Qwen's semantics; writing it directly over the same vt:: ops is also why the regression set is UNCHANGED despite the shared-expert path activating; (3) routed_scaling_factor scales the ROUTING WEIGHTS rather than the combined routed OUTPUT (same function, different rounding order; V2-Lite has 1.0 so they are bit-identical on the W8 vehicle); (4) the chunked-prefill workspace is sized from config.max_position_embeddings + this step's num_reqs because a model forward has no VllmConfig; (5) no decode CUDA-graph sibling and no speed number (W9). REGRESSION SET UNCHANGED. NO TOKEN-EXACT GATE — that is W8 — so NO MODEL ROW MOVES OFF SPIKE: a loading, forwarding model is not a supported model. Owns additionally: the four deepseek_v2* files (new), src/vllm/v1/worker/gpu/runner.cpp, tests/vllm/models/test_deepseek_v2_load.cpp (new), tests/vllm/models/test_deepseek_v2_forward.cpp (new), tests/vllm/models/test_model_registry.cpp + tests/vllm/test_model_loader_gguf.cpp (registry-inventory updates: 5 -> 6 architectures), CMakeLists.txt, tests/CMakeLists.txt.| ACTIVE (W0-W10 landed; the W-plan is COMPLETE — the claim stays open only because the V2 row is ACTIVE, not DONE) | 2026-07-22 (W0+W1, W2+W3, W4, W5, W6, then W7, committed on worktree branches; NOT pushed. Next: W8 — the SACRED token-exact gate on DeepSeek-V2-Lite: wire the paged engine to produce the MLA batch order BuildMlaBatchSplit already validates (decodes first; with-context prefills leading the prefill tail), capture goldens from the vLLM 0.25.0 oracle and run the STRICT token-exact form W0 determined, with the regression set unchanged and memcheck 0. Superseded next-step, kept for context: W7 — the DeepSeek-V2 model TU: registry (all four aliases; DeepseekForCausalLM takes the MHA branch), config parse, the MLA-only KV group, the per-expert bf16 loader with shared experts and the kv_b_proj -> W_UK/W_UV absorption applied at LOAD time, and the forward composing W6's MLA block with RunMoeBlock and the first first_k_dense_replace dense layers. It must honour the W6-documented ordering invariant (with-context prefills first). Superseded next-step, kept for context: W6 — the MLA attention BLOCK + load-time weight absorption. Superseded next-step, kept for context: W5 — MLA prefill: generalize the vendored FA-2 varlen launcher to qk 192 / v 128 (GB10's MLA prefill backend is FLASH_ATTN, confirmed at W0), mirror requires_v_padding (V zero-padded 128 -> 192, sliced back), and implement the workspace-bounded chunked-context loop with the LSE merge; ports of test_mla_backends.py + test_mla_prefill_quant_output.py) | W8 LANDED 2026-07-22 — THE SACRED CORRECTNESS GATE PASSES 8/8, and the row MODEL-TEXT-deepseek-v2-deepseek-v2-for-causal-lm moves SPIKE -> ACTIVE (correctness COMPLETE, speed PENDING). It does NOT reach DONE: DONE requires vLLM-speed parity on every axis, which is W9 and has no number yet. The other four rows in this claim STAY SPIKE. Result: 8/8 prompts PASS — STRICT token-exact 5/8, near-tie band 3/8, 92/128 tokens strictly exact, max teacher-forced gap 0.25 nats, 0 forward-divergent (223 assertions). The bar was ARRIVED AT by measurement, not chosen: vLLM is DETERMINISTIC here at batch=1 (W0's K=5 8/8, re-confirmed by W8's capture at T=16 with 0 multi-valued cells), so the STRICT form ran FIRST and came out 5/8; the ratified TEACHER-FORCING diagnostic then showed 36 divergent positions with 35 at gap EXACTLY 0.0000 nats (vLLM's own argmax on OUR prefix IS our token), one root flip at 0.2500 nats inside the ratified 0.5-nat band, and ZERO tokens outside vLLM's top-20 — with the per-position nats COMMITTED as goldens. W8's first job — the scheduler/runner wiring — needed NO new code: runner.cpp:671 already reorders with decode_threshold = 1, exactly MLA's reorder_batch_threshold, and its decode -> short_extend -> long_extend -> pure_prefill ordering satisfies both MLA invariants; W8 PROVES that end to end with new diagnostic MlaBatchSplitStats counters (phase 2: MIXED=7 steps at max_num_reqs=8 with BuildMlaBatchSplit never throwing; phase 3: a prefix-cache-driven with-context prefill) rather than duplicating the reorder. The real blocker was the TOKENIZER: the first run REFUSED to load (unsupported normalizer Sequence) and behind it sat a whole NEW pre-tokenizer family — DeepSeek's HF Sequence PIPELINE of SEVEN stages — landed as SplitPattern::kDeepSeek and MEASURED token-for-token against the REAL HF tokenizers library (6/6 cases / 2461 assertions). ADDITIONALLY OWNED (new files/edits beyond the campaign's usual surface, flagged because they are SHARED code): include/vllm/tokenizer/pretokenizer.h, src/vllm/tokenizer/pretokenizer.cpp, src/vllm/tokenizer/tokenizer.cpp, tools/parity/dump_tokenizer.py (a --label arg), tests/vllm/test_bpe.cpp, NEW tests/vllm/test_tokenizer_parity_deepseek.cpp, NEW tests/vllm/models/test_deepseek_v2_paged_engine.cpp, NEW scripts/deepseek-v2-{oracle-capture,neartie-gap}.py + scripts/deepseek-v2-dgx-gate.sh, NEW goldens tests/parity/goldens/{deepseek_v2_greedy,tokenizer_deepseek_v2}/, plus the diagnostic counters in deepseek_v2.{h,cpp} and the tests/CMakeLists.txt glue. The tokenizer edits are the shared-code risk and are gated as such: the Qwen3.6 parity corpus, test_bpe 17/17, test_pretokenizer, test_detokenizer, test_input_processor and test_op_parity are all UNCHANGED, as are 27B 235/235, 35B 315/315, Coder 6/6, Qwen3-dense 16/16 and OPT 6/6 (run SERIALLY). Clean CUDA rebuild 0 warn/0 err; memcheck/racecheck/synccheck 0. W9 SPEED CLOSE LANDED 2026-07-22 — an ATTRIBUTED MISS; the row stays ACTIVE. Owns additionally src/vt/cuda/cuda_mla_attn.cu (the split-KV occupancy fill + the capture guard) and the DeepseekV2DecodeGraph additions in deepseek_v2.{h,cpp} / deepseek_v2_registry.cpp. The denominator question is SETTLED with evidence: vLLM's auto-selected FlashInfer CUTLASS unquantized MoE has now rebooted dgx five times (three at W8, two more at W9 with the Qwen3-Coder mitigations applied — the second on a PRISTINE freshly-rebooted box with a 0 GiB page cache; sudo is password-gated here so drop_caches was never available), both W9 deaths at the identical post-torch.compile memory-profiling phase, so --moe-backend triton IS vLLM's best STABLE graphed configuration on this hardware and is the bar. Two levers landed, both default-ON, gate 8/8 UNCHANGED: the MLA split-KV occupancy fill (VT_MLA_SPLIT_FILL=0 rolls back) — nsys found MlaDecodeStage1 at 44.7% of all GPU time and ~180x off its own memory-bound floor from a 2-CTA grid at batch 1, and filling the grid made it 18.3x faster for +69.5%/+53.3%/+32.0%/+19.5% end-to-end at c1/c2/c4/c8 — and the decode CUDA-graph sibling (VT_DEEPSEEK_CUDAGRAPH=0 rolls back), worth only ~+2% because this model's decode is GPU-bound. Grid: 0.86-0.95x vLLM output throughput (was 0.50x), TTFT now BEATS vLLM at c4/c8, TPOT/ITL pass at c2 only — see docs/BENCHMARKS.md § "Binding DeepSeek-V2-Lite (MLA) every-axis grid". NEXT LEVER (named, not vague): route the batch-1 dense projections off cuBLAS gemvx (31.8% of our GPU time) onto a tensor-core GEMM — vLLM splits the same work gemvx 12.7% + nvjet_sm121_tst_mma_* 6.6%. Then W10, the blocked-row honesty pass. W10 LANDED 2026-07-22 — the BLOCKED-ROW HONESTY PASS, which closes the campaign's W-plan. Records only: no code, no kernels, no build, no GPU work, nothing downloaded, no new number claimed. Rows moved to their FINAL HONEST state: MODEL-TEXT-deepseek-v2-deepseek-v3-for-causal-lm (V3 + V3.2, and Kimi-K2/K2.5's text backbone by config composition) SPIKE -> BLOCKED — HW-BLOCKED at ~642 GiB fp8 / ~1250 GiB bf16 (671B) against 119 GiB unified memory, and V3.2 additionally DEP-BLOCKED because for a SPARSE model the XOR filter eliminates TRITON_MLA and leaves FLASHINFER_MLA_SPARSE_SM120 alone, whose sm12x dispatch goes to flashinfer's DENSE-ONLY XQA backend that discards sparse_mla_top_k (and upstream's own test monkeypatches the capability probe and asserts nothing numerical); MODEL-TEXT-minimax-m2-mini-max-m2-for-causal-lm SPIKE -> BLOCKED — HW-BLOCKED at ~428 GiB and DISJOINT from MLA (dense GQA + sliding window; belongs behind ROAD-V1-C5); MODEL-TEXT-deepseek-v2-deepseek-for-causal-lm STAYS SPIKE with the record repaired to say plainly that it is plain MHA and needs NO MLA at all; MODEL-TEXT-kimi-linear-kimi-linear-for-causal-lm STAYS SPIKE (MLA half unlocked, KDA is a separate kernel campaign, HW-MARGINAL at ~89.4 GiB). Both BLOCKED rows are RELEASED from this claim's row list per the record contract (a claim may only hold SPIKE/ACTIVE rows) and each states what CAN still be gated (config/registry resolution, weight-map on a slice, unit parity at real dimensions) versus what CANNOT (anything e2e, now or ever on this box). One CROSS-CLAIM edit, recorded in both claims: MODEL-TEXT-deepseek-v2-glm-moe-dsa-for-causal-lm (GLM-5) SPIKE -> BLOCKED under CLAIM-GLM-DSA-LATEST-DEEPSEEK, for the same DSA dependency dead-end plus 1404.2 GiB. The two PERMANENT coverage gaps are now stated in the rows, not only in the spec: the noaux_tc grouped router and the q_lora query branch each have NO e2e coverage on this hardware and are UNIT-GATED ONLY, because V2-Lite is n_group=topk_group=1/softmax with no e_score_correction_bias and q_lora_rank=null. NAMED NEXT VEHICLE: GLM-4.7-Flash (Glm4MoeLiteForCausalLM, 31.2B / 58.2 GiB, FITS GB10) — the only reachable checkpoint that closes BOTH gaps, and upstream a zero-override subclass of DeepSeek-V2's MLA attention. The full campaign DEVIATIONS LEDGER (upstream FA-2 empty-K/unpadded_lse defect worked around; scalar MergeAttnStates and ConcatMlaNopeRope; per-row-slice A-projections; cuda_arch_tactics deferral; DCP and fp8-prefill not ported; the split-KV occupancy deviation; the pre-existing process-wide DevicePool byte-size-class hazard) is now discoverable from the V2 row itself. BLOCK CLOSURE: NOT YET. Every row in this block is at its final honest state, but MODEL-TEXT-deepseek-v2-deepseek-v2-for-causal-lm is ACTIVE, not DONEDONE needs vLLM-speed parity on EVERY axis, and the grid is 0.86-0.95x on throughput. Per the closing rule ("when EVERY row in an execution block is DONE, move the block plan/report to .agents/completed/") the plan/spec STAYS LIVE and NOTHING is archived. The claim remains open with exactly one open item: the named gemvx -> tensor-core dispatch lever. | CLAIM-KERNEL-CPU-ELEM-GEMM-1 | KERNEL-GEMM-CPU-ELEM (work rows E1-E4) — the elementwise f32/f16/bf16 CPU GEMM: hoist the per-element dtype switch out of the K loop, replace the single serial f32 accumulator with 16 independent ones, add bit-exact per-arch SIMD tiers with a runtime probe, and M-block the [N,K] micro-kernel. Promoted to the #1 CPU lever by the CIQ G4 claim's own measurement (60 % of the bench file's weight bytes are f16, which no block encoding covers) | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-a0080369412fcd2a7; dgx CPU source/build ~/work/vllm.cpp-elemgemm, CUDA gate build ~/work/vllm.cpp-elemgemm-cuda; benchmark host dgx ~/work/bench-cpu-llama (the x86 dev box is VOID for timing) | main (worktree), base 72f5db2 | Owned files: new src/vt/cpu/cpu_matmul_elem.{h,cpp}, src/vt/cpu/cpu_ops.cpp (MatmulOneChunk ONLY), new tests/vt/test_ops_matmul_elem.cpp, CMakeLists.txt + tests/CMakeLists.txt (one source and one test row), the new leaf spec .agents/specs/cpu-elementwise-gemm.md, the KERNEL-GEMM-CPU-ELEM row in kernel-matrix.md, the QUANT-GGUF-CIQ-GEMM row in quantization-matrix.md, roadmap, ledger, state, README §CPU, BENCHMARKS. MUST NOT touch a model forward, a loader, the quant GEMM, or any golden; MUST NOT trade bit-exactness for speed. | DONE | 2026-07-22 — BIT-EXACT AND 3.1-3.4× FASTER. Two defects removed from the elementwise chunk worker: the per-element LoadF32 dtype switch is gone (the activation row is widened to f32 once per 16-row tile, the weight dtype resolves once per chunk into a typed micro-kernel), and the ONE serial f32 accumulator became 16 — the old 0.77-0.84 GFLOP/s/thread was a loop-carried FP-add latency chain, not an ISA limit. SIMD is ported from llama.cpp vec.cpp:139,264 (ggml_vec_dot_bf16/_f16) with ONE recorded deviation: we vectorize across OUTPUT COLUMNS instead of along K, so every output keeps its sequential reduction and the whole change is BYTE-IDENTICAL to the historical kernel. Tiers: portable 16-accumulator (always built), AArch64 NEON (vshll_n_u16/vcvt_f32_f16 widen, vtrnq_f32 4×4 transpose, MR=4), x86-64 SSE2 + probed F16C (MR=2). CORRECTNESS: new test_ops_matmul_elem 5 cases / 654 assertions, gate is memcmp not Approx, green on x86-64 AND dgx aarch64 and under all three VT_CPU_MATMUL_TIER settings; the exhaustive case proves vcvt_f32_f16/_mm_cvtph_ps agree with vt::F16ToF32 on all 65,536 patterns including every inf/NaN — no sNaN quieting, so no divergence to quantify and the NMSE ≤ 5e-4 fallback was not needed. E2E the BEFORE / AFTER / VT_CPU_REF=1 token streams are one md5 d235db12f2cd304007530286a1755c95 — the same md5 G4 recorded. REGRESSIONS ALL UNCHANGED, each STANDALONE on a clean CUDA -Werror build (0 warnings, production flags, one flock $HOME/gpu.lock, git archive transfer, goldens md5 2965ef5772b556d3f3f86fedf4221b2f identical before/after): 27B 235/235, 35B 315/315, Qwen3-Coder 6/6, Qwen3-dense 16/16, OPT 6/6, DeepSeek-V2 223/223 assertions (8/8 prompts), gguf 28/28, plus test_gguf_keep_quant, test_ops_quant_dot, test_ops_quant_traits, test_gguf_dequant. ONE TRANSIENT RECORDED HONESTLY: the first DeepSeek-V2 pass returned the known co-scheduled-memory abort signature (95 of 223 assertions, 1 failure) while ANOTHER agent was running 27B gates on the same box; re-run STANDALONE under the flock it passes 223/223 — the same signature the CIQ G3 record documents, not a regression. Dev box full CPU ctest 157/157 (two co-scheduled HTTP-server flakes, both green standalone). BENCHMARK (binding, idle dgx aarch64, one flock, SAME binary, 3 reps, medians): prefill 21.67 -> 73.97 t/s (3.41×), decode 7.649 -> 23.79 t/s (3.11×), peak RSS unchanged 6.401 GiB; vs llama.cpp (pp128 173.28±1.75, tg32 24.52±0.45, RSS 2.798 GiB) 8.00× -> 2.34× behind on prefill and 3.21× -> 1.03× behind on decode — decode is AT PARITY within 3.1 %, RSS still 2.29× worse. Op-level bf16 [N,K]: ref 18-24 -> portable 35-52 -> NEON 69-351 GFLOP/s (prefill shapes 14.4-14.5×), which puts the elementwise GEMM (347-351) level with the quant tier-0 (388-417). RE-RANKS THE PLAN AGAIN, on a measured NEGATIVE: E4's M-blocking gave 1.63× op-level on prefill and 0.0 % end-to-end, so prefill is NO LONGER elementwise-GEMM-bound and the 95.37 % kMatmul attribution is STALE. Next step is a FRESH op-dispatch profile of the current binary before any further lever is started; RSS (loader L5) is now the largest single deficit at 2.29×; decode needs no further kernel work. Claim released | | CLAIM-MULTIMODAL-TRACK | MODEL-MM-gemma4-unified-gemma4-unified-for-conditional-generation (INVENTORIEDSPIKE). The two Qwen3.6 mm rows (27B Qwen3_5ForConditionalGeneration + 35B MoE) stay PARTIAL/narrative-only — annotated with the mm-completion plan, NOT claimed as work rows here (the mm implementation re-claims them at M3). The Gemma-4 mm model row was DROPPED from this claim 2026-08-06 by the live-state audit (ACTIVEREADY, no Git evidence for the claim); see the Closing and archival note. | Claude Code (opus-4-8) | isolated worktree /tmp/claude-1000/.../scratchpad/mm-tree (SPIKE ONLY — no build, no GPU work, no download; one oracle-metadata + safetensors-header read on dgx) | detached HEAD, base origin/main 72f9fb1 | SPIKE ONLY, no implementation. Owns .agents/specs/multimodal-track.md plus the four MODEL-MM-* rows above. Covers: the multimodal seam map (input pipeline + *ForConditionalGeneration wrapper + engine/encoder-cache seams, vLLM file:line); per-target modality + oracle + GB10-fit + checkpoint gateability; the reuse-vs-new factoring; the M0–M5 W-plan. HEADLINE: our GATE models are ALREADY multimodal (Qwen3_5ForConditionalGeneration/…Moe…, image+video, subclass Qwen3VLForConditionalGeneration + Qwen3_VisionTransformer) brought up text-only, so the track COMPLETES them. Oracle 0.25.0 SHIPS the mm files (qwen3_5.py,qwen3_vl.py,qwen2_5_vl.py,gemma4_mm.py), so the mm path is oracle-constructible; but the cached NVFP4 gate checkpoints are TEXT-ONLY (no visual.*) so Qwen3.6 mm is CHECKPOINT-gated, not HW/oracle-blocked. First vehicle = Qwen/Qwen3-VL-4B-Instruct (same tower). Gemma-4 = image+video+AUDIO, ≥12B mm-wrapped HF-gated + PLE/YOCO/MoE backbone → SPIKE/BLOCKED-for-now; audio reachable ONLY via Gemma-4/gemma3n (Qwen3.6 has none), deferred M5. NO SHARED-WORK COLLISION: records-only spike; keeps the README/BENCHMARKS footprint to a single status line (per the docs-refresh + DFlash-spike coordination), does NOT touch dflash-spec-decode.md. | SPIKE | 2026-07-25 spike committed (spec + records only). No implementation, no build, no gate. Not pushed. NEXT (future, out of this claim): M0 fetch Qwen3-VL-4B + vision-inclusive Qwen3.6 checkpoint + oracle mm reference. SUPERSEDED (annotation 2026-07-27): the M0-M3 work this parent spike scoped has since LANDED under the DONE/ACTIVE child increment claims (CLAIM-MULTIMODAL-M1, CLAIM-MULTIMODAL-M2A, CLAIM-MULTIMODAL-M2BC, the M3 image/video + audio A0-A3 claims); Qwen3-VL-4B + Qwen3.6-27B image+video are e2e STRICT 32/32 and Voxtral audio is e2e 14/14. This row is retained for provenance; the two gemma4 mm rows stay SPIKE (owned per the row-owner column). | | CLAIM-GEMMA4-MULTIMODAL | MODEL-MM-gemma4-unified-gemma4-unified-for-conditional-generation (stays SPIKE; ownership transferred here from CLAIM-MULTIMODAL-TRACK — that spike advanced them to SPIKE, this one owns the dedicated Gemma-4 mm + AUDIO spec + the sharpened oracle-blocked verdict). The Gemma-4 mm model row was DROPPED from this claim 2026-08-06 by the live-state audit (ACTIVEREADY, no Git evidence for the claim); see the Closing and archival note. | Claude Code (opus-4-8) | isolated worktree /tmp/claude-1000/.../scratchpad/g4mm-tree (SPIKE ONLY — no build, no GPU, no download; oracle-metadata reads only) | detached HEAD, base origin/main 64a01af | SPIKE ONLY, no implementation. Owns .agents/specs/gemma4-multimodal.md (new) + the two MODEL-MM-gemma4-* rows. Coordination: does NOT touch multimodal-track.md or the Qwen MODEL-MM-* rows (owned by the concurrent Qwen3.6-video agent). DECISIVE FINDING: Gemma-4 mm is oracle-BLOCKED — the vision/audio towers load via Transformers AutoModel.from_config (gemma4_mm.py:1040,1056) but the dgx oracle's transformers 5.13.1 has NO gemma4 module (measured; gemma3n present) → mm path unconstructible, no gate. Architecture: SigLIP vision tower (REUSES M2a scaffold) + USM-Conformer audio tower (NEW) + PLE/YOCO/Gemma-4-MoE backbone (NEW, sweep-gemma §0.1); the Unified 12B variant is encoder-free. AUDIO is the genuinely-new modality (nothing built) — land it FIRST on the smallest oracle-runnable vehicle (whisper-smallVoxtral-Mini-3B on our LANDED Mistral backbone), Gemma-4 audio (G3) reuses it; Conformer tower delta proven on Granite-Speech-2b. | SPIKE | 2026-07-25 spike committed (spec + records only). No implementation, no build, no gate. Not pushed. NEXT (future, out of this claim): the AUDIO track A0 (fetch whisper-small + Voxtral-Mini-3B, oracle references); Gemma-4 stays blocked until the oracle Transformers carries gemma4. SUPERSEDED (annotation 2026-07-27): the AUDIO track this spike identified as the genuinely-new work has since LANDED (A0-A3, Voxtral-Mini-3B e2e 14/14 + Whisper encoder 203/203, DONE child claims). The Gemma-4 oracle block is now DISSOLVED (the pin advanced to transformers 5.14.1, which ships gemma4); Gemma-4 mm is reachable, implementation pending. This row is retained for provenance; the two gemma4 mm rows stay SPIKE. | | CLAIM-MULTIMODAL-M2A | ENG-MM-VISION-TOWER (engine-matrix, ACTIVE). Owns the NEW vision-tower TU + 2 additive vt ops + the tower unit gate + tower reference/weight dump scripts + fixtures. The Qwen3VLForConditionalGeneration model-matrix row is narrative-advanced INVENTORIEDPARTIAL (tower faithful, e2e pending); the two Qwen3.6 mm rows stay PARTIAL/narrative-only (the tower attaches to them at M3). | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp-m2a (branch m2a-vision-tower); dgx build+gate ~/m2a_build (tar-transfer, CUDA build, ALL GPU under ONE flock $HOME/gpu.lock) | branch m2a-vision-tower, base origin/main 463633d | Multimodal M2a — vision TOWER proven faithful: src/vllm/model_executor/models/qwen3_vl_vision.{h,cpp} (Qwen3_VisionTransformer forward: patch-embed matmul+bias, host pos-embed bilinear-interp+reorder, 24 ViT blocks [LayerNorm + partial-rotary vision RoPE via vt::RopeFromCache + non-causal vt::Attention + tanh-GELU MLP], patch merger [LN + exact-erf-GELU + 2 FCs], DeepStack 3 post-shuffle mergers at 5/11/17 → [196,10240]); 2 additive vt ops GeluTanh/GeluErf (include/vt/ops.h, src/vt/ops.cpp, src/vt/cuda/cuda_layernorm.cu, src/vt/cpu/cpu_layernorm.cpp); the tower gate tests/vllm/multimodal/test_qwen3vl_tower.cpp + fixtures tests/vllm/multimodal/fixtures/qwen3vl_tower/; dump scripts scripts/mm/m2a_tower_{ref,weight}_dump.py; 2 CMake lines. NON-COLLISION: additive-only — NO model runner / model TU / registry edit (text SACRED byte-identical BY CONSTRUCTION); does NOT build the MRoPE text backbone (M2b) or the merge/e2e image gate (M2c); does NOT touch M1's src/vllm/multimodal/*. | ACTIVE | 2026-07-25 — M2a LANDED + TOWER FAITHFULNESS GATE PASS. 4 RED-first unit gates vs the dumped vLLM-0.25.0 tower reference (patch-embed relL2 2.1e-3, block0 6.8e-3, merger 6.5e-2, DeepStack taps 1.2e-2/3.3e-2/4.4e-2, full tower 5.1e-2; NEW-kernel gates pos-embed 2.5e-3 + rope 1.9e-3 TIGHT) — bf16-depth envelope RCA'd (smooth ~0.25%/layer, no discontinuity); RED = vision-rope disabled → block0 0.149, tower 0.75, 6 fails. Build cutlass-ON+FA2 banner CONFIRMED; clean CUDA -Werror 0 warnings; compute-sanitizer 0 errors on the tower + new kernels. Text inertness BY CONSTRUCTION (git diff --stat: 128 insertions, 0 deletions, additive vt ops only). benchmark_binding=false, no speed. Not pushed. NEXT (M2b): MRoPE 3-D positions + DeepStack decoder injection on the Qwen3-VL text backbone; then (M2c) merge + e2e image token-exact gate. | | CLAIM-MULTIMODAL-M2BC | ENG-MM-TEXT-BACKBONE (engine-matrix, ACTIVE). Owns the NEW text-backbone helper TU + its unit gate + reference dump + fixtures. The Qwen3VLForConditionalGeneration model-matrix row stays PARTIAL/narrative-only (M2b/M2c numeric contracts unit-green; the e2e image gate is the remaining wire-up). The two Qwen3.6 mm rows stay PARTIAL/narrative-only. | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/m2bc (branch m2bc-multimodal, CPU build-cpu + CPU ctest); dgx used only for the vLLM-0.25.0 reference dump under flock $HOME/gpu.lock (CPU-only oracle) | branch m2bc-multimodal, base origin/main 0eed915 | Multimodal M2b/M2c — text-backbone numeric contracts, unit-green: src/vllm/model_executor/models/qwen3_vl_text.{h,cpp} (Qwen3VLGetRopeIndex MRoPE 3-D positions [3,T]; Qwen3VLMergeMultimodal masked-scatter; Qwen3VLComputeDeepstack [L,T,H] scatter); the unit gate tests/vllm/multimodal/test_qwen3vl_text.cpp (4 RED-first gates incl. the 3-section MRoPE application through the existing vt::RopeFromCache mrope path) + fixtures tests/vllm/multimodal/fixtures/qwen3vl_text/; dump scripts/mm/m2b_text_ref_dump.py; 1 CMake line + 1 lib source line. NON-COLLISION: additive-only — NO model runner / shared dense forward / registry edit (text SACRED byte-identical BY CONSTRUCTION); the e2e image forward (VL weight loader + forked MRoPE/DeepStack decode loop + greedy) is NOT yet built. | ACTIVE | 2026-07-25 — M2b/M2c NUMERIC CONTRACTS UNIT-GREEN (CPU, no weights). 4 RED-first gates vs the dumped vLLM-0.25.0 reference (scripts/mm/m2b_text_ref_dump.py) PASS 85/85: get_rope_index BIT-exact [3,204] (delta −182); 3-section MRoPE application (interleaved, section=[24,20,20]) via vt::RopeFromCache q rel-L2 1.5e-3 / k 1.5e-3 (bf16 band), RED guard interleaved-off diverges >5e-2; DeepStack scatter + embed-merge BIT-exact; clean CPU -Werror. Text inertness BY CONSTRUCTION (additive TU only, shared dense forward untouched). benchmark_binding=false, no speed. Not pushed. REMAINING (M2c e2e): VL weight loader (language_model.*+visual.*) + forked VL decode (inputs_embeds + MRoPE + DeepStack inject) + greedy loop → image token-exact gate vs vLLM 0.25.0 on Qwen3-VL-4B; risk = bf16-envelope tower (M2a rel-L2 ~5e-2) vs deterministic vLLM near-ties. | | CLAIM-MULTIMODAL-M2C | ENG-MM-TEXT-BACKBONE (engine-matrix, ACTIVE) — the forked VL decode. Narrative-advances the Qwen3-VL model-matrix row (PARTIAL→IMAGE e2e WORKING; not DONE, speed pending). Owns the NEW VL loader + forked-decode TU + the STRICT e2e image gate + the input-ids dump. M2 CLOSED. | Claude Code (opus-4-8) | dgx build+gate ~/work/mm-m0m1-cuda (tar-transfer via git archive, reused Makefiles build cache, ALL GPU under ONE flock $HOME/gpu.lock) | branch feat/mm-m2c-e2e, base origin/main 1cd5710 | Multimodal M2c — e2e IMAGE forward, STRICT gate PASS: src/vllm/model_executor/models/qwen3_vl.{h,cpp} (VL weight loader model.language_model.*+model.visual.*; forked greedy VL decode = embed+Qwen3VLMergeMultimodal scatter + 3-section MRoPE via vt::RopeFromCache global cache + DeepStack inject at layers 0/1/2 + paged greedy); STRICT e2e gate tests/vllm/multimodal/test_qwen3vl_e2e.cpp; input-ids dump scripts/mm/m2c_e2e_inputs.py + fixture input_ids_i32.bin; 3 CMake lines. One M2a fix: qwen3_vl_vision.cpp cap==nullptr DeepStack concat (an explicit deferred-to-M2c stub — M2a capture output byte-identical). NON-COLLISION: additive VL path gated on mm input; NO shared dense forward / model runner / registry edit (text SACRED byte-identical BY CONSTRUCTION). | ACTIVE | 2026-07-25 — M2c LANDED, STRICT e2e IMAGE gate PASS 32/32. Full pipeline (image→C++ processor→M2a tower→merge→forked MRoPE/DeepStack greedy decode) == committed vLLM 0.25.0 golden token-for-token on Qwen3-VL-4B; no near-tie needed (STRICT passed exactly, first try after the stub fix). Clean CUDA -Werror 0 warnings. Text inertness: additive (git diff --stat shared forward untouched) + SACRED regressions re-run (27B/35B/Coder). benchmark_binding=false, speed pending. FULL SHA in commit; NOT pushed. NEXT (M3): Qwen3.6-27B image reusing this tower+backbone+loader on the GDN-hybrid backbone, then video. | | CLAIM-MULTIMODAL-M3 | ENG-MM-QWEN36-VL-FORWARD (engine-matrix, SPIKE — the GDN-hybrid VL forward design grounded by M3-W0, implementation OWED as M3-b). The 27B mm model (Qwen3_5ForConditionalGeneration) stays PARTIAL/text-only, narrative-only (NOT claimed as a work row here — M3-b re-claims it); its narrative is advanced with the M3-W0 checkpoint verdict + the grounded GDN-hybrid VL forward design. Owns .agents/specs/multimodal-track.md (M3 section), scripts/mm/m3_oracle_capture.py, and the committed golden/input fixtures tests/vllm/multimodal/fixtures/qwen3_5_27b/. | Claude Code (opus-4-8) | isolated worktree /home/mudler/work-m3/tree (branch m3-qwen36-27b-image); dgx ~/work/m3-golden (oracle golden under flock $HOME/gpu.lock, ALONE, GMU 0.6, local-ai-worker verified Exited) | branch m3-qwen36-27b-image, base origin/main 3c8af64 | Multimodal M3-W0 — resolve the GATING FACT (vision-inclusive checkpoint) + ground the GDN-hybrid VL forward design + capture the vLLM 0.25.0 oracle golden. KEY FINDINGS: checkpoint = Qwen/Qwen3.6-27B (51.7 GiB uniform bf16, 333 visual.* tensors, NOT gated; fits GB10 after reclaiming mine-only ~/work trees, apex/darwin untouched); 27B vision config DIFFERS (depth 27/hidden 1152/out 5120/16 heads, EMPTY deepstack — no DeepStack, simpler than 4B); MRoPE [11,11,10]/rot 64/theta 1e7; backbone 48 GDN + 16 full-attn; the bf16 GDN-hybrid LLM loader ALREADY EXISTS (LoadQwen3_5Dense routes bf16 by .weight_packed absence) so M3-b needs only the visual.* loader + the forked forward (inputs_embeds + MRoPE + merge, gated ⇒ text byte-identical). NON-COLLISION: records + oracle scripts + fixtures only; NO shared-forward edit landed here (M3-b owns the qwen3_5.cpp forked forward + greedy driver + e2e gate). | ACTIVE | 2026-07-25 — M3-W0 LANDED (checkpoint resolved + fetched + oracle golden captured + design grounded). vLLM 0.25.0 CONSTRUCTS + LOADS + RUNS the 27B mm path (encoder cache profiled 1 image item; NOT oracle-blocked); golden = 214-token input (196 image toks @ off 4), 32-token greedy, K=5 DETERMINISTIC ⇒ STRICT (sha256 ead4b484…), GB10 held 54 GiB bf16 (GMU 0.6, no OOM). Fixtures tests/vllm/multimodal/fixtures/qwen3_5_27b/. NO e2e gate this session — M3-b (the forked GDN-hybrid VL forward + token-exact image gate + text-inertness) is the cleanly-scoped next brick, exactly as M2 landed as M2a/M2b/M2c. Not pushed. | | CLAIM-MULTIMODAL-M3B | ENG-MM-QWEN36-VL-FORWARD (engine-matrix, SPIKEACTIVE). The 27B mm model (Qwen3_5ForConditionalGeneration) narrative advances PARTIAL(text-only)→IMAGE e2e working (video + speed still pending; the model-matrix row stays PARTIAL, NOT claimed as a work row here). Owns EXACTLY: the forked GDN-hybrid VL forward + greedy driver Qwen3_5VLGenerateGreedy + BuildMropeCosSinHost + the mrope_cos_sin param on DenseForwardLayers (src/vllm/model_executor/models/qwen3_5.cpp); the vision-only loader LoadQwen3VLVisionWeights + 4B-loader refactor (src/vllm/model_executor/models/qwen3_vl.{h,cpp}); the Qwen3_5VLGenerateGreedy decl (include/.../qwen3_5_dense.h); the STRICT gate tests/vllm/multimodal/test_qwen3_5_vl_e2e.cpp + its CMake. Owns NO text forward algorithm change (mm path gated on mm input), NO scheduler/runner, NO other model. | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/m3b-vl (branch m3b-qwen36-vl), base origin/main abde069; dgx build+gate dgx.casa:~/work/m3b-vl under flock $HOME/gpu.lock (sole GPU owner, local-ai-worker stopped) | branch m3b-qwen36-vl, base origin/main abde069 | Multimodal M3-b — build the GDN-hybrid VL image→text forward + RUN the STRICT image token-exact gate (complete our own gate model's image path). | DONE | 2026-07-25 — M3-b LANDED: STRICT image token-exact 32/32 vs vLLM 0.25.0. Full pipeline (M1 processor → M2a tower 27B config [196,5120] → embed+scatter into image_token(248056) rows, no deepstack → 3-section MRoPE [11,11,10] interleaved on the 16 full-attn layers → GDN-hybrid backbone → paged greedy) == golden ead4b484… (gate 54/54 assertions). Text-inertness re-run cutlass-ON+FA2: 27B 235/235, 35B 315/315, Coder 138/138 (the 3-point fork is byte-identical on text — mrope_cos_sin==nullptr on every text caller). Clean CUDA -Werror 0 warn (Release, arch 121a, cutlass NVFP4 + FA2 ENABLED banner); compute-sanitizer on the 27B VL forward. Weights via LoadQwen3_5Dense(shards,cfg,&queue) direct device load + host release (no unified-pool OOM). Generated text = the coherent image-conditioned "The user wants me to identify what is in the image.\n\n1. Analyze the image:…". Not pushed; FULL SHA reported. Video = M3c (owed); speed unmeasured. | | CLAIM-AUDIO-PIPELINE | ENG-MM-AUDIO-PIPELINE (engine-matrix, NEW ACTIVE). The genuinely-new AUDIO modality (audio-track A0+A1) on the modality-agnostic mm spine, on the smallest oracle-runnable vehicle openai/whisper-small. Owns EXACTLY the NEW src/vllm/multimodal/audio_processor.{h,cpp} + include/vllm/multimodal/audio_processor.h, the AudioKwargs+audio_data additions to include/vllm/multimodal/inputs.h, MultiModalHasher::HashAudioF32 (include/vllm/multimodal/hasher.h + src/vllm/multimodal/hasher.cpp refactor), tests/vllm/multimodal/test_audio_processor.cpp + fixtures tests/vllm/multimodal/fixtures/whisper_audio/, scripts/mm/a0_audio_ref.py, 1 CMakeLists.txt source line + 2 tests/CMakeLists.txt lines, and .agents/specs/audio-track.md (NEW). NON-COLLISION: additive-only, gated on audio mm input (NO shared forward/kernel/runner/registry edit ⇒ text+image+video byte-identical BY CONSTRUCTION); does NOT touch multimodal-track.md / the Qwen3.6 mm model-matrix rows (Qwen3.6-video agent) / the Gemma-4 mm model-matrix rows + gemma4-multimodal.md (Gemma-4 agent). Does NOT build the audio ENCODER tower (A2) or the e2e audio→text (A3). | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp-audio-a0a1 (branch audio-a0a1, CPU build-cpu + CPU test); dgx used only for the A0 oracle reference capture (~/venvs/vllm-oracle, feature extraction is CPU, no GPU/flock) | branch audio-a0a1, base origin/main 435ba70 | Audio-track A0+A1 — ground the whisper-small vehicle + capture the audio-processor oracle reference (A0), then build the C++ audio INPUT pipeline (WAV decode → identity resample → log-mel input_features → placeholder expansion → mm-hash) + the inert engine seam (A1), gated by feature-parity + inertness. NOT audio→text (that is A2 encoder tower + A3 e2e). | ACTIVE | 2026-07-25 — A0+A1 LANDED: audio-processor parity gate PASS 77/77. A0: whisper-small confirmed oracle-constructible on dgx (transformers 5.13.1); captured the WhisperFeatureExtractor log-mel input_features [80,3000] (real torch STFT path) + mel filterbank [201,80] + placeholder [0]*1500 + mm-hash 2d0c7e4c… for a deterministic PCM16-mono-16kHz clip (scripts/mm/a0_audio_ref.py + committed fixtures, content-hashed). A1: the C++ WhisperAudioProcessorlog-mel rel-L2 1.96e-7 vs the oracle (stated 2e-4 band, torch.stft-FFT vs our DFT summation order; transformers' own torch/numpy claim 1e-5, we sit 2 orders tighter), WAV-decode + placeholder-ids + mm-hash BIT/BYTE-exact, RED-first (mel-perturb 2.6e-3 / hop-161 0.70 / no-normalize 9.27 all blow the band). Inertness (shared hasher.cpp/inputs.h re-run byte-identical): image 23/23 (hasher refactor inert), video 41/41, request 71/71, encoder-cache 32/32, text 85/85; clean CPU -Werror 0 warn; check-device-leakage unchanged (32==baseline); no CUDA kernel ⇒ compute-sanitizer N/A. All seven record checkers green by bare RC. benchmark_binding=false, speed pending. Not pushed; FULL SHA reported. NEXT (A2): the Whisper-class audio encoder tower proven faithful in isolation, then the USM Conformer delta (Granite-Speech-2b); then A3 e2e audio→text on Voxtral-Mini-3B (LANDED Mistral backbone). | | CLAIM-MULTIMODAL-M3D | ENG-MM-QWEN36-VL-FORWARD (engine-matrix, ACTIVE). Completes the Qwen video modalities on our own gate model: the 27B Qwen3_5ForConditionalGeneration row narrative-advances IMAGE-e2e-working → IMAGE+VIDEO e2e working (the model-matrix row stays PARTIAL — speed pending). Owns EXACTLY: the video driver Qwen3_5VLGenerateGreedyVideo + the VLGenerateCoreGdn refactor of the image driver (src/vllm/model_executor/models/qwen3_5.cpp); the video-driver decl (include/.../qwen3_5_dense.h); the STRICT gate tests/vllm/multimodal/test_qwen3_5_vl_video_e2e.cpp + its CMake + fixtures tests/vllm/multimodal/fixtures/qwen3_5_27b_video/; the oracle script scripts/mm/m3d_video_oracle_capture.py (reuses the M3c m3c_video_neartie_gap.py with --model Qwen/Qwen3.6-27B). REUSES (verified, NOT modified) the M3c ProcessVideo/BuildVideoRepl/Qwen3VLGetRopeIndexVideo/per-frame windowed tower attention. NO shared TEXT-forward algorithm change (the video driver is purely additive; the shared DenseForwardLayers/DenseForwardBody/etc. UNTOUCHED per git diff --stat), NO scheduler/runner, NO other model. | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/wt-m3d-video (branch m3d-27b-video), base origin/main 64a01af; dgx build+gate dgx.casa:~/work/m3d-video under flock $HOME/gpu.lock (sole GPU owner, local-ai-worker Exited) | branch m3d-27b-video, base origin/main 64a01af | Multimodal M3d — run VIDEO through the 27B GDN-hybrid VL forward (reuse the landed M3c video path) + RUN the STRICT video token-exact gate (complete our own gate model's video path). | DONE | 2026-07-25 — M3d LANDED: STRICT video→text token-exact 32/32 vs vLLM 0.25.0 — Qwen3.6-27B video works e2e; the Qwen video modalities (image+video) are COMPLETE. Full pipeline (M3c ProcessVideo → M2a tower 27B config per-frame windowed attn [64,5120] → embed+scatter into video_token(248057) rows [no deepstack] → temporal MRoPE [11,11,10] interleaved on the 16 full-attn layers via Qwen3VLGetRopeIndexVideo → GDN-hybrid backbone → paged greedy) == golden (gate 27/27 assertions). Oracle scripts/mm/m3d_video_oracle_capture.py on the M3c synthetic clip (raw sha 8a111599…, grid [4,8,8], 64 video tokens) K=5 DETERMINISTIC (first_divergence=None) ⇒ STRICT golden; teacher-forced near-tie gaps 0.0000 nats at every position (0 divergent positions). Generated text: coherent video-conditioned "The user wants me to describe the video…I see a sequence of 6 images…". Inertness: 27B IMAGE e2e re-run STRICT 32/32 (54/54, the driver refactor is byte-identical on image); text SACRED 27B 235/235, 35B 315/315, Coder 138/138 byte-identical BY CONSTRUCTION (git diff --stat: the qwen3_5.cpp change is confined to the VL-only driver region; the shared text forward is untouched; the video path is gated on mm input ⇒ mrope_cos_sin==nullptr on every text caller). Clean CUDA -Werror 0 warn (Release, arch 121a, cutlass NVFP4+FP8+Marlin+FA2 ENABLED banner); compute-sanitizer memcheck 0 on the 27B video forward. Not pushed; FULL SHA reported. SPEED unmeasured (benchmark_binding=false). | | CLAIM-AUDIO-E2E | ENG-MM-AUDIO-E2E (engine-matrix, NEW ACTIVE). The Voxtral model row was DROPPED from this claim 2026-08-06 by the live-state audit (ACTIVEREADY, no Git evidence for the claim); see the Closing and archival note. Audio-track A3 — the FIRST e2e AUDIO→TEXT understanding, on mistralai/Voxtral-Mini-3B-2507 (Whisper-large-v3-class encoder + AudioLanguageAdapter projector + the LANDED Mistral/Llama text decoder). Owns EXACTLY the NEW include/vllm/model_executor/models/voxtral.h + src/vllm/model_executor/models/voxtral.cpp, tests/vllm/multimodal/test_voxtral_e2e.cpp + committed fixtures tests/vllm/multimodal/fixtures/voxtral_audio/, scripts/mm/a3_voxtral_{oracle_capture,neartie_gate,textonly,wcheck,debug_dump}.py, 1 CMakeLists.txt source line + tests/CMakeLists.txt test wiring, and its §1 (A3) of .agents/specs/audio-track.md, plus this row + the Voxtral model-matrix row + the ENG-MM-AUDIO-E2E engine row + README/BENCHMARKS/state/ledger. NON-COLLISION: additive-only (NO shared forward/kernel/runner/registry/other-model TU edit ⇒ text/image/video/audio-pipeline byte-identical BY CONSTRUCTION); does NOT touch the Qwen/Gemma-4 mm rows or multimodal-track.md/gemma4-multimodal.md; reuses (does NOT edit) whisper_audio.* (A2), audio_processor.* (A1), qwen3.*/dense_attn_block.h (Mistral decoder), qwen3_vl_text.* (merge). | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp-a3 (branch a3-voxtral-e2e); dgx build+gate ~/vllm-cpp-a3-build (CUDA cutlass-ON -DCMAKE_CUDA_ARCHITECTURES=121a, oracle capture in ~/venvs/vllm-oracle, e2e gate under ONE flock $HOME/gpu.lock FOREGROUND, sibling 27B NOT co-resident) | branch a3-voxtral-e2e, base origin/main c4f4dfcc | Audio-track A3 — encoder-at-Voxtral-config + downsample-concat + AudioLanguageAdapter projector + masked-scatter merge into the LANDED Mistral decoder → forked greedy; audio→text gate form BY MEASUREMENT. | ACTIVE | 2026-07-25 — A3 LANDED: e2e audio→text gate PASS 14/14. Voxtral-Mini-3B downloadable (NOT HF-gated) + oracle-runnable (vLLM 0.25.0 load_format=mistral, K=5 DETERMINISTIC greedy → STRICT bar). Full C++ pipeline (A1 log-mel [128,3000] rel-L2 7.7e-7 → A2 encoder at Voxtral config → downsample4 → projector [375,3072] → merge at token-24 → Mistral greedy). STRICT prefix 33/48 vs vLLM greedy; decoder proven token-exact (vLLM ref-audio→48/48); bit-exact infeasible (encoder different bf16 GEMM/attn kernels, 8.7% = A2 envelope over 32 layers) ⇒ ratified near-tie-robust gate PASS (worst teacher-forced gap 0.0 nats, sole branch a 4-way bf16 tie at -2.069 nats; scripts/mm/a3_voxtral_neartie_gate.py). KEY FIX: mistral-consolidated q/k need vLLM's Meta→NeoX rope PERMUTE (verified permute(wq)==vLLM q_proj); RED text-only 1/22→22/22. INERT: additive (git diff --stat = 2 modified lines); Mistral 541/541 + A1 77/77 + A2 203/203 byte-identical; check-device-leakage unchanged; no new CUDA kernel ⇒ no compute-sanitizer. Clean CUDA -Werror 0-warn, cutlass-ON banner CONFIRMED, all seven checkers green by bare RC. benchmark_binding=false, speed pending. NOT pushed; FULL SHA reported. NEXT: A2-follow USM-Conformer (Granite-Speech-2b) for the Gemma-4 audio family; A3 speed grid vs vLLM. |

| CLAIM-MULTIMODAL-SPEED-TOWER | ENG-MM-QWEN36-VL-FORWARD (engine-matrix, ACTIVE) + ENG-MM-VISION-TOWER (narrative). Executes mm speed lever #1 (the vision encoder tower). Owns EXACTLY: the vision tower forward + resident-weights path src/vllm/model_executor/models/qwen3_vl_vision.{cpp,h}; the NEW additive attention op AttentionDenseFast (src/vt/cuda/cuda_ops.cu AttentionWarpKernel/LaunchAttentionWarp/registration; include/vt/ops.h enum+decl; src/vt/ops.cpp wrapper; src/vt/cpu/cpu_ops.cpp CPU registration reusing the existing reference); the bench tests/vllm/multimodal/bench_qwen3_5_vl_tower.cpp + its CMake; the records. NON-COLLISION: purely additive — the existing kAttention/AttentionKernel and every text/audio kernel UNCHANGED (git diff); text never calls kAttentionDenseFast ⇒ text/audio byte-identical BY CONSTRUCTION (test_ops_attention 37239/37239, 27B text SACRED 235/235). Does NOT touch scheduler/runner/registry/other-model TUs. | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm-tower-speed (branch spike/mm-tower-speed); dgx build+profile+gate dgx.casa:~/work/mm-tower-speed (CUDA cutlass 4.5.0 -DCMAKE_CUDA_ARCHITECTURES=121a + FA2 + Triton, ALL GPU under flock $HOME/gpu.lock sole owner) | branch spike/mm-tower-speed, base origin/main 27bc3054 | Multimodal SPEED tower lever #1 — profile the tower (W0), port the dominant divergent kernel (W1), keep image e2e STRICT 32/32. | DONE | 2026-07-26 — TOWER LEVER CLOSED + BEATEN. W0 (nsys cuda_gpu_kern_sum): 98.9% of the tower forward = the naive vt::cuda::AttentionKernel (56 ms/block over 784 patches; NOT QKV/FA2-routing — the cuda_api_sum cudaFree-93% was a sync-artifact). W1: warp-scoped online-softmax op AttentionDenseFast (no __syncthreads, __shfl_xor head_dim reduce, register accumulator; separate op ⇒ text byte-identical) + one-time resident-weight load ⇒ per-image tower 2114→148 ms (14.3×), 0.59× vs vLLM's ~250 ms eager encode = FASTER. RED-line HELD: 27B image STRICT 32/32, 27B video STRICT 32/32, 4B DeepStack image STRICT 32/32, test_ops_attention 37239/37239, 27B text SACRED 235/235; clean -Werror 0 warn (cutlass+FA2 banner), compute-sanitizer memcheck 0. benchmark_binding=false; DONE-bar still unmet (batched/graphed mm serving c2+ + audio our-side). NOT pushed; FULL SHA reported. | | CLAIM-ROADMAP-D4APC RELEASED 2026-07-27 — W2 + W3 both DONE; KV-PREFIX-CACHE→DONE (stamped with the closing commit) and ROAD-V1-D4-APC→DONE (headline). | KV-PREFIX-CACHE (engine-matrix, PARTIALACTIVE; the generate_block_hash_extra_keys extra-key sub-item → DONE) + ROAD-V1-D4-APC (roadmap SPIKEPARTIAL). ROAD-V1-D4-APC W2 extra_keys (mm/LoRA/cache_salt block-hash) + W3 cache-ON e2e assessment. Owns EXACTLY: include/vllm/v1/request.h, include/vllm/v1/engine/types.h, src/vllm/v1/request.cpp, src/vllm/v1/core/kv_cache_utils.cpp, tests/vllm/v1/test_kv_cache_utils.cpp, tests/vllm/v1/test_kv_cache_manager.cpp, (W3) tests/parity/test_qwen3_apc_e2e.cpp, tests/CMakeLists.txt (one additive block), scripts/qwen3-apc-oracle-capture.py, scripts/qwen3-apc-neartie-gap.py, tests/parity/goldens/qwen3_apc_4b/, and the records (engine-matrix KV-PREFIX-CACHE row, roadmap D4-APC row, specs/prefix-prompt-caching-parity.md W2/feature rows, specs/roadmap-v1-completion.md D4-APC lines, this claim row, ledger, state, README, BENCHMARKS). NON-COLLISION: does NOT touch the C8 sibling's serving/metrics/streaming-parser files or C8 rows; additive extra-key path — text requests (no mm/lora/salt) hash byte-identical BY CONSTRUCTION (the 253-assertion pinned goldens in test_kv_cache_utils.cpp unchanged), so APC-off / SACRED greedy gates are unaffected. | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-a278a93e1db71a20f; dgx CPU build+gate dgx.casa:~/scratch_apc_w2 (-DVLLM_CPP_CUDA=OFF Release CPU build, CPU doctest — W2 is a device-neutral behavioral port, NO GPU/flock needed) | branch worktree-agent-a278a93e1db71a20f, base origin/main 05a2e0d0 | ROAD-V1-D4-APC W2 extra_keys (unblocks MM/LoRA cache consumers) + W3 cache-ON gate. | DONE | 2026-07-27 — W2 DONE (CPU-gated on dgx GB10, NOT pushed). generate_block_hash_extra_keys ported 1:1 (kv_cache_utils.py:451-591): GenMmExtraHashKeys over Request.mm_features + LoRA name + cache_salt, order lora->mm->salt (prompt_embeds deferred — no prompt-embeds path). cache_salt+lora_name on Request/EngineCoreRequest; FromEngineCoreRequest installs the hasher AFTER the fields (fixed a latent ordering bug: mm_features were assigned after the ctor's first hash). RED-first PROVEN on dgx: restoring the stub → test_kv_cache_utils 5 cases FAIL + test_kv_cache_manager no-false-share FAIL (n1==48 — tenant-B request false-hits tenant-A's 48 cached tokens); with extra_keys n1==0. GREEN: utils 29/29 (253 assertions), manager 10/10 (74). Clean CPU build RC=0. INERT: text-path goldens byte-identical; no kernel touched (no compute-sanitizer owed). W3 DONE 2026-07-27 (CLAIM-ROADMAP-D4APC-W3, dgx GB10, NOT pushed) — the FIRST-EVER cache-ON model gate. Vehicle Qwen/Qwen3-4B (dense, full-attention, APC-default-ON — the vehicle the prior RI note missed). test_qwen3_apc_e2e 2/2, 84/84 asserts: APC-ON hits 2240/2777 (rate 0.807) / OFF 0; APC-ON==APC-OFF token-exact 5/6 (1 diff = a vLLM-confirmed 0.125-nat near-tie, RCA'd = attention-kernel-path flip, not a cache bug); == vLLM-APC-ON teacher-forced (OFF 6/6 gap 0.0 nats, ON 6/6 gap ≤0.125, 0 outside top-20); TTFT 70.1→39.9 ms = 1.76×. NO engine code changed (gate-only over the already-shipped default-ON path; binary byte-identical ⇒ SACRED unaffected); 4B SACRED 16/16 no-regression. CUDA -Werror clean; no kernel ⇒ no compute-sanitizer surface. Oracle vLLM 0.25.0 (0.26 venv broken — editable source disk-reclaimed; 4B byte-stable across the pin). KV-PREFIX-CACHEDONE, ROAD-V1-D4-APCDONE (headline; W4-W9 tails non-blocking in own rows). NOT pushed; FULL SHA reported. | | CLAIM-MULTIMODAL-SPEED-ATTR | ENG-MM-QWEN36-VL-FORWARD + ENG-MM-AUDIO-E2E (engine-matrix, both stay ACTIVE / speed-pending — NOT moved). Records-only, environment-blocked mm-speed handoff pass. Owns EXACTLY: .agents/specs/multimodal-speed.md (§3/§5 line-citation corrections + new §8), this claim row, .agents/parity-ledger.md, .agents/state.md, and a minimal honest touch to README.md + docs/BENCHMARKS.md. NON-COLLISION: touches NO file under src//include//tests//CMakeLists.txt (empty code git diff) ⇒ every SACRED + mm gate byte-identical BY CONSTRUCTION; does NOT touch the sibling CPU/quant-GGUF agent's files (quantization-matrix.md, GGUF specs). | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-a2b60fd48a67e6e53; NO dgx / NO GPU available this pass (dev box mudler-ubuntu-box: no NVIDIA GPU, no CUDA toolkit, dgx unreachable, no oracle venv, disk 99% full) | branch worktree-agent-a2b60fd48a67e6e53, base origin/main e1173fa | Multimodal SPEED attribution refinement + dgx handoff recipe (levers #2/#3/#4); environment-blocked ⇒ no measurement/build/gate this pass. | DONE | 2026-07-27 — ENVIRONMENT-BLOCKED, records-only. No GPU/dgx/oracle/CUDA-toolchain reachable and disk 99% full ⇒ no nsys profile, no build, no oracle A/B, no gate re-run possible; NO number produced, NO code touched, NO row advanced (all mm rows stay PARTIAL/speed-pending). Deliverable: (1) code-VERIFIED lever-#2 attribution — the exact per-token host round-trips read from OUR source (qwen3_5.cpp:6871-6895 decode loop: host BuildMropeCosSinHost :6877, embed D2H→H2D round-trip :6884/:6886, full-vocab logits D2H :6893 + host VLArgMax :6894; Voxtral voxtral.cpp:425-442 identical); (2) corrected the spec's 6756-6780 mis-citation (that range is the KV/GDN-state ALLOC loop); (3) paste-ready dgx handoff for levers #4 (audio our-side timing, cheapest high-info) / #2 (on-GPU argmax + drop embed round-trip) / #3 (batched mm serving). Record checkers green bare RC. Not pushed. |

| CLAIM-MULTIMODAL-SPEED-DECODE | ENG-MM-QWEN36-VL-FORWARD + ENG-MM-AUDIO-E2E (engine-matrix, both ACTIVE); the Qwen3.6-27B-VL and Voxtral model-matrix rows (both stay PARTIAL, speed-pending) carry the note in-place. Executes mm speed lever #2 (on-GPU decode sampling). Owns EXACTLY: the greedy-decode sampling + decode-embed path in src/vllm/model_executor/models/qwen3_5.cpp (VLGenerateCoreGdn, the shared 27B image+video core) and src/vllm/model_executor/models/voxtral.cpp (VoxtralGenerateGreedy + its ForwardLastLogits device-return refactor); the records (specs/multimodal-speed.md §8, this row, ledger, state, engine/model/feature matrices mm notes, roadmap MM line, specs/roadmap-v1-completion.md MM line, README, BENCHMARKS). NON-COLLISION: reuses the existing vt::GreedyArgmax device op (NO new kernel, NO op-registry edit); does NOT touch the shared DenseForwardLayers/text forward algorithm, the tower (qwen3_vl_vision.*, lever #1 owner), the scheduler/runner, or any other model — text/image-tower/other-model forwards byte-identical BY CONSTRUCTION (git diff = the two mm driver files only). | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-a35c1368005c99f87 (branch worktree-agent-a35c1368005c99f87); dgx build+gate dgx.casa:~/work/mm-argmax-speed (git archive, CUDA cutlass 4.5.0 -DVLLM_CPP_CUTLASS_DIR=$HOME/cutlass-4.5.0 -DVLLM_CPP_TRITON=ON -DCMAKE_CUDA_ARCHITECTURES=121a + FA2 banner, ALL GPU under flock $HOME/gpu.lock sole owner, local-ai-worker stopped) | branch worktree-agent-a35c1368005c99f87, base origin/main f2facf3c | Multimodal SPEED decode lever #2 — on-GPU greedy argmax (drop full-vocab D2H + host scan) + remove the decode embed D2H→H2D round-trip on the mm eager decode loops, correctness held. | DONE | 2026-07-27 — LEVER #2 CLOSED (bit-exact; small-to-neutral win). Both mm decode loops now argmax on the GPU via vt::GreedyArgmax (host VLArgMax/ArgMax REMOVED ⇒ device path is the only greedy path) and embed the decode token on-device (embed round-trip gone). Bit-identical BY CONSTRUCTION; goldens md5-identical before+after. RED line HELD: 27B image STRICT 32/32 (54/54), 27B video STRICT 32/32 (27/27), 4B image STRICT 32/32 (46/46), Voxtral 14/14 (near-tie seq 48/48, strict prefix 33/48). A/B (same-binary throwaway VT_MM_HOST_ARGMAX, rep0 dropped): Voxtral decode TPOT 61.85 ms (61.73–61.94) vs 62.08 ms host = ~0.4% win; 27B image 223.0 ms (221.7–225.2) vs 224.0 ms host = NEUTRAL (222 ms bandwidth floor). Honest: the win is small — even at 3B the eager forward dominates; the audio 1.52× gap vs vLLM is eager launch overhead (lever #3, prerequisite now supplied). Clean CUDA -Werror 0-warn (cutlass+FA2+Triton banner); no new kernel ⇒ no compute-sanitizer; benchmark_binding=false. mm rows stay PARTIAL. NOT pushed; FULL SHA reported. | | CLAIM-MULTIMODAL-SPEED-GRAPH | ENG-MM-QWEN36-VL-FORWARD (engine-matrix, ACTIVE); the Qwen3.6-27B-VL model-matrix row + the feature-matrix multimodal row (stay PARTIAL, speed-pending) carry the note in-place. Executes mm speed lever #3 FIRST BRICK (graphed mm decode) + SCOPES the rest. Owns EXACTLY: the decode-loop routing in src/vllm/model_executor/models/qwen3_5.cpp (VLGenerateCoreGdn now calls Qwen3_5DenseDecodeGraph::Step, eager path behind VT_MM_DECODE_EAGER); the records (specs/multimodal-speed.md §9, this row, ledger, state, engine/model/feature matrices mm notes, roadmap MM line, specs/roadmap-v1-completion.md MM line, README, BENCHMARKS). NON-COLLISION: reuses the EXISTING production Qwen3_5DenseDecodeGraph class (NO new graph class, NO change to DenseForwardLayers/text forward/BuildPaddedDecode/the graph impl); does NOT touch the tower (qwen3_vl_vision.*), Voxtral (voxtral.cpp), the scheduler/runner, or any C8 serving/parser file — git diff = the one mm driver file + records only. Sibling C8 agent's serving/parser records untouched. | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-ae01df29a1ac58509 (branch worktree-agent-ae01df29a1ac58509); dgx build+gate dgx.casa:~/work/mm-decode-graph (git archive, CUDA cutlass 4.5.0 -DVLLM_CPP_CUTLASS_DIR=$HOME/cutlass-4.5.0 -DVLLM_CPP_TRITON=ON arch 121a + FA2 banner, ALL GPU under flock /tmp/gpu sole owner, nvidia-smi idle) | branch worktree-agent-ae01df29a1ac58509, base origin/main bd3e15ed | Multimodal SPEED lever #3 FIRST BRICK — SCOPE the mm serving/decode path (file:line), then make the 27B mm image+video decode step graph-capturable by routing it through the production captured decode; token-exact held; record the lever-#3 W-plan. | ACTIVE | 2026-07-27 — LEVER #3 FIRST BRICK LANDED (token-exact; NEUTRAL at 27B, structural gap closed). SCOPE: mm serving ingestion UNWIRED (protocol.cpp:298, no image_url/audio_url, no engine multi_modal_data); mm decode was single-seq eager; the graphed captured decode Qwen3_5DenseDecodeGraph (qwen3_5_dense.h:314) already existed for the 27B-dense family but the mm path bypassed it; Voxtral's Llama stack has NO decode-graph class. BRICK: VLGenerateCoreGdn pure-decode loop (shared 27B image+video) now runs Qwen3_5DenseDecodeGraph::Step (per-generate, max_num_reqs=1; S==B==1 bit-identical rebuild; decode-time device 1-D RoPE at p reproduces degenerate MRoPE {p,p,p}); one file; eager fallback VT_MM_DECODE_EAGER=1. RED line HELD (proven-to-run, VT_DECODE_GRAPH_STATS=30 replays each): 27B image STRICT 32/32 (54/54), 27B video STRICT 32/32 (27/27, gap 0 nats); golden md5 3bc5f231… unchanged. A/B (throwaway VT_MM_DECODE_EAGER toggle, 4 reps/mode, rep0 dropped, tpot=gen32/31): graphed 232.5 ms/tok (231.8–233.9) vs eager 233.4 (233.35–233.5) = ~0.4% faster = NEUTRAL at the ~222 ms bandwidth floor (launch overhead hidden, as §8 predicted). Value STRUCTURAL: decode graph-capturable ⇒ prerequisite for c2+ and the audio launch-overhead win. Clean CUDA -Werror 0-warn (cutlass+FA2+Triton banner); additive routing (no new kernel) ⇒ no compute-sanitizer surface; benchmark_binding=false. mm rows stay PARTIAL. W-plan §9.5: W1 Voxtral decode-graph (audio 1.52× gap-closer), W2 batched multi-seq c2+, W3 image_url/audio_url serving ingestion. NOT pushed; FULL SHA reported. | | CLAIM-MM-SPEED-GRAPH-W1 | ENG-MM-AUDIO-E2E (engine-matrix, stays ACTIVE/speed-pending — carries the W1 note in-place); the Voxtral model-matrix row + its checklist line + the feature-matrix multimodal row (stay PARTIAL/speed-pending) carry the note in-place. Executes mm speed lever #3 W1 (multimodal-speed.md §9.5) — the Voxtral (Mistral/Llama) decode-graph class. Owns EXACTLY: the NEW VoxtralDecodeGraph class + the decode-loop routing in src/vllm/model_executor/models/voxtral.cpp + include/vllm/model_executor/models/voxtral.h (decode routes through VoxtralDecodeGraph::Step, eager path behind VT_MM_DECODE_EAGER); the records (specs/multimodal-speed.md §9.5 W1 + new §10, this row, ledger, state, engine ENG-MM-AUDIO-E2E + Voxtral model-matrix row + its checklist line + the feature-matrix multimodal row, roadmap MM row, specs/roadmap-v1-completion.md MM line, README, BENCHMARKS). NON-COLLISION: additive-only — the NEW VoxtralDecodeGraph reuses the EXISTING landed dense_attn::AttnBlock/vt::PagedAttention/Qwen3MoeDecodeGraph-pattern (NO new kernel, NO op-registry edit, NO change to any shared forward/graph impl); touches ONLY the two Voxtral files; does NOT touch qwen3_5.cpp (the 27B mm driver / CLAIM-MULTIMODAL-SPEED-GRAPH owner), the tower (qwen3_vl_vision.*), the scheduler/runner, or any C8 serving/parser file (sibling CPU agent's records untouched) — text/other-model forwards byte-identical by construction. | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-ac87339fe5bf632b0 (branch worktree-agent-ac87339fe5bf632b0); dgx build+gate dgx.casa:~/work/mm-voxtral-graph (git archive of the code commit, CUDA cutlass 4.5.0 -DVLLM_CPP_CUTLASS_DIR=$HOME/cutlass-4.5.0 -DVLLM_CPP_TRITON=ON -DCMAKE_CUDA_ARCHITECTURES=121a + FA2 ENABLED banner + Triton vendored MANIFEST-OK, ALL GPU under flock /tmp/gpu sole owner, nvidia-smi idle, VLLM_VOXTRAL_SAFETENSORS→consolidated.safetensors) | branch worktree-agent-ac87339fe5bf632b0, base local main e2b18fc8 (the §9 FIRST-BRICK HEAD) | Multimodal SPEED lever #3 W1 — build a VoxtralDecodeGraph (Voxtral's Mistral/Llama text stack, the last mm text stack with no decode-graph class) and route VoxtralGenerateGreedy's decode through a captured graph; bit-exact held; audio TPOT A/B vs vLLM 40.8 ms. | DONE | 2026-07-27 — W1 LANDED (token-exact; a real non-overlapping win that NARROWS but does NOT close the audio 1.52× gap). New VoxtralDecodeGraph (sibling of Qwen3MoeDecodeGraph: pure full-attention over dense_attn::AttnBlock, no GDN; captures the exact ForwardLastLogits op sequence; S==B==1 bit-identical rebuild; embed OUTSIDE the capture); VoxtralGenerateGreedy decode routes through Step, eager fallback VT_MM_DECODE_EAGER=1. RED line HELD (proven-to-run, VT_DECODE_GRAPH_STATS: captured S=1 + 46 replays): test_voxtral_e2e 14/14 (near-tie seq 48/48, strict prefix 33/48); goldens md5 unchanged (voxtral_golden.json 8ab87b7e…, voxtral_neartie.json 3d199c2d…). A/B (throwaway VT_MM_DECODE_EAGER toggle, 6 reps/mode, rep0 dropped, steady-state): graphed 60.94 ms/tok (60.79–61.07) vs eager 61.71 (61.57–61.88) = −0.77 ms/tok (~1.25%, NON-OVERLAPPING) — NARROWS the gap 1.52×→1.49× vs vLLM 40.8 ms, does NOT close it. HONEST: the removable launch overhead was only ~1.25% of TPOT ⇒ the ~20 ms/tok residual is per-step COMPUTE/kernel efficiency, not launch overhead (refines the §9.5 hypothesis); closing it needs a decode-kernel nsys/port pass and/or batched c2+ (W2). Structural: Voxtral now graph-capturable (prereq for c2+). Clean CUDA -Werror 0-warn (cutlass+FA2+Triton banner); additive class ⇒ no compute-sanitizer surface beyond the existing paged decode; benchmark_binding=false. mm rows stay PARTIAL. NOT pushed; FULL SHA reported. | | CLAIM-MM-SPEED-DECODE-KERN | ENG-MM-AUDIO-E2E (engine-matrix, stays ACTIVE/speed-pending — carries the note in-place); the Voxtral model-matrix row + its checklist line + the feature-matrix multimodal row (stay PARTIAL/speed-pending) carry the note in-place. Executes mm speed lever #3 decode-kernel efficiency (multimodal-speed.md §10 follow-on → new §11): nsys our graphed Voxtral decode vs vLLM, attribute the residual, port the divergent kernel 1:1 OR characterize the ceiling. Owns EXACTLY: the records (specs/multimodal-speed.md §11 + headline pointer, this row, ledger, state, engine ENG-MM-AUDIO-E2E + Voxtral model-matrix row + its checklist line + the feature-matrix multimodal row, roadmap MM row, specs/roadmap-v1-completion.md MM line, README, BENCHMARKS). RECORDS-ONLY — NO code change (byte-exact RED line; the reachable FA2 win flips the committed golden's near-tie branch, blocked). NON-COLLISION: touches ONLY records; does NOT touch voxtral.{h,cpp} (reverted to byte-exact base), qwen3_5.cpp, cuda_paged_attn.cu, the tower, the scheduler/runner, or any C8 serving/parser file (sibling CPU agent's records untouched). | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-ae490561ec7f74b14; dgx build+profile+teacher-force dgx.casa:~/work/mm-audio-kern (git archive md5 ea8715d2…, CUDA cutlass 4.5.0 -G Ninja -DCMAKE_CUDA_ARCHITECTURES=121a -DVLLM_CPP_CUTLASS_DIR=$HOME/cutlass-4.5.0 -DVLLM_CPP_FLASH_ATTN=ON + FA2 ENABLED banner, ALL GPU under flock /tmp/gpu sole owner, nvidia-smi idle; teacher-force oracle ~/venvs/vllm-oracle-v0.25.0-stage) | branch worktree-agent-ae490561ec7f74b14, base local main bbcaedd0 (the §10 W1 HEAD) | Multimodal SPEED lever #3 decode-kernel efficiency — attribute the audio ~20 ms/tok residual to specific kernels (nsys ours vs vLLM), port the divergent lever 1:1 OR characterize a portability ceiling honestly; test_voxtral_e2e stays 14/14 bit-for-bit. | DONE | 2026-07-27 — ATTRIBUTED + VALIDATED CEILING (records-only). nsys: the whole ~20 ms/tok residual is the naive scalar PagedAttentionKernel decode attention (723 µs/call × 30 = 21.7 ms/step, ~120× the KV floor); GEMMs/glue are near-BW-floor. The 1:1 vLLM lever (FA2 flash_attn_varlen decode) is already in-binary, gated off only because the driver's single KV block (444) isn't ÷16. block_size÷16 → decode via FA2 (flash_fwd_splitkv 18.5 µs, 39× faster): TPOT 59.4→38.2 ms/tok (−21.2, ~36%, NON-OVERLAPPING) = 0.94× vLLM 40.8 ms — BEATS parity. But it flips the committed near-tie golden's pos-33 EXACT-tie branch (repro 48→18) → repro==48 FAILS; the FA2 sequence is FULLY VALID (teacher-force vLLM 0.25.0: 0 divergences, worst gap 0.0000, PASS — a different-but-equal greedy branch). bf16 near-tie / golden-pinning ceiling; no byte-exact faster kernel. RECORDS-ONLY: byte-exact scalar path re-verified test_voxtral_e2e 14/14, goldens md5 unchanged. Recommended: regenerate voxtral_neartie.json from the FA2 sequence (teacher-force PASSES) + land block_size÷16 → claims the validated win. benchmark_binding=false. mm rows stay PARTIAL. NOT pushed; FULL SHA reported. | | CLAIM-MM-SPEED-DECODE-KERN-ADOPT | ENG-MM-AUDIO-E2E (engine-matrix, stays ACTIVE/speed-pending — audio DECODE now correctness+speed DONE, umbrella row PARTIAL; carries the note in-place); the Voxtral model-matrix row + its checklist line + the feature-matrix multimodal row (stay PARTIAL) carry the note in-place. USER-APPROVED adoption of the §11.5 follow-on. Owns EXACTLY: the one-line block_size÷16 in src/vllm/model_executor/models/voxtral.cpp; the distributional-gate conversion + voxtral_neartie.json regen in tests/vllm/multimodal/; the records (specs/multimodal-speed.md §12 + headline pointer, this row, ledger, state, engine ENG-MM-AUDIO-E2E + Voxtral model-matrix row + checklist + feature-matrix mm row, roadmap MM row, specs/roadmap-v1-completion.md MM line, README, BENCHMARKS). NON-COLLISION: touches ONLY voxtral.cpp (1 line) + test_voxtral_e2e.cpp + voxtral_neartie.json + records; does NOT touch cuda_paged_attn.cu/cuda_flash_attn_fa2.cu (FA2 path already in-binary, default-on), qwen3_5.cpp, the tower, the scheduler/runner, or any C8 serving/parser file (sibling CPU agent's records untouched) — kAttention/all shared ops untouched ⇒ text/other-model forwards byte-identical by construction. | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-a67c6457f3a3b7c3e; dgx build+gate+profile+teacher-force dgx.casa:~/work/mm-audio-fa2 (git archive of the code commit, CUDA cutlass 4.5.0 -G Ninja -DCMAKE_CUDA_ARCHITECTURES=121a -DVLLM_CPP_CUTLASS_DIR=$HOME/cutlass-4.5.0 -DVLLM_CPP_FLASH_ATTN=ON + FA2 ENABLED banner, -Werror 0-warn, ALL GPU under flock $HOME/gpu.lock sole owner, nvidia-smi idle; teacher-force oracle ~/venvs/vllm-oracle-v0.25.0-stage) | branch worktree-agent-a67c6457f3a3b7c3e, base local main 57df9a92 (the §11 records-only HEAD) | Multimodal SPEED lever #3 decode-kernel ADOPTION — land block_size÷16 (FA2 decode), convert the gate to the ratified near-tie distributional form + regen the near-tie golden, verify on GPU (routing + gate + capture-safety + A/B). | DONE | 2026-07-27 — ADOPTED: audio decode BEATS vLLM (0.97×), the LAST mm decode-speed gap CLOSED. One-line block_size÷16 routes decode via FA2 LaunchDecodeVarlenFA2Bf16 (nsys: flash_fwd_splitkv 1410 @ 18.5 µs, zero PagedAttentionKernel). Gate converted to distributional near-tie (binding = teacher-force PASS, kernel-independent; strict prefix exact to first tie [FA2 pos 18, >=18]; determinism anchor to FA2 seq). voxtral_neartie.json md5 3d199c2d…937b9ad3…; STRICT golden 8ab87b7e… UNCHANGED. Gate PASS 16/16; teacher-force vLLM 0.25.0 = 0 divergent, gap 0.0, PASS. Capture-safe: graph S=1 + 46 replays valid, compute-sanitizer 0 errors on graphed-FA2-decode (text-only 22/22, 20 replays), 3 runs byte-identical ⇒ ships as DEFAULT graph path. A/B (same-binary, 6 reps rep0 dropped): scalar 60.50 → FA2 39.50 ms/tok (−21.0, ~35%, NON-OVERLAPPING) = 0.97× vLLM 40.8 ms — BEATS. Clean CUDA -Werror 0-warn. Audio DECODE correctness+speed DONE; umbrella ENG-MM-AUDIO-E2E stays ACTIVE/PARTIAL (audio TTFT/encoder unmeasured + c2+ batched serving). benchmark_binding=false. NOT pushed; FULL SHA reported. | | CLAIM-MM-SPEED-AUDIO-ENC | ENG-MM-AUDIO-E2E (engine-matrix, stays ACTIVE/PARTIAL — audio TTFT/encoder now MEASURED + a warp-attention brick landed, NOT at parity; carries the note in-place); Voxtral model-matrix row + feature-matrix multimodal row stay PARTIAL. Closes §12's open item (audio TTFT unmeasured our-side). Owns EXACTLY: the encoder-attention swap (naive → vt::AttentionDenseFast, VT_WHISPER_ENC_EAGER fallback) in src/vllm/model_executor/models/whisper_audio.cpp; the records (specs/multimodal-speed.md §13 + headline pointer, this row, ledger, state, engine ENG-MM-AUDIO-E2E, Voxtral model-matrix row + checklist, feature-matrix mm row, roadmap MM row, specs/roadmap-v1-completion.md MM line, docs/STATUS.md audio line, docs/BENCHMARKS.md). NON-COLLISION: touches ONLY whisper_audio.cpp + records; reuses the EXISTING kAttentionDenseFast op (no kernel/cuda_ops.cu change), does NOT touch voxtral.cpp/qwen3_5.cpp/cuda_paged_attn.cu/the tower/scheduler/runner/any serving-parser file (sibling agents' records untouched); kAttention and all other shared ops untouched ⇒ text/image/video/other-model forwards byte-identical by construction; README NOT touched (landing page unchanged). | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-a605a353ca3afce7b; dgx build+gate+profile dgx.casa:~/work/mm-audio-fa2 (incremental on the §12 tree; source verified == current main by md5, only whisper_audio.cpp edited + scp'd; CUDA cutlass 4.5.0 + FA2 arch 121a; ALL GPU under flock /tmp/gpu sole owner, nvidia-smi idle, local-ai-worker absent; nsys inside env -i) | branch worktree-agent-a605a353ca3afce7b, base local main 9e34a19c (the §12 decode-adopt HEAD) | Multimodal SPEED audio ENCODER TTFT — nsys-attribute the Whisper encoder attention BOTH sides, route the encoder self-attention to the warp-scoped AttentionDenseFast (the §7 tower fix), verify on GPU (16/16 + goldens unchanged + proof-of-run), A/B + honest verdict vs vLLM 43 ms. | DONE | 2026-07-27 — MEASURED + 4.7× warp brick landed, NOT at parity. Naive kAttention (O(t²) per-key block-__syncthreads) dominated the encoder → routed head_dim-64 non-causal encoder attention to vt::AttentionDenseFast (§7 fix; kAttention untouched). RED HELD: test_voxtral_e2e 16/16 default-fast (strict prefix 18/48, teacher-force PASS, seq 48/48); naive arm ALSO 16/16 with the SAME tokens ⇒ ZERO token flips (bit-exact at token level); goldens md5 UNCHANGED (voxtral_golden.json 8ab87b7e…, voxtral_neartie.json 937b9ad3…, before==after). Proof-of-run: nsys shows AttentionWarpKernel 32 inst (= 32 layers), zero naive. A/B (throwaway VT_WHISPER_ENC_TIME, 6 reps rep0 dropped): encoder forward 8870 → 1890 ms (4.7×, NON-OVERLAPPING). HONEST — NOT closed: ~1.89 s vs vLLM 43 ms TTFT (~44×); nsys of fast arm: AttentionWarpKernel STILL 31.8 ms/layer × 32 = 1.02 s (O(t²), memory-bound on redundant K/V reads, no shared-mem tile reuse) + per-call host weight marshalling + conv round-trip. Ranked residual (NOT implemented): (1) flash-TILED non-causal hd-64 attention (LARGE); (2) resident one-time weights + drop conv round-trip (MEDIUM, byte-exact). Audio TTFT/encoder stays speed-pending/PARTIAL. benchmark_binding=false. NOT pushed; FULL SHA reported. | | CLAIM-MM-SPEED-AUDIO-ENC-KERNEL | ENG-MM-AUDIO-E2E (engine-matrix, stays ACTIVE/PARTIAL — audio TTFT/encoder still NOT at parity; carries the note in-place); Voxtral model-matrix row + KERNEL-ATTN-DENSE-FLASH (kernel-matrix, new ACTIVE row) + feature-matrix mm row stay PARTIAL/ACTIVE. Implements §13.5 residual lever #1. Owns EXACTLY: NEW vt::AttentionDenseFlash (OpId::kAttentionDenseFlash) — AttentionDenseFlashKernel/launch in src/vt/cuda/cuda_ops.cu + registration, decl include/vt/ops.h (enum + prototype), wrapper/validation src/vt/ops.cpp, CPU registration src/vt/cpu/cpu_ops.cpp (maps to AttentionKernel); the encoder-attention default swap + VT_WHISPER_ENC_WARP/EAGER A/B knobs in src/vllm/model_executor/models/whisper_audio.cpp; the records (specs/multimodal-speed.md §14 + headline pointer, this row, kernel-matrix new row, ledger, state, Voxtral model-matrix row, feature-matrix mm row, roadmap MM row, docs/STATUS.md audio line, docs/BENCHMARKS.md). NON-COLLISION: the new op is ADDITIVE (kAttention/kAttentionDenseFast/kAttentionDenseFlash are separate ops — text/vision/other-model forwards byte-identical by construction); touches ONLY cuda_ops.cu/ops.cpp/ops.h/cpu_ops.cpp/whisper_audio.cpp + records; does NOT touch voxtral.cpp/qwen3_5.cpp/cuda_paged_attn.cu/the tower/scheduler/runner/any serving-parser file; README/Metal NOT touched (concurrent session owns them). | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-aa1bc27486712142a; dgx build+gate+profile dgx.casa:~/vllmcpp-mmspeed (git archive of the code commit, clean CUDA build-cuda cutlass 4.5.0 -DVLLM_CPP_CUDA=ON -DCMAKE_BUILD_TYPE=Release -DVLLM_CPP_CUTLASS_DIR=$HOME/cutlass-4.5.0 -DVLLM_CPP_CUDA_ARCHITECTURES=121a, "CUTLASS found"+FA2-ENABLED banners CONFIRMED, -Werror 0-warn); ALL GPU under flock $HOME/gpu.lock sole owner (nvidia-smi idle, local-ai-worker absent), rep0 dropped | branch main (worktree-isolated), base local main af1ed76b (confirmed via git rev-parse HEAD) | Multimodal SPEED audio ENCODER TTFT lever #1 — implement a flash-TILED non-causal hd-64 encoder attention (shared-memory K/V tiling), route the Whisper encoder to it, verify BYTE-EXACT on GPU (16/16 + goldens unchanged + proof-of-run + RED + sanitizer) + A/B + honest verdict vs vLLM 43 ms. | DONE | 2026-07-28 — §13 lever #1 LANDED: flash-tiled encoder attention, byte-exact, real 1.82× kernel win, NOT at parity. New vt::AttentionDenseFlash shared-memory-TILES K/V across a block of kFlashBr=16 query-warps (FA2 K/V tiling, structure-ported from vendored flash_fwd_kernel.h:52); per-warp online-softmax math copied VERBATIM from AttentionWarpKernel ⇒ BIT-IDENTICAL (only K/V bytes come from shared memory) ⇒ token-identical. BYTE-EXACT (RED line HELD): test_voxtral_e2e 16/16 default-flash (strict prefix 18/48, teacher-force PASS, seq 48/48); flash/warp/eager token dumps md5-IDENTICAL (89923566…) ⇒ ZERO token flips; goldens md5 UNCHANGED (voxtral_golden.json 8ab87b7e…, voxtral_neartie.json 937b9ad3…, before==after). Proof-of-run: nsys AttentionDenseFlashKernel 32 inst, ZERO AttentionWarpKernel/naive on encoder. RED: corrupt kernel → 13/16 FAILURE → restore → 16/16. compute-sanitizer 0 errors; 3 runs byte-identical. A/B (same-binary, flock, rep0 dropped): attention 35.11 → 19.29 ms/layer (1.82×, NON-OVERLAPPING); encoder forward ~1834 → ~1375 ms (1.33×). HONEST — NOT closed: ~1.37 s vs vLLM ~43 ms TTFT (~32×, was ~44×) — the scalar warp-per-query recurrence is now serial-latency-bound over 1500 keys (L2 already served the redundant reads ⇒ 1.8× not 16×) + ~0.75 s host weight marshalling/conv round-trip. Residual levers (NOT implemented): (1) tensor-core MMA hd-64 non-causal FA2 (LARGE, the true gap-closer); (2) resident one-time encoder weights (MEDIUM, byte-exact). Clean CUDA -Werror 0-warn + CPU -Werror 0-warn (ops/whisper). Audio TTFT/encoder stays speed-pending/PARTIAL. benchmark_binding=false. NOT pushed; FULL SHA reported. | | CLAIM-MM-SPEED-AUDIO-ENC-RESIDENT | ENG-MM-AUDIO-E2E (engine-matrix, stays ACTIVE/PARTIAL — audio TTFT/encoder still NOT at parity; carries the note in-place); Voxtral model-matrix row + feature-matrix mm row stay PARTIAL. Implements §14.5 residual lever #2 (the MEDIUM, byte-exact host-data-movement half). Owns EXACTLY: the device-resident weight handles (mutable std::shared_ptr<void> on WhisperEncoderLayerWeights + WhisperAudioEncoderWeights) in include/vllm/model_executor/models/whisper_audio.h + the ResidentBf16 helper / VT_WHISPER_ENC_REMARSHAL A-B knob / weight-site rewiring in src/vllm/model_executor/models/whisper_audio.cpp; the records (specs/multimodal-speed.md §15 + headline pointer, this row, ledger, state, Voxtral model-matrix row, feature-matrix mm row, roadmap MM row, docs/ENVIRONMENT.md env row, docs/STATUS.md audio line, docs/BENCHMARKS.md). NON-COLLISION: pure host DATA-MOVEMENT (no new kernel, no op-registry/cuda_ops.cu/ops.*/cpu_ops.cpp edit); touches ONLY whisper_audio.{h,cpp} + docs/ENVIRONMENT.md + records; does NOT touch voxtral.cpp/qwen3_5.cpp/cuda_paged_attn.cu/the tower/scheduler/runner/any serving-parser file; README/Metal NOT touched (concurrent session owns them). Byte-identical output by construction (moves weights device-resident, no math change). | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-a11fada6333aa0108; dgx build+gate+profile dgx.casa:~/vllmcpp-whisper-resid (git archive of the code tree, CUDA cutlass 4.5.0 -DVLLM_CPP_CUTLASS_DIR=$HOME/cutlass-4.5.0 -DVLLM_CPP_TRITON=ON -DCMAKE_CUDA_ARCHITECTURES=121a, "CUTLASS found"+FA2-ENABLED banners CONFIRMED, -Werror 0-warn); ALL GPU under flock $HOME/gpu.lock (concurrent CPU-build agent present, box GPU idle), rep0 dropped | branch worktree-agent-a11fada6333aa0108, base local main 0e2c667a (confirmed via git rev-parse HEAD) | Multimodal SPEED audio ENCODER TTFT lever #2 — profile-CONFIRM the ~0.75 s host chunk, then make the encoder weights device-resident (mirror the Qwen d_dev seam; upload+convert ONCE, reuse); the conv host round-trip removal is DEFERRED (needs a device im2col kernel). Verify BYTE-EXACT on GPU (16/16 + goldens unchanged + proof-of-run + RED + sanitizer) + A/B + honest verdict vs vLLM 43 ms. | DONE | 2026-07-28 — §14.5 lever #2 LANDED: device-resident one-time encoder weights, byte-exact, real 1.89× encoder-forward host win, encoder still NOT at parity. PROFILE-CONFIRMED the ~0.75 s: it is DOMINATED by per-call weight marshalling (host f32→bf16 ToBf16 + Backend::Copy H2D of 487 weight tensors / ~635 M f32 every forward), NOT the conv round-trip (small; its removal needs a device im2col kernel — DEFERRED). Mirrored the Qwen decoder residency (qwen3_5_weights.h d_dev; qwen3_5.cpp ResidentWeight:797): each weight f32→bf16-converted + uploaded ONCE into a mutable shared_ptr<void> (Backend-Free deleter), reused across forwards. BYTE-EXACT (RED line HELD): test_voxtral_e2e 16/16 (strict prefix 18/48, teacher-force PASS, seq 48/48) — IDENTICAL to §14; goldens md5 UNCHANGED (voxtral_golden.json 8ab87b7e…, voxtral_neartie.json 937b9ad3…, before==after). Proof-of-run + RED (VT_WHISPER_ENC_REMARSHAL): nsys memcpy HtoD resident 740 ops / 9.4 GB vs re-marshal 1714 ops / 11.9 GB (−974 ops = 487 weights × 2 saved re-uploads, −2.5 GB); RED forces per-call re-upload → the +648 ms returns. compute-sanitizer memcheck 0 errors (16/16 under sanitizer; encoder path not graphed ⇒ capture-safety N/A). A/B (same-binary VT_ENC_REPS, flock, 6 reps rep0 dropped, steady-state): encoder forward ~1377 → ~729 ms (−648 ms, 1.89×, NON-OVERLAPPING) — the 1377 ms re-marshal arm reproduces §14's pre-lever ~1375 ms EXACTLY. Trajectory §13→§14→§15: 1834 → 1375 → 729 ms. HONEST — NOT closed: ~729 ms vs vLLM ~43 ms (~17×, was ~32×); the residual is now GPU-compute-bound (scalar warp-per-query attention 617 ms/32L + conv GEMMs) — the LARGE gap-closer remains tensor-core MMA hd-64 non-causal FA2 (§14.5 lever #1, dedicated slot). vLLM not re-measured (OOM-reboot risk of a big oracle alongside the active tree; residual ~17× regardless). Clean CUDA -Werror 0-warn (banners CONFIRMED) + CPU -Werror 0-warn (whisper_audio.cpp). Audio TTFT/encoder stays speed-pending/PARTIAL. benchmark_binding=false. NOT pushed; FULL SHA reported. | | CLAIM-MM-SPEED-QWEN-IMAGE | ENG-MM-QWEN36-VL-FORWARD (engine-matrix, stays ACTIVE/PARTIAL — vision-forward speed axis now BEATS vLLM but the umbrella row stays PARTIAL for batched c2+/serving; §16 note added in-place, no state change, no Total recompute); KERNEL-ATTN-DENSE-FLASH (kernel-matrix, stays ACTIVE — scope EXTENDED to the vision tower, no new kernel row ⇒ KERNEL count unchanged). GPU CAMPAIGN #2 (2/3): close the Qwen image/video mm-forward SPEED. Owns EXACTLY: the vision-tower attention op-select (default AttentionDenseFastAttentionDenseFlash + VT_QWEN3VL_ATTN_WARP/VT_QWEN3VL_ATTN_EAGER A/B knobs) in src/vllm/model_executor/models/qwen3_vl_vision.cpp; the warp-vs-flash A/B arm + bit-identity assert in tests/vllm/multimodal/bench_qwen3_5_vl_tower.cpp; the records (specs/multimodal-speed.md §16 + headline pointer, this row, engine-matrix ENG-MM-QWEN36-VL-FORWARD §16 note + claim-list, kernel-matrix KERNEL-ATTN-DENSE-FLASH scope+claim, model-matrix Qwen3-VL/27B speed note, feature-matrix mm row, roadmap MM row, ledger, state, docs/ENVIRONMENT.md (2 A/B env rows), docs/STATUS.md, docs/BENCHMARKS.md). NON-COLLISION: pure op-SELECT of an EXISTING additive op (no new kernel, no cuda_ops.cu/ops.*/cpu_ops.cpp edit); kAttention/kAttentionDenseFast/kAttentionDenseFlash are separate ops ⇒ text/audio/other-model + the whisper encoder byte-identical by construction; touches ONLY qwen3_vl_vision.cpp + the tower bench + records; does NOT touch qwen3_5.cpp/voxtral.cpp/whisper_audio.cpp/cuda_paged_attn.cu/scheduler/runner/any serving-parser file; README/Metal NOT touched (concurrent session owns them). Byte-identical tower output by construction (flash per-warp math copied verbatim from warp; only K/V source changes). | Claude Code (opus-4-8) | isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-a0304cec284f452e8; dgx build+gate+profile dgx.casa:~/vllmcpp-mmspeed (git archive of the working tree over the reused §14/§15 tree, CUDA build-cuda cutlass 4.5.0 -DCMAKE_BUILD_TYPE=Release -DVLLM_CPP_CUTLASS_DIR=$HOME/cutlass-4.5.0, "CUTLASS found"+FA2-ENABLED banners CONFIRMED, -Werror 0-warn exit 0); ALL GPU under flock $HOME/gpu.lock sole owner (nvidia-smi idle, local-ai-worker absent), rep0 dropped | branch main (worktree-isolated), base local main 0a07ac76 (confirmed via git rev-parse HEAD) | Multimodal SPEED Qwen image/video vision-forward — ATTRIBUTE the tower forward (nsys), extend the §14 flash kernel to the tower attention (byte-exact), verify STRICT 32/32 + goldens unchanged + proof-of-run + RED + sanitizer + A/B, honest verdict vs vLLM eager encode. | DONE | 2026-07-28 — ATTRIBUTION REFUTED the assumed big lever; the tower ALREADY BEATS vLLM; byte-exact 1.04× landed. nsys (cuda_gpu_kern_sum, 27B tower, 784 patches): the post-§7 148 ms forward is ~85% the dense attention (AttentionWarpKernel 4.66 ms/block × 27 = ~126 ms), GEMMs ~10%, glue <5%. Routed the tower attention (head_dim 72, non-causal) to the §14 flash-tiled vt::AttentionDenseFlash (head_dim-generic; per-warp online-softmax copied VERBATIM from the warp kernel, only K/V from shared-mem tiles ⇒ BIT-IDENTICAL). BYTE-EXACT (RED line HELD): 27B image e2e STRICT 32/32 (54/54), 4B image 32/32 (46/46), 27B video 32/32 (gap 0 nats, 27/27), test_ops_attention 37239/37239; bench flash-vs-warp tower 0/1,003,520 mismatches; goldens md5 UNCHANGED (qwen3_5_27b 3bc5f231…, qwen3vl_text b7221f22…, qwen3_5_27b_video bf14a962…, qwen3vl_video 09b2fce3…, before==after). Proof-of-run: nsys default 4B e2e = AttentionDenseFlashKernel 24 inst (= 24 vision blocks), ZERO AttentionWarpKernel on mm path. RED: corrupt flash V-accum → 30/46 FAIL → restore → 46/46. compute-sanitizer memcheck 0 errors. A/B (same-binary, flock, rep0 dropped, 27B tower): warp 148.3 → flash 142.3 ms = 1.04×REFUTES the assumed lever: at t=784 (single window) the vision attention is serial-latency-bound (dependent 784-key online-softmax chain; L2 already serves the redundant reads), NOT K/V-bandwidth-bound like audio (§14, t=1500, 1.82×), so flash recovers only ~6 ms. HONEST HEADLINE: the tower ALREADY BEATS vLLM — 142 ms vs vLLM 0.25.0 ~250 ms eager encode = 0.57× (carried-forward §7 denominator; not re-measured — OOM-reboot risk, well under it). Lever lands FREE + byte-exact + unifies the codebase (tower + audio encoder now both on AttentionDenseFlash). Clean CUDA -Werror 0-warn (banners CONFIRMED). Image/video mm-forward = correctness-DONE + speed-BEATS-vLLM; residual (NOT needed for parity): tensor-core MMA hd-72 non-causal attention (§14.5 lever #1) + batched c2+/serving. benchmark_binding=false. NOT pushed; FULL SHA reported. |

| CLAIM-GEMMA4-G1B | ENG-RUNNER-MODELSHAPE (engine-matrix, stays ACTIVE — per-layer-KV extension added in-place, no state change). The Gemma-4 mm model row was DROPPED from this claim 2026-08-06 by the live-state audit (ACTIVEREADY, no Git evidence for the claim); see the Closing and archival note. | Claude Code (opus-4-8) | isolated worktree .claude/worktrees/agent-a7d31fe6f2d19a381 (CPU build-cpu -DVLLM_CPP_CUDA=OFF Release -Werror clean; dgx CUDA build ~/gemma4g1b sm_121a for the STRICT gate under flock ~/gpu.lock) | branch worktree-agent-a7d31fe6f2d19a381, base main 2e874490 (confirmed git rev-parse HEAD) | MODEL-GEMMA4 G1b: the runner heterogeneous per-layer KV head_dim change unblocking the strict gate. Owns: include/vllm/v1/kv_cache_interface.h (KVCacheConfig::per_layer_attn_specs), src/vllm/v1/worker/gpu/runner.cpp (per-layer alloc+view), src/vllm/model_executor/models/gemma4_registry.cpp (publishes per-layer specs + text_config reads), gemma4.cpp/gemma4_weights.cpp (text_config reads + stale-note fix), src/vllm/transformers_utils/hf_config.cpp (nested-rope loads), src/vllm/tokenizer/tokenizer.cpp (Gemma metaspace-via-normalizer), NEW tests/parity/test_gemma4_paged_engine.cpp + 1 CMake block, tests/vllm/test_hf_config.cpp (nested-rope subcase flipped) + the record surfaces. NON-COLLISION: the KVCacheConfig field is OPTIONAL + empty-defaulted ⇒ byte-neutral for every existing model (the ENG-RUNNER-MODELSHAPE shared path is extended additively, not rewritten); does NOT touch README/Metal or any other model forward. | PARTIAL (text path STRICT 32/32; mm towers G2/G3 + speed pending) | 2026-07-28 — TEXT PATH STRICT 32/32 TOKEN-EXACT vs vLLM 0.25.0 (foreground, NOT pushed). Runner per-layer KV head_dim (per_layer_attn_specs) + 3 additive loader gaps fixed en route to the first-ever Gemma-4 forward (nested rope_parameters; Gemma Replace(" "→"▁") metaspace normalizer; reading Gemma-4 scalars from raw["text_config"] — the G1 latent bug that silently treated all layers as sliding). Gate test_gemma4_paged_engine on the dgx CUDA build under flock = 32/32 exact ids. BYTE-NEUTRAL: full CPU runner/KV/scheduler/tokenizer/hf_config suite green + OLMo-2 SACRED GPU re-gate 16/16 UNCHANGED on the final binary. Residuals: YOCO cache dedup (G1c, memory-only), G2 vision (reuses M2a) / G3 audio towers, per-axis SPEED. dgx: re-fetched E4B (16 GB, disk-guarded), pruned after; local-ai-worker restored. | | CLAIM-SCALE-OUT-SPIKE | BACKEND-DISTRIBUTED-COMM + BACKEND-DISTRIBUTED-PP + BACKEND-DISTRIBUTED-MULTINODE-SPARK + BACKEND-DISTRIBUTED-MLX-RING (all INVENTORIED→SPIKE). The intra-node tensor-parallel row was DROPPED from this claim 2026-08-06 by the live-state audit (ACTIVEREADY, no Git evidence for the claim); see the Closing and archival note. | Claude Code (opus-4-8) | isolated worktree .claude/worktrees/agent-a9581ce4a8987ea95 (CPU-only, records-only — NO build, NO GPU, NO download; the ≥2-GPU / 2-Spark / 2-Mac gates are NAMED W1+ bricks, not run — no such HW here) | branch main worktree, base main df18ca91 (confirmed via git rev-parse HEAD) | Scale-out / distributed execution W0 SCOPE spike — the NEW capability dimension (single-GPU today) across three legs sharing ONE vt:: collective abstraction. Owns ONLY: NEW .agents/specs/scale-out-distributed.md (3-leg scope + unifying vt::Communicator design + reuse-vs-new seam map + per-leg W-plan + confirmed-vs-assumed facts); the 5 BACKEND-DISTRIBUTED-* rows + the backend-matrix count-invariant bullet + scripts/check-agent-record.py BACKEND 60→65; and the record surfaces (this row, feature-matrix §3, roadmap scale-out subsection, docs/STATUS scale-out line, docs/BENCHMARKS NOT-APPLICABLE, parity-ledger, state). NON-COLLISION: records-only, ZERO edits to any src//include//CMakeLists.txt/kernel/model TU; does NOT touch README or Metal source; the checker BACKEND-count bump is the only shared-file edit. | SPIKE | 2026-07-28 — W0 SCOPE LANDED (records-only, foreground, NOT pushed). Grounded 1:1 in pinned vLLM 555967922: TP (linear.py:418/1612/1766, vocab_parallel_embedding.py:198, fused_moe/expert_map_manager.py:22), PP (models/utils.py:785/798, distributed/utils.py:127, parallel_state.py:957), the comm abstraction (base_device_communicator.py:147 + GroupCoordinator parallel_state.py:358, world_size==1 bypass :638), multi-node (multiproc_executor.py:103/ray_executor.py:64/init_distributed_environment parallel_state.py:1560/vllm_net_devices.py); MLX from docs (mlx.core.distributed ring/JACCL over Thunderbolt + mlx-lm --num-shards); GB10 facts web-confirmed (ConnectX-7 200GbE RoCE, NCCL all-reduce ~10.2 GB/s measured). Our seams mapped file:line: no collective code exists (executor is a direct single-worker call executor.cpp:7-34; latent dcp/pcp_world_size fixed to 1); the vt:: op signature is already collective-ready (Queue& carrying a Device), the two blockers are the one-Backend-per-type registry (backend.cpp:42) + device-0-hardcoded CUDA registrar (cuda_backend.cu:297-299). Payoff stated: DeepSeek-V4 fp8 ~167 GiB across 2×119 GiB Sparks. All 6 record checkers rc=0. NEXT: W1 = vt::Communicator skeleton + CPU 2-proc-loopback all-reduce gate (no GPU needed). | | CLAIM-SCALE-OUT-W1 | BACKEND-DISTRIBUTED-COMM (SPIKE→ACTIVE) | Claude Code (opus-4-8) | isolated worktree .claude/worktrees/agent-abebe3814a099ab8e (CPU-only exact-gate, NO GPU) | branch main worktree, base main 5aace348 (confirmed via git rev-parse HEAD) | Scale-out W1 — the first distributed-execution brick: the vt::Communicator collective abstraction + a CPU loopback gate, NO hardware. Owns ONLY: NEW include/vt/communicator.h + src/vt/communicator.cpp (in-process multi-rank transport) + tests/vt/test_communicator.cpp; the CMake wiring for those (library source list + test target); the BACKEND-DISTRIBUTED-COMM row (COMM only; other 4 stay SPIKE); and the record surfaces (this row, spec §W1, feature-matrix §3, roadmap scale-out subsection, docs/STATUS scale-out line, docs/BENCHMARKS NOT-APPLICABLE, parity-ledger, state). NON-COLLISION: additive files only; does NOT touch the backend registry (backend.cpp:42), README, or Metal; no OpId enum change (collective-op routing deferred to W2). | ACTIVE | 2026-07-28 — W1 LANDED (CPU exact-gate, foreground, NOT pushed). vt::Communicator ports DeviceCommunicatorBase (base_device_communicator.py:147) + GroupCoordinator world_size==1 bypass (parallel_state.py:638). CPU in-process transport: N ranks = N host threads over one generation-barrier + staging slots + Send/Recv rendezvous mailbox — a REAL cross-rank sum, no IPC, sidesteps the per-device registry W2 blocker. Gate test_communicator 8 cases / 50 assertions PASS: 2- & 4-rank AllReduce-sum exact on every rank (f32/i32/i64/bf16), max/min, 2/4-rank AllGather concat, Send/Recv rendezvous, and world_size==1 byte-identical no-op. RED-first proven: a non-reducing AllReduce stub failed 4 cases / 37 assertions. Clean full-library CPU -Werror build, 0 warnings. All 6 record checkers rc=0. W2+ residuals: collective OpId/OpProvider routing, TP forward+loader, NCCL(kCUDA)/RoCE(Spark)/MLX-ring(kMETAL) transports, the per-device backend registry. | | CLAIM-PARALLELISM-MODES-SPIKE | BACKEND-DISTRIBUTED-DP + BACKEND-DISTRIBUTED-EP + BACKEND-DISTRIBUTED-SP (all NEW, INVENTORIED→SPIKE); enumerates existing BACKEND-DISTRIBUTED-PP/BACKEND-DISTRIBUTED-COMM + context/CP. The intra-node tensor-parallel row was DROPPED from this claim 2026-08-06 by the live-state audit (ACTIVEREADY, no Git evidence for the claim); see the Closing and archival note. | Claude Code (opus-4-8) | isolated worktree .claude/worktrees/agent-a6656edcf7ff0251f (CPU-only, records-only — NO build, NO GPU, NO download; every mode's correctness gate is HW-blocked, same as scale-out) | branch main worktree, base main 308c312a (confirmed via git rev-parse HEAD) | Parallelism / distributed-execution MODE enumeration spike (user-directed): enumerate EVERY parallelism mode vLLM has, grounded 1:1 in pinned vLLM 555967922 file:line, mapped onto the vt::Communicator seam + the scale-out W-plan. Owns ONLY: NEW .agents/specs/parallelism-modes.md (the enumeration table — mode/what/vLLM file:line/config flag/comm pattern/our-seam/reuse-vs-new/priority + per-mode detail + the Communicator collective map + priority ranking); the 3 NEW BACKEND-DISTRIBUTED-DP/-EP/-SP rows + the backend-matrix count invariant (5→8 table, 65→68 total) + scripts/check-agent-record.py BACKEND 65→68; roadmap scale-out mode sub-table; feature-matrix §3 (intro + EP/DP/SP/context rows repointed to the new spec); and the record surfaces (this row, docs/STATUS scale-out line, docs/BENCHMARKS NOT-APPLICABLE, parity-ledger, state). NON-COLLISION: records-only, ZERO edits to any src//include//CMakeLists.txt/kernel/model/test TU; does NOT touch README or Metal source; the checker BACKEND-count bump is the only shared-file edit. | SPIKE | 2026-07-28 — ENUMERATION LANDED (records-only, foreground, NOT pushed). Grounded 1:1 in pinned vLLM 555967922: TP (linear.py:418/1612/1766, vocab_parallel_embedding.py:198), PP (models/utils.py:785/798, distributed/utils.py:127, parallel_state.py:957; NO virtual/interleaved PP upstream), DP (coordinator.py:23 wave, dp_utils.py:53/164 token all-reduce, group parallel_state.py:1866; outside world_size), EP (expert_map_manager.py:22, use_ep config.py:1204, EP group=DP×PCP×TP parallel_state.py:1892, DeepEP all2all_utils.py:44), SP (sequence_parallelism.py:498, flag compilation.py:129 enable_sp, gated tp>1 — a compilation pass, NOT a world dimension), Context/CP (PCP parallel.py:126+DCP :342, groups parallel_state.py:1817/1836), comm-strategies (cuda_communicator.py:273 custom-AR→pynccl→fallback), combos (rank tensor ExternalDP×DP×PP×PCP×TP parallel_state.py:1785; world_size=PP×TP×PCP parallel.py:824; DP×EP = DeepSeek serving). Each mode → vt::Communicator collective mapped (W1 has AllReduce/AllGather/Send/Recv; EP needs NEW AllToAll, SP needs NEW ReduceScatter). Priority per user: TP → EP+NCCL → PP → DP → SP → context. All 6 record checkers rc=0. NEXT: W2 TP forward+loader (BACKEND-DISTRIBUTED-TP), still ≥2-GPU-gated. | | CLAIM-SCALE-OUT-W2 | BACKEND-DISTRIBUTED-COMM (OpId routing). The intra-node tensor-parallel row was DROPPED from this claim 2026-08-06 by the live-state audit (ACTIVEREADY, no Git evidence for the claim); see the Closing and archival note. | Claude Code (opus-4-8) | isolated worktree .claude/worktrees/agent-a97ee0c03218f753d (CPU-gated + NCCL derive-and-ship, NO ≥2-GPU box) | branch worktree-agent-a97ee0c03218f753d, base main 308c312a (confirmed via git rev-parse HEAD) | Scale-out W2 — same-host multi-GPU: the multi-device backend registry + collective OpId routing + the NCCL transport (derived) + TP in a model forward. Owns: multi-device registry (src/vt/backend.cpp, include/vt/backend.h, cuda_backend.cu registrar); OpId::kAllReduce/kAllGather/kSend/kRecv (include/vt/ops.h) + the Communicator OpId dispatch (src/vt/communicator.cpp, include/vt/communicator.h); NEW src/vt/cuda/nccl_communicator.cu + VLLM_CPP_NCCL CMake; NEW include/vllm/model_executor/models/tensor_parallel.h + the TP wiring in dense_attn_block.h/qwen3.cpp/dense_weight_loaders.h; NEW tests/vt/test_tp_forward.cpp + tests/vt/test_backend_multidevice.cpp; the BACKEND-DISTRIBUTED-TP+COMM rows; record surfaces. NON-COLLISION: additive + default-inert (default-null tp, byte-neutral device-0 registry); does NOT touch README or Metal. | ACTIVE | 2026-07-28 — W2 LANDED (CPU-gated + NCCL derive-and-ship, foreground, NOT pushed). Multi-device registry per-Device{type,index}, byte-neutral device 0 (test_backend_multidevice 14 assertions). Collectives route through OpProvider/OpId (test_communicator still 50/50 via the OpId path). NCCL transport mirrors pynccl.py (ncclCommInitRank/AllReduce/AllGather/Send/Recv), VLLM_CPP_NCCL OFF-by-default → NOT built here (no CUDA/NCCL host); build-verify = W3 residual. TP wired into the Qwen3-dense forward (o_proj + MLP-down all-reduce, MergedColumn loader shard) via a default-null TensorParallel. REAL gate test_tp_forward 60/60 PASS: TP-2 sharded-matmul + RowParallel all-reduce == unsharded tp=1 forward over the CPU communicator; RED-verified (dropping the all-reduce fails 24/60). tp_size==1/nullptr byte-identical (asserted + full CPU suite green). Clean -Werror build 0 warnings. All 6 record checkers rc=0. HW residual: NCCL build-verify + TP-2 token-exact on a ≥2-GPU box; QKV head-aware/vocab/MoE-EP shard; per-op cudaSetDevice affinity. | | CLAIM-POOLING | ENG-POOLER-SEQ (INVENTORIED-implicit→ACTIVE, W1→W2), ENG-POOLING-RUNNER (NEW row, ACTIVE, W3), SERVE-POOLING-ENDPOINTS (INVENTORIED→SPIKE) | Claude Code (opus-4-8) | isolated worktree .claude/worktrees/claim-pooling-w2w3 (CPU build build-cpu -DVLLM_CPP_CUDA=OFF -DVLLM_CPP_SERVER=ON Release + CPU run; NO dgx/GPU — the pooling reductions + activations + runner are host arithmetic) | branch claim-pooling-w2w3, base main edf68c91 (confirmed via git rev-parse HEAD) | Pooling task class HIGH-priority feature-gap #2. W0 spike + W1 CPU pooler OP (prior pass); W2 pooler HEADS composite + SequencePooler/DispatchPooler + PoolerConfig/PoolingParams and W3 pooling RUNNER path (this pass). Owns ONLY: NEW include/vllm/model_executor/layers/pooler/{pooling_metadata,methods,activations,common,pooling_params,pooler_config,heads,poolers,dispatch_pooler}.h + src/vllm/model_executor/layers/pooler/{methods,activations,heads,poolers,dispatch_pooler}.cpp + NEW include/vllm/v1/worker/gpu/pool/pooling_runner.h + src/vllm/v1/worker/gpu/pool/pooling_runner.cpp; NEW tests/vllm/model_executor/layers/pooler/{test_pooler,test_pooler_heads}.cpp + tests/vllm/v1/worker/gpu/pool/test_pooling_runner.cpp; CMakeLists.txt (6 source lines) + tests/CMakeLists.txt (3 tests); NEW .agents/specs/pooling-task-class.md; the ENG-POOLER-SEQ + NEW ENG-POOLING-RUNNER engine-matrix rows + SERVE-POOLING-ENDPOINTS note + engine Serving/Total rollup (Serving 21→22/ACTIVE 6→7, Total 130→131/ACTIVE 47→48) + scripts/check-agent-record.py ENGINE 130→131; the record surfaces (this row, roadmap_v1.md gap #2, docs/STATUS.md, docs/BENCHMARKS.md, feature-matrix.md MODEL-POOLING note, parity-ledger.md, state.md). NON-COLLISION: additive NEW files only — the sole edits to existing compiled headers are ADDITIVE (methods.h defaulted virtuals, pooling_metadata.h new fields); ZERO edits to any existing production forward/runner path; NO pooling MODEL row created (concrete embedding model + real-oracle cosine gate is the named W3-model residual), so README/Metal/model-matrix rows untouched. | ACTIVE | 2026-07-29 — W2 + W3 LANDED + CPU-GATED (foreground, NOT pushed). test_pooler_heads 27/27 (240 asserts, Embedding/Classifier heads + SequencePooler + DispatchPooler incl. mixed embed+classify batch + ctor validation) and test_pooling_runner 5/5 (14 asserts, runner path + STRUCTURAL cosine-parity gate vs double-precision LAST+normalize ref) — plus W1 test_pooler 17/17 unchanged. RED-first proven: disable matryoshka slice + logit_mean → 8 cases/50 asserts fail (heads); CLS-instead-of-LAST drops cosine <0.5 + disable normalize → 2 unit-L2 asserts fail (runner). Clean CPU -Wall -Wextra -Werror 0-warn full-library build. HONEST RESIDUAL: the cosine gate is STRUCTURAL (synthetic weights) — the real-model vllm.LLM(task="embed").encode oracle cosine gate needs a registered concrete embedding model forward (W3-model, no number fabricated). Residuals (spec §Work breakdown): concrete pooling MODEL + real-oracle cosine gate (W3-model), endpoints /v1/embeddings+score+rerank+classify (W4), tokwise AllPool/StepPool (W5). Prior 2026-07-28 — W0 spike + W1 pooler OP LANDED + CPU-GATED: test_pooler 17/17 (50 asserts) vs double-precision refs, RED-first proven. | | CLAIM-DSV4-GGUF-LOADER | QUANT-GGUF-IQ2_XXS (INVENTORIED→ACTIVE), QUANT-GGUF-Q2_K (INVENTORIED→ACTIVE); cross-refs MODEL-TEXT-deepseek-v4-deepseek-v4-for-causal-lm (stays SPIKE, owned by CLAIM-DEEPSEEK-V4-IMPL) | Claude Code (opus-4-8) | isolated worktree .claude/worktrees/gguf-iquant-dsv4 (CPU-only build-cpu -DVLLM_CPP_CUDA=OFF; NO GPU, NO 90 GB download — the dequant unit gate uses known packed bytes; the GGUF header was HTTP-range-read, no download) | branch feat/gguf-iquant-dsv4, base main 4d1be010 (confirmed via git rev-parse HEAD) | GGUF IQ2_XXS + Q2_K dequant, the DeepSeek-V4-Flash single-Spark GGUF quant-path brick (W1). Owns ONLY the GGUF/quant PATH (NOT the forward — the forward TUs stay owned by CLAIM-DEEPSEEK-V4-*): the two dequantize_row_* decoders + grid/sign tables in src/vt/cpu/cpu_quant_dequant.cpp; the kQ2_K/kIQ2_XXS vt block dtype registration in src/vt/dtype.{h,cpp} + src/vt/ops.cpp; the id-16 reader trait in gguf_reader.cpp + ids-10/16 dispatch in gguf_dequant.cpp; tests/vllm/test_gguf_dequant.cpp + tests/vt/test_ops_quant_traits.cpp; the two QUANT-GGUF-* rows; NEW .agents/specs/gguf-iquant-dsv4.md; the V4 GGUF-loadable note on the model-matrix V4 row (row stays SPIKE); the record surfaces. NON-COLLISION: additive within the existing GGUF dequant switch + vt block table — does NOT touch any DeepSeek-V4 forward TU (deepseek_v4.{cpp,h}/_dsa/_weights), README, or Metal; the k-quant/NVFP4 decoders are byte-unchanged. | ACTIVE | 2026-07-29 — W1 LANDED + CPU-GATED (foreground, NOT pushed). IQ2_XXS (id 16, codebook iq2xxs_grid+signs+4-bit scale) + Q2_K (id 10, nibble sub-scale/min) ported 1:1 from llama.cpp ggml-quants.c 237ad9b96; both DEQUANT-ONLY (no vec_dot ⇒ route to expand-bf16). test_gguf_dequant 15/15·480 (hand-derived literals: IQ2_XXS grid[1] byte0=0x2b→5.375, ksigns[1] flips j=0,7→±3.0, db 0.125/0.375; Q2_K 5.75/-0.25/2.5/0.25) + test_ops_quant_traits 9/9·5643 (dequant-only contract). All 7 changed TUs clean under full -Werror; the voxtral.cpp GCC-13 -Werror=array-bounds FP PROVEN pre-existing (fails at base with this diff's dtype.h reverted), neutralized only to link the test binaries. W2 (V4-GGUF loader) DERIVED not landed: HTTP-range-read the real UD-IQ2_XXS header — general.architecture=deepseek4, general.file_type=19 (=IQ2_XXS), split.tensors.count=1328, full deepseek4.* config-KV schema; the tensor NAME manifest is beyond the CDN range cap + uncached ⇒ the V4 registry GGUF reject STAYS. Residuals: V4 forward (W3-W8, multi-Spark) + the V4-GGUF name map (W2, manifest-blocked) + a vec_dot perf leaf. |

| CLAIM-EMBEDDINGS-ONE-SURFACE | ENG-POOLING-RUNNER (live engine-step invocation), SERVE-POOLING-ENDPOINTS (SPIKE→ACTIVE, /v1/embeddings), the LlamaModel embedding membership (INVENTORIED→PARTIAL on merge — only that membership registered); cross-refs ENG-POOLER-SEQ (stays CLAIM-POOLING, ops untouched) | Claude Code (fable-5) helper, task #285 | isolated worktree /home/mudler/_git/vllm.cpp-embeddings-one-surface (CPU-only; lean per-target builds under disk pressure) | branch row/EMBEDDINGS-ONE-SURFACE, base main b44ad337, PR #137 MERGED | ARCH-ONE-SURFACE fold ROW 6: embeddings/pooling through the ONE surface. Owns: NEW src/vllm/model_executor/models/llama_embedding_registry.cpp + LoadLlamaModelEmbeddingWeights (llama_weights.cpp) + Qwen3DenseModel::ForwardHidden (qwen3.{h,cpp} additive tail); the ADDITIVE task-gated pooling plumb (LoadedModel::pooler(), runner pooling_runner_+pool_tokens, Request/EngineCoreRequest::pooling_params, ModelRunnerOutput::pooler_output, scheduler pooling stop, EngineCoreOutput/RequestOutput::pooling_output, LLMEngine::add_pooling_request/embed, ResolveAsyncEnabled(is_pooling_model)); vllm_embed/vllm_embedding_result_free ABI v15 (vllm.h + vllm_c.cpp incl. the refuse-both-directions guards + the v13 vllm_complete_tokens missing-guard fix); handle_embeddings + set_embedder + task-conditional route (api_server.{h,cpp}) + server main pooling dispatch; NEW fixture tests/vllm/models/fixtures/llama_embed_e2e + scripts/mm/llama_embed_fixture_gen.py + tests/vllm/models/test_llama_embedding_fold.cpp; test/guard updates (test_capi v15 section + floor pin >= 15, test_dlopen symbols, c_header_compile.c, test_api_server embeddings section, test_model_registry/gguf arch pins, check-supported-models ARCH_TOKEN_RE); allowlist row removal + FEATURES/STATUS/BENCHMARKS rows + matrices + specs. NON-COLLISION: every engine hook is task-gated on is_pooling_model/pooling_params (nullopt/false = byte-identical text path); no SACRED path rewritten; no example added. | DONE | 2026-08-08 — MERGED in PR #137: fold gate test_llama_embedding_fold 4/4-231 (engine path == direct registry path + f64 LAST+normalize ref + chunked is_valid arm), test_capi 48/48-462, test_dlopen 30/30, server suite 50/50, registry 24/24-820, engine suites green (scheduler 423, llm_engine 204, engine_core 44, output_processor 77, qwen3_forward 1557, async_llm 342, llama_forward 509); 9 mutation kills. RESIDUAL moved to the PARTIAL model row: real embedding checkpoint + LLM(task="embed") oracle cosine. |

Live claim authority

Claims are not snapshotted in this record. scripts/claim-view.py --check-live validates current pull requests; --check-local proves that no stale snapshot was recommitted. Remote failure is REMOTE_UNVERIFIED, never an empty claim set. The retired timestamp/TTL procedure is preserved in completed/pre-cutover-claim-protocol.md.

A READY row is advertised to helpers only after its base-committed spec contains exactly one closed execution contract:

<!-- helper-readiness:v1
{"gate":["python3","tests/example_gate.py"],"mutation":["python3","tests/example_mutation.py"]}
-->

Both values are argv arrays, never shell strings. ready-for-helper.py reads the spec and referenced executables from the configured base commit, expands that exact commit into a disposable checkout, and runs both commands with no shell, a sanitized environment, bounded diagnostics, and a timeout. The gate must exit zero and the mutation command must exit nonzero. A mutable worktree file, prose assertion, missing/nonregular program, or unsafe argv cannot prove readiness. CPU or exact gate hardware, satisfied dependencies, READY lifecycle, and the absence of a repository-matching live claim remain required.

**16-bit CPU GEMM: wide x86 ISA tiers + tiled sgemm (KERNEL-GEMM-CPU-ELEM-X86WIDE

  • KERNEL-GEMM-CPU-TILED, 2026-08-06, CLAIM-KERNEL-CPU-ELEM-WIDE-1).** Claude Code (opus-5), helper role claimed via scripts/agent-role.py claim helper --row KERNEL-GEMM-CPU-ELEM-X86WIDE, isolated worktree /home/mudler/_git/vllm.cpp-x86wide on branch row/KERNEL-GEMM-CPU-ELEM-X86WIDE, base cbc56f12. Spike: specs/cpu-elem-gemm-wide-isa-and-tiling.md.

Owns EXACTLY: new src/vt/cpu/cpu_matmul_elem_avx2.cpp and cpu_matmul_elem_avx512.cpp; the BuildTier() probe and tier-table plumbing in src/vt/cpu/cpu_matmul_elem.{h,cpp}; the btm tiled-kernel family in those same files; one per-file COMPILE_OPTIONS block in CMakeLists.txt beside the existing i8mm block; the tier sweep in tests/vt/test_ops_matmul_elem.cpp; the two new kernel-matrix.md rows and the check-agent-record.py KERNEL count; this claim row. MUST NOT touch a model forward, a loader, the quant GEMM (cpu_quant_*, that is G5/G8), any op contract, or any golden. MUST NOT trade bit-exactness for speed: the E1-E4 invariant is that widening adds OUTPUT lanes or M rows and NEVER splits the K reduction, which makes the result byte-identical by construction and keeps the existing memcmp gate valid.

Grounded in the measured attribution in .agents/benchmark-record.md (2026-08-06, "Why vt's 16-bit CPU GEMM trails ggml"): our NEON kernel is at ggml-stock parity, the Arm deficit is entirely llamafile (~1.9x f16), and x86 carries an additional ~3.5x SSE2-vs-AVX-512 width gap.

Known limitation, stated at claim time: the x86 row CANNOT be speed-gated. The x86 dev box is VOID for timing per CLAIM-KERNEL-CPU-ELEM-GEMM-1 and GATE_HOST is aarch64, so x86 numbers are INDICATIVE only and no x86 ratio is binding. Correctness (memcmp byte-identity) IS gatable on x86 and is the bar this claim will meet. The tiled row is speed-gatable on dgx.

| CLAIM-ROCM-W0-1 | BACKEND-ROCM (INVENTORIED→ACTIVE) | Claude Code (opus-5) | worktree /home/mudler/_git/vllm.cpp-rocm-w0, base main 4cfeee13; CPU-only Release build, NO GPU of any kind | branches row/backend-rocm-seam (PR #87) + row/backend-rocm-w0 (PR #88, stacked) | Owns ONLY the ROCm skeleton and the platform-SELECTION gate it uncovered: NEW include/vt/rocm/{rocm_arch,rocm_runtime}.h, NEW src/vt/rocm/{rocm_backend,rocm_rmsnorm,rocm_ops}.hip, NEW src/vllm/platforms/rocm.cpp, NEW tests/vt/{test_rocm_arch,test_rocm_backend}.cpp, NEW .agents/specs/rocm-backend-w0.md; ADDITIVE edits: include/vt/device.h (kROCM), include/vllm/platforms/interface.h + src/vllm/platforms/platform.cpp (CurrentPlatformPriority() + kROCM in the walk), tests/vllm/platforms/test_platform.cpp, tests/vt/test_backend_cross_device.cpp (kROCM in the discovery list), CMakeLists.txt/tests/CMakeLists.txt, this row + the BACKEND-ROCM matrix row + README/BUILD/ROCM/STATUS/FEATURES/BENCHMARKS + NOW/state. NON-COLLISION: every new file is ROCm-only; the only shared-code edits are one enum entry and one selection-array entry, neither of which changes behaviour for any registered backend (nothing registers kROCM in a non-HIP build). | ACTIVE | 2026-08-06 — W0 LANDED, CPU-GATED, HIP UNBUILT. The three .hip TUs have never been compiled by anyone (no AMD hardware here) — weaker than build-supported, and labelled UNBUILT everywhere. Verified: clean -Werror build, ctest full suite, test_rocm_arch 40/40 (upstream's own worked examples), test_platform incl. the new walk gate, device-leakage unchanged at 32; the two non-HIP legs are object-compiled in every build as a bit-rot guard. PENDING (hardware): every HIP compile, test_rocm_backend, the cross-device RmsNorm-vs-CPU-oracle comparison, and both BACKEND-GATE-ROCM-* rows. Next event is a contributor's first -DVLLM_CPP_HIP=ON on #41. | | CLAIM-KERNEL-CPU-ELEM-WIDE-1 | KERNEL-GEMM-CPU-ELEM-X86WIDE + KERNEL-GEMM-CPU-TILED | Claude Code (opus-5) | worktree /home/mudler/_git/vllm.cpp-x86wide, base cbc56f12 | branch row/KERNEL-GEMM-CPU-ELEM-X86WIDE | see ownership above | SPIKE | 2026-08-06 spike committed; W4 (widen the test tier sweep) is the first implementation step, deliberately before any kernel | | CLAIM-SERVE-VIDEOS-OAI | SERVE-VIDEOS-OAI (NEW engine-matrix row; the MiniMax-H3 model rows and the row/H3-FP4-SPEED fp4 lane are UNTOUCHED) | Claude Opus 5 (1M context) sub-agent | isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-a152dd219c723cb12 (CPU-only; no GPU, no download; foreground) | branch row/SERVE-VIDEOS-OAI, base main add5e9f9 | /v1/videos in OpenAI's Sora WIRE SHAPE (model, size, seconds) + GET /v1/videos/{id}/content. Owns {include,src}/vllm/entrypoints/openai/video_api.*, the video handlers/routes in api_server.{h,cpp}, both video test files, specs/minimax-h3.md §9 and the record surfaces. ADDITIVE: no generation kernel, no model forward, no VAE and no non-video route touched; the routes still register only with a VideoRunner. SPLIT: reference conditioning is the stacked row SERVE-VIDEOS-REFS (spec §10), which is why this one carries no examples/server/main.cpp change. | ACTIVE | 2026-08-06 CPU-LANDED + gated (test_video_api 11/11-125, test_openai_api_server 40/40-509, server -Werror clean). Real-weights leg rides the H3 GB10/disk window. | | CLAIM-SERVE-VIDEOS-REFS | SERVE-VIDEOS-REFS (NEW engine-matrix row, stacked on SERVE-VIDEOS-OAI) | Claude Opus 5 (1M context) sub-agent | isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-a152dd219c723cb12 (CPU-only; no GPU, no download; foreground) | branch row/SERVE-VIDEOS-REFS, base row/SERVE-VIDEOS-OAI | Reference conditioning over /v1/videos: input_reference -> fl2va first-frame conditioning, the metadata video/audio references -> ref2va blocks, the exclusivity rule at the request boundary, and the examples/server runner wiring with lazily-loaded VAE encoder halves. Owns the reference members of {include,src}/vllm/entrypoints/openai/video_api.*, the video runner in examples/server/main.cpp, both video test files, specs/minimax-h3.md §10 and the record surfaces. ADDITIVE: no generation kernel and no model forward touched. | ACTIVE | 2026-08-06 CPU-LANDED + gated (test_video_api 14/14-167, test_openai_api_server 41/41-525, server -Werror clean). Real-weights leg rides the H3 GB10/disk window. | | CLAIM-PARAKEET-KERNELS-P1P3 | KERNEL-CPU-CONV2D-SUBSAMPLE, KERNEL-DEPTHWISE-CONV1D, KERNEL-ATTN-RELPOS | Claude Opus 5 (1M context) | isolated worktree /home/mudler/_git/vllm.cpp-parakeet (CPU-only) | branch row/MODEL-AUDIO-PARAKEET-ENCODER, base main | The three ops the FastConformer encoder needs and vt:: did not have: Conv2d subsampling, non-causal depthwise Conv1d, and relative-position attention with the _rel_shift closed form. Owns src/vt/cpu/cpu_conv2d.cpp, the depthwise-conv1d and attn-relpos CPU providers, tests/vt/test_ops_conv2d.cpp, tests/vt/test_ops_conv1d_depthwise.cpp, tests/vt/test_ops_attn_relpos.cpp and the three kernel-matrix rows. | ACTIVE | 2026-08-06 CPU-LANDED + gated. CPU-ONLY by developer instruction: no GPU regression suite, no CUDA test or benchmark was run. | | CLAIM-PARAKEET-MODEL-P4 | MODEL-AUDIO-PARAKEET-ENCODER, MODEL-AUDIO-PARAKEET-TRANSDUCER | Claude Opus 5 (1M context) | isolated worktree /home/mudler/_git/vllm.cpp-parakeet (CPU-only) | branch row/MODEL-AUDIO-PARAKEET-ENCODER, base main | The encoder, the CTC head with greedy collapse, the log-mel front end, an HF-safetensors loader and the RNN-T/TDT transducer. Owns src/vllm/model_executor/models/parakeet_*, src/vllm/multimodal/parakeet_audio_processor.*, examples/parakeet_transcribe/, the Parakeet tests and the two model-matrix rows. | ACTIVE | 2026-08-07 CPU-LANDED + gated against a HF ParakeetForCTC oracle with EXACT token ids; transcribes ctc-0.6b/1.1b, rnnt-0.6b, tdt-0.6b-v3. No CUDA, no aarch64, no speed number claimed. | | CLAIM-BACKEND-TENSTORRENT-SPIKE | BACKEND-TENSTORRENT (INVENTORIEDACTIVE; W0 skeleton, one op) | Claude Code (claude-sonnet-5) | isolated worktree /home/lu_zero/Sources/vllmcpp-tenstorrent; real Blackhole (P150) hardware available all session | branch row/BACKEND-TENSTORRENT, base origin/main 7534da65, draft PR #197 | New extension platform (no upstream vLLM equivalent, same class as Metal/Vulkan): DeviceType::kTENSTORRENT, vt::tenstorrent::Backend (host-staged, discrete PCIe), TenstorrentPlatform, ONE op (kMatmul, F32/rank-2) via ttnn::operations::matmul::matmul. Owns include/vt/device.h, src/vllm/platforms/{platform,tenstorrent}.cpp, src/vt/tenstorrent/, tests/vt/test_tenstorrent_backend.cpp, the VLLM_CPP_TENSTORRENT CMake wiring, the backend-matrix/porting-inventory/spec, and this claim. | ACTIVE | 2026-08-09 W0 LANDED: 3/3 test cases, 8/8 assertions PASS on real hardware (registration, Platform/Backend mirror, kMatmul vs host F32 reference within bf16 tolerance, max_abs_diff 0.03375). Two bugs found+fixed in the same pass (nlohmann-json ABI collision between vllm.cpp's vendored copy and tt-metal's, isolated via a separate OBJECT library; a process-exit segfault from static MeshDevice teardown ordering, fixed by a deliberate leak) — both documented in the spec's Risks/decisions. Not reviewed. No model runs; one op only; host round-trip per call, no perf claim. | | CLAIM-BACKEND-TENSTORRENT-RESIDUAL-GOLDEN | BACKEND-TENSTORRENT-RESIDUAL-GOLDEN (NEW child of BACKEND-TENSTORRENT; INVENTORIEDSPIKE) | Maki (zai/glm-5.2), helper role | isolated worktree /home/lu_zero/Sources/vllmcpp-tenstorrent; real Blackhole (P150) hardware | branch row/BACKEND-TENSTORRENT-RESIDUAL-GOLDEN, base origin/main f64f2b71 | Owes the bot-flagged residual-RMS numerics evidence at the kDeviceResidualMinRows == 32 boundary: the device path (ttnn::add+ttnn::rms_norm in bf16) vs the CPU/host f32 oracle (cpu_ops.cpp:371). Owns ONLY: NEW .agents/specs/tenstorrent-residual-golden.md, the NEW BACKEND-TENSTORRENT-RESIDUAL-GOLDEN backend-matrix row, the NEW op-level cross-device test, and this claim. No model/perf/MoE change. | SPIKE | 2026-08-11 spike committed; no measurement yet. | | CLAIM-BACKEND-TENSTORRENT-MISTRAL | BACKEND-TENSTORRENT-MISTRAL (NEW child of BACKEND-TENSTORRENT; INVENTORIEDSPIKE) | Maki (zai/glm-5.2), helper role | isolated worktree /home/lu_zero/Sources/vllmcpp-tenstorrent; real Blackhole (P150) hardware | branch row/BACKEND-TENSTORRENT-MISTRAL, base origin/main 6dbedf9f | Allowlist MistralForCausalLM on TT (Mistral-7B-v0.3 reuses the Qwen3-dense forward verbatim — qk-norm skipped, plain rope, untied lm_head; every op already registered, no new kernel) + make test_mistral_paged_engine.cpp device-aware (mirror the Qwen3 gate's tenstorrent branch + device-appropriate golden pair). Owns ONLY: NEW .agents/specs/tenstorrent-mistral.md, the NEW BACKEND-TENSTORRENT-MISTRAL backend-matrix row, src/vllm/platforms/tenstorrent.cpp (one allowlist line), tests/parity/test_mistral_paged_engine.cpp (device-aware wiring), the NEW TT golden pair, and this claim. No new op/kernel/model code. | ACTIVE | 2026-08-12 gate PASSED on Blackhole P150: 16/16 prompts, 12/16 strict-exact, max near-tie gap 0.062 nats, BACKEND PROOF 0 declines. Both former blockers cleared -- the 7B checkpoint is staged and the goldens are teacher-forced by transformers, not vLLM, which has no Tenstorrent backend at all (AGENTS.md "When vLLM has no implementation"; .agents/oracles/transformers.md). Issue #670. | | CLAIM-ENG-LOAD-DIRECT-UPLOAD | ENG-LOAD-DIRECT-UPLOAD (engine-matrix, NEW row -> ACTIVE) | Claude Code (opus-5) | isolated worktree .claude/worktrees/agent-a122a5ddc3546bf31; GB10 dgx.casa tree ~/work/load150/src (Vulkan build-vk + CUDA build-cuda), every GPU stage under flock $HOME/gpu.lock, local-ai-worker parked and restored | branch row/ENG-LOAD-DIRECT-UPLOAD, base origin/main 375a471e | Issue #150. Owns ONLY: the refcounted safetensors mapping + byte counters (include/vllm/model_executor/model_loader/safetensors_reader.h, src/vllm/model_executor/model_loader/safetensors_reader.cpp), BorrowStTensorBytes + the AdoptDeviceBytesAsHost mmap branch + OwnedTensor::mmap_src (include/vllm/model_executor/models/qwen3_5_weights.h, src/vllm/model_executor/models/qwen3_5_weights.cpp), the qualifying call sites in include/vllm/model_executor/models/dense_weight_loaders.h and src/vllm/model_executor/models/qwen3_5_dense_weights.cpp, the upload counter in include/vllm/model_executor/models/dense_attn_block.h, the VT_LOAD_STATS phase timing in src/vllm/entrypoints/model_loader.cpp, NEW tests/vllm/test_load_direct_upload.cpp + its tests/CMakeLists.txt line, NEW .agents/specs/load-direct-upload.md, the NEW engine-matrix row + its Loading/Total rollup, the #150 roadmap intake cell, two docs/ENVIRONMENT.md rows, this claim, .agents/NOW.md, and the docs/STATUS.md/docs/BENCHMARKS.md one-liners. NON-COLLISION: no new kernel, no model registry change, no CMake target change beyond one test line; every non-verbatim loader helper is untouched and the lever is same-binary A/B-able (VT_LOAD_DIRECT_UPLOAD=0). MUST NOT touch README, Metal/SACRED/apex/darwin, or any model/kernel source | ACTIVE | 2026-08-09 — mechanism test 6/6 (77) and RED under two mutations; GB10 Vulkan gates on the changed tree green (test_vulkan_backend 35/35·2650, test_backend_cross_device 11/11·132, test_opt_paged_engine 6/6 prompts token-exact 96/96, 0 declines, device type 3); GB10 CUDA full ctest 383/393 with BOTH SACRED gates PASS and all 10 failures reproduced on a clean origin/main build; 27B bf16 load 1.54x warm / 1.61x cold, bytes moved 100.196 -> 81.260 GiB; local-ai-worker restored (--restart=always, Up). Fresh scoped review OWED | | CLAIM-ENG-RELEASE-CONTAINERS-W1-W7 | ENG-RELEASE-CONTAINERS (INVENTORIED->READY->ACTIVE; spike spec + W1-W5/W7) | Claude Code (opus-5), helper role | isolated worktree /home/mudler/_git/vllm.cpp-containers; local Docker only -- NO GPU, NO registry push, NO publication | row/ENG-RELEASE-CONTAINERS, base origin/main 24306364, PR #307 | Container spike spec, docker/Dockerfile (cpu/vulkan/cuda calling the release scripts), container matrix + checker, image validator, workflow + least-privilege guard, and the SIGTERM fix the boot gate surfaced (#312). Excludes W6 matching-hardware runtime evidence and any GHCR publication | ACTIVE | 2026-08-10 -- cpu lane built and gated e2e (config+layout+boot, clean SIGTERM 0.25 s, RED 137 before the fix); mutation suites 31/31 and 22/22; cuda/vulkan gated statically but never built here; nothing published | | CLAIM-ROCM-GDN-KERNELS | BACKEND-ROCM (stays ACTIVE — M3 GDN kernel slice, issue #41) | pi (kimi-k3) | isolated worktree /home/vikash/vllm.cpp-rocm-gdn-kernels, base origin/main 5812b8b6; 4x RX 7900 XTX gfx1100 discrete, ROCm 7.14, GPU jobs hold ~/gpu.lock | row/ROCM-GDN-KERNELS | The M3 GDN kernel family unblocking Qwen3.5-0.8B M2 on discrete ROCm. Owns ONLY: NEW .agents/specs/rocm-gdn-kernels.md; NEW src/vt/rocm/rocm_gdn.hip (10 ops: kGdnStateGather/Scatter 77/78, kCausalConv1dFwd/Update 5/6, kRmsNormGated 9, kSigmoidGateBf16 58, kGdnPrefill/Decode 10/11, kGdnPostConv 65, kAttnQkNormRopeGate 67 — hand-translated from src/vt/cuda/cuda_gdn.cu/cuda_ops.cu donors); ADDITIVE registration entries in src/vt/rocm/rocm_ops.hip; ADDITIVE GDN cases + buffer helpers in tests/vt/test_backend_cross_device.cpp; this claim + .agents/NOW.md. NON-COLLISION: every new file is ROCm-only; the two shared-file edits are additive registration/case blocks that change no existing behavior (unregistered-op backends skip; CUDA/CPU/Vulkan paths byte-identical). Disjoint from #234 (sampling), #317 (gemma4 FP8/WMMA), #273 (near-tie docs). | ACTIVE | 2026-08-11 — ALL 5 FAMILIES LANDED AS STACKED DRAFT PRs + M2 E2E COMPLETE. #334 (spec + state I/O), #336 (conv), #341 (postconv), #343 (recurrence), #345 (norm-gate/preamble + the SupportsCompressedGdnState capability seam). Qwen3.5-0.8B runs e2e all-native on discrete gfx1100, deterministic; 'The sky is' 8/8 CPU parity; open-prompt divergence characterized as not-state-rounding, GDN-path drift analysis named open. Gates per family: cross-device green (162/162 total), focused 3/3, full-suite zero-delta vs base. NEXT: fresh review + operator gate per PR; then the MoeRouterTopK bf16-logits arm (the named MoE-path blocker) and the GDN-path divergence characterization. | | CLAIM-WEIGHT-OFFLOAD-W0A | ENG-WEIGHT-OFFLOAD (engine-matrix, READY->ACTIVE; issue #797, the dense half of #149). | Claude Code (claude-opus-5), helper role, isolated worktree | /home/mudler/.cache/sdd/mudler-vllm.cpp/weight-offload-w0; CPU-only build (-DVLLM_CPP_CUDA=OFF) on the dev box -- W0a is a device-neutral config port, NO GPU/flock needed | branch row/ENG-WEIGHT-OFFLOAD-W0, base origin/main b1cd4d8f6 | W0a -- the weight-offload CONFIG SURFACE only. Owns EXACTLY the NEW include/vllm/config/offload.h + src/vllm/config/offload.cpp, the NEW tests/vllm/config/test_offload_config.cpp, 1 CMakeLists.txt source line + 1 tests/CMakeLists.txt test line, and the records (this row, the engine-matrix row, specs/weight-offload-uva.md ## Now, docs/STATUS.md). NON-COLLISION: purely additive and UNREACHABLE -- nothing constructs an OffloadConfig yet, so every existing gate is byte-identical BY CONSTRUCTION (git diff touches no existing source file beyond the two CMake registration lines). Does NOT own the offloader itself (W2/W5), the loader re-offload interaction (W3), the ABI/CLI field (the REMAINDER of W0), or anything in v1/kv_offload/ (a different subject). | ACTIVE | 2026-08-14 -- W0a LANDED: config surface + validator, RED-first then mutation-proven. Transcribed from vllm/config/offload.py @ 555967922: the three-value backend enum (:12), both sub-configs with their bounds and defaults (:23,34,54,62,66,70), the TWO hard validator errors (:100-112) and the THREE mismatch warnings (:114-135) -- warnings collected for the caller rather than raised, since C++ has no warnings.warn. Also ported: the dot-anchored segment match (offloader/uva.py:91-93), the int(gb*1024**3) truncation (offloader/base.py:155), the auto-selection ORDER (base.py:139-149), and the layer-grouping worked example (offload.py:57). RED-first CAPTURED on a compiling stub (build rc=0, 0 compile errors): 11/11 cases and 51/122 assertions failed for the intended reason. GREEN 11/11, 126/126. MUTATION-PROVEN 6/6, each reported with its compile status so a non-building mutation could not read as a pass: substring-instead-of-dot-anchored (4 asserts RED), grouping off-by-one (3), validator guard OR->AND (3), warnings-not-cleared (1), auto-order uva-before-prefetch (2), 100031000^{3}-instead-of-102431024^{3} (3); tree restored byte-for-byte. One design correction the RED exposed: ResolvedBackend() now mirrors create_offloader exactly (an EXPLICIT backend is selected even at a zero budget) and the separate is_offloading_enabled() answers 'would anything actually move' -- conflating the two would let a zero-budget explicit backend read as offloading-on. OWED (the rest of W0): the include/vllm.h JSON field + server CLI flag. | | CLAIM-BACKEND-TENSTORRENT-HOST-FREE-FORWARD | BACKEND-TENSTORRENT-HOST-FREE-FORWARD (NEW child of BACKEND-TENSTORRENT; INVENTORIEDSPIKE) | Maki (zai/glm-5.2), helper role | isolated worktree /home/lu_zero/Sources/vllmcpp-tenstorrent; real Blackhole (P150) hardware | branch row/BACKEND-TENSTORRENT-HOST-FREE-FORWARD (planning; reuses the trace-runner worktree) | The prerequisite for decode mesh-trace capture, revealed by BACKEND-TENSTORRENT-TRACE-RUNNER (capture aborts on to_vector). Decomposes into R1 RmsNorm+RoPE all-device, R2 QkvSplit+ReshapeAndCache device, R3 PA decode device-resident metadata, R4 capture wire+measure. Owns ONLY: NEW .agents/specs/tenstorrent-host-free-forward.md, the NEW BACKEND-TENSTORRENT-HOST-FREE-FORWARD backend-matrix row, and this claim. No code, no model change, no perf claim — decision record only. | SPIKE | 2026-08-13 plan committed; no implementation yet. R1-R3 parallel-claimable once a maintainer accepts the decomposition. | | CLAIM-BACKEND-TENSTORRENT-TRACE-RUNNER | BACKEND-TENSTORRENT-TRACE-RUNNER (NEW child of BACKEND-TENSTORRENT; INVENTORIEDSPIKE) | Maki (zai/glm-5.2), helper role | isolated worktree /home/lu_zero/Sources/vllmcpp-tenstorrent; real Blackhole (P150) hardware | branch row/BACKEND-TENSTORRENT-TRACE-RUNNER, base origin/main a89b3c45 | Feasibility spike (read-only analysis + on-card measurement) for wiring the landed #354 graph-capture foundation into a capturable Qwen3-dense/Mistral forward region on TT. Three questions: (1) is there a host-free decode region at T=1 (current hybrid thresholds route RoPE+residual to host)? (2) what does forcing all-device-at-T=1 cost in tok/s, and does capture recover it? (3) does ttnn program-cache warm-up work before begin_trace_capture? Surveys how CUDA/Metal/Vulkan structure capture (CUDA is the only SupportsGraphCapture()==true backend; Metal/Vulkan false). Owns ONLY: NEW .agents/specs/tenstorrent-trace-runner.md, the NEW BACKEND-TENSTORRENT-TRACE-RUNNER row, and this claim. No code, no model change, no perf claim — decision record only. | SPIKE | MEASURED 2026-08-12/13 (all on real P150): no host-free region at T=1 (residual rows<32 + RoPE T*H<64 host, every layer); all-device-at-T=1 costs 12.5→10.7 tok/s (reproduces handoff S6); capture attempt aborts (to_vector + enqueue_write fatals). Decision superseded for implementation by the host-free investigation (#694): capture IS achievable; the remaining work (persistent device buffers + before-replay input populate, ported from the tt-metal vLLM plugin design) is tracked there. PR #541 closed in favor of #694. | CLOSED same-session claim — CLAIM-TP-SPIKE-287 (task #287, 2026-08-08, records-only, helper row/SPIKE-TENSOR-PARALLELISM draft PR #143, base b38f78a7). Not an active-claims row because every referenced row keeps its lifecycle state by design: BACKEND-DISTRIBUTED-TP + PAR-TP stay READY (now pointing at the new spec), rider SPEC-DSPARK stays INVENTORIED. Deliverables: NEW .agents/specs/tensor-parallelism-spike.md (S1 at-pin 555967922 inventory with per-item our-seam verdicts + the W1/W2 landed-vs-claimed audit; S2 thread-per-rank / additive-Forward-branch / ABI / shard-map decisions; S3 TP2-on-CPU token-exact gate design + PENDING-HW options; S4 TP-W0..W7 ranked plan, TP-W1..W4+W7 CPU-completable) + NEW specs/dspark-speculator-note.md (USER rider) + the owning matrix rows, roadmap ROAD-V1-D2 + the TP W-plan sub-table, ledger/state/NOW, STATUS/BENCHMARKS. Records-only: NO source, NO CMake, NO test touched. Honesty findings: upstream's TP=2 test compares vs HF (not TP1); the W2 tp handle dead-ends at the layer boundary and no production loader passes it; use_all_gather() defaults True at the pin so every TP rank samples full-vocab identically.

Handoff queue

PriorityRow/blockDependencyNext handoffState
1KERNEL-GEMM-BF16 (qkvz W2) for SERVE-GATE-ONLINEKERNEL-GDN-PACKED-DECODE closed DONE (W1D3 EQUIVALENCE, e47b4d6); qkvz W2A implemented test-first 2026-07-15, CPU gates green; 3f256ab remains 55/124run the qkvz DGX gates (model 235/235 default+rollbacks, GDN suite, 35B/GGUF inertness, memcheck, 145→97 BF16 trace; commands in state.md), then the AUTHORIZED fresh-SHA exact-grid rerun (fresh vLLM denominators; explicit --mamba-ssm-cache-dtype float32; cite 702f481) before 35BGATING
2SERVE-ASYNC-LLM block (ENG-CORE-BUSY-LOOP, SERVE-ASYNC-LLM, ENG-ASYNC-SCHED, ENG-PRIORITY-SCHED)joint spike accepted (async-serving.md); W1/W2/W4 implemented/GATING; W3 host-side + runner device-input + sampler-OUTPUT half all LANDED + CPU-gated 2026-07-16 (ACTIVE, CLAIM-ASYNC-SCHED-W3)AsyncScheduler + depth-2 step_with_batch_queue + config resolution + VT_ASYNC_SCHED rollback + combine_sampled_and_draft_tokens (input) + vt::Backend event/pinned + AsyncGPUModelRunnerOutput non-blocking D2H + sample_tokens_async/runner_supports_async + the depth-2 async-output seam + the ENABLE-FLIP (LoadedEngine AsyncScheduler+mcb=2 construction + the cuda_combine_tokens.cu device combine/scatter kernel) — all default OFF, landed 2026-07-16the W3 discriminator COMPLETED 2026-07-17 (CLAIM-W3-ASYNC-DISC): token gates 6/6, vLLM self-A/B proves the TTFT premium is vLLM's own async trade (+26/+31/+28 % at −0.7 to −0.9 % tput), both binding ITL-tail anomalies flip under W3-on, axis arithmetic nets positive ⇒ NEXT: CLAIM-ASYNC-SCHED-W3 lands the default-ON flip (mirror vllm/config/vllm.py:1040) + fresh token gates, then the next grid — DONE 2026-07-17 (a0013a2); superseded 2026-08-12 (#534). The remaining NEXT for this block is narrower than the row reads: ENG-ASYNC-SCHED is DONE, SERVE-ASYNC-LLM is already the production serving path and holds on every-axis parity (27B ratified, 35B under ROAD-V1-A), ENG-CORE-BUSY-LOOP's G1/G4 are covered by test_qwen36_async_serving (1718bf155) + binding 9ecd9d0, and the ONE open leaf is ENG-PRIORITY-SCHED — whose priority-vs-FCFS engine gate has to be WRITTEN before it can be run.GATING
3SERVE-E2E-NIGHTLYSERVE-GATE-ONLINE evidence where benchmarks overlapwrite spike and CI/nightly splitINVENTORIED
4C1 kernel drop-in alignmentaccepted kernel-family inventory + drop-in ABI spikeBACKEND-ABI-VT W0 is implemented and CPU-green; run cross-build + flock-held GB10 runtime/capture/model/trace handoff, close scalar-forwarder/backend-shim debts, then migrate one family per independently gated checkpointGATING
5BACKEND-BENCH-CUDA-SGLANG-PREFLIGHTaccepted spike; no dependency on async servingP1 deterministic corpus/client/summary/memory/dry-run harness is implemented and GATING; provision the digest-pinned image only in a non-benchmark window, resolve the pinned client's missing raw E2E/TPOT sample gap without changing timed semantics, then P2 classifies each exact checkpointGATING
6BACKEND-GATE-CUDA-SGLANGBACKEND-BENCH-CUDA-SGLANG-PREFLIGHT, then SERVE-ASYNC-LLMrun the binding c1-c16 campaign only after both dependencies close — corrected 2026-08-12 (#534): the SERVE-ASYNC-LLM half is MET. The exit criterion the SGLang spike attached to it ("Real incremental SSE, in-flight batching, and streaming timing test pass") was delivered by W2 on 2026-07-10; test_api_server.cpp:622-634 asserts dispatched < first_arrival < completed, and SERVE-GATE-ONLINE has measured HTTP TTFT/ITL on that exact path across five recorded bindings. The remaining dependency is the preflight aloneBLOCKED
7BACKEND-GATE-CUDA-SGLANG-PREFIXaccepted shared-prefix extension; PX1 can proceed, while binding execution depends on exact SGLang v0.5.15 equivalence, a dedicated KV-MAMBA-ALIGN spike/implementation and SERVE-ASYNC-LLMafter the priority 27B cache-off parity grid/trace, implement the deterministic 64k/256k corpus and counters, write then execute the Mamba-align retention leaf, prove cache hits/no eviction, and bind every axis to the faster equivalent vLLM/SGLang result before 35BREADY
8C2/C4 models + quantizationsaccepted comprehensive inventoriesMODEL-FACTORY-registry and QUANT-GGUF-CPU-THREADPOOL are implemented and GATING: the registry awaits its exact two-model GPU greedy/performance/memory handoff after CLAIM-SERVE-GATE-1; the threadpool has 1/3/20 determinism + TSAN evidence but still needs the exclusive-idle-host B4 ≥10x/RSS series. Both claims are released. Keep-quant loader + CIQ GEMM follow that CPU checkpoint, then Llama denseGATING
9C3/C5/C7/C8 engine/API workC3/C5/C6 specs accepted; C7/C8 leaf specs missingC3 M-mtp-0 is CLOSED (2026-07-24, CLAIM-MTP-I1-HEAD-ORACLE) — the standalone MTP draft head is oracle-parity-proven on both gate checkpoints; SPEC-MTP stays GATING on M-mtp-1..4 (scheduler plumbing, greedy rejection, GDN spec slots, k>1, CUDA graphs). All C5 W1-W8 implementation leaves are now GATING; restored feature-positive model rows, CUDA/runtime/oracle/trace and every-axis campaigns remain. An idle GPU still gates runtime closure; then spike C7/C8GATING
10D1 backend expansionaccepted backend/CUDA inventory + vt seamspike architecture spine, then NVIDIA fan-out, ROCm, MLX, Vulkan, XPUSPIKE
11ENG-EXPERT-STREAM (D4 first leaf)corrected spike accepted after live Marlin/loader verificationclaim W0 nsys + fresh c1 baseline; then W1 CPU cache policy and W2 bank-only loader/reader/pread as independent performance checkpoints before W3 dispatchREADY

Closing and archival

  • 2026-08-08: CLAIM-ARCH-ONE-SURFACE-DEVICE-LEAKAGE-V2 CLOSED on draft PR #139. Base b44ad337 inherited PR #136's seven shared-layer CUDA literals (DSR 39 vs baseline 32). The repair keeps ABI-v14 0/1/2 and the public auto/cpu/cuda names, represents slot 2 internally as a named-platform selection, resolves its canonical name through FindPlatformByName, and propagates the registry's DeviceType without a backend-specific shared branch. RED-first compiler failure pinned the new seam; the non-CUDA kXPU resolver assertion kills a hidden constant return. GREEN: DSR 32 (kcuda=0) with baseline/allowlist unchanged; checker mutations 25/25; CPU Release -Werror test_platform 11/11·85, test_loaded_engine_dense 9/9·65, test_capi 45/45·428. H3 source was untouched; no CUDA execution, download, benchmark or service change.

A block closes only when every row in its declared scope is DONE. In the same change:

  1. freeze the block plan, outcomes, commands, and evidence under completed/<version>-<block>.md;
  2. replace live execution prose with one portfolio link to that archive;
  3. release all claims and remove transient branch/worktree notes;
  4. retain completed support rows in their permanent area matrix with code/test anchors and closing commit;
  5. update README and docs/BENCHMARKS.md unconditionally for the closing checkpoint, plus porting inventory, ledger, and state when relevant.

This keeps .agents/ focused on current work without losing the discoverable list of what the project supports.

  • 2026-07-21: CLAIM-LOCAL-BF16-TRANSPLANT RELEASED — the user-requested rebase abort and selective transplant onto local-blackwell-main-transplant are complete. The non-AOT follow-on series preserves valid same-binary loader memory/correctness evidence, but its cross-build speed conclusion is VOID: previous project used Triton AOT, current did not. The subsequently released CLAIM-LOCAL-BF16-AOT-BENCH completed that exact AOT rerun; current-v0.25 oracle/performance, sanitizer, strict ON<=OFF VRAM and external 27B/35B regressions remain later gates. No support claim.

  • 2026-07-21: CLAIM-LOCAL-BF16-AOT-BENCH RELEASED — current source at 557ab41d was rebuilt with FlashInfer CUTLASS plus generated Triton AOT sm_120 kernels (current CUDA sources require CMake arch 120a; the preserved previous build used 120). The real 4B gate passed 1664/1664 and the seven Triton GDN cases passed 378/378. Immutable root /tmp/qwen35-transplant-4b-aot-557ab41d completed 18/18 guarded legs and matching nsys captures. Direct ON is 6155.10 total tok/s versus historical AOT ON 6607.04 (0.9316x) and local vLLM-0.24 6730.46 (0.9145x); ON is 1.50% faster than same-binary OFF and cuts peak/stable PSS 8.571/8.571 to 2.405/0.733 GiB, with ON=OFF 128/128 output IDs in every pair. The current result is binding as a local 4B diagnostic, not as support: v0.25 correctness, sanitizer, strict ON<=OFF VRAM (+8 MiB currently), and external 27B/35B gates remain. Row returns to GATING.

  • 2026-07-18: CLAIM-MEM35-HOSTFREE RELEASED — ENG-MOE-HOSTFREEDONE (closing ac77bec). The 35B MoE Marlin host-weight free (OwnedTensor::ReleaseHost = madvise(MADV_DONTNEED)+swap, gated on MarlinMoeEnabled(), VT_MOE_HOST_FREE=0 rollback) returns the ~16.9 GiB routed-expert fp4 host mirror after the device Marlin resident is built → 35B STEADY serving PSS 20.17→3.53 GiB (clean same-binary A/B, DGX ~/work/mem35-hostfree), token-neutral 315/315+235/235, c2 smoke + memcheck clean, load-path release/retention 27/27+15/15. Realizes item-2 release_host_weights_after_upload for the dominant host consumer (flag stays with CLAIM-BACKEND-PLATFORM-1). Scoped to the STEADY mirror; the whole-window load-phase PEAK remains for the streaming follow-on (ENG-EXPERT-STREAM). Spec moe-marlin-host-free.md, ledger 2026-07-18 row, worktree agent-adaf49c4fc639d5ab released.

  • 2026-07-17: CLAIM-EW-NORM-ACT-1 RELEASED — KERNEL-EW-NORM-ACT decode-fast RMSNorm proof PASSED (gate3 token gates both flags/models; gate4 corrected-build c16 A/B +1.1% tput / −1.7 ms TPOT) and VT_RMSNORM_DECODE_FAST default flipped ON (=0 rollback). Verdict in the spec + ledger 2026-07-17 row; row KERNEL-EW-NORM-ACTDONE. Finalized by the orchestrator after the owning agent was repeatedly terminated by API-529 overloads (work verified, not re-done).

  • 2026-07-18: CLAIM-CONV-UPDATE-FAST-1 RELEASED — the two decode-glue headroom levers LANDED bit-identical and DEFAULT ON. (1) GDN decode conv-update decode-fast (KERNEL-SSM-MAMBA sub-lever; row stays INVENTORIED): CausalConv1dUpdateFastKernel behind VT_CONV_UPDATE_FAST (default ON, =0 rollback) — 0-ulp bit-exact vs shipped (330/330 on out+conv_state), isolated nsys 1.92× at the 27B c16 shape (batch=16 conv_dim=10240 k=4 bf16: shipped 7,072 vs fast 3,680 ns median), clearing the ≥1.3× flip bar. (2) VT_FP4_QUANT_FAST + VT_SILU_FP4_FAST flipped DEFAULT ON per the parity-enabler policy (KERNEL-GEMM-NVFP4-W4A4; bit-identical bodies unchanged). Full prospective default set (async + cubin + RMSNorm-fast + gated-fast + FP4-fast + SiLU-fast + conv-fast ALL ON): 27B test_qwen27_paged_engine 235/235 (tok6=198) + 35B test_qwen36_paged_engine 315/315; combined =0 rollback arms 235/235 + 315/315; test_ops_gdn 51/51, test_ops_nvfp4_fp4 25/25, flag tests 30/30; clean -Werror CUDA build 0 warnings, CUTLASS sm120a + FA2 sm_121a hard-verified, one flock. (Full ctest: the ONLY two failures — test_capi 107/109 + test_op_parity op-41 kCastF32 no-CPU-kernel — are PRE-EXISTING on pristine a7d08d7, verified by a stash-rebuild-run; independent of this CUDA-only diff.) Records: spec conv-update-decode-fast-2026-07-18.md, kernel-matrix (KERNEL-SSM-MAMBA + KERNEL-GEMM-NVFP4-W4A4), ledger 2026-07-18 (two rows), state, README, BENCHMARKS. benchmark_binding=false; the orchestrator runs the binding re-grid for the in-situ effect. Evidence dgx:~/work/vllm.cpp-conv-update-fast.

  • 2026-07-18: CLAIM-GDN-PREFILL-CONV-1 RELEASED — the 35B PREFILL GDN conv-fwd + fused post-conv kernel-efficiency sub-lever (KERNEL-SSM-MAMBA; row stays INVENTORIED). Owned isolated worktree /home/mudler/_git/vllm.cpp/.claude/worktrees/agent-a0dda669bf392db6f; DGX build ~/work/vllm.cpp-gdn-prefill-conv, evidence ~/work/prefill-attr-conv-35b (one flock /tmp/gpu for the whole gate+A/B series). Owns ONLY the CausalConv1dFwd/ GdnPostConv launcher paths + the two new kernels in src/vt/cuda/cuda_gdn.cu (CausalConv1dFwdRegKernel, GdnPostConvSplitKernel) + src/vt/cuda/gdn_prefill_conv.h

    • tests/vt/test_gdn_prefill_conv.cpp + the two byte-exact cases in tests/vt/test_ops_gdn.cpp — NOT the delta_h/chunko/wu/packed recurrence kernels (coordinated with CLAIM-PR3). (1) CausalConv1dFwdRegKernel behind VT_CONV_REG (DEFAULT ON, =0→tiled) — the register-resident sliding-window mirror of vLLM FLA causal_conv1d.py:397-452 (weights preloaded to registers, each x loaded once/coalesced, token axis chunked over grid.z for n<=4 low-batch prefill). 0-ulp bit-exact vs the shipped tiled kernel; nsys 35B conv c1 −4.7% / c6 −7.3% per-call (bandwidth-bound consistent win). (2) GdnPostConvSplitKernel behind VT_GDN_POSTCONV_SPLIT (OPT-IN, unset→shipped megablock) — per-V-head grid mirror of fused_gdn_prefill_post_conv.py:57-149; 0-ulp bit-exact but measured near-neutral (c1 −3.8% / c6 +4.7%; GdnPostConv is q/k-L2-norm-dominated) ⇒ opt-in per the house neutral-convention. DGX-PROVEN (flock, clean -Werror, CUTLASS sm120a + FA2 sm_121a hard-verified): byte-exact reg==tiled + split==megablock 268 GPU assertions + full GDN test_ops_gdn 53/3081; compute-sanitizer memcheck 0; token 27B 235/235 + 35B 315/315 (final defaults reg ON / split OFF) + the byte-exact test flips both flags explicitly. TTFT c1 A/B (3 reps) −0.39% within run-noise (conv ~2.5% of GPU) — the kernel-level nsys A/B is the binding evidence. Finding: kernels BW-bound; the residual vLLM conv gap is bf16 TRAFFIC (task #40 VT_GDN_IN_BF16, separate), not structure. Records: spec gdn-prefill-conv-reg-2026-07-18.md, kernel-matrix (KERNEL-SSM-MAMBA), ledger, state, README, BENCHMARKS. benchmark_binding=false; the orchestrator runs the binding re-grid for the in-situ c1–c4 effect.
  • 2026-07-24 — SPEC-MTP I2 (scheduler-half) LANDED in worktree mtp-i2-sched (branch mtp-i2-scheduler, base 61f3e85; NOT pushed — the orchestrator owns the merge, origin/main is at ba4dd62). Host-side spec-decode scheduler/engine plumbing plus the FROZEN spec-metadata ABI that I3 (rejection sampler) and I5 (verify/propose runner) code against — the authoritative ABI table with upstream file:line per declaration is mtp-spec-decode.md §2.7. Files touched: include/vllm/config/speculative.h (NEW), v1/request.h, v1/core/sched/scheduler.{h,cpp}, v1/core/sched/async_scheduler.cpp, v1/engine/{core.h,core.cpp,types.h}, v1/executor/executor.{h,cpp}, v1/worker/gpu/{input_batch.h,input_batch.cpp,model_runner_base.h}, plus tests/vllm/v1/test_scheduler.cpp and tests/vllm/v1/worker/test_input_batch.cpp. DEFAULT-OFF / INERT (no SpeculativeConfignum_lookahead_tokens == 0 ⇒ byte-identical engine), so it does not collide with any running model or kernel campaign and no model gate moves. Row SPEC-MTP STAYS GATING — plumbing buys no gate. NOTE for whoever picks up I3/I5: SchedulerOutput::scheduled_spec_decode_tokens already existed as an unpopulated field; I2 is the first code to populate it, so do not re-declare it. PRE-EXISTING BREAKAGE observed, not owned by this work: test_model_loader_gguf and test_model_registry fail on base 61f3e85 (verified with this branch's changes stashed) — an unclaimed fix.

  • 2026-07-26: CLAIM-SPEC-MTP-I5E, CLAIM-SPEC-MTP-I6, CLAIM-SPEC-MTP-I7 RELEASED and CLAIM-SPEC-MTP-DONE recorded as a RECORDS-ONLY closing transition — SPEC-MTP reaches DONE (engine matrix + model row MODEL-SPEC-qwen3-5-mtp-qwen3-5-mtp, closing commit = I7 72f9fb1). The user RATIFIED the deferred c>1 criterion: at concurrency > 1 the DONE bar is the near-tie-distributional form (ours ∈ vLLM's batch-nondeterministic set) plus the SPEED delta, NOT strict token-exact (a proven bf16-batch-nondeterminism MODEL impossibility affecting vLLM identically). Both I6-owed items are closed (mixed spec+non-spec GdnBlockPagedMixedSpec split/merge, I7 bit-exact; the server/CLI/C-ABI --speculative-config flag, I5d/I7); the c1 gate is token-exact + above vLLM, c2-c8 on-par-or-above. This transition touches ONLY records (git diff --stat = zero src//include//examples/), so the I5d/I6/I7 GPU gates stand on the same code and spec-OFF stays byte-identical. Tracked follow-ons keep their own live rows: the 35B Qwen3_5MoeMTP full e2e token gate (M-mtp-2, MODEL-SPEC-qwen3-5-mtp-qwen3-5-moe-mtp GATING) and SPEC-DFLASH (oracle-BLOCKED, vllm#40898). NOT pushed.

  • 2026-07-26: CLAIM-SPEC-MTP-M-MTP-2 (Claude Code opus-4-8; worktree spec-mtp-done, base origin/main 3662ec52, dgx ~/mtp35b/vllm.cpp via git archive, GPU work under one flock $HOME/gpu.lock) — the LAST owed MTP gate. M-mtp-2: the 35B Qwen3_5MoeMTP full e2e three-way token gate PASSES; MODEL-SPEC-qwen3-5-mtp-qwen3-5-moe-mtp GATINGDONE, so MTP k=1 spec-decode is DONE on BOTH gate models. Owns ONLY: NEW tests/parity/test_qwen36_spec_decode.cpp (+1 tests/CMakeLists.txt line, mirror of the landed 27B test_qwen27_spec_decode.cpp at 35B, MoE draft head Qwen3_5MTPKind::kMoe), NEW oracle-capture tools/parity/capture_qwen36_spec_greedy.py, and the records (model-matrix / mtp-spec-decode.md §5 M-mtp-2 + §9 / engine-matrix / roadmap / README / BENCHMARKS / ledger / state). ZERO src//include//examples/ changes ⇒ the 35B spec-OFF path is byte-identical and 35B SACRED 315/315 holds by construction (git diff --stat = test/docs only); no kernel touched ⇒ compute-sanitizer / check-device-leakage unchanged. GATE (dgx GB10, cutlass NVFP4 + FA2 ON, -Werror 0 warn, 9/9 assertions, RAN): three-way token identity STRICT at c1 — our spec-ON == our spec-OFF (test_qwen36_paged_engine) == vLLM 0.25.0 spec-ON == vLLM 0.25.0 spec-OFF, 16/16 vs the qwen36_logits_35b/greedy_ids anchor (vLLM both sides confirmed live via the capture script); acceptance 16/16 both sides (vLLM rate 1.0 == ours). c1 our-engine A/B spec-ON vs spec-OFF: TPOT 11.80 vs 14.03 ms (1.19x), output-tput 78.73 vs 67.68 tok/s (+16.3%), acceptance 0.908 — the MoE speedup transfers. Remaining spec-decode follow-on: SPEC-DFLASH (oracle-BLOCKED, vllm#40898). NOT pushed.

  • 2026-07-25 — local integration checkpoint released (CLAIM-LOCAL-BF16-H32-AOT). The stale local-blackwell-environment rebase was aborted and only the relevant H32 Triton-AOT repair was transplanted onto current main; no isolated worktree or live parallel claim remains. The integration then completed the plain-BF16 decode graph and exact ratio-4 FA2 leaf on the local RTX 5070 Ti. Focused correctness passes: H32 flag 10/10, GDN 66/66 (4,242 assertions), paged attention 25/25 (454,474), real 4B graph/direct/eager 3/3 (1,672). Final matched root /tmp/qwen35-main-final-fa2-20260725; stable vLLM confirmation /tmp/qwen35-vllm-confirm2-20260725; node trace /tmp/qwen35-main-final-fa2-profile-20260725. Disposition is GATING: direct ON reaches 0.9864x stable vLLM total/output throughput and wins host memory/TTFT, but TPOT/ITL is 43.72 vs 38.55 ms. Next owner must repair the measured discrete-CUDA sampled-ID main-stream wait by implementing a request-compaction-safe device token map, not retune FA2 blindly or delete the synchronization without preserving row identity. Evidence: 2026-07-25 4B repair. That next-owner directive is SUPERSEDED, 2026-08-12 (#527) — the checkpoint text above is left as written, but do not act on it. The request-compaction-safe device token map landed two days later in deed7c2a1 (2026-07-27, runner-owned device buffers + LaunchApplyLastSampledOps replaying condense's row edits on-device) and is DEFAULT ON since 1718bf155 (2026-08-05); the wait it was meant to repair does not exist on the benchmarked path, because vllm-bench drives the synchronous LLMEngine::step() and never enters sample_tokens_asyncdeed7c2a1 records that refutation of the 497-cudaStreamSynchronize attribution itself. The exact series was rerun through 2026-08-09 (1.0283x PASS on throughput). The row's live plan is the sm_120 Pareto campaign.

DFlash D14 note (2026-07-27, CLAIM-DFLASH-D14, GPU-GATED on dgx, SPEED GATE MET → SPEC-DFLASH DONE, NOT pushed — FULL SHA reported to caller). Closes SPEC-DFLASH (engine-matrix row SPEC-DFLASH + kernel-matrix KERNEL-ATTN-DFLASH-PAGED-BLOCK + model-matrix MODEL-SPEC-qwen3-dflash-dflash-qwen3-for-causal-lm) → DONE. Base origin/main 4657f6f3, isolated worktree /home/mudler/_git/wt-dflash-d14 (branch dflash-d14); dgx reused tree ~/work/dflash-d12/tree/build-cuda, one flock $HOME/gpu.lock. An nsys of the graphed spec-on step attributed the D13 ~2% residual to the from-scratch draft-attention kernel; ported it to a WARP-scoped online-softmax variant (DFlashPagedBlockAttentionWarpKernel, 3.1× faster) → our-ON graphed 29.32 ≥ vLLM-ON graphed 29.240 (non-overlapping 3-rep bands, 1.003×). Correctness UNCHANGED (27/27 graph==eager, acceptance 19/39/29/25, 1629 accepted identical warp-vs-block, CUDA==CPU 795648/795648 + sanitizer 0); inertness SACRED 235/235 + MTP 9/9. Owned files ONLY: src/vt/cuda/cuda_ops.cu (additive: DFlashPagedBlockAttentionWarpKernel + UseDflashAttnBlockKernel + a launcher branch; the D12 block kernel retained under VT_DFLASH_ATTN_BLOCK=1) + the record surfaces (spec §0 D14 RESULT, engine-matrix, kernel-matrix, model-matrix + checklist rollup, roadmap, ledger, state, this note, README, docs/BENCHMARKS.md). EXPLICIT NON-COLLISION: does NOT touch the causal kAttention/kPagedAttention, any non-DFlash op, the runner, or the models — the warp kernel is reached ONLY via DFlashPagedBlockAttention (DFlash draft path). Roadmap's FINAL open speed item; SPEC-DFLASH is now correctness-complete AND at/above vLLM throughput.

  • 2026-08-06: CLAIM-MULTIMODAL-M1, CLAIM-MULTIMODAL-M3C, CLAIM-MULTIMODAL-TOWER-FIDELITY and CLAIM-AUDIO-ENCODER RETIRED by the live-state audit (live-state-audit-2026-08-06.md ➂). Each references ONLY a row the audit found abandoned — no row/<ID> branch anywhere and no commit on origin/main naming the stable ID — so emptying the claim would leave it with no rows, which the row contract also rejects; they are retired outright and their rows move ACTIVEREADY (the legality floor: all three resolve a real spec that names their token). ABANDONED is a statement about Git, not about the work — each row asserts a passing gate, and the real defect is that the commits never named the stable row ID. Outcomes as the claims last recorded them:

    • CLAIM-MULTIMODAL-M1 (row ENG-MM-INPUT-PIPELINE, last state ACTIVE) — 2026-07-25 M0+M1 landed: processor parity 23/23 BIT-identical vs the vLLM 0.25.0 M0 oracle, encoder-cache 32/32, SACRED text-inertness 27B 235/235 / 35B 315/315 / Coder 138/138. benchmark_binding=false, speed never measured.
    • CLAIM-MULTIMODAL-M3C (row ENG-MM-VIDEO-FORWARD, last state DONE) — 2026-07-25 M3c video preprocessing + wiring unit-gated: video-processor 41/41 with pixel_values_videos BIT-exact 0/393216, video MRoPE BIT-exact vs vLLM.
    • CLAIM-MULTIMODAL-TOWER-FIDELITY (row ENG-MM-VIDEO-FORWARD, last state DONE) — 2026-07-25 the M3c video e2e gate FORM resolved by measurement: teacher-forcing vLLM 0.25.0 proved a single genuine 0.125-nat bf16 near-tie at tok22, every downstream token vLLM's argmax at gap 0.0000 ⇒ near-tie-robust PASS, no kernel change.
    • CLAIM-AUDIO-ENCODER (row ENG-MM-AUDIO-ENCODER, last state ACTIVE) — 2026-07-25 A2 encoder-tower fidelity gate PASS 203/203 (post_conv rel-L2 4.7e-3, post_pos 2.8e-3, block0 6.6e-3, encoder-output 3.0e-2), RED-first proven. benchmark_binding=false, speed pending. The projector/merge and the audio→text e2e (A3) were never in this claim's scope.
  • 2026-08-06: the five Gemma-4 multimodal claims CLAIM-GEMMA4-G1, CLAIM-GEMMA4-G2, CLAIM-GEMMA4-G2-IMPL, CLAIM-GEMMA4-G3 and CLAIM-GEMMA4-MM-E2E RETIRED by the live-state audit (live-state-audit-2026-08-06.md ➂). Each references ONLY MODEL-MM-gemma4-mm-gemma4-for-conditional-generation, which the audit found abandoned — no row/<ID> branch anywhere and no commit on origin/main naming the stable ID — so the row moves ACTIVEREADY (legality floor; it resolves specs/gemma4-multimodal.md §G1b, which names its token) and the claims are retired rather than emptied. That one row was claimed EIGHT times over: the other three (CLAIM-GEMMA4-G1B, CLAIM-GEMMA4-MULTIMODAL, CLAIM-MULTIMODAL-TRACK) also hold live rows, so they are AMENDED in place — the Gemma-4 mm row is dropped from their Row IDs, the rest of their scope stands. Outcomes as the retired claims last recorded them:

    • CLAIM-GEMMA4-G1 — 2026-07-28 registry + loader + backbone forward landed, compile-clean; the e2e STRICT gate was blocked on runner topology at the time.
    • CLAIM-GEMMA4-G2 — 2026-07-28 IMAGE→text oracle golden STRICT K=5 (18 tokens, 256 soft tokens) + 4 staged vision refs + the SigLIP/NaFlex port map; honest partial, no C++ tower.
    • CLAIM-GEMMA4-G2-IMPL — 2026-07-28 C++ NaFlex SigLIP2 vision tower landed, all 4 per-stage gates PASS (patch-embed rel-L2 2.15e-3, encoder 3.14e-2, pooled 1.36e-2, projected 1.85e-2; 220/220; compute-sanitizer 0).
    • CLAIM-GEMMA4-G3 — 2026-07-28 C++ USM-Conformer audio tower + projector landed, all 7 per-stage gates f32-exact (1256/1256).
    • CLAIM-GEMMA4-MM-E2E — 2026-07-29 the vision tower FOLDED into the engine registered forward; image→text 16/18 content tokens BIT-EXACT vs the STRICT golden, the single divergence a terminal bf16 near-tie; text SACRED 32/32 unchanged. Residuals it left open: STRICT-18/18, audio e2e, speed.
  • 2026-08-06: CLAIM-GLM-DSA-LATEST-DEEPSEEK and CLAIM-AUDIO-E2E AMENDED, not retired, by the same audit. MODEL-TEXT-glm4-glm4-for-causal-lm (GLM-4-9B dense, SACRED 16/16 vs vLLM 0.25.0 on record) and MODEL-MM-voxtral-voxtral-for-conditional-generation (audio→text e2e 14/14 on record) are dropped from their Row IDs and move ACTIVEREADY; both claims keep their remaining live rows (the four other GLM rows, and ENG-MM-AUDIO-E2E) so neither may be retired. The Voxtral row's owner cell also carried CLAIM-MULTIMODAL-SPEED-DECODE, CLAIM-MM-SPEED-GRAPH-W1 and CLAIM-MM-SPEED-AUDIO-ENC-KERNEL, which claim it in narrative only — none of them is an entry in the claim table, so none needed amending.

  • 2026-08-06 NOTE on all of the above: ABANDONED is a statement about GIT, not about the work. Every one of these rows asserts a passing gate in its own anchors; what the audit establishes is that the ACTIVE claim is unverifiable, because the convention of naming the stable row ID in the commit message was not followed. READY is the legality FLOOR the state contracts permit, NOT a finding that the work is unstarted — promoting any of them to PARTIAL, GATING or DONE needs a human to read the row's anchors against gate output.

  • 2026-08-06: CLAIM-PR3 and CLAIM-TRITON-AOT-PER-ARCH RETIRED by the live-state audit (live-state-audit-2026-08-06.md ➂). Between them they reference ONLY KERNEL-GDN-AOT-BF16 and KERNEL-GDN-SCRATCH, both of which the audit found abandoned — no row/<ID> branch anywhere and no commit on origin/main naming the stable ID — so the rows move ACTIVEREADY (legality floor; both resolve specs/kernel-family-inventory.md, which names their tokens) and the claims are retired rather than emptied. Outcomes as the claims last recorded them:

    • CLAIM-PR3 (rows KERNEL-GDN-AOT-BF16, KERNEL-GDN-SCRATCH, last state ACTIVE) — 2026-07-14: vendored BF16 H32/H48 AOT/safety evidence and native 16/16 correctness green; binding 3f256ab c16 total 1.027889x but mean TPOT/ITL 0.987450x. Explicitly INCOMPLETE when the claim went quiet — the strict component/pool/teardown axes and the integrated GB10 graph gate, sanitizer, trace and pool A/B were all still open, and the pure-decode mismatch had already been split out to KERNEL-GDN-PACKED-DECODE.
    • CLAIM-TRITON-AOT-PER-ARCH (row KERNEL-GDN-AOT-BF16, last state DONE (DERIVED+BUILD-VERIFIED)) — 2026-07-28: the honest gap corrected (the GDN-decode Triton cubin existed for sm_121a ONLY), full AOT set regenerated and vendored for sm_80/86/89/90a/100a, cuobjdump proving real per-target SASS, drift checker rc=0 across all six trees, sm_121a byte-identical. DERIVED+BUILD-VERIFIED only — no non-sm_121 board ever RAN a GDN model. READY here is the legality floor, not a finding of unstarted work; the rows' own anchors carry the AOT/safety/native gates and the stream-owned scratch pool's poison/reuse/growth assertions.
  • 2026-08-06: CLAIM-DEEPSEEK-V4-W8 AMENDED, not retired, by the live-state audit (live-state-audit-2026-08-06.md ➂). QUANT-GGUF-IQ3_XXS was the one row in it the audit found abandoned — no row/<ID> branch anywhere and no commit on origin/main naming the stable ID — so that row moves ACTIVEREADY (legality floor; it resolves specs/gguf-iquant-dsv4.md, which names its token) and is dropped from the claim's Row IDs. The claim keeps KERNEL-QUANT-CIQ-IQUANT, QUANT-GGUF-IQ2_XXS and QUANT-GGUF-Q2_K, which are all still live, so it may not be retired. What the row records stands and is untouched: the 98-byte reader trait, the DequantIQ3_XXS codebook kernel ported 1:1 from llama.cpp, the keep-quant VecDotIQ3_XXSQ8_K that is the memory ENABLER for the UD-IQ2_XXS down routed experts, and the CUDA kMatmulBTQuant path gated 2/2·92401 on GB10. READY is the legality floor, not a finding of unstarted work.

  • 2026-08-06: CLAIM-PARALLELISM-MODES-SPIKE, CLAIM-SCALE-OUT-SPIKE and CLAIM-SCALE-OUT-W2 AMENDED, not retired, by the live-state audit (live-state-audit-2026-08-06.md ➂). BACKEND-DISTRIBUTED-TP was claimed THREE times over and is the row the audit found abandoned — no row/<ID> branch anywhere and no commit on origin/main naming the stable ID — so it moves ACTIVEREADY (legality floor; it resolves specs/scale-out-distributed.md, which names its token) and is dropped from all three Row ID lists. Every one of the three keeps other live rows (BACKEND-DISTRIBUTED-COMM, -PP, -DP, -EP, -SP, -MULTINODE-SPARK, -MLX-RING), so none may be retired. What the row records stands and is untouched: the W2 TensorParallel/TpShard/TpAllReduceSum wiring threaded into the Qwen3-dense forward, gated CPU multi-rank 60/60 and RED-verified, with the QKV head-aware KV replication, vocab/LM-head + MoE-EP sharding and a real TP-2 GPU forward named as the HW-gated residual (no ≥2-GPU box). READY is the legality floor, not a finding of unstarted work.