You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
src/vllm/entrypoints/model_loader.cpp is cited by absolute line number from 109 distinct sites across 45 files — specs, matrices, docs and code comments in other translation units. The file is ~1640 lines and is edited by almost every engine and model row. So any edit near its top silently invalidates every citation below it, in files the editing change never opens.
Measured, on this change
PR #1132's repair round (#1136) inserts about 45 lines near line 100 of that file: one struct and one helper (AutoDeviceResolution / ResolveAutoDevice), so that ResolveModelDeviceType and SelectQueueForModel can share one description of the auto arm.
Comparing the TEXT at every cited line between the reviewed head e7d0a1f7c and the repaired head:
citations checked, unmoved : 10
citations MOVED by this change : 203 (109 distinct citing sites, 45 files)
out of range in one revision : 0
Read that carefully: 203 is line references, 109 is citing sites, and neither number says how many were CORRECT beforehand. Spot-checking says several were already stale at e7d0a1f7c — .agents/model-matrix.md:197 cites model_loader.cpp:184-223 as the "live loader" while line 184 at e7d0a1f7c is static const bool once = [] { inside the VT_LOAD_STATS helper. So this is not a claim that one change broke 109 good citations; it is a measurement that the surface cannot survive an ordinary edit, and that nobody can tell the two cases apart today.
Why the repair round did not sweep it
Two reasons, both deliberate:
It is 109 sites in 45 files, most of them in specs owned by other rows. That is a sweep with its own scope, not a record edit riding along with a device-fit repair.
Distinguishing "this change broke it" from "it was already wrong" needs a per-citation judgement about intent that no script can make. Rewriting all 109 from the current tree would launder pre-existing debt into a clean-looking record — the opposite of what the record is for.
What the round DID fix is the two anchors it authored itself (tests/vllm/entrypoints/test_gguf_device_fit_reach.cpp and tests/vllm/model_executor/test_gguf_device_fit.cpp), and it added them to its own anchor verifier so they cannot go stale inside their own pull request — which is what happened to platforms/cuda.cpp:67 in the round before.
The shape of a fix
Not chosen here. The candidates, in rough order of cost:
Cite symbols, not lines, for anything crossing a file boundary: model_loader.cppResolveAutoDevice rather than model_loader.cpp:100-115. A symbol name survives every edit that does not rename it, and git grep finds it. This is the only option that removes the class rather than re-baselining it.
Split model_loader.cpp. It is a 1640-line file doing config resolution, device selection, load-stats instrumentation, draft-model resolution, GGUF dispatch and engine-stack assembly. The citation blast radius is a symptom of the size.
Owner: needs one. Filing it against no row would make it the untracked kind check-agent-record.py counts, so it is listed under ## Owed in expert-streaming.md until a row claims it, on the grounds that ENG-EXPERT-STREAM is the row that measured it.
src/vllm/entrypoints/model_loader.cppis cited by absolute line number from 109 distinct sites across 45 files — specs, matrices, docs and code comments in other translation units. The file is ~1640 lines and is edited by almost every engine and model row. So any edit near its top silently invalidates every citation below it, in files the editing change never opens.Measured, on this change
PR #1132's repair round (#1136) inserts about 45 lines near line 100 of that file: one struct and one helper (
AutoDeviceResolution/ResolveAutoDevice), so thatResolveModelDeviceTypeandSelectQueueForModelcan share one description of the auto arm.Comparing the TEXT at every cited line between the reviewed head
e7d0a1f7cand the repaired head:Read that carefully: 203 is line references, 109 is citing sites, and neither number says how many were CORRECT beforehand. Spot-checking says several were already stale at
e7d0a1f7c—.agents/model-matrix.md:197citesmodel_loader.cpp:184-223as the "live loader" while line 184 ate7d0a1f7cisstatic const bool once = [] {inside theVT_LOAD_STATShelper. So this is not a claim that one change broke 109 good citations; it is a measurement that the surface cannot survive an ordinary edit, and that nobody can tell the two cases apart today.Why the repair round did not sweep it
Two reasons, both deliberate:
What the round DID fix is the two anchors it authored itself (
tests/vllm/entrypoints/test_gguf_device_fit_reach.cppandtests/vllm/model_executor/test_gguf_device_fit.cpp), and it added them to its own anchor verifier so they cannot go stale inside their own pull request — which is what happened toplatforms/cuda.cpp:67in the round before.The shape of a fix
Not chosen here. The candidates, in rough order of cost:
model_loader.cppResolveAutoDevicerather thanmodel_loader.cpp:100-115. A symbol name survives every edit that does not rename it, andgit grepfinds it. This is the only option that removes the class rather than re-baselining it.file:lineagainst an expected substring. The repair round wrote a throwaway version (72 anchors, hardcoded expectations, no row reading its expectation from the file it checks — that shape is a tautology, see Spec-body file:line anchors are unchecked (4772 of them) and an anchor into a file the row is editing is stale by default: one spec shipped 8 stale anchors, then 7 more from the merge alone #911). Making it a real checker is a checker change and needs its own spec, and the expectation table is itself a record surface that every PR would have to edit, whichAGENTS.mdcalls a lock.model_loader.cpp. It is a 1640-line file doing config resolution, device selection, load-stats instrumentation, draft-model resolution, GGUF dispatch and engine-stack assembly. The citation blast radius is a symptom of the size.Owner: needs one. Filing it against no row would make it the untracked kind
check-agent-record.pycounts, so it is listed under## Owedinexpert-streaming.mduntil a row claims it, on the grounds thatENG-EXPERT-STREAMis the row that measured it.