Skip to content

0.69.4 G0: serve-level test that fails unless apr serve prefills Qwen3.5 through the batched path (#3596 countermeasure) #4250

Closed as not planned

Description

@noahgift

G0 of the 0.69.4 train (epic #4249): a serve-level test that fails unless apr serve prefills Qwen3.5 through the batched path.

0.69.3 ships the batched qwen35 CUDA prefill (#3596). Its receipts are apr run receipts. Nothing at the serve level fails if serve drops back to the per-token loop. At 0.69.1, infra-76 measured serve prefill at ~77 tok/s on an 851-token prompt, the same rate as decode (#3596 comment). A regression to that loop would pass every gate we have today.

done_when

  1. A test drives a real request through the serve handler for a qwen35 model with a prompt longer than 1 token. It asserts from an observable signal, not a log string, that the prefill ran batch > 1 rows per forward. It asserts the batched outcome did not fall back.
  2. Mutation: routing serve's prefill back to the per-token loop turns the test RED. Record the RED and GREEN runs.
  3. The test is wired into a CI line that actually runs it (cuda-gated lib tests per ci(cuda-unit): run every cuda-gated aprender-serve lib test (1,337, not 70), single-threaded, SKIP fails (#3810) #4042, or the named --test target list). A dark test does not count.

Kind: code. Milestone 0.69.4. Captain: aprender-ac. GPU runs only after the 0.69.3 tag.

Activity

  1. added this to the 0.69.4 milestone on Sep 24, 2026
  2. noahgift commented on Sep 25, 2026

    @noahgift
    MemberAuthor

    Claimed by aprender-36 (0.69.4 captain) per cop assignment 2026-09-25T06:33Z.

  3. noahgift commented on Sep 25, 2026

    @noahgift
    MemberAuthor

    done_when 2 (mutation RED/GREEN): verified. ac's run of gpu_every_serve_route_prefills_through_the_batched_prefill at 6d49692: GREEN rc=0 (1 passed, batched_lines=4), and RED under APR_QWEN35_SESSION_PREFILL=per-token rc=101, panicking at the /v1/chat/completions batched_prefills assert ('prefilled its prompt one token at a time (#3596)'). The test body is byte-identical on main (awk extract diff: SAME). Logs: lambda /mnt/nvme-raid0/tmp/aprender-ac/4250-{green,red,summary}.

    done_when 3 (a CI line that actually runs it): NOT MET. ci.yml cuda-unit runs on yoga-eph docker, where 'the models are not on this runner' (ci.yml:3055), so the test SKIPs as model-absent and is allowed. It is dark in CI. /home/noah/models/Qwen3.5-0.8B-Q4_K_M.gguf is present on gx10, which is the runner for the cuda-nightly falsifiers job. Proposed: a cuda-nightly step on gx10 that runs the test --exact and fails on SKIP / 0 passed, plus the per-token RED control (it must fail). This is a workflow change, so it is pending cop check-in. — aprender-36

  4. added 3 commits that reference this issue on Sep 25, 2026
  5. modified the milestones: 0.69.4, 0.69.5 on Sep 25, 2026
  6. added 3 commits that reference this issue on Sep 26, 2026
  7. modified the milestones: 0.69.5, 0.71.0 on Oct 4, 2026
  8. added
    P1High priority
    and removed
    P0Critical priority
    on Oct 14, 2026
  9. noahgift commented on Oct 14, 2026

    @noahgift
    MemberAuthor

    P0 to P1 (2026-10-14 P0 triage): P0 now means it blocks the next release or carries the operator's own words on it; this issue does neither, so it stays on the 0.71.0 milestone at P1.

  10. noahgift commented on Oct 14, 2026

    @noahgift
    MemberAuthor

    merged into #5313 (master ticket for epic #3999; triage rule 7b, 2026-10-14). It is a checklist row there; reopen this issue when work on it starts or its PR opens.

  11. noahgift commented on Oct 14, 2026

    @noahgift
    MemberAuthor

    Moved: this sub-ticket is now a row in #5336 (CRUX verb parity: chat, serve and perf receipts against llama.cpp and ollama), split out of #5313 by theme.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions