Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .agents/issue-index.md
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,7 @@ rather than merged. `scripts/check-agent-record.py` gates both.
| [#834](https://github.com/mudler/vllm.cpp/issues/834) | — | No row owns router-lookahead prefetch for offloaded MoE experts. `ENG-EXPERT-STREAM` W3 copies router identifiers device to host and waits once per MoE layer (`specs/expert-streaming.md:377`), which is a synchronous stall. The only overlap work in that row is W6, and W6 runs `only if W3 trace shows wait dominance` and needs a separate accepted spike (`:380`). `ENG-WEIGHT-OFFLOAD` has a `PrefetchOffloader` arm, and it selects layers by position and never reads the router (`vllm/config/offload.py:48-76`). Prefetch is the lever that converts the per-layer fetch stall into an overlapped transfer, so the gap is recorded rather than left to be rediscovered | feature |
| [#835](https://github.com/mudler/vllm.cpp/issues/835) | — | No row owns GPUDirect Storage, also called GDS or cuFile, for weight reads. `ENG-EXPERT-STREAM` W2 uses an `O_DIRECT` pool with aligned staging (`specs/expert-streaming.md:376`), which bypasses the page cache and still stages every expert through host memory. GPUDirect appears twice in the records and neither entry covers weights: `KV-MOONCAKE-STORE` names it for KV blocks over a fabric no box we own has, and `specs/lmcache-cpp-client-connector.md:305` marks GDS `NOT SCHEDULED` as an LMCache backend. The value differs by host, so a row must measure both paths before it claims a number | feature |
| [#840](https://github.com/mudler/vllm.cpp/issues/840) | `POLICY-ISSUE-INTAKE` | The issue intake table sits inside `roadmap_v1.md`, which 51 of the last 60 commits touch, and two branches appending a row conflict under the default merge and merge cleanly under `merge=union`; a `.gitattributes` entry binds a path and never a section, so the table moves to `.agents/issue-index.md` and becomes append-only, and ownership becomes a network-free gate because 33 of the 185 rows name no owning row (spec [`issue-intake.md`](specs/issue-intake.md)) | bug |
| [#925](https://github.com/mudler/vllm.cpp/issues/925) | `MODEL-MUSIC-minimax-music3-mini-max-music3-for-conditional-generation` | `POST /v1/audio/speech` silently ignored `audio_duration_s` — the name of the FIELD the key fills, and the spelling `speech_api.h:55` / `vllm.h:1032` / the C API all invite — so a request carrying it got a 200, a well-formed WAV, and the family's DEFAULT duration instead of the one it asked for. Every other unsupported field in `ParseSpeechRequest` is refused and named for exactly this reason; this key was the exception. It is the whole of [#852](https://github.com/mudler/vllm.cpp/issues/852): the e2e gate posted `audio_duration_s: 0.1`, ran 60 s instead (1500 AR frames not 2, 8 denoise windows not 1, 5167 vocoder latents not 6 — a ~750x job), and four runs were killed inside it and read as a hung weight load. FIXED IN FLOW: the near-miss is REFUSED, red-first in `test_speech_api.cpp` | bug |
| [#775](https://github.com/mudler/vllm.cpp/issues/775) | `MODEL-TEXT-nemotron-h-nemotron-hfor-causal-lm` | `ForwardNemotronHForCausalLM` opened its type-erased handle with an unconditional `static_cast<NemotronHLoadedModel&>(model)`, so on any model that is not really one, every `nh.` member call was type confusion — UBSan's vptr check named `nemotron_h_registry.cpp:112:30` and `-fno-sanitize-recover=all` aborted `test_nemotron_h_scaffold`. Distinct from the TEST repair [#730](https://github.com/mudler/vllm.cpp/issues/730)/PR #784 made: that removed the stub being downcast, which cleared the symptom on the lane while leaving the cast unchecked, so the defect would have stayed invisible after the weight loader lands. FIXED by the checked `vllm::ModelAs<Model>` seam (`model_registry.h`) with the refusal authored once in `RaiseModelTypeMismatch`; spec [`nemotron-h-model.md`](specs/nemotron-h-model.md) §6d | bug |
| [#847](https://github.com/mudler/vllm.cpp/issues/847) | — | Residue of the registry type-confusion class after #775: 34 `prepare`/`forward` entry points across 32 model TUs still downcast a type-erased `LoadedModel&` with an unchecked `static_cast`. The `ModelAs` seam they need already exists, so the sweep is mechanical EXCEPT for one decision it must make first — `llama_registry.cpp`, `qwen3_5_dense.cpp` and `gemma4_registry.cpp` each register THREE architectures against ONE forward, so those sites have no single architecture name to refuse under. Owed by [`nemotron-h-model.md`](specs/nemotron-h-model.md) `## Owed` until a row claims it | bug |
| [#829](https://github.com/mudler/vllm.cpp/issues/829) | `GATE-SQUASH-TRAILERS` | A squash of a multi-commit PR repeats the trailer block once per commit; the repetition is harmless because `git interpret-trailers --parse` reads only the trailing block, and the real defect is GitHub's `---------` separator falling between the block and the appended `Co-authored-by:`, which orphans it. Fixed by setting `squash_merge_commit_message = PR_BODY` (spec [`squash-trailers.md`](specs/squash-trailers.md)) | bug |
Expand Down
Loading
Loading