record(ROAD-V1-C2-LOCAL-BF16): punch-list item 14 asked for work that landed 16 days ago, on a premise its own commit refuted - #531
Open
localai-bot wants to merge 1 commit into
Open
Conversation
… landed 16 days ago, on a premise its own commit refuted Closes #527. Item 14 of .agents/specs/roadmap-v1-completion.md, and the matching RI-table cell, sent a fresh implementer after "port device-resident sampled-token mapping to discrete CUDA (remove the measured main-stream wait) and rerun the exact 4B series". All three clauses were stale. Nothing here is implementation: no src/, include/ or tests/ file moves, and the row stays GATING. The port landed deed7c2 (2026-07-27) -- runner-owned device last_sampled / prefill_len / query_start_loc / seq_lens / input_ids plus LaunchApplyLastSampledOps, which replays our condense's structural row edits on-device in stream order. That is precisely the "request-compaction-safe device token map" the 2026-07-25 checkpoint asked the next owner to write. It stopped being opt-in at 1718bf1 (2026-08-05): async_device_mirror() (src/vllm/v1/worker/gpu/runner.cpp:2430-2455) engages on any real CUDA GPU and names discrete first, because there the host fallback would main-stream Synchronize. The Synchronize item 14 wanted removed survives only on the non-CUDA host branch, where it is correct and required. The measurement that motivated the lever is refuted in deed7c2's own message: vllm-bench drives the synchronous LLMEngine::step() loop, so sample_tokens_async never runs on the benchmarked path and the 497 cudaStreamSynchronize calls (20.975 s, 42.20 ms/call) attributed to it are something else. They are still unattributed, and re-attributing them is step 3 of the live campaign rather than a lever of its own. The successor attempt on the same wait was tried and rejected: geometric argmax scratch migrated the wait and cost +1% TPOT. The 4B series has been rerun six times since (bench-evidence qwen35-4b-* 0727 through 0807), moving throughput 0.9864x -> 1.0283x PASS. Roadmap row 2a and the row's live campaign spec were already current -- the campaign's Ordered campaign never mentions sampled tokens at all -- which is what makes the four surfaces below drift rather than disagreement. They are marked SUPERSEDED in place, with the 2026-07-25 text preserved: the checkpoint is history and history is not edited, but a reader must not act on it. docs/STATUS.md and docs/BENCHMARKS.md were already correct at 1.0283x, so they gain no measurement here. check-doc-checkpoint requires them anyway for any claim edit to benchmark-record.md, and it is the authority on what it enforces, so each gets one true sentence naming the next discriminator -- amended into the existing ROW, not a new paragraph, since both pages are at zero paragraph headroom and check-public-doc-tables caps a cell at 220 chars. Preflight --staged: every record gate green. test_cpu_x86_llamacpp_floor is RED under preflight and passes 10/10 standalone on this same tree; it reads the real host loadavg, so preflight's own parallelism can fail it. Filed as #529 and deliberately not fixed here -- changing a gate's semantics needs its own spec and a RED-before demonstration. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: ClaudeCode:claude-opus-5 [ClaudeCode]
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #527. Owning row:
ROAD-V1-C2-LOCAL-BF16(roadmap row 2a), which staysGATING. Also files, and deliberately does not fix, #529.I was dispatched as a fresh implementer on punch-list item 14 of
.agents/specs/roadmap-v1-completion.md§3, whose recorded W-plan was "portdevice-resident sampled-token mapping to discrete CUDA (remove the measured
main-stream wait) and rerun the exact 4B series". Re-verifying the gap against
the tree first, as AGENTS.md requires, found no gap. This is a reconciliation,
not an implementation: no
src/,include/ortests/file is touched.What git shows
deed7c2a1(2026-07-27)1718bf155(2026-08-05)deed7c2a1itselfdeed7c2a1adds the runner-owned devicelast_sampled/prefill_len/query_start_loc/seq_lens/input_idsplusLaunchApplyLastSampledOps,which replays our condense's structural row edits on-device in stream order —
exactly the "request-compaction-safe device token map" the 2026-07-25
CLAIM-LOCAL-BF16-H32-AOTcheckpoint asked the next owner to write. Todayasync_device_mirror()(src/vllm/v1/worker/gpu/runner.cpp:2430-2455) engageson any real CUDA GPU and names discrete first, "the mirror is REQUIRED, because
the host fallback would main-stream Synchronize to read the sampled ids". The
Synchronizeitem 14 wanted removed survives only on the non-CUDA host branch(
runner.cpp:2687-2695), where it is correct and required.And the motivating measurement is refuted in
deed7c2a1's own message:vllm-benchdrives the synchronousLLMEngine::step()loop, sosample_tokens_asyncnever runs on the benchmarked path, and the 497cudaStreamSynchronizecalls (20.975 s, 42.20 ms/call) attributed to it aresomething else. They remain unattributed — re-attributing them is step 3 of
the row's live campaign, not a lever of its own. The successor attempt on the
same wait was already tried and rejected (geometric argmax scratch migrated
the wait and cost +1% TPOT).
Roadmap row 2a and the row's live campaign spec were already current — the
campaign's Ordered campaign never mentions sampled tokens at all — which is
what makes this drift rather than disagreement.
The surfaces reconciled
.agents/specs/roadmap-v1-completion.md— §3 item 14 and the §2 RI-table cell.agents/benchmark-record.md— theHost-weight ownershipkey's next-action.agents/coordination.md— the 2026-07-25 "Next owner must..." directive.agents/specs/sm120-qwen35-pareto-2026-08-09.md— a Record reconciliationsection, so the row's own spec carries the issue link
.agents/roadmap_v1.md— issue-table rows for Punch-list item 14 (ROAD-V1-C2-LOCAL-BF16) directs work that landed 2026-07-27, on a premise the same commit refuted #527 and test_cpu_x86_llamacpp_floor fails on a BUSY host, so preflight can fail itself: the contended-leg test asserts exit 2 but the unpinned real-loadavg quiet window exits 4 first #529The 2026-07-25 checkpoint text is preserved and marked superseded in place
rather than rewritten: the checkpoint is history, and history is not edited, but
a reader must not act on it.
Real remaining work on the row
Unchanged by this PR, and now stated where a next owner will actually read it:
same-tool
nsys --cuda-graph-trace=nodeon both engines over the identicalworkload, splitting the residual TTFT into intake vs prefill, then the largest
attributable interval. TPOT/ITL 1.0165x and peak VRAM +118.7 MiB stay
open, and no axis is called a ceiling.
Public docs
docs/STATUS.mdanddocs/BENCHMARKS.mdwere already correct at 1.0283x, sothe row gains no measurement here.
check-doc-checkpointrequires both for anyclaim edit to
benchmark-record.md, and a checker's message is the authority onwhat it enforces, so each gets one true sentence naming the next discriminator.
Both are amended into the existing row, not added as prose: the two pages are
at zero paragraph headroom, and
check-public-doc-tablescaps a cell at 220chars (first attempt hit 383 and tripped the STATUS oversized-cell ratchet).
Gates
scripts/agent-preflight.sh --staged: every record gate green —doc-checkpoint,check-public-doc-tables,now-current,audit-live-rows,check-gate-commands,trailer suites, and the rest.
One gate is red and it is not this change:
test_cpu_x86_llamacpp_floorreadsthe real host loadavg, and on a busy box its contended-leg test asserts exit 2
while the unpinned quiet window exits 4 first. Proven by manipulation, not
inference — at loadavg 36 the file fails standalone, and pinning only
QUIET_BUSY=100makes the same test pass on the same host. Reproduced on a CLEAN checkout ofmain(a89b3c456, tree clean) at loadavg 30.99, so it is not this branch. Filed as #529with the root cause; not fixed here, because changing a gate's semantics needs
its own spec and a RED-before demonstration.
Not done
No GPU work and no new measurement: there was nothing to measure. The dgx GPU
lock was never taken and
local-ai-workerwas never touched.Needs a fresh reviewer who is not me. Merge authority is not mine.