diff --git a/TECHNICAL_REPORTS/2271-b1-decode-terminal-lookahead-20261011.en.md b/TECHNICAL_REPORTS/2271-b1-decode-terminal-lookahead-20261011.en.md new file mode 100644 index 000000000..d30a00133 --- /dev/null +++ b/TECHNICAL_REPORTS/2271-b1-decode-terminal-lookahead-20261011.en.md @@ -0,0 +1,76 @@ +# Technical Report: PR #2271 - B=1 terminal decode lookahead + +**Date**: 2026-10-11 +**Status**: Completed and verified on CUDA (GB10), with the Qwen prompt-cache limitation below +**Languages**: Rust, Python, Bash, Markdown +**Risk Level**: Low to medium + +## Executive summary + +The scheduler's B=1 lookahead pipeline submitted token `n+1` before reading pending token `n`. When `n` exhausted `max_tokens`, it unwound two speculative appends and synchronously replayed an already sampled token. PR #2271 checks the known length budget first, skips `n+1`, and commits the pending token through the existing fused finish path. This removes two complete forwards once per fused-lookahead-eligible capped B=1 request while preserving B>1 behavior. + +Five-round GB10 measurements pass the required -1.0% median no-regression threshold in all four model/prompt cells. Every candidate range overlaps its repeated-baseline null range, so the evidence supports the threshold and does not establish a speedup. + +## 1. Problem statement + +Temporary host timers measured the pre-change Qwen B=1 server tick at 5,318.203 microseconds. Row lookup and build together were 0.0053%, metrics publication 0.0462%, provider channel send 0.0698%, and lookahead collection 0.0836%. Issue #2227 required candidates below 0.1% to remain unchanged, so this PR does not alter those paths. The 0.1445% fused finish call remains because it owns the shared sampling and finish transition. + +Nsight's aggregate CUDA traces showed 126 more graph launches and 125 more graph-exec updates on the server than CLI. The traces include warm-up and measured requests and contain multiple graph calls per model forward, so they are corroborating evidence only. Scheduler forward-count tests establish the exact request-level cause. + +## 2. Technical decisions and implementation + +- The shortcut applies only when one sequence is active and its pending token is guaranteed to spend the length budget. +- The pending token still passes through shared fused token application, finish-state evaluation, event emission, and completion finalization. +- EOS wins when it coincides with the length boundary. +- A failed or malformed pending-token read uses the existing unwind and synchronous fallback. +- Seeded stochastic sampling commits the existing device draw without submitting a future draw or redrawing the terminal token. +- B>1 retains the previous next-submit, teardown, and synchronous replay behavior. + +The live dense external-KV cycle-Llama fixture counts real scheduler submit and step calls. At `max_tokens=3`, optimized B=1 stays at two forwards while B=2 stays at four. Replacing the budget guard with `false` makes the test fail with actual four versus expected two, proving that the branch removes the measured work. Separate Muse tests cover generated IDs, finish reason, stream text, pool offset, and model-owned offsets without treating the non-rewindable Muse model as lookahead-eligible. + +The change adds no public option, dependency, or storage-format change. Test-only counters are compiled under `cfg(test)` and have no release-path cost. + +## 3. Performance results + +The acceptance run used five interleaved quiet-host rounds against pre-epic baseline `4c44e317`, with a repeated-baseline null arm. + +| Model | Prompt | Server dense vs baseline CLI | Null arm | +|---|---:|---:|---:| +| Qwen3-1.7B 4-bit | 256 | +0.57% (-0.25%..+1.54%) | +0.04% (-0.41%..+0.76%) | +| Qwen3-1.7B 4-bit | 8192 | +0.32% (+0.04%..+0.63%) | +0.22% (-0.13%..+0.66%) | +| Llama-3.2-1B 4-bit | 256 | +0.48% (+0.19%..+1.41%) | +0.07% (-12.38%..+0.54%) | +| Llama-3.2-1B 4-bit | 8192 | -0.16% (-1.15%..+0.05%) | -0.17% (-0.29%..+0.14%) | + +All four medians pass the -1.0% threshold. Every candidate range overlaps its null range. The Llama 256 null arm contains -1.01% in round 2 and an unexplained -12.38% in round 3; both remain in the raw data and analysis without exclusion or rerun. + +## 4. Correctness and validation + +- Real `mlxcel run` generated text is byte-identical before and after the production change, with generated-text SHA-256 `ecbb6c3137fa73714f6fe6df1dd6414b14c6af75796efe19662a3aaab50eaea6` in both captures. +- Full Llama parity reports 13 identical pairs, zero divergent pairs, and one inapplicable pair. +- Qwen parity with prompt-cache cases excluded reports nine identical pairs, zero divergent pairs, and one inapplicable pair. +- Full Qwen parity still fails on prompt-cache miss versus hit at greedy token 58 (`374` versus `594`) and seeded token 61 (`576` versus `362`). Forced synchronous decode reproduces the same positions and token IDs while the new guard is unreachable. This is an existing prompt-cache-path limitation outside #2227, not a result of the terminal lookahead change. +- Formatting, CUDA workspace clippy, repository contracts, scheduler tests, and post-mutation binary restoration passed. +- The restored full CUDA suite reports 8,930 root tests and 2,072 core tests passed, with zero integration failures; 165 root and two core tests were ignored. +- The archived acceptance analyzer replays to `PASS (4/4 cells >= -1.00%)`, and every tracked evidence file matches the committed SHA-256 manifest. + +## 5. Provenance and limitations + +The release binary used for correctness and performance was built from `7c8830cd5aa01198e6ff93b661f90c048ccaeb1d`. Later checkout differences through `93e2f9ab` were confined to two test modules; the production-file diff is empty. During the after-run capture the source checkout contained the controlled guard mutation, but the release binary was never rebuilt. Its hash and archived source patch independently identify the executed code. + +Repository policy excludes generated binary profiling captures. The original CLI `.nsys-rep` was 3,077,212 bytes with SHA-256 `646508acb7a4193870b5bbf1d93b090e6abc6667cda9da1783239ae63b176719`; the server capture was 3,147,242 bytes with SHA-256 `19efc62eaf08bcc9b25f3c79c1be9ccb43220f4d84ef1b0091bb5b04e38884ab`. Both remain in the run host's `/tmp/mlxcel-auto-plan/2227-profile/` scratch directory outside git. The committed Nsight statistics and logs, plain logs, instrumentation patch, profile analysis, acceptance JSONL, and correctness records preserve the evidence used by this report. + +## 6. Change summary + +| Category | Result | +|---|---| +| Performance | Removes two terminal decode forwards per eligible capped B=1 request; all four acceptance medians pass the no-regression threshold | +| Correctness | Preserves token output, finish semantics, cache offsets, stochastic draw order, EOS precedence, and B>1 behavior in targeted tests | +| Compatibility | No public API, dependency, model format, or B>1 behavior change | +| Known limitation | Full Qwen prompt-cache miss/hit parity remains divergent and is reproducible when the new branch cannot execute | + +## References + +- Issue #2227 +- PR #2271 +- `docs/benchmark_results/b1-decode-overhead-gb10-2026-10-11.md` +- `docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/` diff --git a/TECHNICAL_REPORTS/2271-b1-decode-terminal-lookahead-20261011.ko.md b/TECHNICAL_REPORTS/2271-b1-decode-terminal-lookahead-20261011.ko.md new file mode 100644 index 000000000..22dd7a9fe --- /dev/null +++ b/TECHNICAL_REPORTS/2271-b1-decode-terminal-lookahead-20261011.ko.md @@ -0,0 +1,76 @@ +# 기술 보고서: PR #2271 - B=1 종료 디코드 lookahead + +**작성일**: 2026-10-11 +**상태**: CUDA(GB10)에서 구현 및 검증 완료, Qwen 프롬프트 캐시 제한은 아래에 기록 +**언어**: Rust, Python, Bash, Markdown +**위험도**: 낮음에서 중간 + +## 요약 + +B=1 lookahead 스케줄러는 대기 중인 토큰 `n`을 읽기 전에 `n+1`을 제출했다. `n`이 `max_tokens`를 모두 사용하면 speculative append 두 개를 되돌린 뒤 이미 샘플링한 토큰을 동기 방식으로 다시 실행했다. PR #2271은 길이 예산을 먼저 확인하고 `n+1` 제출을 생략한 뒤 기존 fused finish 경로로 대기 토큰을 커밋한다. 따라서 fused lookahead가 가능한 길이 제한 B=1 요청마다 완전한 forward 두 번을 제거하며 B>1 동작은 유지한다. + +GB10에서 5회 측정한 네 모델/프롬프트 셀은 모두 median -1.0% 성능 회귀 기준을 통과했다. 모든 candidate 범위가 반복 baseline null 범위와 겹치므로, 이 결과는 기준 통과를 뒷받침하지만 성능 향상을 입증하지 않는다. + +## 1. 문제 정의 + +임시 호스트 타이머로 변경 전 Qwen B=1 서버 tick을 측정한 결과 평균은 5,318.203마이크로초였다. Row lookup과 build 합계는 0.0053%, metrics 발행은 0.0462%, provider channel send는 0.0698%, lookahead collect는 0.0836%였다. 이슈 #2227은 0.1% 미만 후보를 변경하지 않도록 요구하므로 이 경로들은 그대로 두었다. 0.1445%인 fused finish 호출은 공통 샘플링 및 완료 상태 전이를 담당하므로 유지했다. + +Nsight 집계에서 서버는 CLI보다 CUDA graph launch가 126회, graph-exec update가 125회 많았다. 이 trace에는 워밍업 요청과 측정 요청이 모두 포함되고 한 model forward가 여러 graph 호출을 만들기 때문에, 이 수치는 보조 증거로만 사용한다. 정확한 요청 단위 원인은 scheduler forward-count 테스트로 검증했다. + +## 2. 기술적 선택과 구현 + +- 활성 sequence가 하나이고 대기 토큰이 길이 예산을 반드시 소진할 때만 단축 경로를 사용한다. +- 대기 토큰은 기존 fused token 적용, finish 상태 평가, 이벤트 전송, 완료 finalization을 그대로 통과한다. +- EOS와 길이 제한이 같은 토큰에서 발생하면 EOS가 우선한다. +- 대기 토큰 읽기 실패나 형상 오류는 기존 unwind 및 동기 폴백을 사용한다. +- Seed가 있는 stochastic sampling은 이미 준비된 device draw를 커밋하며, 미래 draw를 제출하거나 종료 토큰을 다시 뽑지 않는다. +- B>1은 기존 next-submit, teardown, 동기 replay 동작을 유지한다. + +실제 dense external-KV cycle-Llama fixture는 scheduler submit 및 step 호출 수를 센다. `max_tokens=3`에서 최적화된 B=1은 2회, B=2는 기존 4회를 유지한다. 예산 guard를 `false`로 바꾸면 실제 4회, 기대 2회로 테스트가 실패하여 이 분기가 측정된 작업을 제거함을 확인한다. 별도의 Muse 테스트는 생성 ID, finish reason, stream text, pool offset, model-owned offset을 비교하며, rewind를 지원하지 않는 Muse를 lookahead 가능한 원인 검증 fixture로 취급하지 않는다. + +공개 옵션, 의존성, 저장 형식 변경은 없다. 테스트 전용 counter는 `cfg(test)`에서만 컴파일되어 release 경로 비용이 없다. + +## 3. 성능 결과 + +Acceptance run은 pre-epic `4c44e317` 기준, quiet host에서 5회 interleaved round와 baseline 반복 null arm으로 측정했다. + +| 모델 | 프롬프트 | Server dense 대 baseline CLI | Null arm | +|---|---:|---:|---:| +| Qwen3-1.7B 4-bit | 256 | +0.57% (-0.25%..+1.54%) | +0.04% (-0.41%..+0.76%) | +| Qwen3-1.7B 4-bit | 8192 | +0.32% (+0.04%..+0.63%) | +0.22% (-0.13%..+0.66%) | +| Llama-3.2-1B 4-bit | 256 | +0.48% (+0.19%..+1.41%) | +0.07% (-12.38%..+0.54%) | +| Llama-3.2-1B 4-bit | 8192 | -0.16% (-1.15%..+0.05%) | -0.17% (-0.29%..+0.14%) | + +네 셀의 median이 모두 -1.0% 기준을 통과했다. 모든 candidate 범위가 null 범위와 겹친다. Llama 256 null arm에는 round 2의 -1.01%와 원인을 알 수 없는 round 3의 -12.38%가 포함되어 있으며, 제외하거나 재실행하지 않고 raw data와 분석에 그대로 보존했다. + +## 4. 정확성 및 검증 + +- 실제 `mlxcel run` 생성 텍스트는 변경 전후 byte 단위로 같고, 두 생성 텍스트의 SHA-256은 `ecbb6c3137fa73714f6fe6df1dd6414b14c6af75796efe19662a3aaab50eaea6`이다. +- Llama 전체 parity는 13개 동일, divergence 0개, 해당 없음 1개다. +- 프롬프트 캐시 case를 제외한 Qwen parity는 9개 동일, divergence 0개, 해당 없음 1개다. +- Qwen 전체 parity는 프롬프트 캐시 miss/hit 비교에서 greedy 토큰 58(`374` 대 `594`)과 seeded 토큰 61(`576` 대 `362`)에 실패한다. 강제 동기 디코드도 같은 위치와 토큰 ID를 재현하며 새 guard는 실행되지 않는다. 이는 종료 lookahead 변경으로 생긴 문제가 아니라 #2227 범위 밖의 기존 프롬프트 캐시 경로 제한이다. +- Formatting, CUDA workspace clippy, repository contract, scheduler test, mutation 이후 binary 복구를 모두 통과했다. +- 복구 후 전체 CUDA suite는 root test 8,930개와 core test 2,072개가 통과했고 integration failure는 0개였다. Root 165개와 core 2개는 ignored였다. +- 보관된 acceptance analyzer는 `PASS (4/4 cells >= -1.00%)`를 재현하며, 추적 중인 모든 evidence 파일은 커밋된 SHA-256 manifest와 일치한다. + +## 5. 출처 및 제한 + +정확성 및 성능 측정에 사용한 release binary는 `7c8830cd5aa01198e6ff93b661f90c048ccaeb1d` 소스에서 빌드했다. 이후 `93e2f9ab`까지의 checkout 차이는 test module 두 개에만 있으며 production file diff는 없다. 변경 후 실제 실행을 캡처할 때 source checkout에는 제어된 guard mutation이 있었지만 release binary를 다시 빌드하지 않았다. Binary hash와 보관한 source patch가 실제 실행 코드를 독립적으로 식별한다. + +저장소 정책은 생성된 binary profiling capture를 제외한다. 원본 CLI `.nsys-rep`는 3,077,212바이트이고 SHA-256은 `646508acb7a4193870b5bbf1d93b090e6abc6667cda9da1783239ae63b176719`이다. Server capture는 3,147,242바이트이고 SHA-256은 `19efc62eaf08bcc9b25f3c79c1be9ccb43220f4d84ef1b0091bb5b04e38884ab`이다. 두 파일은 git 외부인 실행 호스트의 `/tmp/mlxcel-auto-plan/2227-profile/` scratch 디렉터리에 남아 있다. 커밋한 Nsight 통계 및 로그, plain log, instrumentation patch, profile analysis, acceptance JSONL, correctness record가 이 보고서에서 사용한 증거를 보존한다. + +## 6. 변경 요약 + +| 분류 | 결과 | +|---|---| +| 성능 | 조건을 만족하는 길이 제한 B=1 요청마다 종료 decode forward 두 번을 제거하며 네 acceptance median이 모두 회귀 기준을 통과 | +| 정확성 | Targeted test에서 token output, finish semantics, cache offset, stochastic draw order, EOS 우선순위, B>1 동작을 유지 | +| 호환성 | 공개 API, 의존성, 모델 형식, B>1 동작 변경 없음 | +| 알려진 제한 | Qwen 전체 프롬프트 캐시 miss/hit parity divergence는 새 분기를 실행할 수 없는 강제 동기 경로에서도 재현됨 | + +## 참고 자료 + +- 이슈 #2227 +- PR #2271 +- `docs/benchmark_results/b1-decode-overhead-gb10-2026-10-11.md` +- `docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/` diff --git a/docs/benchmark_results/b1-decode-overhead-gb10-2026-10-11.md b/docs/benchmark_results/b1-decode-overhead-gb10-2026-10-11.md new file mode 100644 index 000000000..b45c18c67 --- /dev/null +++ b/docs/benchmark_results/b1-decode-overhead-gb10-2026-10-11.md @@ -0,0 +1,79 @@ +# B=1 terminal decode overhead (GB10, 2026-10-11) + +Issue #2227 investigates the remaining single-stream gap between the in-process server used by `mlxcel run` and the pre-epic CLI path. Profiling rejected the proposed host micro-optimizations because each measured below the issue's 0.1% threshold. It instead found one request-boundary inefficiency: a fused-lookahead-eligible capped B=1 request performed two complete decode forwards whose results could not affect the response. + +## Host, builds, and method + +Measurements ran on `spark-102`, NVIDIA GB10, driver 580.178.04, CUDA 13.0, Linux 7.0.0-1019-nvidia, release profile with CUDA, and MLX pin `81ba1c6a0e50a9268b931579c2d4f1158b9aab5a`. + +- Pre-epic baseline: `4c44e317dcbc5a66548e6aed1cd01cdf36f97499`. +- Pre-change profiling source: `73700aafa6a792f07830578c0c26137cea3a038b` plus temporary instrumentation patch SHA-256 `306b2664d8b69186cc896ec83c1f6323e534372fc1148fd75fc4df9e5e2fe0b6`. +- Production release binary source: `7c8830cd5aa01198e6ff93b661f90c048ccaeb1d`, tree `aa976c7eaa17b1e39c6b984e7124e184e96d1800`. +- Final test checkout before documentation: `93e2f9abb3127eb64d414b9dddc4224cce3c703b`; its only difference from the release source is in two `cfg(test)` scheduler modules. The production-file diff is empty. + +The final performance run uses `scripts/engine_bench_rounds.py`: five interleaved rounds, 16 warm-up tokens, 128 measured decode tokens, the quiet-host gate before each arm, and a repeated `base-cli` null arm. `base-cli` and `new-srv-dense` use separate release builds. The performance driver explicitly unsets deterministic-SDPA and profiler variables to match the Phase 0 default dispatch. Correctness runs set `MLXCEL_SDPA_DETERMINISTIC=1`. + +## Profile before the change + +Linux had `perf_event_paranoid=4`, so CPU sampling was unavailable. Nsight Systems 2025.3.2 recorded CUDA and OS runtime events with sampling, event sampling, backtraces, and context-switch tracing disabled. Temporary `Instant` timers measured scheduler stages. The denominator starts at normal decode-loop entry, excludes prefill, and ends after completion finalization. + +The Qwen3-1.7B 4-bit profile used a 256-token prompt and one binary for both server and CLI. The measured server request had 127 ticks averaging 5,318.203 microseconds. + +| Stage | Calls | Total ns | Percent of full decode tick | Decision | +|---|---:|---:|---:|---| +| Metrics publication | 128 | 312,052 | 0.0462% | Leave unchanged: below 0.1% | +| Row lookup | 127 | 17,824 | 0.0026% | Leave unchanged | +| Row build | 127 | 18,096 | 0.0027% | Leave unchanged; row plumbing totals about 0.0053% | +| Lookahead collect | 126 | 564,546 | 0.0836% | Leave unchanged | +| Fused finish rows | 125 | 976,026 | 0.1445% | Retain the required shared sampling and finish transition | +| Provider channel send | 127 | 471,319 | 0.0698% | Leave unchanged | +| Lookahead submit | 127 | 656,315,740 | 97.1727% | Includes asynchronous GPU work | +| Synchronous engine step | 2 | 13,668,204 | 2.0237% | Investigate the terminal replay | + +The provider timer covers only the `mpsc` send; it does not cover token decoding or `String` allocation. `StreamFilter` is downstream of the provider and outside the benchmark's server arm, so this profile makes no timing claim about it. + +Nsight recorded 4,067 server versus 3,941 CLI `cudaGraphLaunch` calls, and 4,019 versus 3,894 `cudaGraphExecUpdate` calls. These aggregate traces include both the 16-token warm-up and 128-token measured requests, and a model forward emits multiple CUDA graph calls. They corroborate extra server GPU work but are not converted into per-token or per-forward counts. + +## Root cause and change + +On the terminal length tick the B=1 scheduler already holds pending token `n`. The old order was: + +1. submit the speculative `n+1` forward; +2. read pending terminal token `n` and discover that it exhausts `max_tokens`; +3. unwind the speculative cache appends for `n` and `n+1`; +4. synchronously replay `n`, even though its sampled token was already known. + +That order spends two unused complete forwards once per affected capped request. `DirectEngine` already checks the length budget before submitting the next lookahead. + +The scheduler now applies the same check when exactly one sequence is active. If the pending token must exhaust the length budget, it skips `n+1` and commits `n` through the existing fused token application and shared finish/finalization logic. Batches larger than one retain the existing mixed-row teardown and replay behavior. EOS still takes precedence at the boundary, a failed or malformed pending read falls back to the existing unwind and synchronous path, and stochastic sampling commits the already drawn pending token without advancing or redrawing it. + +## Performance + +Decode tok/s, paired `new-srv-dense` delta against pre-epic `base-cli`, median over five rounds with range. The null arm repeats `base-cli` within each round. + +| Model | Prompt tokens | `new-srv-dense` vs `base-cli` | Null arm | Criterion | +|---|---:|---:|---:|---| +| Qwen3-1.7B 4-bit | 256 | **+0.57% (-0.25%..+1.54%)** | +0.04% (-0.41%..+0.76%) | Pass; ranges overlap the null arm | +| Qwen3-1.7B 4-bit | 8192 | **+0.32% (+0.04%..+0.63%)** | +0.22% (-0.13%..+0.66%) | Pass; ranges overlap the null arm | +| Llama-3.2-1B 4-bit | 256 | **+0.48% (+0.19%..+1.41%)** | +0.07% (-12.38%..+0.54%) | Pass; ranges overlap the null arm | +| Llama-3.2-1B 4-bit | 8192 | **-0.16% (-1.15%..+0.05%)** | -0.17% (-0.29%..+0.14%) | Pass; ranges overlap the null arm | + +The issue criterion is a median paired delta of at least -1.0% in every cell, and all four cells pass. Every candidate range overlaps its null-arm range, so the result establishes the no-regression threshold rather than a speedup. The Llama 256 null arm includes -1.01% in round 2 and -12.38% in round 3. The cause of that large round-3 excursion is unknown; the round is preserved in the raw data and summary without exclusion or rerun. + +## Correctness and causality + +- Four dense external-KV cycle-Llama scheduler tests pass. They cover length limits 0 through 4, a live B=1 lookahead, unchanged B=2 behavior, a seeded stochastic pending draw, and EOS at the length boundary. With `max_tokens=3`, B=1 submits two decode forwards and B=2 retains four. +- A controlled mutation replaces the terminal-budget guard with `false`. The dedicated live-lookahead test then fails with actual forward count 4 versus expected 2 and cargo exit 101. The production source was restored after the run. The earlier interrupted mutation build with exit 143 is excluded. +- A separate model-owned Muse fixture compares B=1 with B=2 generated IDs, `FinishReason`, stream text, final `CachePool.current_offset`, and model-owned offsets. It documents that Muse is ineligible for decode lookahead and therefore does not serve as the causal forward-count fixture. +- The restored full CUDA suite passes: the root crate reports 8,930 passed and 165 ignored, `mlxcel-core` reports 2,072 passed and two ignored, and all integration binaries report zero failures. +- The real `mlxcel run` output is byte-identical before and after the change. Both extracted generated texts have SHA-256 `ecbb6c3137fa73714f6fe6df1dd6414b14c6af75796efe19662a3aaab50eaea6`. +- Full deterministic Llama engine parity reports 13 identical pairs, zero divergent pairs, and one inapplicable seeded run/server pair. +- Deterministic Qwen parity without prompt-cache cases reports nine identical pairs, zero divergent pairs, and one inapplicable pair. + +The full Qwen command does not meet its all-pairs criterion because its prompt-cache miss/hit pair diverges at token 58 for greedy sampling (`374` versus `594`) and token 61 for seeded sampling (`576` versus `362`). A forced-synchronous rerun reproduces the same positions and token IDs while the new lookahead guard is unreachable. The no-cache Qwen comparisons targeted by this change are identical. Prompt-cache correctness is outside #2227's declared scope, so the result is recorded rather than attributed to this optimization. + +The after-change real-run capture occurred while the source checkout temporarily contained the controlled guard mutation. The release `mlxcel` binary was not rebuilt during that mutation: its recorded SHA-256 is `b9b68fef6d85f8d733afbbefa00674e4332b424a56f626cde5db7c9c70e58501`, and its independently archived source is `7c8830cd`. The checkout status and binary-source identity are both preserved in provenance; the mutation was then restored and the test binary rebuilt before acceptance. + +## Reproduce and raw data + +The data directory contains the profile and acceptance drivers, parser, temporary instrumentation patch, environment/provenance records, raw logs and JSONL, correctness logs, source patches, Nsight text exports, and a SHA-256 manifest. Repository policy excludes generated binary profiling captures. The original CLI capture was 3,077,212 bytes with SHA-256 `646508acb7a4193870b5bbf1d93b090e6abc6667cda9da1783239ae63b176719`; the original server capture was 3,147,242 bytes with SHA-256 `19efc62eaf08bcc9b25f3c79c1be9ccb43220f4d84ef1b0091bb5b04e38884ab`. Both remain in the run host's `/tmp/mlxcel-auto-plan/2227-profile/` scratch directory, outside git. The committed `*-nsys-stats.txt`, Nsight logs, plain logs, instrumentation patch, and profile analysis preserve the derived evidence used here. Run `acceptance/run.sh` under `gpu-lock` on a quiet host; it refuses an unexpected source/binary pairing and records both release-binary source and checkout identity. diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/.gitattributes b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/.gitattributes new file mode 100644 index 000000000..f2aae74aa --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/.gitattributes @@ -0,0 +1,15 @@ +profile/*.log binary +profile/*.txt binary +profile/*.patch binary +profile/*.nsys-rep binary +acceptance/*.jsonl binary +acceptance/*.log binary +acceptance/*.txt binary +acceptance/*.patch binary +acceptance/*.diff binary +correctness/*.log binary +correctness/*.patch binary +correctness/*/*.txt binary +correctness/*/*.patch binary +validation/*.log binary +validation/*.txt binary diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/SHA256SUMS b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/SHA256SUMS new file mode 100644 index 000000000..3993ac05a --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/SHA256SUMS @@ -0,0 +1,69 @@ +4625c0866bdebc58d315fd6e37de1d24e9cab06392f33634563c9342026636eb ./.gitattributes +e7aeae889e25fafde9d85be4ab7cad02167df3542e5e622d25212be80bf441c6 ./acceptance/analysis.txt +0bf674007147580dd4cceff94d71e7dda61c7a4531c91ae5242b99de523e2fb8 ./acceptance/analyze.py +0ea8b10cdf0459e0f4cf4ed55e3dc1bf94ea6e2782e126f797297e9183987725 ./acceptance/binary-source-7c8830cd.patch +3414282715246726839630cd94febedded3adb3606695a9cc9825d39a3b65a79 ./acceptance/binary-source-provenance.txt +800dc13872105d7b350cbdcc1bee5b85f111dbb790b9e51227457a9909992cbc ./acceptance/driver.log +2db974c1d0dbab0d0528fa6880664c766020ef542365e2c98a058949e54626e6 ./acceptance/environment.txt +0dd8feec893dfbad5e0fd724f7d2feeae2b87f8c49a6183be39943652b69b3f3 ./acceptance/pick.sh +67ef72805c698bc2c81eac2d9dfefe286232f7367e1993c715624dac8ab80836 ./acceptance/post-build-test-only.diff +800dc13872105d7b350cbdcc1bee5b85f111dbb790b9e51227457a9909992cbc ./acceptance/run-status.txt +eacccc58c72889d57904a7993ad7c9ba12e9c531ddad41652f01572ab061d98f ./acceptance/run.sh +efc6ee79611e7642f0ea48af0fcf036b11d0bbea438b0fa5a37506890f6f64e3 ./acceptance/single-llama-3.2-1b-instruct-4bit.jsonl +62a2c91be75de76041ca89c1432c4d73652154bcb2ccc069a09f71bb2da47bf7 ./acceptance/single-llama-3.2-1b-instruct-4bit.log +9aaf7efc076df74800b3f0c8416960aef883f728fb1d98fe9d446f0008755390 ./acceptance/single-qwen3-1.7b-4bit.jsonl +24bd9f2dc7d510f23aba0b93d500e17f78892806f7b3d019f494e648e1bd6757 ./acceptance/single-qwen3-1.7b-4bit.log +ef3d8e83adbff43e283d2d1c747452d867a70f42b094c6d165623f221e5d6086 ./correctness/after-valid/command.txt +b4c8a5455e146a41509014f93f1cf5dc73dd6fa39d66ec30f368c148c23179a2 ./correctness/after-valid/comparison.txt +ecbb6c3137fa73714f6fe6df1dd6414b14c6af75796efe19662a3aaab50eaea6 ./correctness/after-valid/generated.txt +3c54d7c57f117bd2d8b2d187a7b102ca7810a002431041cf8d2da18dc0b4a7e6 ./correctness/after-valid/output-sha256.txt +18f21dc71a17d5c442b8f748592749e8c3a558935ca281631bb77be1ab117ed1 ./correctness/after-valid/prompt.txt +81f5ee52611fe6a8b6d9784f88621dce5975706e90282c826ae93aaccf6aacd3 ./correctness/after-valid/provenance.txt +e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ./correctness/after-valid/stderr.txt +5fb94a075297d360c33873139eb28acbeb3556e67fb1030b6221d6641d822822 ./correctness/after-valid/stdout.txt +ef3d8e83adbff43e283d2d1c747452d867a70f42b094c6d165623f221e5d6086 ./correctness/before-valid/command.txt +ecbb6c3137fa73714f6fe6df1dd6414b14c6af75796efe19662a3aaab50eaea6 ./correctness/before-valid/generated.txt +3d1f21e8ecc80727bc225442c051e5f9cff4af4534eb7728e52c9c1fe35131f1 ./correctness/before-valid/output-sha256.txt +306b2664d8b69186cc896ec83c1f6323e534372fc1148fd75fc4df9e5e2fe0b6 ./correctness/before-valid/profile-instrumentation.patch +18f21dc71a17d5c442b8f748592749e8c3a558935ca281631bb77be1ab117ed1 ./correctness/before-valid/prompt.txt +2a5a9ea5289c91266785a0f6fbb7269e4d6d2ef5cc41e4eab90b391a754d1ad7 ./correctness/before-valid/provenance.txt +e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ./correctness/before-valid/stderr.txt +34599797d5d8a5dd2d17ba0b8327faf51705def13a04b1c11d2dffeba4c93dac ./correctness/before-valid/stdout.txt +229e206d9df229704fffb316c9be0aef7da348696fff5b80a52f736cf1e26dd1 ./correctness/capture-run-after.sh +e1160ec2176b763abcc9e9619cfddb0ce4dc8865ffca3d3e0eb480b4e0e2a6fc ./correctness/capture-run-before.sh +8966184001b4fd42f7d9e21fa5ac3b7836424e8db4f5ede1864a0758f982ba2a ./correctness/causal-tests.log +fcae8b4cb063c6a76cdb7468633853ddd5ef2f4f2e948fe75ecc1638eaee3cec ./correctness/extract-run-text.py +afa7ea2664d300c54da7a630dffd2446008aebca5f35e877f645f862146d8825 ./correctness/guard-mutation-workspace.log +f30b0dbd233b75f1685f2ee3e1684bd9b88db16ce9dd0873d19ede922ef91f79 ./correctness/llama-parity.log +7d1cb0ed6e451bdbccc9b0f59caf5f92e4280bde9afa7bc5a32093651f8e0aba ./correctness/mutate-terminal-guard.patch +d0d25f330a1a503b4977d7b84c012bfcfa1b42f1e0330498c6dde0a899e8c5ad ./correctness/qwen-parity.log +4ab7669077cd69ee01b2086305f8b38d11d48a04e5a4185a2c6edee9789a410c ./correctness/qwen-scoped-parity.log +46588e0074014a64cec57d3cb6a2bd478b34db08428fae1d665bedfce367e76a ./correctness/qwen-sync-parity.log +0e84dcd5a78d97d67a6f041dc4fd1053816dcfd0566ed5c4b4e6e95a5dc31185 ./correctness/run-guard-mutation-workspace.sh +7eccd23136832d2c55c8c16f5c2ce20cda4acb81bcf43d5ad2c4bef0ffca397b ./profile/cli-nsys-stats.txt +f5dc6d4d11252af9fb3ff6020ab440ef41b89cf8c93aecb2bf68ce6aff7276fd ./profile/cli-nsys.log +c75e2fc2e82edbb286c67720fc9469680b8a6b5717051a09808c50da5374d340 ./profile/cli-plain.log +9036a5dd5c79c6c8a18aad8fc14d497cd30d61d84f1f794f8ab0ba48ab09c9cc ./profile/environment.txt +053427628679d5a59a16aa088fb325d653fb793d11c8b048d627888afb0deac7 ./profile/hostgate.log +306b2664d8b69186cc896ec83c1f6323e534372fc1148fd75fc4df9e5e2fe0b6 ./profile/instrumentation.patch +f36f9d38083f07c40002f86a101565dd4cb268f5ec9ae1fd94a1bb9f3b86bb79 ./profile/parse-profile.py +678964d302630e8bf8e703811e986f6b0a21ae85db83af1dfa626d8906ea19b5 ./profile/profile-analysis.md +83c176e5c61113460c668a52c0c33048e437e99542270876033f4cf7d5a4ff97 ./profile/profile-build.log +667212381dbdff0b403256e2dfc538895bb299f86e1eb9249f81a6ccbd686b10 ./profile/profile-phase.sh +9c3cab236f478d46524c6e990a566167be24694d53fb17651d240172b9e5b8f1 ./profile/run-profile.sh +a9e49debc092aead3b64f5674062bdfbb2b087758a0d9772c768a69280ba1728 ./profile/server-host-breakdown.txt +c2439b8e2c180c71066f7877852da37f247bc9ed655cac3e84b59d9f4b2c7ed4 ./profile/server-nsys-stats.txt +c728ecb0e2db2cf53092dbba55f16223732e4d4a3bf0b00eac6fef4833b6f716 ./profile/server-nsys.log +0c62350ffd9eb52f29a480e3936d3865489376c1818cf672d119aa1e2f55961f ./profile/server-plain.log +2c083db1058d2864fb95117c7ae9bd9a2bbcd1769034b0f016ee7484c837f91c ./validation/base-release-build.log +50a8fb8a4c7f02aa6b27c2f7d9a2e859e6a685af114a67d5e07325457317fe81 ./validation/causal-test-build.log +37a40f08d8548dba289b9b0bb35bcf63b359f6d37ee86044ebc6b6da080b9ec1 ./validation/final-build-phase.txt +4f7a884037f53fdce80a92ca25f78c400bf7cdbae131ab511c113536fe920893 ./validation/final-build-source.txt +7cde2b9ae17c38ce0bc0b32f9d03fba8b40945d4a965e2f3b7191f7d9c67852e ./validation/final-clippy.log +2a849bb4d88a4989b5b06b3be698626b11edefb00d1675b9b7fd1e088cb8d2f6 ./validation/final-contracts.log +e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ./validation/final-fmt.log +ec6ef3678573296c74f8aeabebdff1669d41c9a0e8ba485cd597ce593a2d3ba7 ./validation/final-release.log +cc739112370db08adcb1eea4d95671c360f3200d9f80cf100ff181113e44e9c4 ./validation/final-test-build.log +346050f09417a60457834ccc885c6a4f106924aa02131df544d1e7bec4dbd0f7 ./validation/full-cuda.log +02e3d066e8d23c9bdb1c29dd21109e166caa6ba4e85a54df4178731e6dd154ba ./validation/restored-build.log +2045d6b756722459d7f9ea3420579250eba3fde350b0b398f67ac2b63ad95619 ./validation/root-final-build.sh diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/analysis.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/analysis.txt new file mode 100644 index 000000000..e0fc6cfef --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/analysis.txt @@ -0,0 +1,16 @@ +| Model | Prompt | new-srv-dense vs base-cli | Null arm | Threshold | Noise label | +|---|---:|---:|---:|---|---| +| qwen3-1.7b-4bit | 256 | +0.57% (-0.25%..+1.54%) | +0.04% (-0.41%..+0.76%) | PASS | unresolved (ranges overlap) | + + +| qwen3-1.7b-4bit | 8192 | +0.32% (+0.04%..+0.63%) | +0.22% (-0.13%..+0.66%) | PASS | unresolved (ranges overlap) | + + +| llama-3.2-1b-instruct-4bit | 256 | +0.48% (+0.19%..+1.41%) | +0.07% (-12.38%..+0.54%) | PASS | unresolved (ranges overlap) | + + +| llama-3.2-1b-instruct-4bit | 8192 | -0.16% (-1.15%..+0.05%) | -0.17% (-0.29%..+0.14%) | PASS | unresolved (ranges overlap) | + + + +Acceptance: PASS (4/4 cells >= -1.00%) diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/analyze.py b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/analyze.py new file mode 100644 index 000000000..9b75a206e --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/analyze.py @@ -0,0 +1,328 @@ +#!/usr/bin/env python3 +"""Validate and summarize issue #2227's paired acceptance records. + +Exit codes: + 0: every selected model is complete and all threshold cells pass + 1: every selected model is complete, but at least one cell fails + 2: an input violates the measurement protocol + 3: an input is absent or contains a valid but incomplete matrix +""" + +from __future__ import annotations + +import argparse +import json +import math +import statistics +import sys +from dataclasses import dataclass +from pathlib import Path +from typing import Any + + +ROOT = Path(__file__).resolve().parent +PROMPTS = (256, 8192) +ROUNDS = tuple(range(5)) +MAX_TOKENS = 128 +ARMS = ("base-cli", "base-cli-null", "new-srv-dense") +EXPECTED_PATH = { + "base-cli": "cli", + "base-cli-null": "cli", + "new-srv-dense": "server", +} +HEADER_ARMS = { + "base-cli": ["--which", "base", "--path", "cli"], + "new-srv-dense": [ + "--which", + "new", + "--path", + "server", + "--decode-storage", + "dense", + ], +} +SPECS = { + "qwen3-1.7b-4bit": ROOT / "single-qwen3-1.7b-4bit.jsonl", + "llama-3.2-1b-instruct-4bit": ROOT + / "single-llama-3.2-1b-instruct-4bit.jsonl", +} + + +class InvalidInput(Exception): + """The input exists but violates the acceptance protocol.""" + + +@dataclass(frozen=True) +class PendingInput: + model: str + path: Path + detail: str + + +@dataclass(frozen=True) +class CompleteInput: + model: str + path: Path + records: dict[tuple[str, int, int, str], dict[str, Any]] + + +@dataclass(frozen=True) +class Cell: + model: str + prompt: int + candidate: tuple[float, ...] + null: tuple[float, ...] + + @property + def candidate_median(self) -> float: + return statistics.median(self.candidate) + + @property + def null_median(self) -> float: + return statistics.median(self.null) + + @property + def passes(self) -> bool: + return self.candidate_median >= -1.0 + + @property + def ranges_overlap(self) -> bool: + return max(min(self.candidate), min(self.null)) <= min( + max(self.candidate), max(self.null) + ) + + +def finite_number(value: Any, *, name: str, positive: bool = True) -> float: + if isinstance(value, bool) or not isinstance(value, (int, float)): + raise InvalidInput(f"{name} is not numeric: {value!r}") + result = float(value) + if not math.isfinite(result): + raise InvalidInput(f"{name} is not finite: {value!r}") + if positive and result <= 0: + raise InvalidInput(f"{name} is not positive: {value!r}") + if not positive and result < 0: + raise InvalidInput(f"{name} is negative: {value!r}") + return result + + +def read_objects(path: Path, model: str) -> list[dict[str, Any]] | PendingInput: + if not path.exists(): + return PendingInput(model, path, "file does not exist yet") + text = path.read_text(encoding="utf-8") + lines = [(number, line) for number, line in enumerate(text.splitlines(), 1) if line] + if not lines: + return PendingInput(model, path, "file is empty") + + objects: list[dict[str, Any]] = [] + for index, (number, line) in enumerate(lines): + try: + obj = json.loads(line) + except json.JSONDecodeError as error: + if index == len(lines) - 1: + return PendingInput(model, path, f"last line is incomplete: {error.msg}") + raise InvalidInput(f"{path}:{number}: invalid JSON: {error.msg}") from error + if not isinstance(obj, dict): + raise InvalidInput(f"{path}:{number}: expected a JSON object") + objects.append(obj) + return objects + + +def validate_header(header: dict[str, Any], model: str, path: Path) -> None: + if header.get("kind") != "header": + raise InvalidInput(f"{path}: first record is not the header") + if Path(str(header.get("model", ""))).name != model: + raise InvalidInput( + f"{path}: header model {header.get('model')!r} does not match {model!r}" + ) + if header.get("arms") != HEADER_ARMS: + raise InvalidInput(f"{path}: header arms differ from the required CLI/server arms") + if header.get("prompt_tokens") != list(PROMPTS): + raise InvalidInput(f"{path}: prompt lengths are not {list(PROMPTS)!r}") + if header.get("max_tokens") != MAX_TOKENS: + raise InvalidInput(f"{path}: max_tokens is not {MAX_TOKENS}") + if header.get("rounds") != len(ROUNDS): + raise InvalidInput(f"{path}: rounds is not {len(ROUNDS)}") + if header.get("sdpa_deterministic") is not None: + raise InvalidInput(f"{path}: performance run forced deterministic SDPA") + if Path(str(header.get("bin", ""))).name != "pick.sh": + raise InvalidInput(f"{path}: header does not use the recorded pick.sh dispatcher") + if not isinstance(header.get("host"), str) or not header["host"]: + raise InvalidInput(f"{path}: missing host identity") + finite_number(header.get("time"), name=f"{path}: header time") + + +def validate_row(row: dict[str, Any], model: str, path: Path, number: int) -> None: + prefix = f"{path}: data row {number}" + arm = row.get("arm") + if arm not in ARMS: + raise InvalidInput(f"{prefix}: unexpected arm {arm!r}") + if row.get("label") != arm: + raise InvalidInput(f"{prefix}: label does not equal arm") + if row.get("path") != EXPECTED_PATH[arm]: + raise InvalidInput( + f"{prefix}: {arm} path is {row.get('path')!r}, expected {EXPECTED_PATH[arm]!r}" + ) + if row.get("model") != model: + raise InvalidInput(f"{prefix}: model is {row.get('model')!r}, expected {model!r}") + if row.get("prompt_target_len") not in PROMPTS: + raise InvalidInput(f"{prefix}: unexpected prompt_target_len") + if row.get("prompt_tokens") != row["prompt_target_len"]: + raise InvalidInput(f"{prefix}: generated prompt length differs from target") + if row.get("round") not in ROUNDS: + raise InvalidInput(f"{prefix}: round is outside {ROUNDS!r}") + if row.get("max_tokens") != MAX_TOKENS: + raise InvalidInput(f"{prefix}: max_tokens is not {MAX_TOKENS}") + if row.get("generated_tokens") != MAX_TOKENS: + raise InvalidInput(f"{prefix}: generated_tokens is not {MAX_TOKENS}") + if row.get("decode_storage") != "dense": + raise InvalidInput(f"{prefix}: decode_storage is not dense") + if row.get("prefill_chunk") != 2048: + raise InvalidInput(f"{prefix}: prefill_chunk is not the default 2048") + if row.get("ci_job_running") is not False: + raise InvalidInput(f"{prefix}: host gate recorded a running CI job") + + for key in ("ttft_ms", "prefill_tok_s", "decode_ms", "decode_tok_s", "started"): + finite_number(row.get(key), name=f"{prefix}: {key}") + finite_number(row.get("gate_wait_s"), name=f"{prefix}: gate_wait_s", positive=False) + + +def load(path: Path, model: str) -> CompleteInput | PendingInput: + parsed = read_objects(path, model) + if isinstance(parsed, PendingInput): + return parsed + if not parsed: + return PendingInput(model, path, "file has no records") + + validate_header(parsed[0], model, path) + records: dict[tuple[str, int, int, str], dict[str, Any]] = {} + for number, row in enumerate(parsed[1:], 2): + if row.get("kind") == "header": + raise InvalidInput(f"{path}:{number}: duplicate header") + validate_row(row, model, path, number) + key = (model, row["prompt_target_len"], row["round"], row["arm"]) + if key in records: + raise InvalidInput(f"{path}:{number}: duplicate record for {key!r}") + records[key] = row + + expected = { + (model, prompt, round_number, arm) + for prompt in PROMPTS + for round_number in ROUNDS + for arm in ARMS + } + present = set(records) + extra = present - expected + if extra: + raise InvalidInput(f"{path}: unexpected matrix keys: {sorted(extra)!r}") + missing = expected - present + if missing: + return PendingInput( + model, + path, + f"valid partial matrix: {len(present)}/{len(expected)} rows; " + f"missing {len(missing)}", + ) + if len(parsed) != 1 + len(expected): + raise InvalidInput(f"{path}: expected exactly one header and {len(expected)} rows") + return CompleteInput(model, path, records) + + +def paired_delta(value: float, reference: float) -> float: + return 100.0 * (value / reference - 1.0) + + +def cells(loaded: CompleteInput) -> list[Cell]: + result: list[Cell] = [] + for prompt in PROMPTS: + candidate: list[float] = [] + null: list[float] = [] + for round_number in ROUNDS: + def rate(arm: str) -> float: + row = loaded.records[(loaded.model, prompt, round_number, arm)] + return float(row["decode_tok_s"]) + + baseline = rate("base-cli") + candidate.append(paired_delta(rate("new-srv-dense"), baseline)) + null.append(paired_delta(rate("base-cli-null"), baseline)) + result.append(Cell(loaded.model, prompt, tuple(candidate), tuple(null))) + return result + + +def percent(value: float) -> str: + return f"{value:+.2f}%" + + +def interval(values: tuple[float, ...]) -> str: + return f"{percent(min(values))}..{percent(max(values))}" + + +def print_summary(complete: list[CompleteInput], pending: list[PendingInput]) -> bool: + all_cells = [cell for loaded in complete for cell in cells(loaded)] + print("| Model | Prompt | new-srv-dense vs base-cli | Null arm | Threshold | Noise label |") + print("|---|---:|---:|---:|---|---|") + for cell in all_cells: + threshold = "PASS" if cell.passes else "FAIL" + noise = "unresolved (ranges overlap)" if cell.ranges_overlap else "separated" + candidate = f"{percent(cell.candidate_median)} ({interval(cell.candidate)})" + null = f"{percent(cell.null_median)} ({interval(cell.null)})" + print( + f"| {cell.model} | {cell.prompt} | {candidate} | {null} | " + f"{threshold} | {noise} |" + ) + rounds = ", ".join(percent(value) for value in cell.candidate) + null_rounds = ", ".join(percent(value) for value in cell.null) + print(f"") + print(f"") + + if pending: + print("\nPENDING: the acceptance matrix is incomplete.") + for item in pending: + print(f"- {item.model}: {item.detail} ({item.path})") + elif len(all_cells) == 4: + accepted = len(all_cells) == 4 and all(cell.passes for cell in all_cells) + verdict = "PASS" if accepted else "FAIL" + print(f"\nAcceptance: {verdict} ({sum(cell.passes for cell in all_cells)}/4 cells >= -1.00%)") + else: + verdict = "PASS" if all(cell.passes for cell in all_cells) else "FAIL" + print( + f"\nSelected subset: {verdict} " + f"({sum(cell.passes for cell in all_cells)}/{len(all_cells)} cells >= -1.00%). " + "Full four-cell acceptance was not evaluated." + ) + return bool(all_cells) and all(cell.passes for cell in all_cells) + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser() + parser.add_argument( + "--only", + choices=tuple(SPECS), + help="analyze one completed model while the other measurement is pending", + ) + return parser.parse_args() + + +def main() -> int: + args = parse_args() + selected = {args.only: SPECS[args.only]} if args.only else SPECS + complete: list[CompleteInput] = [] + pending: list[PendingInput] = [] + try: + for model, path in selected.items(): + result = load(path, model) + if isinstance(result, PendingInput): + pending.append(result) + else: + complete.append(result) + except (InvalidInput, OSError) as error: + print(f"INVALID: {error}", file=sys.stderr) + return 2 + + all_pass = print_summary(complete, pending) + if pending: + return 3 + return 0 if all_pass else 1 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/binary-source-7c8830cd.patch b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/binary-source-7c8830cd.patch new file mode 100644 index 000000000..75bbacbec --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/binary-source-7c8830cd.patch @@ -0,0 +1,305 @@ +From 7c8830cd5aa01198e6ff93b661f90c048ccaeb1d Mon Sep 17 00:00:00 2001 +From: Jeongkyu Shin +Date: Sun, 11 Oct 2026 18:15:29 +0900 +Subject: [PATCH] fix(perf): avoid replaying terminal B1 decode + +--- + src/server/batch/scheduler/config.rs | 2 + + src/server/batch/scheduler/decode_tick.rs | 65 ++++++++-- + src/server/batch/scheduler/mod.rs | 5 + + .../scheduler_muse_glimmer_parallel_tests.rs | 122 ++++++++++++++++++ + 4 files changed, 182 insertions(+), 12 deletions(-) + +diff --git a/src/server/batch/scheduler/config.rs b/src/server/batch/scheduler/config.rs +index 4a9e4fa5..e772cccf 100644 +--- a/src/server/batch/scheduler/config.rs ++++ b/src/server/batch/scheduler/config.rs +@@ -193,6 +193,8 @@ impl BatchScheduler { + // here (the server worker is long-lived, so a per-tick getenv would + // be pure overhead). + lookahead_force_sync: mlxcel_core::engine::force_sync_requested(), ++ #[cfg(test)] ++ decode_forward_calls: 0, + } + } + +diff --git a/src/server/batch/scheduler/decode_tick.rs b/src/server/batch/scheduler/decode_tick.rs +index 01e4222b..82e45452 100644 +--- a/src/server/batch/scheduler/decode_tick.rs ++++ b/src/server/batch/scheduler/decode_tick.rs +@@ -549,6 +549,10 @@ impl BatchScheduler { + // appended yet, so the caller just decodes synchronously. + let biases = biases?; + let batch = StepBatch { seq_ids, input }; ++ #[cfg(test)] ++ { ++ self.decode_forward_calls += 1; ++ } + match self.engine.submit(&batch, params, &biases) { + Ok(tokens) => { + // The schedule itself succeeded; the collect half evaluates +@@ -587,14 +591,15 @@ impl BatchScheduler { + /// + /// 1. FIRST build and `async_eval` step n+1 from `la.tokens` fed back + /// device-side (no host knowledge needed). The GPU starts the next +- /// forward immediately. ++ /// forward immediately, except when a B=1 row's pending token is known ++ /// to exhaust its length budget. + /// 2. THEN read step n's tokens to host (this blocks on the PREVIOUS tick's + /// prime forward, which by now has finished, while step n+1 runs on the + /// GPU) and run the finish pre-check. +- /// 3. If a row finishes (EOS / length / cancel) or the shape is off, unwind +- /// BOTH speculative appends (step n and the just-issued step n+1) and +- /// re-run the tick synchronously, so completion / donation flows through +- /// the untouched sync path from a clean cache state. ++ /// 3. Commit a known B=1 length token directly. For any other finish (EOS, ++ /// cancel) or a bad shape, unwind the speculative appends and re-run the ++ /// tick synchronously, so completion / donation flows through the ++ /// untouched sync path from a clean cache state. + /// 4. Otherwise commit step n and keep the step n+1 prebuilt step. + pub(super) fn pipelined_steady_decode( + &mut self, +@@ -602,13 +607,23 @@ impl BatchScheduler { + seq_ids: &[SequenceId], + params: &FusedSampleParams, + ) { +- // Step 1: speculatively build + schedule step n+1 FIRST. Feed la.tokens +- // ([B]) back as the next [B, 1] input device-side (reshape + int32 cast +- // to match the synchronous from_slice_i32 dtype), keeping the GPU busy +- // through the host read below. This appends a second speculative KV +- // position per sequence (the overshoot the issue accepts). +- let next_input = mlxcel_core::engine::lookahead_feedback_input(&la.tokens); +- let next = self.prime_lookahead_with_input(seq_ids, &next_input, params); ++ // Step 1: speculatively build + schedule step n+1 FIRST, except when a ++ // B=1 row's already-pending token is certain to spend its length ++ // budget. DirectEngine applies the same check before its submit. The ++ // old scheduler submitted n+1, discarded both n and n+1, then replayed ++ // n synchronously on that terminal tick: two whole forwards whose ++ // result could not affect the response. ++ let pending_spends_budget = self.b1_pending_spends_budget(seq_ids); ++ let next = if pending_spends_budget { ++ None ++ } else { ++ // Feed la.tokens ([B]) back as the next [B, 1] input device-side ++ // (reshape + int32 cast to match the synchronous from_slice_i32 ++ // dtype), keeping the GPU busy through the host read below. This ++ // appends a second speculative KV position per sequence. ++ let next_input = mlxcel_core::engine::lookahead_feedback_input(&la.tokens); ++ self.prime_lookahead_with_input(seq_ids, &next_input, params) ++ }; + + // Step 2: read step n's tokens to host (the sync point) and finish-check. + let toks = match mlxcel_core::engine::try_tokens_to_host(&la.tokens) { +@@ -618,6 +633,17 @@ impl BatchScheduler { + Vec::new() + } + }; ++ ++ // The pending B=1 draw is the terminal length token. Commit it through ++ // the shared finish path exactly as DirectEngine does. A short/failed ++ // read still takes the guarded teardown and synchronous retry below. ++ if pending_spends_budget && toks.len() == 1 { ++ drop(la); ++ self.apply_fused_decode_tokens(seq_ids, &toks); ++ self.batch_observability.record_lookahead_step(); ++ return; ++ } ++ + let mut finishing = toks.len() != seq_ids.len(); + if !finishing { + for (i, &seq_id) in seq_ids.iter().enumerate() { +@@ -685,6 +711,17 @@ impl BatchScheduler { + self.batch_observability.record_lookahead_step(); + } + ++ /// Whether the one pending lookahead token must exhaust a B=1 row's ++ /// length budget. B>1 keeps its existing all-row teardown/replay path. ++ fn b1_pending_spends_budget(&self, seq_ids: &[SequenceId]) -> bool { ++ let [seq_id] = seq_ids else { ++ return false; ++ }; ++ self.active_batch ++ .get(*seq_id) ++ .is_some_and(|seq| seq.generated_tokens.len().saturating_add(1) >= seq.max_tokens) ++ } ++ + /// Batched decode: one engine step for all active sequences. + /// + /// # Null/empty-cache safety +@@ -778,6 +815,10 @@ impl BatchScheduler { + .into_iter() + .map(|seq| step_rows::step_row(seq, tokenizer, context, false)) + .collect(); ++ #[cfg(test)] ++ { ++ self.decode_forward_calls += 1; ++ } + self.engine.step(&batch, &mut rows) + }; + match stepped { +diff --git a/src/server/batch/scheduler/mod.rs b/src/server/batch/scheduler/mod.rs +index a1b6aa9c..d345558c 100644 +--- a/src/server/batch/scheduler/mod.rs ++++ b/src/server/batch/scheduler/mod.rs +@@ -737,6 +737,11 @@ pub struct BatchScheduler { + /// never engages the lookahead pipeline and every decode tick runs + /// synchronously, so the sync path stays available for A/B equivalence. + lookahead_force_sync: bool, ++ ++ /// Decode forwards submitted by this scheduler, for tests that pin the ++ /// B=1 terminal lookahead cost to one forward per post-prefill token. ++ #[cfg(test)] ++ pub(super) decode_forward_calls: usize, + } + + /// One prebuilt decode step held across ticks by the lookahead pipeline. +diff --git a/src/server/batch/scheduler_muse_glimmer_parallel_tests.rs b/src/server/batch/scheduler_muse_glimmer_parallel_tests.rs +index 44e9d6d6..ce6169a4 100644 +--- a/src/server/batch/scheduler_muse_glimmer_parallel_tests.rs ++++ b/src/server/batch/scheduler_muse_glimmer_parallel_tests.rs +@@ -38,6 +38,14 @@ struct RequestSummary { + finish_reason: String, + } + ++#[derive(Debug, PartialEq, Eq)] ++struct TerminalDecodeSummary { ++ generated_tokens: Vec, ++ finish_reason: FinishReason, ++ final_offsets: Vec<(bool, i32, i32)>, ++ stream: RequestSummary, ++} ++ + fn cases() -> (ImageCase, ImageCase) { + ( + ImageCase { +@@ -197,6 +205,79 @@ fn run_isolated(case: &ImageCase, collect_tokens: bool) -> RequestSummary { + } + } + ++fn run_b1_length_budget(max_tokens: usize) -> (RequestSummary, usize) { ++ let mut sched = muse::scheduler(1); ++ let rx = muse::enqueue( ++ &mut sched, ++ request_prompt(), ++ muse::image_bytes(2, 2, 31), ++ max_tokens, ++ ); ++ let seq_id = SequenceId::from_raw(0); ++ execute_prefill_tick(&mut sched); ++ while sched.active_batch.get(seq_id).is_some() { ++ execute_decode_tick(&mut sched, &[seq_id]); ++ sched.finalize_completed(); ++ } ++ let forwards = sched.decode_forward_calls; ++ (summarize(muse::collect_stream(&rx)), forwards) ++} ++ ++fn run_terminal_length_path(parallelism: usize) -> (TerminalDecodeSummary, usize) { ++ let max_tokens = 3; ++ let mut sched = muse::scheduler(parallelism); ++ let target_rx = muse::enqueue( ++ &mut sched, ++ request_prompt(), ++ muse::image_bytes(2, 2, 41), ++ max_tokens, ++ ); ++ let sibling_rx = (parallelism > 1).then(|| { ++ muse::enqueue( ++ &mut sched, ++ request_prompt(), ++ muse::image_bytes(2, 2, 73), ++ max_tokens, ++ ) ++ }); ++ let target_id = SequenceId::from_raw(0); ++ execute_prefill_tick(&mut sched); ++ ++ let mut terminal = None; ++ while sched.active_batch.get(target_id).is_some() { ++ let ids = sched.active_batch.sequence_ids(); ++ execute_decode_tick(&mut sched, &ids); ++ if let Some(seq) = sched.active_batch.get(target_id) ++ && let SequenceState::Finished(reason) = &seq.state ++ { ++ terminal = Some(( ++ seq.generated_tokens.clone(), ++ reason.clone(), ++ muse::muse_state_offsets(&sched, target_id) ++ .expect("finished target retains its state until finalization"), ++ )); ++ } ++ sched.finalize_completed(); ++ } ++ ++ let (generated_tokens, finish_reason, final_offsets) = ++ terminal.expect("target reached a terminal decode tick"); ++ let stream = summarize(muse::collect_stream(&target_rx)); ++ if let Some(rx) = sibling_rx { ++ let sibling = summarize(muse::collect_stream(&rx)); ++ assert_eq!(sibling, stream); ++ } ++ ( ++ TerminalDecodeSummary { ++ generated_tokens, ++ finish_reason, ++ final_offsets, ++ stream, ++ }, ++ sched.decode_forward_calls, ++ ) ++} ++ + fn assert_reuse_after_release(sched: &mut BatchScheduler) { + let image = muse::image_bytes(2, 2, 17); + let rx = muse::enqueue(sched, request_prompt(), image, 1); +@@ -315,6 +396,47 @@ fn muse_scheduler_two_image_requests_parallelism_two_match_isolated_runs() { + assert_eq!(wide_result.streamed, vec!["a", "a", "a"]); + } + ++#[test] ++fn b1_length_boundary_submits_one_decode_forward_per_post_prefill_token() { ++ // max_tokens 0 and 1 both finish on the first token sampled by prefill; ++ // 2 finishes on the synchronous bootstrap step; 3 and 4 reach the ++ // terminal lookahead branch. None may submit or replay a future token. ++ for (max_tokens, completion_tokens, decode_forwards) in ++ [(0, 1, 0), (1, 1, 0), (2, 2, 1), (3, 3, 2), (4, 4, 3)] ++ { ++ let (summary, forwards) = run_b1_length_budget(max_tokens); ++ assert_eq!( ++ summary.completion_tokens, completion_tokens, ++ "max_tokens={max_tokens}" ++ ); ++ assert_eq!(summary.finish_reason, "length", "max_tokens={max_tokens}"); ++ assert_eq!( ++ forwards, decode_forwards, ++ "max_tokens={max_tokens} submitted an avoidable decode forward" ++ ); ++ } ++} ++ ++#[test] ++fn b1_terminal_length_matches_the_unchanged_b2_path() { ++ let (b1, b1_forwards) = run_terminal_length_path(1); ++ let (b2, b2_forwards) = run_terminal_length_path(2); ++ ++ assert_eq!(b1, b2); ++ assert_eq!(b1.generated_tokens, vec![muse::GENERATED_TOKEN_ID; 3]); ++ assert_eq!(b1.finish_reason, FinishReason::Length); ++ assert_eq!(b1.final_offsets, vec![(true, 6, 6), (false, 6, 6)]); ++ assert_eq!(b1.stream.streamed, vec!["a", "a", "a"]); ++ assert_eq!( ++ b1_forwards, 2, ++ "B=1 should not submit or replay past length" ++ ); ++ assert_eq!( ++ b2_forwards, 4, ++ "B=2 keeps the existing terminal teardown and replay path" ++ ); ++} ++ + #[test] + fn muse_scheduler_streaming_and_result_only_collection_are_equivalent() { + let (small, _) = cases(); +-- +2.43.0 + diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/binary-source-provenance.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/binary-source-provenance.txt new file mode 100644 index 000000000..d4e9a9ff1 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/binary-source-provenance.txt @@ -0,0 +1,13 @@ +binary_source_head=7c8830cd5aa01198e6ff93b661f90c048ccaeb1d +binary_source_tree=aa976c7eaa17b1e39c6b984e7124e184e96d1800 +checkout_head=93e2f9abb3127eb64d414b9dddc4224cce3c703b +checkout_tree=7a3f9d3ea71fb23e749704c1348fc627ff6b4b9c +merge_base=73700aafa6a792f07830578c0c26137cea3a038b +name_status_begin +M src/server/batch/scheduler_muse_glimmer_parallel_tests.rs +M src/server/batch/scheduler_prompt_lookup_tests.rs +name_status_end +production_diff_begin +production_diff_end +0ea8b10cdf0459e0f4cf4ed55e3dc1bf94ea6e2782e126f797297e9183987725 /tmp/mlxcel-auto-plan/2227-acceptance/binary-source-7c8830cd.patch +67ef72805c698bc2c81eac2d9dfefe286232f7367e1993c715624dac8ab80836 /tmp/mlxcel-auto-plan/2227-acceptance/post-build-test-only.diff diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/driver.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/driver.log new file mode 100644 index 000000000..01b5571c4 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/driver.log @@ -0,0 +1,2 @@ +rc=0 model=qwen3-1.7b-4bit completed=2026-10-11T19:31:46+09:00 +rc=0 model=llama-3.2-1b-instruct-4bit completed=2026-10-11T19:46:40+09:00 diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/environment.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/environment.txt new file mode 100644 index 000000000..23c64c9bd --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/environment.txt @@ -0,0 +1,1114 @@ +2026-10-11T19:16:29+09:00 +spark-102 +Linux spark-102 7.0.0-1019-nvidia #19~24.04.2-Ubuntu SMP PREEMPT_DYNAMIC Sun Sep 6 18:35:11 UTC 2 aarch64 aarch64 aarch64 GNU/Linux +NVIDIA GB10, 580.178.04 +base_source_head=4c44e317dcbc5a66548e6aed1cd01cdf36f97499 +base_source_status_begin +base_source_status_end +2ff2386d06ece12f07e47152e6a4e66bf8be8f8afdef7f29e1efecb15a5305df /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-base-2227/target/release/mlxcel-bench-engine +base_binary_size=89328240 base_binary_mtime=2026-10-11 11:57:02.560723263 +0900 +new_binary_source_head=7c8830cd5aa01198e6ff93b661f90c048ccaeb1d +new_checkout_head=93e2f9abb3127eb64d414b9dddc4224cce3c703b +new_source_status_begin +new_source_status_end +post_build_diff_begin +M src/server/batch/scheduler_muse_glimmer_parallel_tests.rs +M src/server/batch/scheduler_prompt_lookup_tests.rs +post_build_diff_end +91a267f350838f7496f29b65c1b86c25b578a4faece60ffc0195d54a7e22cc6d /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/release/mlxcel-bench-engine +new_binary_size=90442512 new_binary_mtime=2026-10-11 18:21:40.646100917 +0900 +mlx_pin=81ba1c6a0e50a9268b931579c2d4f1158b9aab5a +MLXCEL_DEVICE= +MLXCEL_SDPA_DETERMINISTIC= +base_is_ancestor_of_binary_source=yes +source_diff_stat_begin + .github/workflows/ci.yml | 41 +- + CHANGELOG.md | 17 + + CONTRIBUTING.md | 4 +- + Makefile | 30 +- + README.md | 4 + + .../2196-rocm-jit-cache-event-pool-20261007.en.md | 156 ++ + .../2196-rocm-jit-cache-event-pool-20261007.ko.md | 156 ++ + ...1-shared-post-sample-finish-step-20261007.en.md | 79 + + ...1-shared-post-sample-finish-step-20261007.ko.md | 79 + + .../2202-rocm-rocblas-handle-lock-20261007.en.md | 145 + + .../2202-rocm-rocblas-handle-lock-20261007.ko.md | 145 + + .../2204-one-row-sampler-token-bias-20261007.en.md | 77 + + .../2204-one-row-sampler-token-bias-20261007.ko.md | 77 + + .../2205-one-prefill-plan-trim-hook-20261007.en.md | 91 + + .../2205-one-prefill-plan-trim-hook-20261007.ko.md | 91 + + ...208-rocm-hipblaslt-thread-safety-20261007.en.md | 184 ++ + ...208-rocm-hipblaslt-thread-safety-20261007.ko.md | 184 ++ + ...0-kv-attention-dispatch-in-cache-20261007.en.md | 60 + + ...0-kv-attention-dispatch-in-cache-20261007.ko.md | 60 + + .../2214-rocm-device-map-lock-20261007.en.md | 184 ++ + .../2214-rocm-device-map-lock-20261007.ko.md | 184 ++ + .../2217-engine-step-api-scheduler-20261008.en.md | 69 + + .../2217-engine-step-api-scheduler-20261008.ko.md | 69 + + .../2218-rocm-joint-rejection-cap-20261008.en.md | 159 ++ + .../2218-rocm-joint-rejection-cap-20261008.ko.md | 159 ++ + ...2220-rocm-scalar-pool-cache-line-20261007.en.md | 174 ++ + ...2220-rocm-scalar-pool-cache-line-20261007.ko.md | 174 ++ + ...224-cli-in-process-server-client-20261008.en.md | 63 + + ...224-cli-in-process-server-client-20261008.ko.md | 67 + + ...te-on-engine-retire-cxxgenerator-20261008.en.md | 70 + + ...te-on-engine-retire-cxxgenerator-20261008.ko.md | 70 + + ...ocm-mxfp4-warp-shared-gather-qmv-20261008.en.md | 189 ++ + ...ocm-mxfp4-warp-shared-gather-qmv-20261008.ko.md | 189 ++ + ...uant-lru-skip-above-wmma-ceiling-20261008.en.md | 156 ++ + ...uant-lru-skip-above-wmma-ceiling-20261008.ko.md | 156 ++ + .../2237-rocm-strided-copy-grid-20261008.en.md | 192 ++ + .../2237-rocm-strided-copy-grid-20261008.ko.md | 192 ++ + ...253-rocm-batched-decode-row-fold-20261009.en.md | 197 ++ + ...253-rocm-batched-decode-row-fold-20261009.ko.md | 197 ++ + ...56-pipeline-penalty-dry-requests-20261010.en.md | 70 + + ...56-pipeline-penalty-dry-requests-20261010.ko.md | 70 + + ...2-server-prompt-lookup-scheduler-20261011.en.md | 75 + + ...2-server-prompt-lookup-scheduler-20261011.ko.md | 75 + + .../2268-adaptive-prefill-chunks-20261011.en.md | 136 + + .../2268-adaptive-prefill-chunks-20261011.ko.md | 136 + + ...decode-readback-sampler-recovery-20261011.en.md | 95 + + ...decode-readback-sampler-recovery-20261011.ko.md | 95 + + ...2270-post-epic-paged-ssm-cleanup-20261011.en.md | 130 + + ...2270-post-epic-paged-ssm-cleanup-20261011.ko.md | 130 + + .../pr-2203-gemma4-batched-mtp-verify.en.md | 39 + + .../pr-2203-gemma4-batched-mtp-verify.ko.md | 39 + + .../pr-2207-qwen35-dflash-cuda-verify-rope.en.md | 39 + + .../pr-2207-qwen35-dflash-cuda-verify-rope.ko.md | 39 + + .../rocm_gfx1151_a18d3d76/METADATA.txt | 15 + + .../logit_traces/rocm_gfx1151_a18d3d76/README.md | 50 + + .../logit_traces/rocm_gfx1151_a18d3d76/RUNS.txt | 11 + + .../logit_traces/rocm_gfx1151_a18d3d76/SHA256SUMS | 22 + + .../granitemoehybrid_probe_2154.rs | 534 ++++ + ...76_granite-4.0-h-tiny_cpubf16_post2248_w1x1.tsv | 8 + + ...51_a18d3d76_granite-4.0-h-tiny_cpubf16_w1x1.tsv | 8 + + ...1151_a18d3d76_granite-4.0-h-tiny_default_w1.tsv | 135 + + ...a18d3d76_granite-4.0-h-tiny_default_w1x1024.tsv | 1031 +++++++ + ...51_a18d3d76_granite-4.0-h-tiny_default_w256.tsv | 519 ++++ + ...1151_a18d3d76_granite-4.0-h-tiny_default_w8.tsv | 647 +++++ + ...d3d76_granite-4.0-h-tiny_f32mix-all_w1x1024.tsv | 1025 +++++++ + ...3d76_granite-4.0-h-tiny_f32mix-attn_w1x1024.tsv | 1025 +++++++ + ...3d76_granite-4.0-h-tiny_f32mix-head_w1x1024.tsv | 1025 +++++++ + ...d76_granite-4.0-h-tiny_f32mix-mamba_w1x1024.tsv | 1025 +++++++ + ...d3d76_granite-4.0-h-tiny_f32mix-moe_w1x1024.tsv | 1025 +++++++ + ...3d76_granite-4.0-h-tiny_f32mix-norm_w1x1024.tsv | 1025 +++++++ + ...d76_granite-4.0-h-tiny_f32mix-resid_w1x1024.tsv | 1025 +++++++ + ...76_granite-4.0-h-tiny_f32mix-shared_w1x1024.tsv | 1025 +++++++ + ..._a18d3d76_granite-4.0-h-tiny_f32ref_w1x1024.tsv | 1025 +++++++ + ..._a18d3d76_granite-4.0-h-tiny_f32refcpu_w1x3.tsv | 4 + + ...a18d3d76_granite-4.0-h-tiny_ops_bf16_vs_f32.tsv | 19 + + ...1_a18d3d76_granite-4.0-h-tiny_ssmkernel0_w1.tsv | 135 + + ...A-Nemotron-3-Nano-30B-A3B-4bit_greedy_bench.log | 21 + + ...n-3-Nano-30B-A3B-4bit_greedy_decode_kernels.csv | 52 + + ...ron-3-Nano-30B-A3B-4bit_greedy_kernel_stats.csv | 66 + + ...tron-3-Nano-30B-A3B-4bit_greedy_plain_bench.log | 17 + + ...emotron-3-Nano-30B-A3B-4bit_greedy_summary.json | 263 ++ + .../gfx1151_6dbfe7d7_ssm-graph/ab_decode.txt | 12 + + .../gfx1151_6dbfe7d7_ssm-graph/ab_guard.log | 105 + + .../granite-4.0-h-tiny-4bit_greedy_bench.log | 21 + + ...anite-4.0-h-tiny-4bit_greedy_decode_kernels.csv | 55 + + ...granite-4.0-h-tiny-4bit_greedy_kernel_stats.csv | 82 + + .../granite-4.0-h-tiny-4bit_greedy_plain_bench.log | 17 + + .../granite-4.0-h-tiny-4bit_greedy_summary.json | 264 ++ + .../gfx1151_6dbfe7d7_ssm-graph/guard.log | 74 + + ...ement_Meta-Llama-3.1-8B-Instruct-4bit_chain.csv | 4 + + ...rement_Meta-Llama-3.1-8B-Instruct-4bit_kern.csv | 4 + + ...-measurement_Qwen2.5-7B-Instruct-4bit_chain.csv | 4 + + ...p-measurement_Qwen2.5-7B-Instruct-4bit_kern.csv | 4 + + ...1_2026-10-07_rejection-microbench-bf16-run1.csv | 16 + + ...1_2026-10-07_rejection-microbench-bf16-run2.csv | 16 + + ...1_2026-10-07_rejection-microbench-bf16-run3.csv | 16 + + ...fx1151_2026-10-07_rejection-microbench-run1.csv | 61 + + ...fx1151_2026-10-07_rejection-microbench-run2.csv | 61 + + ...fx1151_2026-10-07_rejection-microbench-run3.csv | 61 + + ...t-cap-after_Meta-Llama-3.1-8B-Instruct-4bit.csv | 4 + + ...-cap-before_Meta-Llama-3.1-8B-Instruct-4bit.csv | 4 + + docs/CONTINUOUS_BATCHING.md | 257 +- + docs/README.md | 2 +- + .../0005-mixed-prefill-decode-step-execution.md | 2 +- + docs/adr/0007-unified-batch-native-engine.md | 18 +- + .../adr/0008-kv-attention-dispatch-in-the-cache.md | 51 + + docs/adr/0009-engine-step-api.md | 53 + + docs/adr/README.md | 2 + + docs/architecture.md | 36 +- + .../adaptive-prefill-chunk-gb10-2026-10-11.md | 120 + + .../.gitattributes | 1 + + .../acceptance-summary.json | 50 + + .../admit-policy-r1.txt | 20 + + .../admit-policy-r2.txt | 20 + + .../admit-policy-r3.txt | 20 + + .../analyze.py | 46 + + .../environment.txt | 46 + + .../hostgate-admit-r1.txt | 0 + .../hostgate-admit-r2.txt | 0 + .../hostgate-admit-r3.txt | 0 + .../adaptive-prefill-chunk-gb10-2026-10-11/run.sh | 148 + + .../server-admit-policy-r1.log | 41 + + .../server-admit-policy-r2.log | 41 + + .../server-admit-policy-r3.log | 41 + + .../ttft-llama-3.2-1b-instruct-4bit.jsonl | 16 + + .../ttft-llama-3.2-1b-instruct-4bit.txt | 28 + + .../ttft-qwen3-1.7b-4bit.jsonl | 16 + + .../ttft-qwen3-1.7b-4bit.txt | 28 + + .../clamp-12b-b2/run.jsonl | 3 + + .../clamp-12b-b2/server.b2.r0-classic-close.log | 45 + + .../clamp-12b-b2/server.b2.r0-classic-open.log | 45 + + .../clamp-12b-b2/server.b2.r0-mtp.log | 61 + + .../graph-cache-31b/budget-b1.json | 109 + + .../graph-cache-31b/budget-b1.server.log | 164 ++ + .../graph-cache-31b/budget-b2.json | 109 + + .../graph-cache-31b/budget-b2.server.log | 145 + + .../harness/graph_cache_budget.py | 92 + + .../harness/mtp_batched_rounds.py | 294 ++ + .../harness/summarize.py | 43 + + .../rounds-31b-b2/driver.log | 10 + + .../rounds-31b-b2/run.jsonl | 9 + + .../rounds-31b-b2/server.b2.r0-classic-close.log | 46 + + .../rounds-31b-b2/server.b2.r0-classic-open.log | 46 + + .../rounds-31b-b2/server.b2.r0-mtp.log | 60 + + .../rounds-31b-b2/server.b2.r1-classic-close.log | 46 + + .../rounds-31b-b2/server.b2.r1-classic-open.log | 46 + + .../rounds-31b-b2/server.b2.r1-mtp.log | 60 + + .../rounds-31b-b2/server.b2.r2-classic-close.log | 46 + + .../rounds-31b-b2/server.b2.r2-classic-open.log | 46 + + .../rounds-31b-b2/server.b2.r2-mtp.log | 60 + + .../rounds-31b-b4/driver.log | 10 + + .../rounds-31b-b4/run.jsonl | 9 + + .../rounds-31b-b4/server.b4.r0-classic-close.log | 52 + + .../rounds-31b-b4/server.b4.r0-classic-open.log | 52 + + .../rounds-31b-b4/server.b4.r0-mtp.log | 66 + + .../rounds-31b-b4/server.b4.r1-classic-close.log | 52 + + .../rounds-31b-b4/server.b4.r1-classic-open.log | 52 + + .../rounds-31b-b4/server.b4.r1-mtp.log | 66 + + .../rounds-31b-b4/server.b4.r2-classic-close.log | 52 + + .../rounds-31b-b4/server.b4.r2-classic-open.log | 52 + + .../rounds-31b-b4/server.b4.r2-mtp.log | 66 + + .../shipped-31b-b2/driver.log | 4 + + .../shipped-31b-b2/run.jsonl | 3 + + .../shipped-31b-b2/server.b2.r0-classic-close.log | 46 + + .../shipped-31b-b2/server.b2.r0-classic-open.log | 46 + + .../shipped-31b-b2/server.b2.r0-mtp.log | 60 + + .../.gitattributes | 1 + + .../model-owned-storage-gb10-2026-10-11/README.md | 46 + + .../model-owned-storage-gb10-2026-10-11/SHA256SUMS | 134 + + .../analysis.txt | 17 + + .../model-owned-storage-gb10-2026-10-11/analyze.py | 601 ++++ + .../binary-source-provenance.json | 26 + + .../client-gemma3-p4096-r1-dense.txt | 30 + + .../client-gemma3-p4096-r1-paged-a.txt | 30 + + .../client-gemma3-p4096-r1-paged-b.txt | 30 + + .../client-gemma3-p4096-r2-dense.txt | 30 + + .../client-gemma3-p4096-r2-paged-a.txt | 30 + + .../client-gemma3-p4096-r2-paged-b.txt | 30 + + .../client-gemma3-p4096-r3-dense.txt | 30 + + .../client-gemma3-p4096-r3-paged-a.txt | 30 + + .../client-gemma3-p4096-r3-paged-b.txt | 30 + + .../client-gemma3-p4096-r4-dense.txt | 30 + + .../client-gemma3-p4096-r4-paged-a.txt | 30 + + .../client-gemma3-p4096-r4-paged-b.txt | 30 + + .../client-gemma3-p4096-r5-dense.txt | 30 + + .../client-gemma3-p4096-r5-paged-a.txt | 30 + + .../client-gemma3-p4096-r5-paged-b.txt | 30 + + .../client-gemma3-p512-r1-dense.txt | 30 + + .../client-gemma3-p512-r1-paged-a.txt | 30 + + .../client-gemma3-p512-r1-paged-b.txt | 30 + + .../client-gemma3-p512-r2-dense.txt | 30 + + .../client-gemma3-p512-r2-paged-a.txt | 30 + + .../client-gemma3-p512-r2-paged-b.txt | 30 + + .../client-gemma3-p512-r3-dense.txt | 30 + + .../client-gemma3-p512-r3-paged-a.txt | 30 + + .../client-gemma3-p512-r3-paged-b.txt | 30 + + .../client-gemma3-p512-r4-dense.txt | 30 + + .../client-gemma3-p512-r4-paged-a.txt | 30 + + .../client-gemma3-p512-r4-paged-b.txt | 30 + + .../client-gemma3-p512-r5-dense.txt | 30 + + .../client-gemma3-p512-r5-paged-a.txt | 30 + + .../client-gemma3-p512-r5-paged-b.txt | 30 + + .../client-llama4-p4096-r1-dense.txt | 30 + + .../client-llama4-p4096-r1-paged-a.txt | 30 + + .../client-llama4-p4096-r1-paged-b.txt | 30 + + .../client-llama4-p4096-r2-dense.txt | 30 + + .../client-llama4-p4096-r2-paged-a.txt | 30 + + .../client-llama4-p4096-r2-paged-b.txt | 30 + + .../client-llama4-p4096-r3-dense.txt | 30 + + .../client-llama4-p4096-r3-paged-a.txt | 30 + + .../client-llama4-p4096-r3-paged-b.txt | 30 + + .../client-llama4-p4096-r4-dense.txt | 30 + + .../client-llama4-p4096-r4-paged-a.txt | 30 + + .../client-llama4-p4096-r4-paged-b.txt | 30 + + .../client-llama4-p4096-r5-dense.txt | 30 + + .../client-llama4-p4096-r5-paged-a.txt | 30 + + .../client-llama4-p4096-r5-paged-b.txt | 30 + + .../client-llama4-p512-r1-dense.txt | 30 + + .../client-llama4-p512-r1-paged-a.txt | 30 + + .../client-llama4-p512-r1-paged-b.txt | 30 + + .../client-llama4-p512-r2-dense.txt | 30 + + .../client-llama4-p512-r2-paged-a.txt | 30 + + .../client-llama4-p512-r2-paged-b.txt | 30 + + .../client-llama4-p512-r3-dense.txt | 30 + + .../client-llama4-p512-r3-paged-a.txt | 30 + + .../client-llama4-p512-r3-paged-b.txt | 30 + + .../client-llama4-p512-r4-dense.txt | 30 + + .../client-llama4-p512-r4-paged-a.txt | 30 + + .../client-llama4-p512-r4-paged-b.txt | 30 + + .../client-llama4-p512-r5-dense.txt | 30 + + .../client-llama4-p512-r5-paged-a.txt | 30 + + .../client-llama4-p512-r5-paged-b.txt | 30 + + .../model-owned-storage-gb10-2026-10-11/complete | 0 + .../environment.txt | 20 + + .../model-owned-storage-gb10-2026-10-11/gate.py | 151 + + .../hostgate.jsonl | 61 + + .../release-build.log | 128 + + .../model-owned-storage-gb10-2026-10-11/run.log | 181 ++ + .../model-owned-storage-gb10-2026-10-11/run.sh | 164 ++ + .../schedule.tsv | 61 + + .../server-gemma3-p4096-r1-dense.log | 48 + + .../server-gemma3-p4096-r1-paged-a.log | 48 + + .../server-gemma3-p4096-r1-paged-b.log | 48 + + .../server-gemma3-p4096-r2-dense.log | 48 + + .../server-gemma3-p4096-r2-paged-a.log | 48 + + .../server-gemma3-p4096-r2-paged-b.log | 48 + + .../server-gemma3-p4096-r3-dense.log | 48 + + .../server-gemma3-p4096-r3-paged-a.log | 48 + + .../server-gemma3-p4096-r3-paged-b.log | 48 + + .../server-gemma3-p4096-r4-dense.log | 48 + + .../server-gemma3-p4096-r4-paged-a.log | 48 + + .../server-gemma3-p4096-r4-paged-b.log | 48 + + .../server-gemma3-p4096-r5-dense.log | 48 + + .../server-gemma3-p4096-r5-paged-a.log | 48 + + .../server-gemma3-p4096-r5-paged-b.log | 48 + + .../server-gemma3-p512-r1-dense.log | 48 + + .../server-gemma3-p512-r1-paged-a.log | 48 + + .../server-gemma3-p512-r1-paged-b.log | 48 + + .../server-gemma3-p512-r2-dense.log | 48 + + .../server-gemma3-p512-r2-paged-a.log | 48 + + .../server-gemma3-p512-r2-paged-b.log | 48 + + .../server-gemma3-p512-r3-dense.log | 48 + + .../server-gemma3-p512-r3-paged-a.log | 48 + + .../server-gemma3-p512-r3-paged-b.log | 48 + + .../server-gemma3-p512-r4-dense.log | 48 + + .../server-gemma3-p512-r4-paged-a.log | 48 + + .../server-gemma3-p512-r4-paged-b.log | 48 + + .../server-gemma3-p512-r5-dense.log | 48 + + .../server-gemma3-p512-r5-paged-a.log | 48 + + .../server-gemma3-p512-r5-paged-b.log | 48 + + .../server-llama4-p4096-r1-dense.log | 50 + + .../server-llama4-p4096-r1-paged-a.log | 50 + + .../server-llama4-p4096-r1-paged-b.log | 50 + + .../server-llama4-p4096-r2-dense.log | 50 + + .../server-llama4-p4096-r2-paged-a.log | 50 + + .../server-llama4-p4096-r2-paged-b.log | 50 + + .../server-llama4-p4096-r3-dense.log | 50 + + .../server-llama4-p4096-r3-paged-a.log | 50 + + .../server-llama4-p4096-r3-paged-b.log | 50 + + .../server-llama4-p4096-r4-dense.log | 50 + + .../server-llama4-p4096-r4-paged-a.log | 50 + + .../server-llama4-p4096-r4-paged-b.log | 50 + + .../server-llama4-p4096-r5-dense.log | 50 + + .../server-llama4-p4096-r5-paged-a.log | 50 + + .../server-llama4-p4096-r5-paged-b.log | 50 + + .../server-llama4-p512-r1-dense.log | 50 + + .../server-llama4-p512-r1-paged-a.log | 51 + + .../server-llama4-p512-r1-paged-b.log | 50 + + .../server-llama4-p512-r2-dense.log | 50 + + .../server-llama4-p512-r2-paged-a.log | 50 + + .../server-llama4-p512-r2-paged-b.log | 50 + + .../server-llama4-p512-r3-dense.log | 50 + + .../server-llama4-p512-r3-paged-a.log | 50 + + .../server-llama4-p512-r3-paged-b.log | 50 + + .../server-llama4-p512-r4-dense.log | 50 + + .../server-llama4-p512-r4-paged-a.log | 50 + + .../server-llama4-p512-r4-paged-b.log | 50 + + .../server-llama4-p512-r5-dense.log | 50 + + .../server-llama4-p512-r5-paged-a.log | 50 + + .../server-llama4-p512-r5-paged-b.log | 50 + + .../test_protocol.py | 309 +++ + .../mxfp4-dense-qmv-gfx1151-2026-10-10/README.md | 13 + + .../gpt-oss-20b-MXFP4-Q4_greedy_bench.log | 22 + + .../gpt-oss-20b-MXFP4-Q4_greedy_decode_kernels.csv | 30 + + .../gpt-oss-20b-MXFP4-Q4_greedy_kernel_stats.csv | 60 + + .../gpt-oss-20b-MXFP4-Q4_greedy_plain_bench.log | 18 + + .../gpt-oss-20b-MXFP4-Q4_greedy_summary.json | 251 ++ + .../mxfp4-dense-qmv-gfx1151-2026-10-10/guard.log | 33 + + .../mxfp4-dense-qmv-gfx1151-2026-10-10/session.sh | 18 + + .../README.md | 20 + + .../branch/branch-classic.json | 1 + + .../branch/branch-classic.log | 140 + + .../branch/branch-w4.json | 1 + + .../branch/branch-w4.log | 99 + + .../capture/capture-w4-rr0.log | 80 + + .../capture/capture-w4-rr1.log | 7 + + .../capture/long-probe-r1.log | 10 + + .../capture/long-probe-r2.log | 10 + + .../capture/long-probe-r3.log | 10 + + .../capture/op_level.log | 10 + + .../capture/verify_cost.log | 18 + + .../harness/branch.sh | 14 + + .../harness/matrix.sh | 30 + + .../harness/price_rope.py | 96 + + .../harness/served_identity.py | 93 + + .../matrix/summary.txt | 25 + + .../matrix/w2-rr0-ld0-r1.log | 10 + + .../matrix/w2-rr0-ld0-r2.log | 10 + + .../matrix/w2-rr0-ld0-r3.log | 10 + + .../matrix/w2-rr0-ld1-r1.log | 10 + + .../matrix/w2-rr0-ld1-r2.log | 10 + + .../matrix/w2-rr0-ld1-r3.log | 10 + + .../matrix/w2-rr1-ld0-r1.log | 8 + + .../matrix/w2-rr1-ld0-r2.log | 8 + + .../matrix/w2-rr1-ld0-r3.log | 8 + + .../matrix/w2-rr1-ld1-r1.log | 8 + + .../matrix/w2-rr1-ld1-r2.log | 8 + + .../matrix/w2-rr1-ld1-r3.log | 8 + + .../matrix/w4-rr0-ld0-r1.log | 10 + + .../matrix/w4-rr0-ld0-r2.log | 10 + + .../matrix/w4-rr0-ld0-r3.log | 10 + + .../matrix/w4-rr0-ld1-r1.log | 10 + + .../matrix/w4-rr0-ld1-r2.log | 10 + + .../matrix/w4-rr0-ld1-r3.log | 10 + + .../matrix/w4-rr1-ld0-r1.log | 8 + + .../matrix/w4-rr1-ld0-r2.log | 8 + + .../matrix/w4-rr1-ld0-r3.log | 8 + + .../matrix/w4-rr1-ld1-r1.log | 8 + + .../matrix/w4-rr1-ld1-r2.log | 8 + + .../matrix/w4-rr1-ld1-r3.log | 8 + + .../parity/parity-dflash.log | 27 + + .../parity/parity-full.log | 44 + + .../served/served_identity.json | 184 ++ + .../served/server.16.log | 43 + + .../served/server.2.log | 49 + + .../served/server.4.log | 49 + + .../served/server.8.log | 43 + + .../served/server.auto.log | 49 + + .../served/server.classic.log | 38 + + .../throughput/interrupted_r2_classic-b.jsonl | 1 + + .../throughput/interrupted_server.classic-b-r2.log | 39 + + .../throughput/run.jsonl | 9 + + .../throughput/server.classic-a-r0.log | 39 + + .../throughput/server.classic-a-r1.log | 39 + + .../throughput/server.classic-a-r2.log | 39 + + .../throughput/server.classic-b-r0.log | 39 + + .../throughput/server.classic-b-r1.log | 39 + + .../throughput/server.classic-b-r2.log | 39 + + .../throughput/server.dflash-auto-r0.log | 52 + + .../throughput/server.dflash-auto-r1.log | 52 + + .../throughput/server.dflash-auto-r2.log | 52 + + .../throughput/stderr.rounds01.txt | 89 + + .../throughput/stderr.txt | 15 + + .../throughput/stdout.rounds01.txt | 7 + + .../throughput/stdout.txt | 4 + + .../README.md | 3 + + .../guard_s1.log | 1082 ++++++++ + .../guard_s2.log | 145 + + .../guard_s3.log | 2287 +++++++++++++++ + .../guard_s4.log | 1075 ++++++++ + .../guard_s5.log | 2901 ++++++++++++++++++++ + .../guard_s6.log | 895 ++++++ + .../harness/analyze_trace.py | 97 + + .../harness/profile_driver.py | 56 + + .../harness/run_all.sh | 13 + + .../harness/run_matrix.sh | 68 + + .../harness/run_s2.sh | 9 + + .../harness/run_s3.sh | 22 + + .../harness/run_s4.sh | 16 + + .../harness/run_s5.sh | 32 + + .../harness/run_s6.sh | 24 + + .../harness/step_split.py | 19 + + .../s1/base_c1_p1024_r1.txt | 14 + + .../s1/base_c1_p1024_r2.txt | 14 + + .../s1/base_c1_p1024_r3.txt | 14 + + .../s1/base_c1_p16384_r1.txt | 14 + + .../s1/base_c1_p16384_r2.txt | 14 + + .../s1/base_c1_p16384_r3.txt | 14 + + .../s1/base_c4_p1024_r1.txt | 14 + + .../s1/base_c4_p1024_r2.txt | 14 + + .../s1/base_c4_p1024_r3.txt | 14 + + .../s1/base_c4_p16384_r1.txt | 14 + + .../s1/base_c4_p16384_r2.txt | 14 + + .../s1/base_c4_p16384_r3.txt | 14 + + .../s1/base_warmup.txt | 28 + + .../s1/bench_decode_r1.txt | 17 + + .../s1/bench_decode_r2.txt | 17 + + .../s1/bench_decode_r3.txt | 17 + + .../s1/pid_base.txt | 1 + + .../s1/pid_prof.txt | 2 + + .../s1/pid_thr64.txt | 1 + + .../s1/prof_warmup.txt | 32 + + .../s1/profile_prof.json | 148 + + .../s1/profile_prof.txt | 16 + + .../s1/rocprof_prof.log | 27 + + .../s1/server_base.log | 97 + + .../s1/server_prof.log | 49 + + .../s1/server_thr64.log | 61 + + .../s1/session.log | 9 + + .../s1/thr64_c4_p1024_r1.txt | 14 + + .../s1/thr64_c4_p1024_r2.txt | 14 + + .../s1/thr64_c4_p1024_r3.txt | 14 + + .../s1/thr64_warmup.txt | 28 + + .../s2/pbd.txt | 21 + + .../s2/pbd_prof.txt | 30 + + .../s2/probe_b2.txt | 10 + + .../s2/probe_b4.txt | 10 + + .../s2/s.log | 8 + + .../s2/trace/pbd_kernel_stats.csv | 29 + + .../s3/after.log | 1 + + .../s3/after_c1_p1024_r1.txt | 16 + + .../s3/after_c1_p1024_r2.txt | 16 + + .../s3/after_c1_p1024_r3.txt | 16 + + .../s3/after_c1_p16384_r1.txt | 16 + + .../s3/after_c1_p16384_r2.txt | 16 + + .../s3/after_c1_p16384_r3.txt | 16 + + .../s3/after_c4_p1024_r1.txt | 16 + + .../s3/after_c4_p1024_r2.txt | 16 + + .../s3/after_c4_p1024_r3.txt | 16 + + .../s3/after_c4_p16384_r1.txt | 16 + + .../s3/after_c4_p16384_r2.txt | 16 + + .../s3/after_c4_p16384_r3.txt | 16 + + .../s3/after_warmup.txt | 32 + + .../s3/bd_after_1/bench_decode_r1.txt | 17 + + .../s3/bd_after_2/bench_decode_r1.txt | 17 + + .../s3/bd_after_3/bench_decode_r1.txt | 17 + + .../s3/bd_before_1/bench_decode_r1.txt | 17 + + .../s3/bd_before_2/bench_decode_r1.txt | 17 + + .../s3/bd_before_3/bench_decode_r1.txt | 17 + + .../s3/before.log | 1 + + .../s3/before_c1_p1024_r1.txt | 16 + + .../s3/before_c1_p1024_r2.txt | 16 + + .../s3/before_c1_p1024_r3.txt | 16 + + .../s3/before_c4_p1024_r1.txt | 16 + + .../s3/before_c4_p1024_r2.txt | 16 + + .../s3/before_c4_p1024_r3.txt | 16 + + .../s3/before_warmup.txt | 32 + + .../s3/pbd_after.txt | 23 + + .../s3/pbd_before.txt | 21 + + .../s3/pbd_prof.txt | 30 + + .../s3/pid_after.txt | 1 + + .../s3/pid_before.txt | 1 + + .../s3/probe_after_b2.txt | 10 + + .../s3/probe_after_b4.txt | 10 + + .../s3/probe_after_b8.txt | 10 + + .../s3/probe_before_b8.txt | 10 + + .../s3/s.log | 32 + + .../s3/server_after.log | 69 + + .../s3/server_before.log | 54 + + .../s3/test.txt | 8 + + .../s3/trace/pbd_kernel_stats.csv | 28 + + .../s4/pbd_after_Qwen3-0.6B-4bit_r1.txt | 23 + + .../s4/pbd_after_Qwen3-0.6B-4bit_r2.txt | 23 + + .../s4/pbd_after_gemma-3-4b-it-4bit_r1.txt | 24 + + .../s4/pbd_after_gemma-3-4b-it-4bit_r2.txt | 24 + + .../s4/pbd_before_Qwen3-0.6B-4bit_r1.txt | 23 + + .../s4/pbd_before_Qwen3-0.6B-4bit_r2.txt | 23 + + .../s4/pbd_before_gemma-3-4b-it-4bit_r1.txt | 24 + + .../s4/pbd_before_gemma-3-4b-it-4bit_r2.txt | 24 + + .../s4/probe_after_bf16_b2.txt | 10 + + .../s4/probe_after_bf16_b4.txt | 10 + + .../s4/probe_after_bf16_b8.txt | 10 + + .../s4/s.log | 12 + + .../s4/test.txt | 8 + + .../s5/bd_after_1/bench_decode_r1.txt | 17 + + .../s5/bd_after_2/bench_decode_r1.txt | 17 + + .../s5/bd_after_3/bench_decode_r1.txt | 17 + + .../s5/bd_before_1/bench_decode_r1.txt | 17 + + .../s5/bd_before_2/bench_decode_r1.txt | 17 + + .../s5/bd_before_3/bench_decode_r1.txt | 17 + + .../s5/final.log | 1 + + .../s5/final_c1_p1024_r1.txt | 16 + + .../s5/final_c1_p1024_r2.txt | 16 + + .../s5/final_c1_p1024_r3.txt | 16 + + .../s5/final_c4_p1024_r1.txt | 16 + + .../s5/final_c4_p1024_r2.txt | 16 + + .../s5/final_c4_p1024_r3.txt | 16 + + .../s5/final_warmup.txt | 32 + + .../s5/pbd_after_Qwen3-0.6B-4bit_r1.txt | 23 + + .../s5/pbd_after_Qwen3-0.6B-4bit_r2.txt | 23 + + .../s5/pbd_after_gemma-3-4b-it-4bit_r1.txt | 24 + + .../s5/pbd_after_gemma-3-4b-it-4bit_r2.txt | 24 + + .../s5/pbd_b8_default.txt | 21 + + .../s5/pbd_b8_thr9.txt | 21 + + .../s5/pbd_before_Qwen3-0.6B-4bit_r1.txt | 23 + + .../s5/pbd_before_Qwen3-0.6B-4bit_r2.txt | 23 + + .../s5/pbd_before_gemma-3-4b-it-4bit_r1.txt | 24 + + .../s5/pbd_before_gemma-3-4b-it-4bit_r2.txt | 24 + + .../s5/pbd_llama_16k.txt | 15 + + .../s5/pbd_llama_1k.txt | 23 + + .../s5/pbd_prof_b1_p1024.txt | 30 + + .../s5/pbd_prof_b1_p16384.txt | 30 + + .../s5/pbd_prof_b4_p1024.txt | 30 + + .../s5/pbd_prof_b4_p16384.txt | 30 + + .../s5/pid_final.txt | 1 + + .../s5/probe_bf16_b2.txt | 10 + + .../s5/probe_bf16_b4.txt | 10 + + .../s5/probe_bf16_b8.txt | 10 + + .../s5/probe_f16_b4.txt | 10 + + .../s5/s.log | 29 + + .../s5/server_final.log | 54 + + .../s5/test.txt | 8 + + .../s5/test_dequant_cache.txt | 7 + + .../s5/trace_b1_p1024/pbd_kernel_stats.csv | 28 + + .../s5/trace_b4_p1024/pbd_kernel_stats.csv | 28 + + .../s6/analysis.json | 752 +++++ + .../s6/pbd_before_16k.txt | 15 + + .../s6/pid.txt | 1 + + .../s6/profile.json | 148 + + .../s6/profile.txt | 16 + + .../s6/s.log | 15 + + .../s6/server.log | 61 + + .../s6/warmup.txt | 12 + + .../granite_kernel_stats_after.csv | 76 + + .../granite_kernel_stats_before.csv | 75 + + .../moe_prefill.csv | 25 + + .../session.sh | 57 + + .../engine/bench_engine_rounds.csv | 49 + + .../gemma3-lookahead/gemma3_metrics.txt | 286 ++ + .../gemma3-lookahead/gemma3_metrics_before.txt | 286 ++ + .../gemma3-lookahead/gemma3_probe.log | 11 + + .../gemma3-lookahead/gemma3_response.json | 1 + + .../gemma3-pp2048/gemma3_pp2048.csv | 10 + + .../gemma3-pp2048/gemma3_pp2048_r1_base.log | 23 + + .../gemma3-pp2048/gemma3_pp2048_r1_new-sync.log | 24 + + .../gemma3-pp2048/gemma3_pp2048_r1_new.log | 51 + + .../gemma3-pp2048/gemma3_pp2048_r2_base.log | 23 + + .../gemma3-pp2048/gemma3_pp2048_r2_new-sync.log | 24 + + .../gemma3-pp2048/gemma3_pp2048_r2_new.log | 24 + + .../gemma3-pp2048/gemma3_pp2048_r3_base.log | 23 + + .../gemma3-pp2048/gemma3_pp2048_r3_new-sync.log | 24 + + .../gemma3-pp2048/gemma3_pp2048_r3_new.log | 24 + + .../guard/full_session.log | 245 ++ + .../guard/guard-logs.tar.gz | Bin 0 -> 15502 bytes + .../harness/bench_rounds.sh | 79 + + .../harness/extra_session.sh | 61 + + .../harness/full_session.sh | 26 + + .../harness/gemma3_probe_session.sh | 31 + + .../harness/measure_session.sh | 97 + + .../harness/moe_prefill_session.sh | 41 + + .../harness/named_tests.sh | 67 + + .../harness/paged_vs_dense_trace.py | 256 ++ + .../harness/parity_session.sh | 133 + + .../harness/summarize_rounds.py | 109 + + ...granite-4.0-h-tiny-4bit_greedy_kernel_stats.csv | 75 + + .../granite-4.0-h-tiny-4bit_greedy_summary.json | 187 ++ + .../moe-prefill/moe_prefill.csv | 13 + + .../named/paged_pool_past_u32.log | 13 + + .../named/summary.tsv | 31 + + .../compare_dense_vs_paged.txt | 22 + + .../engine_parity.json | 1141 ++++++++ + .../engine_parity.txt | 37 + + .../Meta-Llama-3.1-8B-Instruct-4bit/summary.txt | 10 + + .../Qwen3-0.6B-4bit/compare_dense_vs_paged.txt | 22 + + .../parity/Qwen3-0.6B-4bit/engine_parity.json | 1141 ++++++++ + .../parity/Qwen3-0.6B-4bit/engine_parity.txt | 37 + + .../parity/Qwen3-0.6B-4bit/summary.txt | 10 + + .../compare_dense_vs_paged.txt | 22 + + .../engine_parity.txt | 37 + + .../Meta-Llama-3.1-8B-Instruct-4bit/summary.txt | 10 + + .../trace_dense.tsv | 133 + + .../trace_paged.tsv | 137 + + .../Qwen3-0.6B-4bit/compare_dense_vs_paged.txt | 22 + + .../floor0/Qwen3-0.6B-4bit/engine_parity.txt | 37 + + .../parity/floor0/Qwen3-0.6B-4bit/summary.txt | 10 + + .../parity/floor0/Qwen3-0.6B-4bit/trace_dense.tsv | 133 + + .../parity/floor0/Qwen3-0.6B-4bit/trace_paged.tsv | 137 + + .../compare_dense_vs_paged.txt | 22 + + .../granite-4.0-h-tiny-4bit/engine_parity.json | 1011 +++++++ + .../granite-4.0-h-tiny-4bit/engine_parity.txt | 37 + + .../parity/granite-4.0-h-tiny-4bit/summary.txt | 10 + + ...-3.1-8B-Instruct-4bit_greedy_decode_kernels.csv | 22 + + ...-Llama-3.1-8B-Instruct-4bit_greedy_summary.json | 175 ++ + .../rounds/raw-logs.tar.gz | Bin 0 -> 14119 bytes + .../rounds/rounds.csv | 100 + + .../a2-off-r1.txt | 8 + + .../a2-off-r2.txt | 8 + + .../a2-off-r3.txt | 8 + + .../a2-off-r4.txt | 8 + + .../a2-off-r5.txt | 8 + + .../a2-on-r1.txt | 8 + + .../a2-on-r2.txt | 8 + + .../a2-on-r3.txt | 8 + + .../a2-on-r4.txt | 8 + + .../a2-on-r5.txt | 8 + + .../ab-off-r1.txt | 8 + + .../ab-off-r2.txt | 8 + + .../ab-off-r3.txt | 8 + + .../ab-off-r4.txt | 8 + + .../ab-off-r5.txt | 8 + + .../ab-on-r1.txt | 8 + + .../ab-on-r2.txt | 8 + + .../ab-on-r3.txt | 8 + + .../ab-on-r4.txt | 8 + + .../ab-on-r5.txt | 8 + + .../analyze.py | 50 + + .../c-mb8-r1.txt | 48 + + .../c-mb8-r2.txt | 48 + + .../c-mb8-r3.txt | 48 + + .../c-off-r1.txt | 48 + + .../c-off-r2.txt | 48 + + .../c-off-r3.txt | 48 + + .../c-on-r1.txt | 48 + + .../c-on-r2.txt | 48 + + .../c-on-r3.txt | 48 + + .../d-dense-off-r1.txt | 6 + + .../d-dense-off-r2.txt | 6 + + .../d-dense-off-r3.txt | 6 + + .../d-dense-on-r1.txt | 6 + + .../d-dense-on-r2.txt | 6 + + .../d-dense-on-r3.txt | 6 + + .../d-paged-off-r1.txt | 6 + + .../d-paged-off-r2.txt | 6 + + .../d-paged-off-r3.txt | 6 + + .../d-paged-on-r1.txt | 6 + + .../d-paged-on-r2.txt | 6 + + .../d-paged-on-r3.txt | 6 + + .../d2-off-r1.txt | 18 + + .../d2-off-r2.txt | 18 + + .../d2-off-r3.txt | 18 + + .../d2-on-r1.txt | 18 + + .../d2-on-r2.txt | 18 + + .../d2-on-r3.txt | 18 + + .../environment.txt | 5 + + .../server-prompt-lookup-gb10-2026-10-11/m_chat.py | 44 + + .../m_client.py | 96 + + .../server-prompt-lookup-gb10-2026-10-11/pick.sh | 10 + + .../server-prompt-lookup-gb10-2026-10-11/run.sh | 59 + + .../server-prompt-lookup-gb10-2026-10-11/run2.sh | 36 + + .../server-prompt-lookup-gb10-2026-10-11/run3.sh | 28 + + .../single-llama-3.2-1b-instruct-4bit.jsonl | 51 + + .../single-llama-3.2-1b-instruct-4bit.txt | 144 + + .../single-qwen3-1.7b-4bit.jsonl | 51 + + .../single-qwen3-1.7b-4bit.txt | 168 ++ + .../ssm-bf16-parity-gb10-2026-10-11/.gitattributes | 2 + + .../data/ssm-bf16-parity-gb10-2026-10-11/README.md | 29 + + .../ssm-bf16-parity-gb10-2026-10-11/SHA256SUMS | 10 + + .../granite-parity/comparison.json | 139 + + .../granite-parity/graph.stderr | 2 + + .../granite-parity/graph.stdout | 12 + + .../granite-parity/kernel.stderr | 3 + + .../granite-parity/kernel.stdout | 12 + + .../granite-parity/provenance.txt | 5 + + .../granite-parity/run.sh | 136 + + .../stage-deviations.log | 39 + + .../admit-llama-c2048-r1.txt | 20 + + .../admit-llama-c2048-r2.txt | 20 + + .../admit-llama-c2048-r3.txt | 20 + + .../admit-llama-c512-r1.txt | 20 + + .../admit-llama-c512-r2.txt | 20 + + .../admit-llama-c512-r3.txt | 20 + + .../unified-engine-final-gb10-2026-10-08/admit.sh | 26 + + .../batched-llama-turbo4-base-r1.txt | 24 + + .../batched-llama-turbo4-base-r2.txt | 24 + + .../batched-llama-turbo4-base-r3.txt | 24 + + .../batched-llama-turbo4-new-r1.txt | 24 + + .../batched-llama-turbo4-new-r2.txt | 24 + + .../batched-llama-turbo4-new-r3.txt | 24 + + .../batched-qwen3-base-r1.txt | 24 + + .../batched-qwen3-base-r2.txt | 24 + + .../batched-qwen3-base-r3.txt | 24 + + .../batched-qwen3-new-r1.txt | 24 + + .../batched-qwen3-new-r2.txt | 24 + + .../batched-qwen3-new-r3.txt | 24 + + .../environment.txt | 4 + + .../gemma3-dense-r1.txt | 24 + + .../gemma3-dense-r2.txt | 24 + + .../gemma3-dense-r3.txt | 24 + + .../gemma3-paged-r1.txt | 24 + + .../gemma3-paged-r2.txt | 24 + + .../gemma3-paged-r3.txt | 24 + + .../unified-engine-final-gb10-2026-10-08/pick.sh | 11 + + .../unified-engine-final-gb10-2026-10-08/run.sh | 54 + + .../single-llama-3.2-1b-instruct-4bit.jsonl | 61 + + .../single-llama-3.2-1b-instruct-4bit.log | 86 + + .../single-qwen3-1.7b-4bit.jsonl | 61 + + .../single-qwen3-1.7b-4bit.log | 86 + + .../gemma4-mtp-batched-gb10-2026-10-07.md | 71 + + .../model-owned-storage-gb10-2026-10-11.md | 75 + + .../qwen35-dflash-verify-rope-gb10-2026-10-07.md | 143 + + .../rocm-batched-decode-gfx1151-2026-10-08.md | 128 + + .../rocm-bf16-gemm-residue-gfx1151-2026-10-08.md | 69 + + .../rocm-bf16-qmm-route-gfx1151-2026-09-30.md | 28 + + .../rocm-correctness-gfx1151-2026-09-30.md | 64 +- + .../rocm-decode-profile-gfx1151-2026-09-30.md | 13 + + .../rocm-moe-decode-mxfp4-gfx1151-2026-10-08.md | 63 + + .../rocm-rejection-joint-cap-gfx1151-2026-10-07.md | 104 + + .../rocm-samplers-gfx1151-2026-10-05.md | 2 +- + .../rocm-unified-engine-gfx1151-2026-10-08.md | 226 ++ + .../server-prompt-lookup-gb10-2026-10-11.md | 105 + + .../unified-engine-final-gb10-2026-10-08.md | 80 + + docs/benchmarks.md | 38 +- + docs/environment-variables.md | 206 +- + docs/installation.md | 26 +- + docs/llama-server-compat.md | 4 +- + docs/mla-absorbed-decode.md | 2 +- + docs/mlxcelverse/rocm-overlay.md | 8 +- + docs/mlxcelverse/upstream/README.md | 74 +- + docs/python-client.md | 2 +- + docs/speculative-acceptance.md | 12 +- + docs/supported-models.md | 2 +- + docs/turbo-kv-cache.md | 14 +- + examples/profile_paged_decode_kernel.rs | 159 -- + examples/qmm_batch_rows_probe.rs | 187 ++ + examples/rejection_sampling_microbench.rs | 69 +- + examples/verify_width_cost.rs | 4 +- + scripts/bench_decode.sh | 64 +- + scripts/bench_serving_concurrency.py | 73 +- + scripts/bench_serving_metrics.py | 165 ++ + scripts/benchmark_paged_decode_production.sh | 1 + + scripts/benchmark_paged_decode_rollout.sh | 175 -- + scripts/capture_moe_decode_trace.sh | 18 +- + scripts/ci/check_binary_assets.py | 11 + + scripts/rocm_bf16_gemm_residue/gemm_repro.cpp | 289 ++ + scripts/rocm_bf16_gemm_residue/run.sh | 27 + + scripts/rocm_bf16_gemm_residue/wmma_probe.hip | 157 ++ + scripts/rocm_decode_gaps.py | 132 + + scripts/rocm_decode_profile.py | 64 +- + scripts/rocm_gpu_guard.sh | 107 +- + spike/openxla/MULTIMODAL_VLM_DESIGN.md | 6 +- + src/backend/mlx.rs | 5 +- + src/backend/mod.rs | 12 +- + src/backend/session.rs | 16 +- + src/backend/tests.rs | 6 +- + src/bin/bench_decode.rs | 125 +- + src/bin/bench_engine.rs | 49 +- + src/bin/engine_parity.rs | 96 +- + src/bin/engine_parity/report.rs | 18 +- + src/bin/mlx_server.rs | 34 +- + src/bin/speculative_bench.rs | 41 +- + src/cli/in_process_client.rs | 278 ++ + src/cli/mod.rs | 1 + + src/cli/speculative_args.rs | 17 +- + src/commands/chat.rs | 876 ++---- + src/commands/chat_tests.rs | 259 +- + src/commands/chat_transcript.rs | 131 + + src/commands/chat_transcript_tests.rs | 145 + + src/commands/cli_server.rs | 103 + + src/commands/cli_server_tests.rs | 208 ++ + src/commands/cli_turn.rs | 271 ++ + src/commands/cli_turn_tests.rs | 55 + + src/commands/generate.rs | 405 +-- + src/commands/generate_falcon_ocr.rs | 2 +- + src/commands/generate_tests.rs | 36 +- + src/commands/generate_vlm.rs | 2276 +-------------- + src/commands/mod.rs | 3 + + src/commands/run.rs | 284 +- + src/commands/run_tests.rs | 32 + + src/commands/serve.rs | 11 + + src/commands/serve_tests.rs | 4 +- + src/distributed/pipeline/server_runtime.rs | 8 +- + src/execution/memory_estimate.rs | 55 +- + src/execution/memory_estimate_inflight_tests.rs | 14 + + src/lang_analyzer_tests.rs | 12 +- + src/lib.rs | 14 +- + src/lib/mlx-cpp/CMakeLists.txt | 25 + + src/lib/mlx-cpp/patches-rocm/LOCAL_FIXES.md | 65 +- + src/lib/mlx-cpp/patches-rocm/README.md | 4 +- + .../patches-rocm/mlx/backend/rocm/allocator.cpp | 34 +- + .../patches-rocm/mlx/backend/rocm/allocator.h | 3 +- + .../patches-rocm/mlx/backend/rocm/copy/copy.hpp | 48 + + .../mlx/backend/rocm/copy/copy_contiguous.hip | 10 +- + .../mlx/backend/rocm/copy/copy_general.hip | 33 +- + .../mlx/backend/rocm/copy/copy_general_dynamic.hip | 121 +- + .../mlx/backend/rocm/copy/copy_general_input.hip | 30 +- + .../patches-rocm/mlx/backend/rocm/device.cpp | 609 ++-- + .../mlx-cpp/patches-rocm/mlx/backend/rocm/device.h | 138 +- + .../patches-rocm/mlx/backend/rocm/env_int.h | 36 + + .../mlx-cpp/patches-rocm/mlx/backend/rocm/eval.cpp | 3 +- + .../patches-rocm/mlx/backend/rocm/event.hip | 44 +- + .../mlx-cpp/patches-rocm/mlx/backend/rocm/fft.hip | 5 +- + .../mlx/backend/rocm/gemms/hipblaslt_gemm.cpp | 463 ++-- + .../mlx/backend/rocm/gemms/hipblaslt_gemm.h | 11 +- + .../mlx/backend/rocm/gemms/rocblas_gemm.cpp | 38 +- + .../patches-rocm/mlx/backend/rocm/jit_module.cpp | 45 +- + .../patches-rocm/mlx/backend/rocm/jit_module.h | 5 +- + .../patches-rocm/mlx/backend/rocm/matmul.cpp | 56 +- + .../patches-rocm/mlx/backend/rocm/no_rocm.cpp | 4 + + .../mlx/backend/rocm/quantized/qmm.hip | 356 ++- + .../mlx-cpp/patches-rocm/mlx/backend/rocm/rocm.h | 23 + + .../mlx-cpp/patches/mlx/backend/cpu/quantized.cpp | 1426 ++++++++++ + src/lib/mlxcel-core/cpp/mlx_cxx_bridge.cpp | 433 ++- + src/lib/mlxcel-core/cpp/mlx_cxx_bridge.h | 59 +- + src/lib/mlxcel-core/cpp/mlx_cxx_kernels.cpp | 6 +- + src/lib/mlxcel-core/src/cache.rs | 186 +- + src/lib/mlxcel-core/src/cache/attend.rs | 412 +++ + src/lib/mlxcel-core/src/cache/attend_tests.rs | 807 ++++++ + .../src/cache/paged_batch_decode_tests.rs | 4 +- + src/lib/mlxcel-core/src/cache/prefill_rewind.rs | 2 +- + src/lib/mlxcel-core/src/cache/turbo/boundary.rs | 6 +- + src/lib/mlxcel-core/src/cpu_qmm_accum_tests.rs | 415 +++ + src/lib/mlxcel-core/src/decode_finish.rs | 177 ++ + src/lib/mlxcel-core/src/decode_finish_tests.rs | 275 ++ + src/lib/mlxcel-core/src/drafter/mod.rs | 45 +- + src/lib/mlxcel-core/src/engine/direct.rs | 699 +++++ + src/lib/mlxcel-core/src/engine/direct_decode.rs | 439 +++ + .../mlxcel-core/src/engine/direct_decode_rows.rs | 194 ++ + .../src/engine/direct_decode_rows_tests.rs | 376 +++ + .../mlxcel-core/src/engine/direct_decode_tests.rs | 455 +++ + src/lib/mlxcel-core/src/engine/eval_fault_tests.rs | 395 +++ + src/lib/mlxcel-core/src/engine/lookahead.rs | 86 + + src/lib/mlxcel-core/src/engine/mod.rs | 529 ++++ + src/lib/mlxcel-core/src/engine/prefill.rs | 228 ++ + src/lib/mlxcel-core/src/engine/rows.rs | 411 +++ + src/lib/mlxcel-core/src/engine/speculative.rs | 406 +++ + .../mlxcel-core/src/engine/speculative_plain.rs | 120 + + .../src/engine/speculative_plain_tests.rs | 431 +++ + src/lib/mlxcel-core/src/engine/tests.rs | 1126 ++++++++ + src/lib/mlxcel-core/src/engine/verify_round.rs | 308 +++ + .../mlxcel-core/src/engine/verify_round_tests.rs | 180 ++ + src/lib/mlxcel-core/src/eval_faults.rs | 105 + + src/lib/mlxcel-core/src/ffi_tests.rs | 350 +-- + src/lib/mlxcel-core/src/generate.rs | 2313 +--------------- + src/lib/mlxcel-core/src/generate_finish_tests.rs | 170 ++ + src/lib/mlxcel-core/src/generate_history_tests.rs | 15 +- + src/lib/mlxcel-core/src/generation_policy.rs | 67 +- + src/lib/mlxcel-core/src/lang_bias_counters.rs | 2 +- + src/lib/mlxcel-core/src/language_model_ref.rs | 342 +++ + src/lib/mlxcel-core/src/layers.rs | 433 +-- + src/lib/mlxcel-core/src/lib.rs | 147 +- + src/lib/mlxcel-core/src/loop_detection.rs | 2 +- + src/lib/mlxcel-core/src/mla/cache.rs | 61 + + src/lib/mlxcel-core/src/mla/decode_tests.rs | 27 + + src/lib/mlxcel-core/src/prefill_plan.rs | 590 ++++ + src/lib/mlxcel-core/src/prefill_plan_tests.rs | 540 ++++ + src/lib/mlxcel-core/src/rocm_faults.rs | 26 + + src/lib/mlxcel-core/src/rocm_qmm_cache.rs | 76 + + src/lib/mlxcel-core/src/sampling.rs | 204 +- + .../mlxcel-core/src/sampling_rejection_tests.rs | 91 +- + src/lib/mlxcel-core/src/sampling_row_step.rs | 435 +++ + .../src/sampling_row_step_fused_tests.rs | 166 ++ + src/lib/mlxcel-core/src/sampling_row_step_tests.rs | 405 +++ + src/lib/mlxcel-core/src/sampling_token_bias.rs | 152 + + .../mlxcel-core/src/sampling_top_k_vocab_tests.rs | 170 ++ + src/lib/mlxcel-core/src/session.rs | 196 +- + src/lib/mlxcel-core/src/speculative/mod.rs | 21 +- + .../mlxcel-core/src/speculative/prompt_lookup.rs | 545 +--- + .../src/speculative/prompt_lookup_drafter.rs | 361 +++ + .../src/speculative/prompt_lookup_tests.rs | 176 +- + src/lib/mlxcel-core/src/streams.rs | 6 +- + src/lib/mlxcel-core/src/test_support/induction.rs | 2 +- + src/loaded_model.rs | 28 +- + src/loading/vlm_kimi_k3.rs | 8 +- + src/loading/vlm_mage_vl_tests.rs | 2 +- + src/loading/vlm_muse_glimmer_tests.rs | 8 +- + src/loading/vlm_qwen_tests.rs | 2 +- + src/main.rs | 27 +- + src/models/afmoe.rs | 4 +- + src/models/afmoe_tests.rs | 15 + + src/models/deepseek_v2.rs | 47 +- + src/models/deepseek_v4.rs | 4 +- + src/models/detection.rs | 6 +- + src/models/falcon_h1.rs | 21 +- + src/models/falcon_ocr.rs | 2 +- + src/models/gemma3.rs | 338 +-- + src/models/gemma3_embedding.rs | 9 +- + src/models/gemma3_tests.rs | 296 +- + src/models/gemma4.rs | 262 +- + src/models/gemma4_attention.rs | 2 +- + src/models/gemma4_mtp_target.rs | 130 +- + src/models/gemma4_mtp_target_rows.rs | 191 ++ + src/models/gemma4_mtp_target_rows_tests.rs | 174 ++ + src/models/gemma4_tests.rs | 5 +- + src/models/gemma4_verify_rows.rs | 468 ++++ + src/models/gemma4_verify_rows_tests.rs | 119 + + src/models/granitemoehybrid.rs | 21 +- + src/models/helium.rs | 15 +- + src/models/inkling/runtime.rs | 21 +- + src/models/jamba.rs | 10 +- + src/models/kimi_k3.rs | 10 +- + src/models/kimi_linear.rs | 10 +- + src/models/lfm2.rs | 21 +- + src/models/llama3.rs | 303 +- + src/models/llama4.rs | 214 +- + src/models/llama4_tests.rs | 251 +- + src/models/mamba.rs | 14 +- + src/models/mamba2.rs | 10 +- + src/models/mod.rs | 3 + + src/models/model_owned.rs | 165 +- + src/models/muse_glimmer.rs | 15 +- + src/models/muse_glimmer_batch_tests.rs | 3 +- + src/models/nanochat.rs | 14 + + src/models/nanochat_tests.rs | 16 + + src/models/nemotron_h.rs | 31 +- + src/models/nemotron_h_tests.rs | 16 +- + src/models/nemotron_nas.rs | 10 +- + src/models/phi3_tests.rs | 3 +- + src/models/plamo2.rs | 21 +- + src/models/qwen3.rs | 286 +- + src/models/qwen3_5.rs | 197 +- + src/models/qwen3_5_dflash_probe_tests.rs | 37 +- + src/models/qwen3_5_rope_attribution_tests.rs | 379 +++ + src/models/qwen3_moe.rs | 16 +- + src/models/qwen3_next.rs | 52 +- + src/models/qwen3_next_verify_rope.rs | 74 + + src/models/recurrent_gemma.rs | 10 +- + src/models/single_row_batch_parity_tests.rs | 183 ++ + src/models/solar_open.rs | 6 +- + src/models/speculative_exactness.rs | 4 +- + src/models/switch_layers.rs | 52 +- + src/models/switch_layers_gather_index_tests.rs | 90 +- + src/multimodal/batched_dispatch.rs | 9 +- + src/multimodal/gemma4_vl.rs | 2 +- + src/multimodal/gemma4_vl_tests.rs | 7 +- + src/multimodal/mod.rs | 2 +- + src/multimodal/qwen_vl.rs | 6 +- + src/multimodal/qwen_vl_tests.rs | 9 +- + src/multimodal/vlm_runtime.rs | 18 +- + src/reasoning_display.rs | 105 + + src/reasoning_display_tests.rs | 81 + + src/reasoning_stream.rs | 959 ------- + src/server/batch/active.rs | 56 +- + src/server/batch/finish.rs | 258 ++ + src/server/batch/finish_step_tests.rs | 590 ++++ + src/server/batch/mod.rs | 5 + + src/server/batch/observability.rs | 14 - + src/server/batch/prefill_cohort.rs | 40 +- + src/server/batch/queue.rs | 3 +- + src/server/batch/scheduler.rs | 45 +- + src/server/batch/scheduler/admission.rs | 121 +- + src/server/batch/scheduler/admission_watermark.rs | 2 +- + src/server/batch/scheduler/block_reclaim.rs | 55 +- + src/server/batch/scheduler/config.rs | 41 +- + src/server/batch/scheduler/decode_tick.rs | 1287 ++------- + src/server/batch/scheduler/handoff.rs | 78 +- + src/server/batch/scheduler/mod.rs | 123 +- + src/server/batch/scheduler/pad_trim.rs | 46 +- + src/server/batch/scheduler/paged_layout.rs | 31 +- + src/server/batch/scheduler/planned_prefill.rs | 427 +++ + src/server/batch/scheduler/prefill.rs | 1031 ++----- + .../batch/scheduler/prefill_span_coverage_tests.rs | 60 +- + src/server/batch/scheduler/prompt_cache.rs | 273 +- + src/server/batch/scheduler/prompt_lookup.rs | 619 +++++ + src/server/batch/scheduler/queued_adoption.rs | 3 +- + src/server/batch/scheduler/run_loop.rs | 31 +- + src/server/batch/scheduler/shared_budget.rs | 3 +- + src/server/batch/scheduler/speculative_finalize.rs | 20 +- + src/server/batch/scheduler/step_rows.rs | 250 ++ + src/server/batch/scheduler_cohort_parity_tests.rs | 3 +- + .../batch/scheduler_completion_snapshot_tests.rs | 4 +- + .../batch/scheduler_model_owned_cache_tests.rs | 4 +- + .../batch/scheduler_model_owned_lookahead_tests.rs | 101 +- + .../batch/scheduler_model_owned_pad_trim_tests.rs | 7 +- + .../batch/scheduler_muse_glimmer_parallel_tests.rs | 124 +- + src/server/batch/scheduler_muse_glimmer_support.rs | 2 +- + src/server/batch/scheduler_muse_glimmer_tests.rs | 4 +- + .../batch/scheduler_prompt_cache_plan_tests.rs | 488 ++++ + src/server/batch/scheduler_prompt_cache_tests.rs | 8 +- + src/server/batch/scheduler_prompt_lookup_tests.rs | 762 +++++ + .../batch/scheduler_real_batch_parity_tests.rs | 253 ++ + .../batch/scheduler_seed_determinism_tests.rs | 3 +- + src/server/batch/scheduler_tests.rs | 158 +- + .../batch/scheduler_whole_prompt_hit_tests.rs | 3 +- + src/server/batch/sequence.rs | 182 +- + src/server/batch/serving_handoff_parity_tests.rs | 3 +- + src/server/batch/speculative_burst.rs | 336 ++- + src/server/batch/speculative_burst_tests.rs | 69 +- + src/server/batch/speculative_slice.rs | 11 +- + src/server/batch/speculative_slice_tests.rs | 10 +- + src/server/batch/stop_sequence_tests.rs | 3 +- + src/server/chat_front.rs | 76 + + src/server/chat_template.rs | 39 + + src/server/cli_input.rs | 59 +- + src/server/cli_input_tests.rs | 104 +- + src/server/config.rs | 31 +- + src/server/engine_probe/cli_engine.rs | 68 +- + src/server/engine_probe/engine_direct.rs | 26 + + src/server/engine_probe/mod.rs | 14 +- + src/server/engine_probe/prompt.rs | 15 +- + src/server/engine_probe/server_engine.rs | 114 +- + src/server/in_process/chat.rs | 389 +++ + src/server/in_process/chat_tests.rs | 189 ++ + src/server/in_process/mod.rs | 219 ++ + src/server/local_media.rs | 208 ++ + src/server/local_media_tests.rs | 95 + + src/server/mod.rs | 3 + + src/server/model_provider.rs | 13 +- + src/server/model_worker.rs | 114 +- + src/server/prompt_cache/entry.rs | 3 +- + src/server/routes/chat.rs | 390 +-- + src/server/routes/chat_generation.rs | 265 ++ + src/server/routes/mod.rs | 1 + + src/server/routes/props_tests.rs | 13 +- + src/server/runtime_settings.rs | 13 +- + src/server/runtime_settings_tests.rs | 8 +- + src/server/speculative_dispatch.rs | 124 +- + src/server/speculative_dispatch_tests.rs | 114 + + src/server/startup.rs | 188 +- + src/server/startup_tests.rs | 17 + + src/server/types/response.rs | 2 +- + src/vision/cohere_compass.rs | 5 +- + src/vision/ernie4_5_moe_vl.rs | 5 +- + src/vision/gemma4_vl.rs | 10 +- + src/vision/glm4v.rs | 5 +- + src/vision/glm4v_moe.rs | 5 +- + src/vision/glm_ocr.rs | 5 +- + src/vision/got_ocr.rs | 24 +- + src/vision/granite4_vision.rs | 8 +- + src/vision/hunyuan_vl.rs | 5 +- + src/vision/idefics2.rs | 25 +- + src/vision/inkling_vl.rs | 8 +- + src/vision/internvl.rs | 25 +- + src/vision/jina_vlm.rs | 18 +- + src/vision/kimi_vl.rs | 25 +- + src/vision/lfm2_vl.rs | 15 +- + src/vision/llmjp_vl.rs | 24 +- + src/vision/llmjp_vl_text.rs | 24 +- + src/vision/locateanything.rs | 25 +- + src/vision/mage_vl.rs | 24 +- + src/vision/minicpmv4_6_vl.rs | 7 +- + src/vision/mod.rs | 33 +- + src/vision/muse_glimmer_vlm.rs | 25 +- + src/vision/nemotron_h_nano_omni_vl.rs | 8 +- + src/vision/paddleocr_vl.rs | 5 +- + src/vision/phi4mm_vl.rs | 2 +- + src/vision/qwen2_5_vl.rs | 5 +- + src/vision/qwen2_vl.rs | 5 +- + src/vision/qwen3_5_vl.rs | 12 +- + src/vision/qwen3_omni_moe.rs | 5 +- + src/vision/qwen3_vl.rs | 5 +- + src/vision/qwen3_vl_moe.rs | 5 +- + src/vision/smolvlm.rs | 25 +- + src/vision/youtu_vl.rs | 25 +- + tests/attention_f16_range.rs | 2 +- + tests/cli_help_consistency.rs | 2 +- + tests/common/mod.rs | 14 + + tests/deepseek_v4_real_model.rs | 14 +- + tests/deepseek_vl_v2_parity.rs | 2 +- + tests/ernie4_5_moe_vl_parity.rs | 4 +- + tests/fastvlm_parity.rs | 2 +- + tests/got_ocr_real_model.rs | 2 +- + tests/hunyuan_vl_parity.rs | 2 +- + tests/internvl_parity.rs | 2 +- + tests/mamba2_hybrid_decode_finite.rs | 4 +- + tests/model_loader_stdout_guard.rs | 153 ++ + tests/molmo_parity.rs | 2 +- + tests/moondream2_parity.rs | 2 +- + tests/paged_decode_v2_greedy_parity.rs | 16 +- + tests/paged_scheduler_parity.rs | 37 +- + tests/pre_ampere_f16_quality.rs | 5 +- + tests/qwen3_omni_moe_parity.rs | 4 +- + tests/rocm_device_map_concurrency.rs | 434 +++ + tests/rocm_gather_qmm_expert_batched.rs | 27 +- + tests/rocm_hipblaslt_concurrency.rs | 483 ++++ + tests/rocm_jit_module_concurrency.rs | 213 ++ + tests/rocm_mxfp4_quant.rs | 242 ++ + tests/rocm_qmm_batched_rows.rs | 214 ++ + tests/rocm_qmm_dequant_cache.rs | 493 ++++ + tests/rocm_qmm_env.rs | 126 +- + tests/rocm_rocblas_handle_concurrency.rs | 291 ++ + tests/rocm_scalar_pool_concurrency.rs | 326 +++ + tests/rocm_strided_copy_grid.rs | 322 +++ + tests/sampling_top_k_above_vocab_e2e.rs | 172 ++ + tests/smolvlm_parity.rs | 2 +- + tests/speculative_parity.rs | 227 +- + tests/speculative_parity/gemma4_batched.rs | 249 ++ + tests/tensor_parallel_real_models.rs | 12 +- + tests/test_bench_serving_concurrency.py | 181 ++ + tests/test_rocm_decode_profile.py | 243 +- + tests/turbo_kv_e2e.rs | 29 +- + tests/vlm_concurrency.rs | 2 +- + tests/vlm_wrapper_capability_delegation.rs | 161 +- + 1082 files changed, 91189 insertions(+), 15297 deletions(-) +source_diff_stat_end +eacccc58c72889d57904a7993ad7c9ba12e9c531ddad41652f01572ab061d98f /tmp/mlxcel-auto-plan/2227-acceptance/run.sh +0dd8feec893dfbad5e0fd724f7d2feeae2b87f8c49a6183be39943652b69b3f3 /tmp/mlxcel-auto-plan/2227-acceptance/pick.sh +a0423df7447c204fcb3151921a5537c04dfe912ebd1e4ef3d090eb74a32388e6 /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/scripts/engine_bench_rounds.py +0ea8b10cdf0459e0f4cf4ed55e3dc1bf94ea6e2782e126f797297e9183987725 /tmp/mlxcel-auto-plan/2227-acceptance/binary-source-7c8830cd.patch +67ef72805c698bc2c81eac2d9dfefe286232f7367e1993c715624dac8ab80836 /tmp/mlxcel-auto-plan/2227-acceptance/post-build-test-only.diff +3414282715246726839630cd94febedded3adb3606695a9cc9825d39a3b65a79 /tmp/mlxcel-auto-plan/2227-acceptance/binary-source-provenance.txt diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/pick.sh b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/pick.sh new file mode 100755 index 000000000..cecb2735e --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/pick.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +set -euo pipefail + +BASE_ROOT=/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-base-2227 +NEW_ROOT=/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227 +CORE_BUILD=mlxcel-core-4c8821fbbcc3d8f4 + +args=() +which=new +while (($#)); do + if [[ $1 == --which ]]; then + (($# >= 2)) || { echo 'pick.sh: --which requires base or new' >&2; exit 2; } + which=$2 + shift 2 + continue + fi + args+=("$1") + shift +done + +case $which in + base) root=$BASE_ROOT ;; + new) root=$NEW_ROOT ;; + *) echo "pick.sh: unsupported --which value: $which" >&2; exit 2 ;; +esac + +include="$root/target/release/build/$CORE_BUILD/out/build/include" +bin="$root/target/release/mlxcel-bench-engine" +test -x "$bin" +test -d "$include/cccl" +export MLXCEL_CCCL_DIR="$include/cccl" +export MLXCEL_CUTLASS_DIR="$include" +exec "$bin" "${args[@]}" diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/post-build-test-only.diff b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/post-build-test-only.diff new file mode 100644 index 000000000..6b1764a4e --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/post-build-test-only.diff @@ -0,0 +1,356 @@ +diff --git a/src/server/batch/scheduler_muse_glimmer_parallel_tests.rs b/src/server/batch/scheduler_muse_glimmer_parallel_tests.rs +index ce6169a4..a04a0db5 100644 +--- a/src/server/batch/scheduler_muse_glimmer_parallel_tests.rs ++++ b/src/server/batch/scheduler_muse_glimmer_parallel_tests.rs +@@ -42,6 +42,7 @@ struct RequestSummary { + struct TerminalDecodeSummary { + generated_tokens: Vec, + finish_reason: FinishReason, ++ final_pool_offset: i32, + final_offsets: Vec<(bool, i32, i32)>, + stream: RequestSummary, + } +@@ -205,25 +206,7 @@ fn run_isolated(case: &ImageCase, collect_tokens: bool) -> RequestSummary { + } + } + +-fn run_b1_length_budget(max_tokens: usize) -> (RequestSummary, usize) { +- let mut sched = muse::scheduler(1); +- let rx = muse::enqueue( +- &mut sched, +- request_prompt(), +- muse::image_bytes(2, 2, 31), +- max_tokens, +- ); +- let seq_id = SequenceId::from_raw(0); +- execute_prefill_tick(&mut sched); +- while sched.active_batch.get(seq_id).is_some() { +- execute_decode_tick(&mut sched, &[seq_id]); +- sched.finalize_completed(); +- } +- let forwards = sched.decode_forward_calls; +- (summarize(muse::collect_stream(&rx)), forwards) +-} +- +-fn run_terminal_length_path(parallelism: usize) -> (TerminalDecodeSummary, usize) { ++fn run_terminal_length_path(parallelism: usize) -> TerminalDecodeSummary { + let max_tokens = 3; + let mut sched = muse::scheduler(parallelism); + let target_rx = muse::enqueue( +@@ -242,6 +225,11 @@ fn run_terminal_length_path(parallelism: usize) -> (TerminalDecodeSummary, usize + }); + let target_id = SequenceId::from_raw(0); + execute_prefill_tick(&mut sched); ++ let active_ids = sched.active_batch.sequence_ids(); ++ assert!( ++ sched.lookahead_params(&active_ids).is_none(), ++ "Muse model-owned state deliberately stays on the synchronous path" ++ ); + + let mut terminal = None; + while sched.active_batch.get(target_id).is_some() { +@@ -253,6 +241,12 @@ fn run_terminal_length_path(parallelism: usize) -> (TerminalDecodeSummary, usize + terminal = Some(( + seq.generated_tokens.clone(), + reason.clone(), ++ sched ++ .engine ++ .pool() ++ .get(target_id) ++ .expect("finished target retains its pool entry until finalization") ++ .current_offset, + muse::muse_state_offsets(&sched, target_id) + .expect("finished target retains its state until finalization"), + )); +@@ -260,22 +254,20 @@ fn run_terminal_length_path(parallelism: usize) -> (TerminalDecodeSummary, usize + sched.finalize_completed(); + } + +- let (generated_tokens, finish_reason, final_offsets) = ++ let (generated_tokens, finish_reason, final_pool_offset, final_offsets) = + terminal.expect("target reached a terminal decode tick"); + let stream = summarize(muse::collect_stream(&target_rx)); + if let Some(rx) = sibling_rx { + let sibling = summarize(muse::collect_stream(&rx)); + assert_eq!(sibling, stream); + } +- ( +- TerminalDecodeSummary { +- generated_tokens, +- finish_reason, +- final_offsets, +- stream, +- }, +- sched.decode_forward_calls, +- ) ++ TerminalDecodeSummary { ++ generated_tokens, ++ finish_reason, ++ final_pool_offset, ++ final_offsets, ++ stream, ++ } + } + + fn assert_reuse_after_release(sched: &mut BatchScheduler) { +@@ -396,45 +388,17 @@ fn muse_scheduler_two_image_requests_parallelism_two_match_isolated_runs() { + assert_eq!(wide_result.streamed, vec!["a", "a", "a"]); + } + +-#[test] +-fn b1_length_boundary_submits_one_decode_forward_per_post_prefill_token() { +- // max_tokens 0 and 1 both finish on the first token sampled by prefill; +- // 2 finishes on the synchronous bootstrap step; 3 and 4 reach the +- // terminal lookahead branch. None may submit or replay a future token. +- for (max_tokens, completion_tokens, decode_forwards) in +- [(0, 1, 0), (1, 1, 0), (2, 2, 1), (3, 3, 2), (4, 4, 3)] +- { +- let (summary, forwards) = run_b1_length_budget(max_tokens); +- assert_eq!( +- summary.completion_tokens, completion_tokens, +- "max_tokens={max_tokens}" +- ); +- assert_eq!(summary.finish_reason, "length", "max_tokens={max_tokens}"); +- assert_eq!( +- forwards, decode_forwards, +- "max_tokens={max_tokens} submitted an avoidable decode forward" +- ); +- } +-} +- + #[test] + fn b1_terminal_length_matches_the_unchanged_b2_path() { +- let (b1, b1_forwards) = run_terminal_length_path(1); +- let (b2, b2_forwards) = run_terminal_length_path(2); ++ let b1 = run_terminal_length_path(1); ++ let b2 = run_terminal_length_path(2); + + assert_eq!(b1, b2); + assert_eq!(b1.generated_tokens, vec![muse::GENERATED_TOKEN_ID; 3]); + assert_eq!(b1.finish_reason, FinishReason::Length); ++ assert_eq!(b1.final_pool_offset, 7); + assert_eq!(b1.final_offsets, vec![(true, 6, 6), (false, 6, 6)]); + assert_eq!(b1.stream.streamed, vec!["a", "a", "a"]); +- assert_eq!( +- b1_forwards, 2, +- "B=1 should not submit or replay past length" +- ); +- assert_eq!( +- b2_forwards, 4, +- "B=2 keeps the existing terminal teardown and replay path" +- ); + } + + #[test] +diff --git a/src/server/batch/scheduler_prompt_lookup_tests.rs b/src/server/batch/scheduler_prompt_lookup_tests.rs +index 347878c1..d3ab0f99 100644 +--- a/src/server/batch/scheduler_prompt_lookup_tests.rs ++++ b/src/server/batch/scheduler_prompt_lookup_tests.rs +@@ -150,6 +150,23 @@ fn enqueue_with( + prompt: &[i32], + max_tokens: usize, + stop_token_ids: &[i32], ++) -> (mpsc::Receiver, Arc) { ++ enqueue_with_sampling( ++ sched, ++ prompt, ++ max_tokens, ++ SamplingConfig { ++ stop_token_ids: stop_token_ids.to_vec(), ++ ..SamplingConfig::greedy() ++ }, ++ ) ++} ++ ++fn enqueue_with_sampling( ++ sched: &mut BatchScheduler, ++ prompt: &[i32], ++ max_tokens: usize, ++ sampling: SamplingConfig, + ) -> (mpsc::Receiver, Arc) { + let options = ServerGenerateOptions { + n_indent: 0, +@@ -161,10 +178,7 @@ fn enqueue_with( + logit_bias_texts: Vec::new(), + post_sampling_probs: false, + max_tokens, +- sampling: SamplingConfig { +- stop_token_ids: stop_token_ids.to_vec(), +- ..SamplingConfig::greedy() +- }, ++ sampling, + stop_sequences: None, + ignore_eos: false, + priority: RequestPriority::Normal, +@@ -271,6 +285,22 @@ fn assert_synchronous_state(sched: &mut BatchScheduler) { + } + } + ++/// Drain one request's stream and return its terminal result. ++fn completion(rx: &mpsc::Receiver) -> crate::server::GenerationResult { ++ let mut completed = None; ++ while let Ok(event) = rx.try_recv() { ++ match event { ++ GenerateEvent::Done(result) => { ++ assert!(completed.is_none(), "request completed more than once"); ++ completed = Some(result); ++ } ++ GenerateEvent::Error(err) => panic!("request failed: {err}"), ++ _ => {} ++ } ++ } ++ completed.expect("request completed") ++} ++ + /// The Done result's prompt-lookup acceptance counters `(proposed, + /// accepted)`, `None` when it reports no drafter. + fn acceptance(rx: &mpsc::Receiver) -> Option<(usize, usize)> { +@@ -400,6 +430,148 @@ fn a_concurrent_plain_row_gets_a_token_every_tick() { + assert_eq!(tokens_of(&done, PLAIN_PROMPT), cycle_from(9, 10)); + } + ++/// Issue #2227: every post-prefill B=1 token costs one decode forward, ++/// including the terminal token. The `max_tokens >= 3` cases reach the ++/// lookahead pipeline; without the terminal-budget guard they submit and ++/// replay two forwards on the final tick. ++#[test] ++fn b1_length_boundary_submits_one_decode_forward_per_post_prefill_token() { ++ for (max_tokens, completion_tokens, decode_forwards) in ++ [(0, 1, 0), (1, 1, 0), (2, 2, 1), (3, 3, 2), (4, 4, 3)] ++ { ++ let mut sched = scheduler(None); ++ let mut done = Done::new(); ++ let rx = enqueue(&mut sched, PLAIN_PROMPT, max_tokens); ++ drain(&mut sched, &mut done); ++ let result = completion(&rx); ++ assert_eq!( ++ result.generated_token_ids, ++ cycle_from(9, completion_tokens), ++ "max_tokens={max_tokens}" ++ ); ++ assert_eq!(result.finish_reason, "length", "max_tokens={max_tokens}"); ++ assert_eq!( ++ sched.decode_forward_calls, decode_forwards, ++ "max_tokens={max_tokens} submitted an avoidable decode forward" ++ ); ++ } ++} ++ ++/// The terminal B=1 tick commits its pending draw without another submit or ++/// replay. B=2 remains on the pre-existing two-append teardown and sync replay. ++#[test] ++fn b1_terminal_length_skips_two_forwards_and_leaves_b2_unchanged() { ++ let mut b1 = scheduler(None); ++ let mut b1_done = Done::new(); ++ let b1_rx = enqueue(&mut b1, PLAIN_PROMPT, 3); ++ assert_eq!(tick(&mut b1, &mut b1_done), Tick::Prefill); ++ let ids = vec![only_row(&b1)]; ++ assert!(b1.lookahead_params(&ids).is_some(), "dense B=1 is eligible"); ++ assert_eq!(tick(&mut b1, &mut b1_done), Tick::Decode); ++ assert!( ++ b1.decode_lookahead.is_some(), ++ "bootstrap decode primed the terminal token" ++ ); ++ assert_eq!(b1.decode_forward_calls, 2, "sync bootstrap plus prime"); ++ assert_eq!(tick(&mut b1, &mut b1_done), Tick::Decode); ++ assert_eq!( ++ b1.decode_forward_calls, 2, ++ "terminal B=1 commits the pending token without submit or replay" ++ ); ++ let b1_result = completion(&b1_rx); ++ assert_eq!(b1_result.generated_token_ids, cycle_from(9, 3)); ++ assert_eq!(b1_result.finish_reason, "length"); ++ ++ let sibling_prompt = [1, 3, 5, 7, 9]; ++ let mut b2 = scheduler(None); ++ let mut b2_done = Done::new(); ++ let target_rx = enqueue(&mut b2, PLAIN_PROMPT, 3); ++ let sibling_rx = enqueue(&mut b2, &sibling_prompt, 3); ++ assert_eq!(tick(&mut b2, &mut b2_done), Tick::Prefill); ++ assert_eq!(tick(&mut b2, &mut b2_done), Tick::Prefill); ++ let ids = b2.active_batch.sequence_ids(); ++ assert_eq!(ids.len(), 2, "both rows are active for B=2 decode"); ++ assert!(b2.lookahead_params(&ids).is_some(), "dense B=2 is eligible"); ++ assert_eq!(tick(&mut b2, &mut b2_done), Tick::Decode); ++ assert!( ++ b2.decode_lookahead.is_some(), ++ "B=2 bootstrap decode primed the terminal tokens" ++ ); ++ assert_eq!(b2.decode_forward_calls, 2, "batched bootstrap plus prime"); ++ assert_eq!(tick(&mut b2, &mut b2_done), Tick::Decode); ++ assert_eq!( ++ b2.decode_forward_calls, 4, ++ "B=2 keeps next submit, teardown, and synchronous replay" ++ ); ++ let target = completion(&target_rx); ++ let sibling = completion(&sibling_rx); ++ assert_eq!(target.generated_token_ids, b1_result.generated_token_ids); ++ assert_eq!(target.finish_reason, b1_result.finish_reason); ++ assert_eq!(sibling.generated_token_ids, cycle_from(10, 3)); ++ assert_eq!(sibling.finish_reason, "length"); ++} ++ ++/// An eligible stochastic row commits the device draw that was already ++/// pending. It neither advances the RNG with a future submit nor re-draws the ++/// terminal token synchronously. ++#[test] ++fn b1_stochastic_terminal_length_commits_the_pending_draw() { ++ let mut sched = scheduler(None); ++ let mut done = Done::new(); ++ let (rx, _cancelled) = enqueue_with_sampling( ++ &mut sched, ++ PLAIN_PROMPT, ++ 3, ++ SamplingConfig { ++ temperature: 1.0, ++ top_k: 0, ++ top_p: 1.0, ++ min_p: 0.0, ++ seed: Some(2227), ++ ..SamplingConfig::default() ++ }, ++ ); ++ assert_eq!(tick(&mut sched, &mut done), Tick::Prefill); ++ let ids = vec![only_row(&sched)]; ++ assert!( ++ sched.lookahead_params(&ids).is_some(), ++ "the seeded stochastic row stays fused-lookahead eligible" ++ ); ++ assert_eq!(tick(&mut sched, &mut done), Tick::Decode); ++ let pending = mlxcel_core::engine::try_tokens_to_host( ++ &sched ++ .decode_lookahead ++ .as_ref() ++ .expect("bootstrap decode primed the terminal stochastic draw") ++ .tokens, ++ ) ++ .expect("read pending stochastic draw")[0]; ++ assert_eq!(tick(&mut sched, &mut done), Tick::Decode); ++ assert_eq!(sched.decode_forward_calls, 2); ++ let result = completion(&rx); ++ assert_eq!(result.generated_token_ids.last(), Some(&pending)); ++ assert_eq!(result.finish_reason, "length"); ++} ++ ++/// EOS keeps precedence when the pending token also reaches `max_tokens`. ++/// The optimized terminal branch still finishes through `Engine::finish_rows`. ++#[test] ++fn b1_terminal_token_eos_precedes_the_length_boundary() { ++ let mut sched = scheduler(None); ++ let mut done = Done::new(); ++ let (rx, _cancelled) = enqueue_with(&mut sched, PLAIN_PROMPT, 3, &[11]); ++ assert_eq!(tick(&mut sched, &mut done), Tick::Prefill); ++ let ids = vec![only_row(&sched)]; ++ assert!(sched.lookahead_params(&ids).is_some()); ++ assert_eq!(tick(&mut sched, &mut done), Tick::Decode); ++ assert!(sched.decode_lookahead.is_some()); ++ assert_eq!(tick(&mut sched, &mut done), Tick::Decode); ++ assert_eq!(sched.decode_forward_calls, 2); ++ let result = completion(&rx); ++ assert_eq!(result.generated_token_ids, cycle_from(9, 2)); ++ assert_eq!(result.finish_reason, "stop"); ++} ++ + /// Rules 2 and 4 (I3): with the flag on and no row proposing, the lookahead + /// gate admits the batch and the ticks pipeline, as without the flag. + #[test] diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/run-status.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/run-status.txt new file mode 100644 index 000000000..01b5571c4 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/run-status.txt @@ -0,0 +1,2 @@ +rc=0 model=qwen3-1.7b-4bit completed=2026-10-11T19:31:46+09:00 +rc=0 model=llama-3.2-1b-instruct-4bit completed=2026-10-11T19:46:40+09:00 diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/run.sh b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/run.sh new file mode 100755 index 000000000..5763b9cd5 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/run.sh @@ -0,0 +1,83 @@ +#!/usr/bin/env bash +# Run this whole script under gpu-lock on an otherwise quiet host. The driver +# performs its own --hostgate check before every arm. +set -euo pipefail + +BASE_ROOT=/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-base-2227 +NEW_ROOT=/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227 +BASE_HEAD=4c44e317dcbc5a66548e6aed1cd01cdf36f97499 +NEW_BINARY_SOURCE_HEAD=${NEW_BINARY_SOURCE_HEAD:-7c8830cd5aa01198e6ff93b661f90c048ccaeb1d} +OUT=${OUT:-/tmp/mlxcel-auto-plan/2227-acceptance} +DRIVER="$NEW_ROOT/scripts/engine_bench_rounds.py" +PICK="$OUT/pick.sh" +MODEL_ROOT=/home/inureyes/models/mlx +BASE_BIN="$BASE_ROOT/target/release/mlxcel-bench-engine" +NEW_BIN="$NEW_ROOT/target/release/mlxcel-bench-engine" + +[[ $(git -C "$BASE_ROOT" rev-parse HEAD) == "$BASE_HEAD" ]] +new_checkout_head=$(git -C "$NEW_ROOT" rev-parse HEAD) +git -C "$NEW_ROOT" cat-file -e "$NEW_BINARY_SOURCE_HEAD^{commit}" +while IFS= read -r changed; do + case $changed in + docs/*|TECHNICAL_REPORTS/*|.gitattributes|src/server/batch/scheduler_muse_glimmer_parallel_tests.rs|src/server/batch/scheduler_prompt_lookup_tests.rs) ;; + *) echo "post-build path requires a fresh release build: $changed" >&2; exit 2 ;; + esac +done < <(git -C "$NEW_ROOT" diff --name-only "$NEW_BINARY_SOURCE_HEAD..$new_checkout_head") +test -x "$BASE_BIN" +test -x "$NEW_BIN" +test -x "$PICK" +test -f "$DRIVER" +unset MLXCEL_B1_DECODE_PROFILE MLXCEL_DEVICE MLXCEL_SDPA_DETERMINISTIC + +for model in qwen3-1.7b-4bit llama-3.2-1b-instruct-4bit; do + test ! -e "$OUT/single-$model.jsonl" + test ! -e "$OUT/single-$model.log" +done + +{ + date --iso-8601=seconds + hostname + uname -a + nvidia-smi --query-gpu=name,driver_version --format=csv,noheader + printf 'base_source_head=%s\n' "$(git -C "$BASE_ROOT" rev-parse HEAD)" + printf 'base_source_status_begin\n' + git -C "$BASE_ROOT" status --short + printf 'base_source_status_end\n' + sha256sum "$BASE_BIN" + stat --format='base_binary_size=%s base_binary_mtime=%y' "$BASE_BIN" + printf 'new_binary_source_head=%s\n' "$NEW_BINARY_SOURCE_HEAD" + printf 'new_checkout_head=%s\n' "$new_checkout_head" + printf 'new_source_status_begin\n' + git -C "$NEW_ROOT" status --short + printf 'new_source_status_end\n' + printf 'post_build_diff_begin\n' + git -C "$NEW_ROOT" diff --name-status "$NEW_BINARY_SOURCE_HEAD" "$new_checkout_head" + printf 'post_build_diff_end\n' + sha256sum "$NEW_BIN" + stat --format='new_binary_size=%s new_binary_mtime=%y' "$NEW_BIN" + printf 'mlx_pin=%s\n' "$("$NEW_ROOT/scripts/ci/mlx_pinned_commit.sh")" + printf 'MLXCEL_DEVICE=%s\n' "${MLXCEL_DEVICE-}" + printf 'MLXCEL_SDPA_DETERMINISTIC=%s\n' "${MLXCEL_SDPA_DETERMINISTIC-}" + printf 'base_is_ancestor_of_binary_source='; git -C "$NEW_ROOT" merge-base --is-ancestor "$BASE_HEAD" "$NEW_BINARY_SOURCE_HEAD" && echo yes + printf 'source_diff_stat_begin\n' + git -C "$NEW_ROOT" diff --stat "$BASE_HEAD..$NEW_BINARY_SOURCE_HEAD" + printf 'source_diff_stat_end\n' + sha256sum "$0" "$PICK" "$DRIVER" \ + "$OUT/binary-source-7c8830cd.patch" \ + "$OUT/post-build-test-only.diff" \ + "$OUT/binary-source-provenance.txt" +} > "$OUT/environment.txt" 2>&1 + +for model in qwen3-1.7b-4bit llama-3.2-1b-instruct-4bit; do + python3 "$DRIVER" \ + --bin "$PICK" \ + --model "$MODEL_ROOT/$model" \ + --prompt-tokens 256 8192 \ + --rounds 5 \ + --hostgate \ + --arm base-cli='--which base --path cli' \ + --arm new-srv-dense='--which new --path server --decode-storage dense' \ + --out "$OUT/single-$model.jsonl" \ + > "$OUT/single-$model.log" 2>&1 + printf 'rc=0 model=%s completed=%s\n' "$model" "$(date --iso-8601=seconds)" | tee -a "$OUT/run-status.txt" +done diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/single-llama-3.2-1b-instruct-4bit.jsonl b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/single-llama-3.2-1b-instruct-4bit.jsonl new file mode 100644 index 000000000..df004bc3f --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/single-llama-3.2-1b-instruct-4bit.jsonl @@ -0,0 +1,31 @@ +{"kind": "header", "model": "/home/inureyes/models/mlx/llama-3.2-1b-instruct-4bit", "bin": "/tmp/mlxcel-auto-plan/2227-acceptance/pick.sh", "arms": {"base-cli": ["--which", "base", "--path", "cli"], "new-srv-dense": ["--which", "new", "--path", "server", "--decode-storage", "dense"]}, "prompt_tokens": [256, 8192], "max_tokens": 128, "rounds": 5, "host": "spark-102", "time": 1791714706.3015811, "sdpa_deterministic": null} +{"path": "cli", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 13.091294999999999, "prefill_tok_s": 19554.97909106777, "decode_ms": 476.75374, "decode_tok_s": 268.482424490262, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli", "round": 0, "started": 1791714761.7572765, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 403.095976, "prefill_tok_s": 20322.7034943162, "decode_ms": 616.973786, "decode_tok_s": 207.464243869836, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli", "round": 0, "started": 1791714761.7572765, "gate_wait_s": 0, "ci_job_running": false} +{"path": "server", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 12.553593, "prefill_tok_s": 20392.568087877313, "decode_ms": 471.906905, "decode_tok_s": 271.23993873325503, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "new-srv-dense", "server_prompt_eval_ms": 12, "server_generation_ms": 472, "paged_decode_launches": 0, "arm": "new-srv-dense", "round": 0, "started": 1791714821.7145927, "gate_wait_s": 0, "ci_job_running": false} +{"path": "server", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 402.94082199999997, "prefill_tok_s": 20330.528833834564, "decode_ms": 616.682681, "decode_tok_s": 207.56217734611553, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "new-srv-dense", "server_prompt_eval_ms": 402, "server_generation_ms": 617, "paged_decode_launches": 0, "arm": "new-srv-dense", "round": 0, "started": 1791714821.7145927, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 13.16752, "prefill_tok_s": 19441.77795059358, "decode_ms": 475.55384200000003, "decode_tok_s": 269.1598483605564, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli-null", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli-null", "round": 0, "started": 1791714881.767963, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 403.723232, "prefill_tok_s": 20291.12855214634, "decode_ms": 617.0828630000001, "decode_tok_s": 207.42757200826688, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli-null", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli-null", "round": 0, "started": 1791714881.767963, "gate_wait_s": 0, "ci_job_running": false} +{"path": "server", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 12.581577, "prefill_tok_s": 20347.21084646225, "decode_ms": 472.13350199999996, "decode_tok_s": 271.1097591206311, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "new-srv-dense", "server_prompt_eval_ms": 12, "server_generation_ms": 472, "paged_decode_launches": 0, "arm": "new-srv-dense", "round": 1, "started": 1791714941.1804407, "gate_wait_s": 0, "ci_job_running": false} +{"path": "server", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 400.537902, "prefill_tok_s": 20452.496403199315, "decode_ms": 618.91138, "decode_tok_s": 206.81474624040683, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "new-srv-dense", "server_prompt_eval_ms": 400, "server_generation_ms": 619, "paged_decode_launches": 0, "arm": "new-srv-dense", "round": 1, "started": 1791714941.1804407, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 13.012014, "prefill_tok_s": 19674.12577330458, "decode_ms": 476.251052, "decode_tok_s": 268.76581051625686, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli-null", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli-null", "round": 1, "started": 1791715001.1620884, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 407.83419100000003, "prefill_tok_s": 20086.59445622596, "decode_ms": 617.031649, "decode_tok_s": 207.44478862217971, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli-null", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli-null", "round": 1, "started": 1791715001.1620884, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 14.200447, "prefill_tok_s": 18027.601525501275, "decode_ms": 478.807595, "decode_tok_s": 267.33076362332974, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli", "round": 1, "started": 1791715060.5176585, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 403.52810300000004, "prefill_tok_s": 20300.940477496308, "decode_ms": 617.913056, "decode_tok_s": 207.14888406565728, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli", "round": 1, "started": 1791715060.5176585, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 13.009243999999999, "prefill_tok_s": 19678.31489669961, "decode_ms": 480.70793299999997, "decode_tok_s": 266.27394975817884, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli-null", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli-null", "round": 2, "started": 1791715119.8121252, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 405.36068200000005, "prefill_tok_s": 20209.16276236184, "decode_ms": 619.108935, "decode_tok_s": 206.74875254384756, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli-null", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli-null", "round": 2, "started": 1791715119.8121252, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 13.825367, "prefill_tok_s": 18516.68747744635, "decode_ms": 475.84413800000004, "decode_tok_s": 268.99564327510956, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli", "round": 2, "started": 1791715179.1560116, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 403.47351999999995, "prefill_tok_s": 20303.686844182488, "decode_ms": 618.060691, "decode_tok_s": 207.09940279958687, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli", "round": 2, "started": 1791715179.1560116, "gate_wait_s": 0, "ci_job_running": false} +{"path": "server", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 13.025669, "prefill_tok_s": 19653.501098484845, "decode_ms": 473.61731699999996, "decode_tok_s": 270.2603883041717, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "new-srv-dense", "server_prompt_eval_ms": 12, "server_generation_ms": 474, "paged_decode_launches": 0, "arm": "new-srv-dense", "round": 2, "started": 1791715238.5798047, "gate_wait_s": 0, "ci_job_running": false} +{"path": "server", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 405.01093, "prefill_tok_s": 20226.61462494358, "decode_ms": 620.28008, "decode_tok_s": 206.3583921637464, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "new-srv-dense", "server_prompt_eval_ms": 404, "server_generation_ms": 620, "paged_decode_launches": 0, "arm": "new-srv-dense", "round": 2, "started": 1791715238.5798047, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 13.857056, "prefill_tok_s": 18474.34260206497, "decode_ms": 475.714384, "decode_tok_s": 269.06901347763323, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli", "round": 3, "started": 1791715298.6403618, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 403.191416, "prefill_tok_s": 20317.892878949584, "decode_ms": 618.536422, "decode_tok_s": 206.94011774782763, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli", "round": 3, "started": 1791715298.6403618, "gate_wait_s": 0, "ci_job_running": false} +{"path": "server", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 12.41948, "prefill_tok_s": 20612.77927900363, "decode_ms": 474.820182, "decode_tok_s": 269.57573593617803, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "new-srv-dense", "server_prompt_eval_ms": 12, "server_generation_ms": 474, "paged_decode_launches": 0, "arm": "new-srv-dense", "round": 3, "started": 1791715358.0521564, "gate_wait_s": 0, "ci_job_running": false} +{"path": "server", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 404.549534, "prefill_tok_s": 20249.683441731515, "decode_ms": 619.287342, "decode_tok_s": 206.68919146098096, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "new-srv-dense", "server_prompt_eval_ms": 404, "server_generation_ms": 619, "paged_decode_launches": 0, "arm": "new-srv-dense", "round": 3, "started": 1791715358.0521564, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 14.019927999999998, "prefill_tok_s": 18259.7228744684, "decode_ms": 542.90633, "decode_tok_s": 235.7681112320057, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli-null", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli-null", "round": 3, "started": 1791715418.1392863, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 404.321962, "prefill_tok_s": 20261.080945189915, "decode_ms": 620.319365, "decode_tok_s": 206.3453234286826, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli-null", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli-null", "round": 3, "started": 1791715418.1392863, "gate_wait_s": 0, "ci_job_running": false} +{"path": "server", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 12.402220999999999, "prefill_tok_s": 20641.464137754036, "decode_ms": 474.153696, "decode_tok_s": 269.95466043989245, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "new-srv-dense", "server_prompt_eval_ms": 12, "server_generation_ms": 474, "paged_decode_launches": 0, "arm": "new-srv-dense", "round": 4, "started": 1791715477.6179175, "gate_wait_s": 0, "ci_job_running": false} +{"path": "server", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 402.386268, "prefill_tok_s": 20358.547623200702, "decode_ms": 623.866341, "decode_tok_s": 205.1721524114089, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "new-srv-dense", "server_prompt_eval_ms": 402, "server_generation_ms": 623, "paged_decode_launches": 0, "arm": "new-srv-dense", "round": 4, "started": 1791715477.6179175, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 13.229830999999999, "prefill_tok_s": 19350.20938665052, "decode_ms": 476.08748, "decode_tok_s": 268.8581518673837, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli-null", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli-null", "round": 4, "started": 1791715537.6175692, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 404.340647, "prefill_tok_s": 20260.144659658716, "decode_ms": 618.1454269999999, "decode_tok_s": 207.07101340409983, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli-null", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli-null", "round": 4, "started": 1791715537.6175692, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 13.445531, "prefill_tok_s": 19039.783553360594, "decode_ms": 476.443977, "decode_tok_s": 268.65697999998014, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli", "round": 4, "started": 1791715596.9593813, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "llama-3.2-1b-instruct-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 404.103606, "prefill_tok_s": 20272.028950912158, "decode_ms": 616.666698, "decode_tok_s": 207.5675570208917, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli", "round": 4, "started": 1791715596.9593813, "gate_wait_s": 0, "ci_job_running": false} diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/single-llama-3.2-1b-instruct-4bit.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/single-llama-3.2-1b-instruct-4bit.log new file mode 100644 index 000000000..272615963 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/single-llama-3.2-1b-instruct-4bit.log @@ -0,0 +1,46 @@ +round 0 base-cli cli prompt 256 TTFT 13.09 ms decode 268.48 tok/s +round 0 base-cli cli prompt 8192 TTFT 403.10 ms decode 207.46 tok/s +round 0 new-srv-dense server prompt 256 TTFT 12.55 ms decode 271.24 tok/s +round 0 new-srv-dense server prompt 8192 TTFT 402.94 ms decode 207.56 tok/s +round 0 base-cli-null cli prompt 256 TTFT 13.17 ms decode 269.16 tok/s +round 0 base-cli-null cli prompt 8192 TTFT 403.72 ms decode 207.43 tok/s +round 1 new-srv-dense server prompt 256 TTFT 12.58 ms decode 271.11 tok/s +round 1 new-srv-dense server prompt 8192 TTFT 400.54 ms decode 206.81 tok/s +round 1 base-cli-null cli prompt 256 TTFT 13.01 ms decode 268.77 tok/s +round 1 base-cli-null cli prompt 8192 TTFT 407.83 ms decode 207.44 tok/s +round 1 base-cli cli prompt 256 TTFT 14.20 ms decode 267.33 tok/s +round 1 base-cli cli prompt 8192 TTFT 403.53 ms decode 207.15 tok/s +round 2 base-cli-null cli prompt 256 TTFT 13.01 ms decode 266.27 tok/s +round 2 base-cli-null cli prompt 8192 TTFT 405.36 ms decode 206.75 tok/s +round 2 base-cli cli prompt 256 TTFT 13.83 ms decode 269.00 tok/s +round 2 base-cli cli prompt 8192 TTFT 403.47 ms decode 207.10 tok/s +round 2 new-srv-dense server prompt 256 TTFT 13.03 ms decode 270.26 tok/s +round 2 new-srv-dense server prompt 8192 TTFT 405.01 ms decode 206.36 tok/s +round 3 base-cli cli prompt 256 TTFT 13.86 ms decode 269.07 tok/s +round 3 base-cli cli prompt 8192 TTFT 403.19 ms decode 206.94 tok/s +round 3 new-srv-dense server prompt 256 TTFT 12.42 ms decode 269.58 tok/s +round 3 new-srv-dense server prompt 8192 TTFT 404.55 ms decode 206.69 tok/s +round 3 base-cli-null cli prompt 256 TTFT 14.02 ms decode 235.77 tok/s +round 3 base-cli-null cli prompt 8192 TTFT 404.32 ms decode 206.35 tok/s +round 4 new-srv-dense server prompt 256 TTFT 12.40 ms decode 269.95 tok/s +round 4 new-srv-dense server prompt 8192 TTFT 402.39 ms decode 205.17 tok/s +round 4 base-cli-null cli prompt 256 TTFT 13.23 ms decode 268.86 tok/s +round 4 base-cli-null cli prompt 8192 TTFT 404.34 ms decode 207.07 tok/s +round 4 base-cli cli prompt 256 TTFT 13.45 ms decode 268.66 tok/s +round 4 base-cli cli prompt 8192 TTFT 404.10 ms decode 207.57 tok/s + +arm medians (min..max) per path and prompt length + cli prompt 256 base-cli n=5 ttft_ms 13.83 (13.09..14.20) decode_tok_s 268.66 (267.33..269.07) + cli prompt 256 base-cli-null n=5 ttft_ms 13.17 (13.01..14.02) decode_tok_s 268.77 (235.77..269.16) + cli prompt 8192 base-cli n=5 ttft_ms 403.47 (403.10..404.10) decode_tok_s 207.15 (206.94..207.57) + cli prompt 8192 base-cli-null n=5 ttft_ms 404.34 (403.72..407.83) decode_tok_s 207.07 (206.35..207.44) + server prompt 256 new-srv-dense n=5 ttft_ms 12.55 (12.40..13.03) decode_tok_s 270.26 (269.58..271.24) + server prompt 8192 new-srv-dense n=5 ttft_ms 402.94 (400.54..405.01) decode_tok_s 206.69 (205.17..207.56) + +paired per-round deltas, arm vs reference (positive = higher than the reference) + cli prompt 256 base-cli-null vs base-cli ttft_ms median -1.60% range -8.37%..+1.18% + cli prompt 256 base-cli-null vs base-cli decode_tok_s median +0.07% range -12.38%..+0.54% + cli prompt 8192 base-cli-null vs base-cli ttft_ms median +0.28% range +0.06%..+1.07% + cli prompt 8192 base-cli-null vs base-cli decode_tok_s median -0.17% range -0.29%..+0.14% + +the *-null rows are the noise floor: an A/B delta whose range overlaps the null range is unresolved diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/single-qwen3-1.7b-4bit.jsonl b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/single-qwen3-1.7b-4bit.jsonl new file mode 100644 index 000000000..49bd36628 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/single-qwen3-1.7b-4bit.jsonl @@ -0,0 +1,31 @@ +{"kind": "header", "model": "/home/inureyes/models/mlx/qwen3-1.7b-4bit", "bin": "/tmp/mlxcel-auto-plan/2227-acceptance/pick.sh", "arms": {"base-cli": ["--which", "base", "--path", "cli"], "new-srv-dense": ["--which", "new", "--path", "server", "--decode-storage", "dense"]}, "prompt_tokens": [256, 8192], "max_tokens": 128, "rounds": 5, "host": "spark-102", "time": 1791713790.0823674, "sdpa_deterministic": null} +{"path": "cli", "model": "qwen3-1.7b-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 19.193438999999998, "prefill_tok_s": 13337.891140821612, "decode_ms": 701.677099, "decode_tok_s": 182.42009064058112, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli", "round": 0, "started": 1791713845.563933, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "qwen3-1.7b-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 730.742901, "prefill_tok_s": 11210.509180163765, "decode_ms": 1187.518882, "decode_tok_s": 107.78775979075337, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli", "round": 0, "started": 1791713845.563933, "gate_wait_s": 0, "ci_job_running": false} +{"path": "server", "model": "qwen3-1.7b-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 18.832874999999998, "prefill_tok_s": 13593.251163192026, "decode_ms": 703.467086, "decode_tok_s": 181.9559188302948, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "new-srv-dense", "server_prompt_eval_ms": 18, "server_generation_ms": 704, "paged_decode_launches": 0, "arm": "new-srv-dense", "round": 0, "started": 1791713906.7652104, "gate_wait_s": 0, "ci_job_running": false} +{"path": "server", "model": "qwen3-1.7b-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 744.687211, "prefill_tok_s": 11000.591763888906, "decode_ms": 1187.057254, "decode_tok_s": 107.82967676468957, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "new-srv-dense", "server_prompt_eval_ms": 744, "server_generation_ms": 1187, "paged_decode_launches": 0, "arm": "new-srv-dense", "round": 0, "started": 1791713906.7652104, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "qwen3-1.7b-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 18.879004000000002, "prefill_tok_s": 13560.037383328061, "decode_ms": 704.572102, "decode_tok_s": 181.67054817620357, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli-null", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli-null", "round": 0, "started": 1791713968.1661365, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "qwen3-1.7b-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 746.6576620000001, "prefill_tok_s": 10971.560886493655, "decode_ms": 1179.7890049999999, "decode_tok_s": 108.49397600548075, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli-null", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli-null", "round": 0, "started": 1791713968.1661365, "gate_wait_s": 0, "ci_job_running": false} +{"path": "server", "model": "qwen3-1.7b-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 18.312983000000003, "prefill_tok_s": 13979.153478163551, "decode_ms": 698.5915689999999, "decode_tok_s": 183.22580128361096, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "new-srv-dense", "server_prompt_eval_ms": 17, "server_generation_ms": 699, "paged_decode_launches": 0, "arm": "new-srv-dense", "round": 1, "started": 1791714029.1647003, "gate_wait_s": 0, "ci_job_running": false} +{"path": "server", "model": "qwen3-1.7b-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 730.55822, "prefill_tok_s": 11213.343133693026, "decode_ms": 1180.8782039999999, "decode_tok_s": 108.39390511775422, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "new-srv-dense", "server_prompt_eval_ms": 730, "server_generation_ms": 1181, "paged_decode_launches": 0, "arm": "new-srv-dense", "round": 1, "started": 1791714029.1647003, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "qwen3-1.7b-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 18.93891, "prefill_tok_s": 13517.145390099007, "decode_ms": 704.025878, "decode_tok_s": 181.8114986960749, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli-null", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli-null", "round": 1, "started": 1791714090.4862142, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "qwen3-1.7b-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 740.5944989999999, "prefill_tok_s": 11061.383808631288, "decode_ms": 1187.83332, "decode_tok_s": 107.75922669015549, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli-null", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli-null", "round": 1, "started": 1791714090.4862142, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "qwen3-1.7b-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 18.848364999999998, "prefill_tok_s": 13582.079931070944, "decode_ms": 709.353337, "decode_tok_s": 180.44603912253112, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli", "round": 1, "started": 1791714151.3383646, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "qwen3-1.7b-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 747.242885, "prefill_tok_s": 10962.968218827536, "decode_ms": 1188.352188, "decode_tok_s": 107.71217597993768, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli", "round": 1, "started": 1791714151.3383646, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "qwen3-1.7b-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 19.06504, "prefill_tok_s": 13427.719008195107, "decode_ms": 707.21681, "decode_tok_s": 180.9911729897936, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli-null", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli-null", "round": 2, "started": 1791714212.259059, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "qwen3-1.7b-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 742.3036400000001, "prefill_tok_s": 11035.915168084046, "decode_ms": 1183.034897, "decode_tok_s": 108.19630116118206, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli-null", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli-null", "round": 2, "started": 1791714212.259059, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "qwen3-1.7b-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 17.839714, "prefill_tok_s": 14350.005835295342, "decode_ms": 705.642511, "decode_tok_s": 181.3949670047586, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli", "round": 2, "started": 1791714273.1679294, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "qwen3-1.7b-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 744.40868, "prefill_tok_s": 11004.707790349785, "decode_ms": 1185.692489, "decode_tok_s": 107.95379171875652, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli", "round": 2, "started": 1791714273.1679294, "gate_wait_s": 0, "ci_job_running": false} +{"path": "server", "model": "qwen3-1.7b-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 19.183761, "prefill_tok_s": 13344.619962686149, "decode_ms": 700.3842850000001, "decode_tok_s": 182.75681328286797, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "new-srv-dense", "server_prompt_eval_ms": 18, "server_generation_ms": 701, "paged_decode_launches": 0, "arm": "new-srv-dense", "round": 2, "started": 1791714334.0616434, "gate_wait_s": 0, "ci_job_running": false} +{"path": "server", "model": "qwen3-1.7b-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 732.813646, "prefill_tok_s": 11178.8311321921, "decode_ms": 1181.917211, "decode_tok_s": 108.29861754166468, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "new-srv-dense", "server_prompt_eval_ms": 732, "server_generation_ms": 1182, "paged_decode_launches": 0, "arm": "new-srv-dense", "round": 2, "started": 1791714334.0616434, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "qwen3-1.7b-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 17.851378, "prefill_tok_s": 14340.62961413959, "decode_ms": 707.558401, "decode_tok_s": 180.90379510595338, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli", "round": 3, "started": 1791714395.366161, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "qwen3-1.7b-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 753.757753, "prefill_tok_s": 10868.213252063226, "decode_ms": 1188.354011, "decode_tok_s": 107.71201074357295, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli", "round": 3, "started": 1791714395.366161, "gate_wait_s": 0, "ci_job_running": false} +{"path": "server", "model": "qwen3-1.7b-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 19.137457, "prefill_tok_s": 13376.907914149722, "decode_ms": 703.564426, "decode_tok_s": 181.93074474746112, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "new-srv-dense", "server_prompt_eval_ms": 18, "server_generation_ms": 704, "paged_decode_launches": 0, "arm": "new-srv-dense", "round": 3, "started": 1791714456.271718, "gate_wait_s": 0, "ci_job_running": false} +{"path": "server", "model": "qwen3-1.7b-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 755.5631529999999, "prefill_tok_s": 10842.243917630536, "decode_ms": 1187.3106149999999, "decode_tok_s": 107.80666691841209, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "new-srv-dense", "server_prompt_eval_ms": 755, "server_generation_ms": 1187, "paged_decode_launches": 0, "arm": "new-srv-dense", "round": 3, "started": 1791714456.271718, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "qwen3-1.7b-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 18.762189, "prefill_tok_s": 13644.463340604874, "decode_ms": 707.2696870000001, "decode_tok_s": 180.9776417011917, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli-null", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli-null", "round": 3, "started": 1791714517.6766334, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "qwen3-1.7b-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 729.040853, "prefill_tok_s": 11236.68168428416, "decode_ms": 1185.489851, "decode_tok_s": 107.9722444625129, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli-null", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli-null", "round": 3, "started": 1791714517.6766334, "gate_wait_s": 0, "ci_job_running": false} +{"path": "server", "model": "qwen3-1.7b-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 18.400983999999998, "prefill_tok_s": 13912.299472680375, "decode_ms": 704.1722500000001, "decode_tok_s": 181.77370664634967, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "new-srv-dense", "server_prompt_eval_ms": 18, "server_generation_ms": 704, "paged_decode_launches": 0, "arm": "new-srv-dense", "round": 4, "started": 1791714578.5507462, "gate_wait_s": 0, "ci_job_running": false} +{"path": "server", "model": "qwen3-1.7b-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 735.799347, "prefill_tok_s": 11133.470060010803, "decode_ms": 1185.762948, "decode_tok_s": 107.94737701654007, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "new-srv-dense", "server_prompt_eval_ms": 735, "server_generation_ms": 1186, "paged_decode_launches": 0, "arm": "new-srv-dense", "round": 4, "started": 1791714578.5507462, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "qwen3-1.7b-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 19.050352, "prefill_tok_s": 13438.071905443006, "decode_ms": 706.863066, "decode_tok_s": 181.08174858297093, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli-null", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli-null", "round": 4, "started": 1791714639.909957, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "qwen3-1.7b-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 736.048697, "prefill_tok_s": 11129.698392768163, "decode_ms": 1192.3578420000001, "decode_tok_s": 107.35032344426011, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli-null", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli-null", "round": 4, "started": 1791714639.909957, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "qwen3-1.7b-4bit", "prompt_target_len": 256, "prompt_tokens": 256, "generated_tokens": 128, "ttft_ms": 18.549179, "prefill_tok_s": 13801.149905340824, "decode_ms": 707.246402, "decode_tok_s": 180.98360011169063, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli", "round": 4, "started": 1791714700.8508868, "gate_wait_s": 0, "ci_job_running": false} +{"path": "cli", "model": "qwen3-1.7b-4bit", "prompt_target_len": 8192, "prompt_tokens": 8192, "generated_tokens": 128, "ttft_ms": 738.379765, "prefill_tok_s": 11094.561888488372, "decode_ms": 1190.792806, "decode_tok_s": 107.49141190226506, "prefill_chunk": 2048, "decode_storage": "dense", "max_tokens": 128, "label": "base-cli", "server_prompt_eval_ms": null, "server_generation_ms": null, "paged_decode_launches": null, "arm": "base-cli", "round": 4, "started": 1791714700.8508868, "gate_wait_s": 0, "ci_job_running": false} diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/single-qwen3-1.7b-4bit.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/single-qwen3-1.7b-4bit.log new file mode 100644 index 000000000..7e19ad2ff --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/acceptance/single-qwen3-1.7b-4bit.log @@ -0,0 +1,46 @@ +round 0 base-cli cli prompt 256 TTFT 19.19 ms decode 182.42 tok/s +round 0 base-cli cli prompt 8192 TTFT 730.74 ms decode 107.79 tok/s +round 0 new-srv-dense server prompt 256 TTFT 18.83 ms decode 181.96 tok/s +round 0 new-srv-dense server prompt 8192 TTFT 744.69 ms decode 107.83 tok/s +round 0 base-cli-null cli prompt 256 TTFT 18.88 ms decode 181.67 tok/s +round 0 base-cli-null cli prompt 8192 TTFT 746.66 ms decode 108.49 tok/s +round 1 new-srv-dense server prompt 256 TTFT 18.31 ms decode 183.23 tok/s +round 1 new-srv-dense server prompt 8192 TTFT 730.56 ms decode 108.39 tok/s +round 1 base-cli-null cli prompt 256 TTFT 18.94 ms decode 181.81 tok/s +round 1 base-cli-null cli prompt 8192 TTFT 740.59 ms decode 107.76 tok/s +round 1 base-cli cli prompt 256 TTFT 18.85 ms decode 180.45 tok/s +round 1 base-cli cli prompt 8192 TTFT 747.24 ms decode 107.71 tok/s +round 2 base-cli-null cli prompt 256 TTFT 19.07 ms decode 180.99 tok/s +round 2 base-cli-null cli prompt 8192 TTFT 742.30 ms decode 108.20 tok/s +round 2 base-cli cli prompt 256 TTFT 17.84 ms decode 181.39 tok/s +round 2 base-cli cli prompt 8192 TTFT 744.41 ms decode 107.95 tok/s +round 2 new-srv-dense server prompt 256 TTFT 19.18 ms decode 182.76 tok/s +round 2 new-srv-dense server prompt 8192 TTFT 732.81 ms decode 108.30 tok/s +round 3 base-cli cli prompt 256 TTFT 17.85 ms decode 180.90 tok/s +round 3 base-cli cli prompt 8192 TTFT 753.76 ms decode 107.71 tok/s +round 3 new-srv-dense server prompt 256 TTFT 19.14 ms decode 181.93 tok/s +round 3 new-srv-dense server prompt 8192 TTFT 755.56 ms decode 107.81 tok/s +round 3 base-cli-null cli prompt 256 TTFT 18.76 ms decode 180.98 tok/s +round 3 base-cli-null cli prompt 8192 TTFT 729.04 ms decode 107.97 tok/s +round 4 new-srv-dense server prompt 256 TTFT 18.40 ms decode 181.77 tok/s +round 4 new-srv-dense server prompt 8192 TTFT 735.80 ms decode 107.95 tok/s +round 4 base-cli-null cli prompt 256 TTFT 19.05 ms decode 181.08 tok/s +round 4 base-cli-null cli prompt 8192 TTFT 736.05 ms decode 107.35 tok/s +round 4 base-cli cli prompt 256 TTFT 18.55 ms decode 180.98 tok/s +round 4 base-cli cli prompt 8192 TTFT 738.38 ms decode 107.49 tok/s + +arm medians (min..max) per path and prompt length + cli prompt 256 base-cli n=5 ttft_ms 18.55 (17.84..19.19) decode_tok_s 180.98 (180.45..182.42) + cli prompt 256 base-cli-null n=5 ttft_ms 18.94 (18.76..19.07) decode_tok_s 181.08 (180.98..181.81) + cli prompt 8192 base-cli n=5 ttft_ms 744.41 (730.74..753.76) decode_tok_s 107.71 (107.49..107.95) + cli prompt 8192 base-cli-null n=5 ttft_ms 740.59 (729.04..746.66) decode_tok_s 107.97 (107.35..108.49) + server prompt 256 new-srv-dense n=5 ttft_ms 18.83 (18.31..19.18) decode_tok_s 181.96 (181.77..183.23) + server prompt 8192 new-srv-dense n=5 ttft_ms 735.80 (730.56..755.56) decode_tok_s 107.95 (107.81..108.39) + +paired per-round deltas, arm vs reference (positive = higher than the reference) + cli prompt 256 base-cli-null vs base-cli ttft_ms median +2.70% range -1.64%..+6.87% + cli prompt 256 base-cli-null vs base-cli decode_tok_s median +0.04% range -0.41%..+0.76% + cli prompt 8192 base-cli-null vs base-cli ttft_ms median -0.32% range -3.28%..+2.18% + cli prompt 8192 base-cli-null vs base-cli decode_tok_s median +0.22% range -0.13%..+0.66% + +the *-null rows are the noise floor: an A/B delta whose range overlaps the null range is unresolved diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/command.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/command.txt new file mode 100644 index 000000000..83d37444b --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/command.txt @@ -0,0 +1 @@ +MLXCEL_B1_DECODE_PROFILE= MLXCEL_DEVICE=gpu MLXCEL_SDPA_DETERMINISTIC=1 /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/release/mlxcel run models/mlx/qwen3-1.7b-4bit -p Reply\ with\ exactly\ one\ short\ sentence\ naming\ the\ capital\ of\ France. -n 64 --temp 0 --top-k 0 --top-p 1 --min-p 0 --seed 2227 --show-reasoning diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/comparison.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/comparison.txt new file mode 100644 index 000000000..4c9ffb6f2 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/comparison.txt @@ -0,0 +1 @@ +byte_identical_to_before=yes diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/generated.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/generated.txt new file mode 100644 index 000000000..f18e938d7 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/generated.txt @@ -0,0 +1,2 @@ + +Okay, the user wants the capital of France in one sentence. Let me think. France's capital is Paris, right? Yeah, Paris is the capital. I should just state that clearly. Wait, the user specified exactly one sentence. So I need to make sure it's just the capital name. No \ No newline at end of file diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/output-sha256.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/output-sha256.txt new file mode 100644 index 000000000..7bb31dfcc --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/output-sha256.txt @@ -0,0 +1,3 @@ +5fb94a075297d360c33873139eb28acbeb3556e67fb1030b6221d6641d822822 /tmp/mlxcel-auto-plan/2227-run-parity/after-valid/stdout.txt +e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 /tmp/mlxcel-auto-plan/2227-run-parity/after-valid/stderr.txt +ecbb6c3137fa73714f6fe6df1dd6414b14c6af75796efe19662a3aaab50eaea6 /tmp/mlxcel-auto-plan/2227-run-parity/after-valid/generated.txt diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/prompt.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/prompt.txt new file mode 100644 index 000000000..1cfcc34ce --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/prompt.txt @@ -0,0 +1 @@ +Reply with exactly one short sentence naming the capital of France. \ No newline at end of file diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/provenance.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/provenance.txt new file mode 100644 index 000000000..ed37bf212 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/provenance.txt @@ -0,0 +1,38 @@ +2026-10-11T18:55:50+09:00 +spark-102 +Linux spark-102 7.0.0-1019-nvidia #19~24.04.2-Ubuntu SMP PREEMPT_DYNAMIC Sun Sep 6 18:35:11 UTC 2 aarch64 aarch64 aarch64 GNU/Linux +binary_source_head=7c8830cd5aa01198e6ff93b661f90c048ccaeb1d +checkout_head=93e2f9abb3127eb64d414b9dddc4224cce3c703b +checkout_status_begin + M src/server/batch/scheduler/decode_tick.rs +checkout_status_end +post_build_diff_begin +M src/server/batch/scheduler_muse_glimmer_parallel_tests.rs +M src/server/batch/scheduler_prompt_lookup_tests.rs +post_build_diff_end +b9b68fef6d85f8d733afbbefa00674e4332b424a56f626cde5db7c9c70e58501 /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/release/mlxcel +binary_size=108040776 binary_mtime=2026-10-11 18:23:15.769971600 +0900 +mlx_pin=81ba1c6a0e50a9268b931579c2d4f1158b9aab5a +229e206d9df229704fffb316c9be0aef7da348696fff5b80a52f736cf1e26dd1 /tmp/mlxcel-auto-plan/2227-run-parity/capture-run-after.sh +fcae8b4cb063c6a76cdb7468633853ddd5ef2f4f2e948fe75ecc1638eaee3cec /tmp/mlxcel-auto-plan/2227-profile/extract-run-text.py +ecbb6c3137fa73714f6fe6df1dd6414b14c6af75796efe19662a3aaab50eaea6 /tmp/mlxcel-auto-plan/2227-run-parity/before-valid/generated.txt +Sun Oct 11 18:55:50 2026 ++-----------------------------------------------------------------------------------------+ +| NVIDIA-SMI 580.178.04 Driver Version: 580.178.04 CUDA Version: 13.0 | ++-----------------------------------------+------------------------+----------------------+ +| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | +| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | +| | | MIG M. | +|=========================================+========================+======================| +| 0 NVIDIA GB10 On | 0000000F:01:00.0 Off | N/A | +| N/A 55C P8 6W / N/A | Not Supported | 0% Default | +| | | N/A | ++-----------------------------------------+------------------------+----------------------+ + ++-----------------------------------------------------------------------------------------+ +| Processes: | +| GPU GI CI PID Type Process name GPU Memory | +| ID ID Usage | +|=========================================================================================| +| No running processes found | ++-----------------------------------------------------------------------------------------+ diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/stderr.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/stderr.txt new file mode 100644 index 000000000..e69de29bb diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/stdout.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/stdout.txt new file mode 100644 index 000000000..df24f6583 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/after-valid/stdout.txt @@ -0,0 +1,9 @@ +Runtime device: NVIDIA GPU (CUDA) +Wired memory limit: 121.7 GB +Loading model from "models/mlx/qwen3-1.7b-4bit"... +Model loaded in 1.08s. +Generating... + +Okay, the user wants the capital of France in one sentence. Let me think. France's capital is Paris, right? Yeah, Paris is the capital. I should just state that clearly. Wait, the user specified exactly one sentence. So I need to make sure it's just the capital name. No + +[Generated 64 tokens in 0.34s = 190.48 tok/s] diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/command.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/command.txt new file mode 100644 index 000000000..83d37444b --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/command.txt @@ -0,0 +1 @@ +MLXCEL_B1_DECODE_PROFILE= MLXCEL_DEVICE=gpu MLXCEL_SDPA_DETERMINISTIC=1 /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/release/mlxcel run models/mlx/qwen3-1.7b-4bit -p Reply\ with\ exactly\ one\ short\ sentence\ naming\ the\ capital\ of\ France. -n 64 --temp 0 --top-k 0 --top-p 1 --min-p 0 --seed 2227 --show-reasoning diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/generated.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/generated.txt new file mode 100644 index 000000000..f18e938d7 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/generated.txt @@ -0,0 +1,2 @@ + +Okay, the user wants the capital of France in one sentence. Let me think. France's capital is Paris, right? Yeah, Paris is the capital. I should just state that clearly. Wait, the user specified exactly one sentence. So I need to make sure it's just the capital name. No \ No newline at end of file diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/output-sha256.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/output-sha256.txt new file mode 100644 index 000000000..a9e896235 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/output-sha256.txt @@ -0,0 +1,3 @@ +34599797d5d8a5dd2d17ba0b8327faf51705def13a04b1c11d2dffeba4c93dac /tmp/mlxcel-auto-plan/2227-run-parity/before-valid/stdout.txt +e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 /tmp/mlxcel-auto-plan/2227-run-parity/before-valid/stderr.txt +ecbb6c3137fa73714f6fe6df1dd6414b14c6af75796efe19662a3aaab50eaea6 /tmp/mlxcel-auto-plan/2227-run-parity/before-valid/generated.txt diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/profile-instrumentation.patch b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/profile-instrumentation.patch new file mode 100644 index 000000000..2194c47c0 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/profile-instrumentation.patch @@ -0,0 +1,472 @@ +diff --git a/src/server/batch/scheduler/config.rs b/src/server/batch/scheduler/config.rs +index 4a9e4fa5..03f9d950 100644 +--- a/src/server/batch/scheduler/config.rs ++++ b/src/server/batch/scheduler/config.rs +@@ -105,6 +105,7 @@ impl BatchScheduler { + request_rx, + batch_metrics, + batch_observability, ++ b1_decode_profile: b1_profile::B1DecodeProfile::new(), + config_eos, + prefill_chunk_policy: mlxcel_core::prefill_plan::PrefillChunkPolicy::resolve(Some( + prefill_chunk_size, +diff --git a/src/server/batch/scheduler/decode_tick.rs b/src/server/batch/scheduler/decode_tick.rs +index 01e4222b..46a1c3e3 100644 +--- a/src/server/batch/scheduler/decode_tick.rs ++++ b/src/server/batch/scheduler/decode_tick.rs +@@ -517,7 +517,10 @@ impl BatchScheduler { + } + } + let input = mlxcel_core::from_slice_i32(&last_tokens, &[seq_ids.len() as i32, 1]); ++ let profile_started = self.b1_decode_profile.start(); + self.decode_lookahead = self.prime_lookahead_with_input(seq_ids, &input, ¶ms); ++ self.b1_decode_profile ++ .record(b1_profile::Stage::LookaheadSubmit, profile_started); + } + + /// Submit one pipelined step for `seq_ids` on `input` (`[B, 1]`): the +@@ -608,9 +611,13 @@ impl BatchScheduler { + // through the host read below. This appends a second speculative KV + // position per sequence (the overshoot the issue accepts). + let next_input = mlxcel_core::engine::lookahead_feedback_input(&la.tokens); ++ let submit_started = self.b1_decode_profile.start(); + let next = self.prime_lookahead_with_input(seq_ids, &next_input, params); ++ self.b1_decode_profile ++ .record(b1_profile::Stage::LookaheadSubmit, submit_started); + + // Step 2: read step n's tokens to host (the sync point) and finish-check. ++ let collect_started = self.b1_decode_profile.start(); + let toks = match mlxcel_core::engine::try_tokens_to_host(&la.tokens) { + Ok(tokens) => tokens, + Err(msg) => { +@@ -618,6 +625,8 @@ impl BatchScheduler { + Vec::new() + } + }; ++ self.b1_decode_profile ++ .record(b1_profile::Stage::LookaheadCollect, collect_started); + let mut finishing = toks.len() != seq_ids.len(); + if !finishing { + for (i, &seq_id) in seq_ids.iter().enumerate() { +@@ -769,21 +778,39 @@ impl BatchScheduler { + let context = self.context_bound(); + let batch = StepBatch { seq_ids, input }; + let stepped = { ++ let lookup_started = self.b1_decode_profile.start(); + let Some(seqs) = self.active_batch.get_rows_mut(seq_ids) else { ++ self.b1_decode_profile ++ .record(b1_profile::Stage::RowLookup, lookup_started); + tracing::warn!("a sequence left the active batch before its decode step"); + return; + }; ++ self.b1_decode_profile ++ .record(b1_profile::Stage::RowLookup, lookup_started); + let tokenizer = &self.tokenizer; ++ let build_started = self.b1_decode_profile.start(); + let mut rows: Vec<_> = seqs + .into_iter() + .map(|seq| step_rows::step_row(seq, tokenizer, context, false)) + .collect(); +- self.engine.step(&batch, &mut rows) ++ self.b1_decode_profile ++ .record(b1_profile::Stage::RowBuild, build_started); ++ let engine_started = self.b1_decode_profile.start(); ++ let stepped = self.engine.step(&batch, &mut rows); ++ self.b1_decode_profile ++ .record(b1_profile::Stage::EngineStep, engine_started); ++ stepped + }; + match stepped { + Ok(out) => { ++ let finish_started = self.b1_decode_profile.start(); + self.finish_rows_state(&out.rows); ++ self.b1_decode_profile ++ .record(b1_profile::Stage::FinishState, finish_started); ++ let apply_started = self.b1_decode_profile.start(); + self.apply_row_outcomes(&out.rows); ++ self.b1_decode_profile ++ .record(b1_profile::Stage::ApplyOutcomes, apply_started); + } + Err(err) => tracing::error!("{err} during decode"), + } +@@ -848,23 +875,43 @@ impl BatchScheduler { + ); + let context = self.context_bound(); + let outcomes = { ++ let lookup_started = self.b1_decode_profile.start(); + let Some(seqs) = self.active_batch.get_rows_mut(seq_ids) else { ++ self.b1_decode_profile ++ .record(b1_profile::Stage::RowLookup, lookup_started); + tracing::warn!("a sequence left the active batch before its pipelined step"); + return; + }; ++ self.b1_decode_profile ++ .record(b1_profile::Stage::RowLookup, lookup_started); + let tokenizer = &self.tokenizer; ++ let build_started = self.b1_decode_profile.start(); + let mut rows: Vec<_> = seqs + .into_iter() + .map(|seq| step_rows::step_row(seq, tokenizer, context, false)) + .collect(); +- self.engine.finish_rows(tokens, &mut rows) ++ self.b1_decode_profile ++ .record(b1_profile::Stage::RowBuild, build_started); ++ let finish_started = self.b1_decode_profile.start(); ++ let outcomes = self.engine.finish_rows(tokens, &mut rows); ++ self.b1_decode_profile ++ .record(b1_profile::Stage::FusedFinishRows, finish_started); ++ outcomes + }; ++ let finish_state_started = self.b1_decode_profile.start(); + self.finish_rows_state(&outcomes); ++ self.b1_decode_profile.record( ++ b1_profile::Stage::FinishState, ++ finish_state_started, ++ ); + // The gate keeps per-row failures off this path; a failed row here is + // the engine refusing a token count that does not match the rows, and + // it must finish with an error rather than stall. + if outcomes.iter().any(|outcome| outcome.error.is_some()) { ++ let apply_started = self.b1_decode_profile.start(); + self.apply_row_outcomes(&outcomes); ++ self.b1_decode_profile ++ .record(b1_profile::Stage::ApplyOutcomes, apply_started); + } + } + +diff --git a/src/server/batch/scheduler/mod.rs b/src/server/batch/scheduler/mod.rs +index a1b6aa9c..073d11da 100644 +--- a/src/server/batch/scheduler/mod.rs ++++ b/src/server/batch/scheduler/mod.rs +@@ -337,6 +337,8 @@ pub struct BatchScheduler { + batch_metrics: Arc, + /// Detailed observability counters (prefill, decode, cache). + batch_observability: Arc, ++ /// Temporary issue #2227 pre-change host-time attribution. ++ b1_decode_profile: b1_profile::B1DecodeProfile, + + // -- Configuration -- + config_eos: Vec, +@@ -948,6 +950,7 @@ fn validate_dense_detached_kv_modes_against_table( + + mod admission; + mod admission_watermark; ++pub(crate) mod b1_profile; + mod block_reclaim; + mod config; + mod decode_tick; +diff --git a/src/server/batch/scheduler/run_loop.rs b/src/server/batch/scheduler/run_loop.rs +index 207b4cbe..cfd842ba 100644 +--- a/src/server/batch/scheduler/run_loop.rs ++++ b/src/server/batch/scheduler/run_loop.rs +@@ -257,6 +257,14 @@ impl BatchScheduler { + install_thread_local_default_stream(self.generation_stream.as_ref()); + + loop { ++ // Temporary issue #2227 profile: an active B=1 row at loop entry ++ // means prefill has ended and the next measurements belong to the ++ // decode request, so discard startup/prefill samples here. ++ if self.active_batch.len() == 1 { ++ self.b1_decode_profile.begin_decode_tick(); ++ } ++ let profile_tick_started = self.b1_decode_profile.start(); ++ let mut profiled_decode = false; + // 1. Non-blocking drain of all pending requests + self.drain_incoming_requests(); + +@@ -304,6 +312,7 @@ impl BatchScheduler { + } + BatchSchedulerAction::Decode(ids) => { + self.execute_decode_step(&ids); ++ profiled_decode = ids.len() == 1; + // A classic action ran: the next tick goes back to the + // in-flight speculative slice, if any (issue #734). + self.speculative_slice_yielded = false; +@@ -406,11 +415,23 @@ impl BatchScheduler { + } + + // 4. Clean up completed sequences ++ let finalize_started = self.b1_decode_profile.start(); + self.finalize_completed(); ++ self.b1_decode_profile.record( ++ b1_profile::Stage::FinalizeCompleted, ++ finalize_started, ++ ); ++ if profiled_decode { ++ self.b1_decode_profile.record_tick(profile_tick_started); ++ if self.active_batch.is_empty() { ++ self.b1_decode_profile.emit_and_reset(); ++ } ++ } + } + } + + pub(super) fn publish_metrics(&self) { ++ let profile_started = self.b1_decode_profile.start(); + let active = self.active_batch.len(); + let queued = self.prefill_queue.len(); + let paged_stats = self.engine.pool().paged_stats(); +@@ -434,5 +455,7 @@ impl BatchScheduler { + // makes the answer readable from `/health` without a profiler. + self.batch_observability + .update_paged_decode_gauges(mlxcel_core::cache::paged_batch_decode_stats()); ++ self.b1_decode_profile ++ .record(b1_profile::Stage::Metrics, profile_started); + } + } +diff --git a/src/server/batch/sequence.rs b/src/server/batch/sequence.rs +index cb4166ef..7e40c858 100644 +--- a/src/server/batch/sequence.rs ++++ b/src/server/batch/sequence.rs +@@ -728,7 +728,9 @@ pub(crate) fn emit_decoded_piece( + Some(lp) => GenerateEvent::TokenWithLogprobs(text, meta, lp), + None => GenerateEvent::Token(text, meta), + }; ++ let send_started = super::scheduler::b1_profile::started(); + let _ = response_tx.send(event); ++ super::scheduler::b1_profile::record_event_send(send_started); + return None; + } + +@@ -747,7 +749,9 @@ pub(crate) fn emit_decoded_piece( + Some(lp) => GenerateEvent::TokenWithLogprobs(chunk.emit, meta, lp), + None => GenerateEvent::Token(chunk.emit, meta), + }; ++ let send_started = super::scheduler::b1_profile::started(); + let _ = response_tx.send(event); ++ super::scheduler::b1_profile::record_event_send(send_started); + chunk.matched + } + +diff --git a/src/server/batch/scheduler/b1_profile.rs b/src/server/batch/scheduler/b1_profile.rs +new file mode 100644 +index 00000000..2be204a0 +--- /dev/null ++++ b/src/server/batch/scheduler/b1_profile.rs +@@ -0,0 +1,226 @@ ++// Copyright 2025-2026 Lablup Inc. ++// ++// Licensed under the Apache License, Version 2.0 (the "License"); ++// you may not use this file except in compliance with the License. ++// You may obtain a copy of the License at ++// ++// http://www.apache.org/licenses/LICENSE-2.0 ++// ++// Unless required by applicable law or agreed to in writing, software ++// distributed under the License is distributed on an "AS IS" BASIS, ++// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++// See the License for the specific language governing permissions and ++// limitations under the License. ++ ++//! Temporary host-clock attribution for issue #2227's pre-change profile. ++//! ++//! This module is removed after the required baseline profile. It is gated by ++//! `MLXCEL_B1_DECODE_PROFILE=1`, so the same release binary can run the CLI arm ++//! without timer overhead and the server arm with per-stage attribution. ++ ++use std::cell::Cell; ++use std::fmt::Write as _; ++use std::sync::OnceLock; ++use std::time::{Duration, Instant}; ++ ++const PROFILE_ENV: &str = "MLXCEL_B1_DECODE_PROFILE"; ++ ++#[derive(Debug, Clone, Copy)] ++pub(super) enum Stage { ++ Metrics, ++ RowLookup, ++ RowBuild, ++ EngineStep, ++ FinishState, ++ ApplyOutcomes, ++ LookaheadSubmit, ++ LookaheadCollect, ++ FusedFinishRows, ++ FinalizeCompleted, ++} ++ ++impl Stage { ++ const ALL: [Self; 10] = [ ++ Self::Metrics, ++ Self::RowLookup, ++ Self::RowBuild, ++ Self::EngineStep, ++ Self::FinishState, ++ Self::ApplyOutcomes, ++ Self::LookaheadSubmit, ++ Self::LookaheadCollect, ++ Self::FusedFinishRows, ++ Self::FinalizeCompleted, ++ ]; ++ ++ const fn index(self) -> usize { ++ self as usize ++ } ++ ++ const fn name(self) -> &'static str { ++ match self { ++ Self::Metrics => "metrics", ++ Self::RowLookup => "row_lookup", ++ Self::RowBuild => "row_build", ++ Self::EngineStep => "engine_step", ++ Self::FinishState => "finish_state", ++ Self::ApplyOutcomes => "apply_outcomes", ++ Self::LookaheadSubmit => "lookahead_submit", ++ Self::LookaheadCollect => "lookahead_collect", ++ Self::FusedFinishRows => "fused_finish_rows", ++ Self::FinalizeCompleted => "finalize_completed", ++ } ++ } ++} ++ ++fn enabled() -> bool { ++ static ENABLED: OnceLock = OnceLock::new(); ++ *ENABLED.get_or_init(|| std::env::var(PROFILE_ENV).is_ok_and(|value| value.trim() == "1")) ++} ++ ++pub(crate) fn started() -> Option { ++ enabled().then(Instant::now) ++} ++ ++fn duration_ns(duration: Duration) -> u64 { ++ duration.as_nanos().min(u128::from(u64::MAX)) as u64 ++} ++ ++thread_local! { ++ static EVENT_SEND_NS: Cell = const { Cell::new(0) }; ++ static EVENT_SEND_CALLS: Cell = const { Cell::new(0) }; ++} ++ ++pub(crate) fn record_event_send(started: Option) { ++ let Some(started) = started else { ++ return; ++ }; ++ let elapsed = duration_ns(started.elapsed()); ++ EVENT_SEND_NS.with(|total| total.set(total.get().saturating_add(elapsed))); ++ EVENT_SEND_CALLS.with(|calls| calls.set(calls.get().saturating_add(1))); ++} ++ ++fn reset_event_send() { ++ EVENT_SEND_NS.with(|total| total.set(0)); ++ EVENT_SEND_CALLS.with(|calls| calls.set(0)); ++} ++ ++fn event_send_snapshot() -> (u64, u64) { ++ let total = EVENT_SEND_NS.with(Cell::get); ++ let calls = EVENT_SEND_CALLS.with(Cell::get); ++ (total, calls) ++} ++ ++pub(super) struct B1DecodeProfile { ++ enabled: bool, ++ run: Cell, ++ ticks: Cell, ++ tick_ns: Cell, ++ stage_ns: [Cell; Stage::ALL.len()], ++ stage_calls: [Cell; Stage::ALL.len()], ++} ++ ++impl B1DecodeProfile { ++ pub(super) fn new() -> Self { ++ Self { ++ enabled: enabled(), ++ run: Cell::new(0), ++ ticks: Cell::new(0), ++ tick_ns: Cell::new(0), ++ stage_ns: std::array::from_fn(|_| Cell::new(0)), ++ stage_calls: std::array::from_fn(|_| Cell::new(0)), ++ } ++ } ++ ++ pub(super) fn start(&self) -> Option { ++ self.enabled.then(Instant::now) ++ } ++ ++ pub(super) fn begin_decode_tick(&self) { ++ if !self.enabled || self.ticks.get() != 0 { ++ return; ++ } ++ self.clear_measurement(); ++ } ++ ++ pub(super) fn record(&self, stage: Stage, started: Option) { ++ let Some(started) = started else { ++ return; ++ }; ++ let index = stage.index(); ++ self.stage_ns[index].set( ++ self.stage_ns[index] ++ .get() ++ .saturating_add(duration_ns(started.elapsed())), ++ ); ++ self.stage_calls[index].set(self.stage_calls[index].get().saturating_add(1)); ++ } ++ ++ pub(super) fn record_tick(&self, started: Option) { ++ let Some(started) = started else { ++ return; ++ }; ++ self.tick_ns ++ .set(self.tick_ns.get().saturating_add(duration_ns(started.elapsed()))); ++ self.ticks.set(self.ticks.get().saturating_add(1)); ++ } ++ ++ pub(super) fn emit_and_reset(&self) { ++ if !self.enabled || self.ticks.get() == 0 { ++ return; ++ } ++ let run = self.run.get().saturating_add(1); ++ self.run.set(run); ++ let ticks = self.ticks.get(); ++ let tick_ns = self.tick_ns.get(); ++ let mut line = format!( ++ "[b1-profile] {{\"run\":{run},\"ticks\":{ticks},\"tick_total_ns\":{tick_ns},\"tick_avg_us\":{:.3},\"stages\":{{", ++ tick_ns as f64 / ticks as f64 / 1_000.0 ++ ); ++ for (position, stage) in Stage::ALL.into_iter().enumerate() { ++ if position > 0 { ++ line.push(','); ++ } ++ let index = stage.index(); ++ let total = self.stage_ns[index].get(); ++ let calls = self.stage_calls[index].get(); ++ let tick_pct = if tick_ns == 0 { ++ 0.0 ++ } else { ++ total as f64 * 100.0 / tick_ns as f64 ++ }; ++ let _ = write!( ++ line, ++ "\"{}\":{{\"calls\":{},\"total_ns\":{},\"tick_pct\":{:.4}}}", ++ stage.name(), ++ calls, ++ total, ++ tick_pct ++ ); ++ } ++ let (event_ns, event_calls) = event_send_snapshot(); ++ let event_pct = if tick_ns == 0 { ++ 0.0 ++ } else { ++ event_ns as f64 * 100.0 / tick_ns as f64 ++ }; ++ let _ = write!( ++ line, ++ "}},\"event_send\":{{\"calls\":{event_calls},\"total_ns\":{event_ns},\"tick_pct\":{event_pct:.4}}}}}" ++ ); ++ eprintln!("{line}"); ++ self.clear_measurement(); ++ } ++ ++ fn clear_measurement(&self) { ++ self.ticks.set(0); ++ self.tick_ns.set(0); ++ for value in &self.stage_ns { ++ value.set(0); ++ } ++ for value in &self.stage_calls { ++ value.set(0); ++ } ++ reset_event_send(); ++ } ++} diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/prompt.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/prompt.txt new file mode 100644 index 000000000..1cfcc34ce --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/prompt.txt @@ -0,0 +1 @@ +Reply with exactly one short sentence naming the capital of France. \ No newline at end of file diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/provenance.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/provenance.txt new file mode 100644 index 000000000..416cdbf78 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/provenance.txt @@ -0,0 +1,36 @@ +2026-10-11T18:07:53+09:00 +spark-102 +Linux spark-102 7.0.0-1019-nvidia #19~24.04.2-Ubuntu SMP PREEMPT_DYNAMIC Sun Sep 6 18:35:11 UTC 2 aarch64 aarch64 aarch64 GNU/Linux +source_head=73700aafa6a792f07830578c0c26137cea3a038b +source_status_begin + M src/server/batch/scheduler/config.rs + M src/server/batch/scheduler/decode_tick.rs + M src/server/batch/scheduler/mod.rs + M src/server/batch/scheduler/run_loop.rs + M src/server/batch/sequence.rs +?? src/server/batch/scheduler/b1_profile.rs +source_status_end +306b2664d8b69186cc896ec83c1f6323e534372fc1148fd75fc4df9e5e2fe0b6 /tmp/mlxcel-auto-plan/2227-run-parity/before-valid/profile-instrumentation.patch +4937aea464d3d9ed24793dff2d3ff8be019e21fbe2b67a581fd6f3d3029eb25f /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/release/mlxcel +binary_size=108106312 binary_mtime=2026-10-11 18:02:59.450889010 +0900 +mlx_pin=81ba1c6a0e50a9268b931579c2d4f1158b9aab5a +Sun Oct 11 18:07:53 2026 ++-----------------------------------------------------------------------------------------+ +| NVIDIA-SMI 580.178.04 Driver Version: 580.178.04 CUDA Version: 13.0 | ++-----------------------------------------+------------------------+----------------------+ +| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | +| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | +| | | MIG M. | +|=========================================+========================+======================| +| 0 NVIDIA GB10 On | 0000000F:01:00.0 Off | N/A | +| N/A 47C P8 5W / N/A | Not Supported | 0% Default | +| | | N/A | ++-----------------------------------------+------------------------+----------------------+ + ++-----------------------------------------------------------------------------------------+ +| Processes: | +| GPU GI CI PID Type Process name GPU Memory | +| ID ID Usage | +|=========================================================================================| +| No running processes found | ++-----------------------------------------------------------------------------------------+ diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/stderr.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/stderr.txt new file mode 100644 index 000000000..e69de29bb diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/stdout.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/stdout.txt new file mode 100644 index 000000000..8c2c81fa1 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/before-valid/stdout.txt @@ -0,0 +1,9 @@ +Runtime device: NVIDIA GPU (CUDA) +Wired memory limit: 121.7 GB +Loading model from "models/mlx/qwen3-1.7b-4bit"... +Model loaded in 1.03s. +Generating... + +Okay, the user wants the capital of France in one sentence. Let me think. France's capital is Paris, right? Yeah, Paris is the capital. I should just state that clearly. Wait, the user specified exactly one sentence. So I need to make sure it's just the capital name. No + +[Generated 64 tokens in 0.33s = 192.19 tok/s] diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/capture-run-after.sh b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/capture-run-after.sh new file mode 100755 index 000000000..e6aebce61 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/capture-run-after.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash +set -euo pipefail + +WT=${WT:-/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227} +OUT=${OUT:-/tmp/mlxcel-auto-plan/2227-run-parity/after-valid} +MODEL=${MODEL:-models/mlx/qwen3-1.7b-4bit} +BIN=${BIN:-$WT/target/release/mlxcel} +PROMPT=${PROMPT:-Reply with exactly one short sentence naming the capital of France.} +MAX_TOKENS=${MAX_TOKENS:-64} +BINARY_SOURCE_HEAD=${BINARY_SOURCE_HEAD:-7c8830cd5aa01198e6ff93b661f90c048ccaeb1d} +BEFORE=${BEFORE:-/tmp/mlxcel-auto-plan/2227-run-parity/before-valid/generated.txt} +EXTRACTOR=/tmp/mlxcel-auto-plan/2227-profile/extract-run-text.py + +mkdir -p "$OUT" +cd "$WT" +test -x "$BIN" +test -s "$BEFORE" +test -f "$EXTRACTOR" +checkout_head=$(git rev-parse HEAD) +git cat-file -e "$BINARY_SOURCE_HEAD^{commit}" +while IFS= read -r changed; do + case $changed in + docs/*|TECHNICAL_REPORTS/*|.gitattributes|src/server/batch/scheduler_muse_glimmer_parallel_tests.rs|src/server/batch/scheduler_prompt_lookup_tests.rs) ;; + *) echo "post-build path requires a fresh mlxcel release build: $changed" >&2; exit 2 ;; + esac +done < <(git diff --name-only "$BINARY_SOURCE_HEAD" "$checkout_head") + +{ + date --iso-8601=seconds + hostname + uname -a + printf 'binary_source_head=%s\n' "$BINARY_SOURCE_HEAD" + printf 'checkout_head=%s\n' "$checkout_head" + printf 'checkout_status_begin\n' + git status --short + printf 'checkout_status_end\n' + printf 'post_build_diff_begin\n' + git diff --name-status "$BINARY_SOURCE_HEAD" "$checkout_head" + printf 'post_build_diff_end\n' + sha256sum "$BIN" + stat --format='binary_size=%s binary_mtime=%y' "$BIN" + printf 'mlx_pin='; scripts/ci/mlx_pinned_commit.sh + sha256sum "$0" "$EXTRACTOR" "$BEFORE" + nvidia-smi +} > "$OUT/provenance.txt" 2>&1 + +printf '%s' "$PROMPT" > "$OUT/prompt.txt" +{ + printf 'MLXCEL_B1_DECODE_PROFILE= ' + printf 'MLXCEL_DEVICE=gpu MLXCEL_SDPA_DETERMINISTIC=1 ' + printf '%q ' "$BIN" run "$MODEL" -p "$PROMPT" -n "$MAX_TOKENS" \ + --temp 0 --top-k 0 --top-p 1 --min-p 0 --seed 2227 --show-reasoning + printf '\n' +} > "$OUT/command.txt" + +gpu-lock run --tag issue-2227-run-after -- \ + env -u MLXCEL_B1_DECODE_PROFILE \ + MLXCEL_DEVICE=gpu MLXCEL_SDPA_DETERMINISTIC=1 \ + "$BIN" run "$MODEL" -p "$PROMPT" -n "$MAX_TOKENS" \ + --temp 0 --top-k 0 --top-p 1 --min-p 0 --seed 2227 --show-reasoning \ + > "$OUT/stdout.txt" 2> "$OUT/stderr.txt" + +python3 "$EXTRACTOR" "$OUT/stdout.txt" "$OUT/generated.txt" +sha256sum "$OUT/stdout.txt" "$OUT/stderr.txt" "$OUT/generated.txt" \ + > "$OUT/output-sha256.txt" +cmp "$BEFORE" "$OUT/generated.txt" +printf 'byte_identical_to_before=yes\n' > "$OUT/comparison.txt" diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/capture-run-before.sh b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/capture-run-before.sh new file mode 100755 index 000000000..3f87c1600 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/capture-run-before.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +set -euo pipefail + +WT=${WT:-/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227} +OUT=${OUT:-/tmp/mlxcel-auto-plan/2227-run-parity/before} +MODEL=${MODEL:-models/mlx/qwen3-1.7b-4bit} +BIN=${BIN:-$WT/target/release/mlxcel} +PROMPT=${PROMPT:-Reply with exactly one short sentence naming the capital of France.} +MAX_TOKENS=${MAX_TOKENS:-64} + +mkdir -p "$OUT" +cd "$WT" +test -x "$BIN" + +cp /tmp/mlxcel-auto-plan/2227-profile/instrumentation.patch \ + "$OUT/profile-instrumentation.patch" + +{ + date --iso-8601=seconds + hostname + uname -a + printf 'source_head=' + git rev-parse HEAD + printf 'source_status_begin\n' + git status --short + printf 'source_status_end\n' + sha256sum "$OUT/profile-instrumentation.patch" + sha256sum "$BIN" + stat --format='binary_size=%s binary_mtime=%y' "$BIN" + printf 'mlx_pin=' + scripts/ci/mlx_pinned_commit.sh + nvidia-smi +} >"$OUT/provenance.txt" 2>&1 + +printf '%s' "$PROMPT" >"$OUT/prompt.txt" +{ + printf 'MLXCEL_B1_DECODE_PROFILE= ' + printf 'MLXCEL_DEVICE=gpu MLXCEL_SDPA_DETERMINISTIC=1 ' + printf '%q ' "$BIN" run "$MODEL" -p "$PROMPT" -n "$MAX_TOKENS" \ + --temp 0 --top-k 0 --top-p 1 --min-p 0 --seed 2227 --show-reasoning + printf '\n' +} >"$OUT/command.txt" + +gpu-lock run --tag issue-2227-run-before -- \ + env -u MLXCEL_B1_DECODE_PROFILE \ + MLXCEL_DEVICE=gpu MLXCEL_SDPA_DETERMINISTIC=1 \ + "$BIN" run "$MODEL" -p "$PROMPT" -n "$MAX_TOKENS" \ + --temp 0 --top-k 0 --top-p 1 --min-p 0 --seed 2227 --show-reasoning \ + >"$OUT/stdout.txt" 2>"$OUT/stderr.txt" + +python3 /tmp/mlxcel-auto-plan/2227-profile/extract-run-text.py \ + "$OUT/stdout.txt" "$OUT/generated.txt" + +sha256sum "$OUT/stdout.txt" "$OUT/stderr.txt" "$OUT/generated.txt" \ + >"$OUT/output-sha256.txt" diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/causal-tests.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/causal-tests.log new file mode 100644 index 000000000..57bf2c1c8 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/causal-tests.log @@ -0,0 +1,10 @@ + +running 4 tests +test server::batch::scheduler::scheduler_prompt_lookup_tests::b1_length_boundary_submits_one_decode_forward_per_post_prefill_token ... ok +test server::batch::scheduler::scheduler_prompt_lookup_tests::b1_stochastic_terminal_length_commits_the_pending_draw ... Compiling CUDA kernels (first run on this host; cached for later runs)... +ok +test server::batch::scheduler::scheduler_prompt_lookup_tests::b1_terminal_length_skips_two_forwards_and_leaves_b2_unchanged ... ok +test server::batch::scheduler::scheduler_prompt_lookup_tests::b1_terminal_token_eos_precedes_the_length_boundary ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 9091 filtered out; finished in 1.46s + diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/extract-run-text.py b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/extract-run-text.py new file mode 100755 index 000000000..3889f42fa --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/extract-run-text.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 +"""Extract the streamed completion from `mlxcel run` stdout byte-for-byte.""" + +from __future__ import annotations + +import argparse +from pathlib import Path + + +START = b"Generating...\n" +END = b"\n\n[Generated " + + +def main() -> None: + parser = argparse.ArgumentParser() + parser.add_argument("stdout", type=Path) + parser.add_argument("output", type=Path) + args = parser.parse_args() + + raw = args.stdout.read_bytes() + start = raw.find(START) + if start < 0: + raise SystemExit(f"missing {START!r} in {args.stdout}") + start += len(START) + end = raw.rfind(END) + if end < start: + raise SystemExit(f"missing trailing {END!r} in {args.stdout}") + generated = raw[start:end] + if not generated: + raise SystemExit(f"empty generated text in {args.stdout}") + args.output.write_bytes(generated) + + +if __name__ == "__main__": + main() diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/guard-mutation-workspace.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/guard-mutation-workspace.log new file mode 100644 index 000000000..b0bbe21d2 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/guard-mutation-workspace.log @@ -0,0 +1,296 @@ +warning: mlxcel-core@0.7.0: In file included from cpp/mlx_cxx_bridge.cpp:7: +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/test-fast/build/mlxcel-core-951f0822c2faa7cb/out/build/include/mlx/primitives.h: In member function 'std::pair mlx::core::AddMM::state() const': +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/test-fast/build/mlxcel-core-951f0822c2faa7cb/out/build/include/mlx/primitives.h:204:41: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 204 | std::pair state() const { +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp: In function 'mlx_cxx::{anonymous}::get_compiled_q_path_proportional(int, int, int, float)::&)>': +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3851:31: warning: '*(int*)((char*)&in_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 3851 | int B = in_shape[0]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3850:18: note: 'in_shape' declared here +warning: mlxcel-core@0.7.0: 3850 | auto in_shape = q_in.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3851:31: warning: '*(int*)((char*)&in_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 3851 | int B = in_shape[0]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3850:18: note: 'in_shape' declared here +warning: mlxcel-core@0.7.0: 3850 | auto in_shape = q_in.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp: In lambda function: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2190:24: warning: '*(int*)((char*)&shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 2190 | int B = shape[0], H = shape[1], S = shape[2], D = shape[3]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2189:14: note: 'shape' declared here +warning: mlxcel-core@0.7.0: 2189 | auto shape = x.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2190:24: warning: '*(int*)((char*)&shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 2190 | int B = shape[0], H = shape[1], S = shape[2], D = shape[3]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2189:14: note: 'shape' declared here +warning: mlxcel-core@0.7.0: 2189 | auto shape = x.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp: In lambda function: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3362:24: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 3362 | ref_rms); +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp: At global scope: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3792:24: warning: 'mlx_cxx::{anonymous}::ADD3_LN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 3792 | static const char* ADD3_LN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3027:24: warning: 'mlx_cxx::{anonymous}::MOE_FC1_RELU2_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 3027 | static const char* MOE_FC1_RELU2_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2847:24: warning: 'mlx_cxx::{anonymous}::MOE_DOWN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2847 | static const char* MOE_DOWN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2708:24: warning: 'mlx_cxx::{anonymous}::MOE_GATEUP_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2708 | static const char* MOE_GATEUP_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2129:24: warning: 'mlx_cxx::{anonymous}::MAMBA1_SCAN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2129 | static const char* MAMBA1_SCAN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:752:24: warning: 'mlx_cxx::{anonymous}::SSM_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 752 | static const char* SSM_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:452:24: warning: 'mlx_cxx::{anonymous}::XIELU_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 452 | static const char* XIELU_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:159:24: warning: 'mlx_cxx::{anonymous}::BITLINEAR_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 159 | static const char* BITLINEAR_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp: In function 'void mlx_cxx::nemotron_decode_step(uint64_t, const MlxArray&, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, std::unique_ptr&, rust::cxxbridge1::Slice >, rust::cxxbridge1::Slice >)': +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:156:16: warning: '*(int*)((char*)&id_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 156 | h = reshape(h, {id_shape[0], id_shape[1], (int)h.shape().back()}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:155:10: note: 'id_shape' declared here +warning: mlxcel-core@0.7.0: 155 | auto id_shape = input_ids.inner.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:156:16: warning: '*(int*)((char*)&id_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 156 | h = reshape(h, {id_shape[0], id_shape[1], (int)h.shape().back()}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:155:10: note: 'id_shape' declared here +warning: mlxcel-core@0.7.0: 155 | auto id_shape = input_ids.inner.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:244:28: warning: '*(int*)((char*)&ks + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 244 | k = reshape(k, {ks[0], ks[1], 1, ks[2], ks[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:243:22: note: 'ks' declared here +warning: mlxcel-core@0.7.0: 243 | auto ks = k.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:244:28: warning: '*(int*)((char*)&ks + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 244 | k = reshape(k, {ks[0], ks[1], 1, ks[2], ks[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:243:22: note: 'ks' declared here +warning: mlxcel-core@0.7.0: 243 | auto ks = k.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:248:28: warning: '*(int*)((char*)&vs + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 248 | v = reshape(v, {vs[0], vs[1], 1, vs[2], vs[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:247:22: note: 'vs' declared here +warning: mlxcel-core@0.7.0: 247 | auto vs = v.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:248:28: warning: '*(int*)((char*)&vs + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 248 | v = reshape(v, {vs[0], vs[1], 1, vs[2], vs[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:247:22: note: 'vs' declared here +warning: mlxcel-core@0.7.0: 247 | auto vs = v.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: In file included from ../mlx-cpp/turbo/kv_inplace_write.cpp:23: +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/test-fast/build/mlxcel-core-951f0822c2faa7cb/out/build/include/mlx/primitives.h: In member function 'std::pair mlx::core::AddMM::state() const': +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/test-fast/build/mlxcel-core-951f0822c2faa7cb/out/build/include/mlx/primitives.h:204:41: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 204 | std::pair state() const { +warning: mlxcel-core@0.7.0: | ^ + Compiling mlxcel v0.7.0 (/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227) +warning: method `b1_pending_spends_budget` is never used + --> src/server/batch/scheduler/decode_tick.rs:716:8 + | + 17 | impl BatchScheduler { + | ------------------- method in this implementation +... +716 | fn b1_pending_spends_budget(&self, seq_ids: &[SequenceId]) -> bool { + | ^^^^^^^^^^^^^^^^^^^^^^^^ + | + = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default + +warning: `mlxcel` (lib) generated 1 warning +warning: `mlxcel` (lib test) generated 1 warning (1 duplicate) + Finished `test-fast` profile [optimized] target(s) in 4m 32s + Executable unittests src/lib.rs (target/test-fast/deps/mlxcel-e4114342978c2f44) + Executable unittests src/main.rs (target/test-fast/deps/mlxcel-e029287206517e01) + Executable unittests src/bin/bench_decode.rs (target/test-fast/deps/mlxcel_bench_decode-d8d701711f5fa4db) + Executable unittests src/bin/bench_engine.rs (target/test-fast/deps/mlxcel_bench_engine-2ec930d264c4367a) + Executable unittests src/bin/engine_parity.rs (target/test-fast/deps/mlxcel_engine_parity-9ed786ceb5161668) + Executable unittests src/bin/mlx_server.rs (target/test-fast/deps/mlxcel_server-f103ed86e524be74) + Executable unittests src/bin/speculative_bench.rs (target/test-fast/deps/speculative_bench-873145a883391206) + Executable tests/apertus_parity.rs (target/test-fast/deps/apertus_parity-c44bfaf23ceb5f2a) + Executable tests/apply_template_tools_parity.rs (target/test-fast/deps/apply_template_tools_parity-b2007d5a95013a11) + Executable tests/attention_f16_range.rs (target/test-fast/deps/attention_f16_range-138269846d1237aa) + Executable tests/autotuner_outcome.rs (target/test-fast/deps/autotuner_outcome-4c20917d1b09d047) + Executable tests/cascade_decode_dispatch.rs (target/test-fast/deps/cascade_decode_dispatch-62f66eadbdb18eda) + Executable tests/causal_prefill_greedy_parity.rs (target/test-fast/deps/causal_prefill_greedy_parity-b24e4113b58bf5d0) + Executable tests/chat_template_kwargs.rs (target/test-fast/deps/chat_template_kwargs-e6294d8887f3dfd8) + Executable tests/cli_help_consistency.rs (target/test-fast/deps/cli_help_consistency-2e4bdd7019e4ac9f) + Executable tests/cpu_device_custom_kernel_gates.rs (target/test-fast/deps/cpu_device_custom_kernel_gates-219ccab8fff654e1) + Executable tests/cpu_device_sdpa.rs (target/test-fast/deps/cpu_device_sdpa-e846797475f02825) + Executable tests/cuda_qmm_determinism.rs (target/test-fast/deps/cuda_qmm_determinism-0580441a9e835343) + Executable tests/cuda_sdpa_determinism.rs (target/test-fast/deps/cuda_sdpa_determinism-11feef284e612c65) + Executable tests/dead_doc_pointers.rs (target/test-fast/deps/dead_doc_pointers-ca67affaaac25f60) + Executable tests/deepseek_v2_greedy_parity.rs (target/test-fast/deps/deepseek_v2_greedy_parity-d173298dd0dfe794) + Executable tests/deepseek_v4_real_model.rs (target/test-fast/deps/deepseek_v4_real_model-c15e8bbf4b076998) + Executable tests/deepseek_vl_v2_parity.rs (target/test-fast/deps/deepseek_vl_v2_parity-c0ccf4da9d490ca0) + Executable tests/deepseekocr_2_resampler.rs (target/test-fast/deps/deepseekocr_2_resampler-ad3501f1d9ed4877) + Executable tests/deepseekocr_encoder_parity.rs (target/test-fast/deps/deepseekocr_encoder_parity-9e87576af190a9b5) + Executable tests/disaggregated_e2e.rs (target/test-fast/deps/disaggregated_e2e-4848b86f61cec466) + Executable tests/disaggregated_router_e2e.rs (target/test-fast/deps/disaggregated_router_e2e-7e3e5b706b1b110e) + Executable tests/disaggregated_serving_e2e.rs (target/test-fast/deps/disaggregated_serving_e2e-1e4b34efeb44049f) + Executable tests/dots_ocr_parity.rs (target/test-fast/deps/dots_ocr_parity-67cba3b161e4505a) + Executable tests/embedding_pooling_normalize_real.rs (target/test-fast/deps/embedding_pooling_normalize_real-d10955dd8b9aaa7e) + Executable tests/ernie4_5_moe_vl_parity.rs (target/test-fast/deps/ernie4_5_moe_vl_parity-c5a44a881cbb174d) + Executable tests/falcon_ocr_parity.rs (target/test-fast/deps/falcon_ocr_parity-7fc0e6d322316955) + Executable tests/fastvlm_parity.rs (target/test-fast/deps/fastvlm_parity-2042aa80ba2a521c) + Executable tests/florence2_fusion_parity.rs (target/test-fast/deps/florence2_fusion_parity-2583c03819278165) + Executable tests/florence2_postprocess_parity.rs (target/test-fast/deps/florence2_postprocess_parity-19db236ea85faf3c) + Executable tests/florence2_processor_parity.rs (target/test-fast/deps/florence2_processor_parity-4b74746a8bc1f78d) + Executable tests/florence2_quantized_parity.rs (target/test-fast/deps/florence2_quantized_parity-918e1afbf870f2d1) + Executable tests/florence2_text_parity.rs (target/test-fast/deps/florence2_text_parity-9dce19252589f2a1) + Executable tests/florence2_vision_parity.rs (target/test-fast/deps/florence2_vision_parity-9ab1c5fcb66e84b1) + Executable tests/gcp_predict_real_model.rs (target/test-fast/deps/gcp_predict_real_model-ad2470a51cd171da) + Executable tests/glm4v_moe_parity.rs (target/test-fast/deps/glm4v_moe_parity-58a3c5aaa3117dc7) + Executable tests/glm4v_parity.rs (target/test-fast/deps/glm4v_parity-6de5375d410ba9a4) + Executable tests/glm_ocr_parity.rs (target/test-fast/deps/glm_ocr_parity-420214652985ebca) + Executable tests/got_ocr_prompt_parity.rs (target/test-fast/deps/got_ocr_prompt_parity-767e02b0997a5a04) + Executable tests/got_ocr_real_model.rs (target/test-fast/deps/got_ocr_real_model-4359125e618e9ca2) + Executable tests/granite4_vision_parity.rs (target/test-fast/deps/granite4_vision_parity-c95852f9d741c413) + Executable tests/granite_vision_parity.rs (target/test-fast/deps/granite_vision_parity-f1608c43da7d0138) + Executable tests/hunyuan_vl_parity.rs (target/test-fast/deps/hunyuan_vl_parity-b2021063bb475f35) + Executable tests/internvl_parity.rs (target/test-fast/deps/internvl_parity-06fe5da83044d70e) + Executable tests/iquestloopcoder_parity.rs (target/test-fast/deps/iquestloopcoder_parity-660c85f48d3b81fa) + Executable tests/kimi_vl_parity.rs (target/test-fast/deps/kimi_vl_parity-26ed5217c0889d9c) + Executable tests/lang_bias.rs (target/test-fast/deps/lang_bias-b5d7e56713d0931b) + Executable tests/llama_chat_template_cli.rs (target/test-fast/deps/llama_chat_template_cli-ba7b27b2422e142c) + Executable tests/llama_compat_manifest.rs (target/test-fast/deps/llama_compat_manifest-fcd85f2b5b6009a5) + Executable tests/llama_compat_rope_freq_base.rs (target/test-fast/deps/llama_compat_rope_freq_base-52ae5c644ce3d347) + Executable tests/llama_compat_rope_scaling_override.rs (target/test-fast/deps/llama_compat_rope_scaling_override-634e4027e5826a68) + Executable tests/llama_compat_utility_routes.rs (target/test-fast/deps/llama_compat_utility_routes-47e5d7c8f7329113) + Executable tests/llama_compat_yarn_override.rs (target/test-fast/deps/llama_compat_yarn_override-d0f6c02aebc9d4ba) + Executable tests/llama_ggml_runtime_cli.rs (target/test-fast/deps/llama_ggml_runtime_cli-3053a09c56967f3f) + Executable tests/llama_logging_presets.rs (target/test-fast/deps/llama_logging_presets-8a4f2177a9edd8e6) + Executable tests/llama_model_source_cli.rs (target/test-fast/deps/llama_model_source_cli-ccb97ca32c61fd40) + Executable tests/mamba2_hybrid_decode_finite.rs (target/test-fast/deps/mamba2_hybrid_decode_finite-add021fce9fc603e) + Executable tests/mamba2_hybrid_finite.rs (target/test-fast/deps/mamba2_hybrid_finite-967483ae9fbb74dc) + Executable tests/max_kv_size_dense_e2e.rs (target/test-fast/deps/max_kv_size_dense_e2e-51bbe6daacbce4e6) + Executable tests/metal_block_vs_chain_op_parity.rs (target/test-fast/deps/metal_block_vs_chain_op_parity-bf79e9600bd70b8e) + Executable tests/mllama_parity.rs (target/test-fast/deps/mllama_parity-801c7c3c25a7c428) + Executable tests/model_loader_stdout_guard.rs (target/test-fast/deps/model_loader_stdout_guard-0872d345b83daea5) + Executable tests/model_loading.rs (target/test-fast/deps/model_loading-51125a9d94a8a1e6) + Executable tests/molmo_parity.rs (target/test-fast/deps/molmo_parity-78a82be660460062) + Executable tests/moondream2_parity.rs (target/test-fast/deps/moondream2_parity-64de1e4a812c5df6) + Executable tests/nemotron_parse_real_model.rs (target/test-fast/deps/nemotron_parse_real_model-70ad37b9f5b06003) + Executable tests/nemotron_voicechat_codec_real.rs (target/test-fast/deps/nemotron_voicechat_codec_real-a611132170248ea5) + Executable tests/nemotron_voicechat_front_real.rs (target/test-fast/deps/nemotron_voicechat_front_real-973fbeb950daea0e) + Executable tests/nemotron_voicechat_llm_real.rs (target/test-fast/deps/nemotron_voicechat_llm_real-a8c1e68664c3d216) + Executable tests/nemotron_voicechat_offline_real.rs (target/test-fast/deps/nemotron_voicechat_offline_real-d41233eca36885fd) + Executable tests/nemotron_voicechat_stream_real.rs (target/test-fast/deps/nemotron_voicechat_stream_real-88bd5a8555f1dc8c) + Executable tests/nemotron_voicechat_streaming_real.rs (target/test-fast/deps/nemotron_voicechat_streaming_real-e64bfda065b15f86) + Executable tests/nemotron_voicechat_tts_real.rs (target/test-fast/deps/nemotron_voicechat_tts_real-cf2d97a8b12f84a2) + Executable tests/paddleocr_vl_parity.rs (target/test-fast/deps/paddleocr_vl_parity-699fcb2a45b1b72c) + Executable tests/paged_decode_v2_greedy_parity.rs (target/test-fast/deps/paged_decode_v2_greedy_parity-35b27959d4a264c3) + Executable tests/paged_kv_serialize_parity.rs (target/test-fast/deps/paged_kv_serialize_parity-f358287d400f4c09) + Executable tests/paged_prefix_share_parity.rs (target/test-fast/deps/paged_prefix_share_parity-931ca02c63f47cbd) + Executable tests/paged_real_model_parity.rs (target/test-fast/deps/paged_real_model_parity-79904217e6718907) + Executable tests/paged_scheduler_parity.rs (target/test-fast/deps/paged_scheduler_parity-7d111b8f3d81ed82) + Executable tests/phi4mm_audio_parity.rs (target/test-fast/deps/phi4mm_audio_parity-5eb0a15b0d76628e) + Executable tests/pipeline_auto_partition_real_models.rs (target/test-fast/deps/pipeline_auto_partition_real_models-8db47da5a21d9350) + Executable tests/pipeline_ci_multi_stage_real_models.rs (target/test-fast/deps/pipeline_ci_multi_stage_real_models-a43a41029bda035a) + Executable tests/pipeline_cli_real_models.rs (target/test-fast/deps/pipeline_cli_real_models-207e16982539c7fe) + Executable tests/pipeline_elastic_repartition_real_models.rs (target/test-fast/deps/pipeline_elastic_repartition_real_models-d66be1191ccd53d2) + Executable tests/pipeline_lora_composition_real_models.rs (target/test-fast/deps/pipeline_lora_composition_real_models-ead36b0820d00cfa) + Executable tests/pipeline_observability_real_models.rs (target/test-fast/deps/pipeline_observability_real_models-d0030065f08d8806) + Executable tests/pipeline_remote_real_models.rs (target/test-fast/deps/pipeline_remote_real_models-33a14d3d4e098b14) + Executable tests/pipeline_server_real_models.rs (target/test-fast/deps/pipeline_server_real_models-2e5a52c9f63f50ba) + Executable tests/pipeline_server_remote_real_models.rs (target/test-fast/deps/pipeline_server_remote_real_models-1868bd067b6d0b68) + Executable tests/pipeline_stage_executor_real_models.rs (target/test-fast/deps/pipeline_stage_executor_real_models-14babd2449fe0997) + Executable tests/plamo2_parity.rs (target/test-fast/deps/plamo2_parity-30d11583853e1554) + Executable tests/pp_tp_2d_real_models.rs (target/test-fast/deps/pp_tp_2d_real_models-281cb6ff4d54681c) + Executable tests/pre_ampere_f16_quality.rs (target/test-fast/deps/pre_ampere_f16_quality-1fe282cf39704a90) + Executable tests/prompt_cache_compat_e2e.rs (target/test-fast/deps/prompt_cache_compat_e2e-00ac992017fb509a) + Executable tests/prompt_cache_e2e.rs (target/test-fast/deps/prompt_cache_e2e-34178c8f531b2f8b) + Executable tests/prompt_cache_prefill_bench.rs (target/test-fast/deps/prompt_cache_prefill_bench-5eb81d5890c52e5d) + Executable tests/qwen2_5_vl_parity.rs (target/test-fast/deps/qwen2_5_vl_parity-e606f3d0324be489) + Executable tests/qwen35_mtp_verify_parity.rs (target/test-fast/deps/qwen35_mtp_verify_parity-85d8b5eeb0993e08) + Executable tests/qwen38_mtp_chain_parity.rs (target/test-fast/deps/qwen38_mtp_chain_parity-2b7368b6d660a1b9) + Executable tests/qwen3_omni_moe_parity.rs (target/test-fast/deps/qwen3_omni_moe_parity-5c97750f1b386f79) + Executable tests/rdma_transport_bench.rs (target/test-fast/deps/rdma_transport_bench-c463b6f5edd9aa14) + Executable tests/realtime_ws.rs (target/test-fast/deps/realtime_ws-8d448b6b3978e98e) + Executable tests/rocm_cpu_blas_finegrained.rs (target/test-fast/deps/rocm_cpu_blas_finegrained-9e01e7eebb932ea8) + Executable tests/rocm_custom_kernel_jit_key.rs (target/test-fast/deps/rocm_custom_kernel_jit_key-429b78588e3ab20b) + Executable tests/rocm_device_map_concurrency.rs (target/test-fast/deps/rocm_device_map_concurrency-b0d502a30461e028) + Executable tests/rocm_fft_cache_env.rs (target/test-fast/deps/rocm_fft_cache_env-faaf2c4c2ea56be6) + Executable tests/rocm_fft_plan_cache.rs (target/test-fast/deps/rocm_fft_plan_cache-2933c1432fc8f46b) + Executable tests/rocm_gather_qmm_expert_batched.rs (target/test-fast/deps/rocm_gather_qmm_expert_batched-5e7629804b2127c0) + Executable tests/rocm_gpu_faults.rs (target/test-fast/deps/rocm_gpu_faults-8ac74879aac2f38e) + Executable tests/rocm_hipblaslt_concurrency.rs (target/test-fast/deps/rocm_hipblaslt_concurrency-a06938cd1f47570e) + Executable tests/rocm_inflight_bound.rs (target/test-fast/deps/rocm_inflight_bound-ea64ea44d6ab13f8) + Executable tests/rocm_jit_module_concurrency.rs (target/test-fast/deps/rocm_jit_module_concurrency-afd0e4ddc966b3ab) + Executable tests/rocm_mxfp4_quant.rs (target/test-fast/deps/rocm_mxfp4_quant-d8f2ed54547ef957) + Executable tests/rocm_qmm_batched_rows.rs (target/test-fast/deps/rocm_qmm_batched_rows-7c063f30782f80bb) + Executable tests/rocm_qmm_dequant_cache.rs (target/test-fast/deps/rocm_qmm_dequant_cache-f197b575a8ab5792) + Executable tests/rocm_qmm_env.rs (target/test-fast/deps/rocm_qmm_env-45bdba43a2258fda) + Executable tests/rocm_rocblas_handle_concurrency.rs (target/test-fast/deps/rocm_rocblas_handle_concurrency-46a5fa727df46606) + Executable tests/rocm_scalar_pool_concurrency.rs (target/test-fast/deps/rocm_scalar_pool_concurrency-3d0b3a76087317b6) + Executable tests/rocm_slice_update_reduce.rs (target/test-fast/deps/rocm_slice_update_reduce-317c5ec53f6e80a5) + Executable tests/rocm_slice_update_source.rs (target/test-fast/deps/rocm_slice_update_source-35e750a3d8e272d9) + Executable tests/rocm_strided_copy_grid.rs (target/test-fast/deps/rocm_strided_copy_grid-907df35d74ec26a1) + Executable tests/rocm_strided_scan.rs (target/test-fast/deps/rocm_strided_scan-f9cd902ec831070b) + Executable tests/rocm_wave64_port_refusal.rs (target/test-fast/deps/rocm_wave64_port_refusal-c314586229ba53d2) + Executable tests/rocm_wave_size.rs (target/test-fast/deps/rocm_wave_size-f5a9c5a45bf7fdab) + Executable tests/sampling_gumbel_kill_switch.rs (target/test-fast/deps/sampling_gumbel_kill_switch-9e6224e7dbb2fa87) + Executable tests/sampling_rejection_kill_switch.rs (target/test-fast/deps/sampling_rejection_kill_switch-12d3b1f579f8baf7) + Executable tests/sampling_top_k_above_vocab_e2e.rs (target/test-fast/deps/sampling_top_k_above_vocab_e2e-75e0f7228af789de) + Executable tests/smolvlm_parity.rs (target/test-fast/deps/smolvlm_parity-608d4f1820d455e5) + Executable tests/speculative_dispatch.rs (target/test-fast/deps/speculative_dispatch-d6380ee4637988e7) + Executable tests/speculative_parity.rs (target/test-fast/deps/speculative_parity-4de814b818ad16b5) + Executable tests/step3p7_parity.rs (target/test-fast/deps/step3p7_parity-129d3f4377a92c12) + Executable tests/structured_outputs.rs (target/test-fast/deps/structured_outputs-a032780570696018) + Executable tests/surgery_cli.rs (target/test-fast/deps/surgery_cli-273e8e62ee5e122c) + Executable tests/tensor_parallel_real_models.rs (target/test-fast/deps/tensor_parallel_real_models-a2e9a51b730af924) + Executable tests/thinking_budget.rs (target/test-fast/deps/thinking_budget-c2847a4d7ba0bc6e) + Executable tests/tp_e2e.rs (target/test-fast/deps/tp_e2e-dfb4b082e3ffd928) + Executable tests/turbo_kv_e2e.rs (target/test-fast/deps/turbo_kv_e2e-5724d8a936e28028) + Executable tests/vlm_concurrency.rs (target/test-fast/deps/vlm_concurrency-620f8b1cfff030af) + Executable tests/vlm_wrapper_capability_delegation.rs (target/test-fast/deps/vlm_wrapper_capability_delegation-d1ec0017ac51192e) + Executable tests/wht_op.rs (target/test-fast/deps/wht_op-8a3cfea2f7d8fb0c) + Executable tests/xla_gemma3n_prefill.rs (target/test-fast/deps/xla_gemma3n_prefill-b926285baa265003) + Executable tests/youtu_vl_parity.rs (target/test-fast/deps/youtu_vl_parity-a6076273912211e5) + Executable tests/zero_config_cluster_init.rs (target/test-fast/deps/zero_config_cluster_init-42f8f650c529fe07) + Executable unittests src/lib.rs (target/test-fast/deps/mlxcel_core-a9c9e3c743946c6b) + Executable unittests src/lib.rs (target/test-fast/deps/mlxcel_mlx_pin-7bbde732c345a80b) + Executable tests/cross_parser.rs (target/test-fast/deps/cross_parser-6f5e8642504955cf) + Executable unittests src/lib.rs (target/test-fast/deps/mlxcel_surgery-9d678b028e2c884a) + Executable tests/add_integration.rs (target/test-fast/deps/add_integration-546b1ff68c8c3742) + Executable tests/interpolate_integration.rs (target/test-fast/deps/interpolate_integration-51776ac318944ce5) + Executable tests/prune_integration.rs (target/test-fast/deps/prune_integration-150bd6435c018dab) + Executable tests/replace_integration.rs (target/test-fast/deps/replace_integration-ab6e6ee969a83bd6) + Executable tests/scale_integration.rs (target/test-fast/deps/scale_integration-e62651ee478e81ff) + Executable unittests src/lib.rs (target/test-fast/deps/mlxcel_xla-202b6bbdaef2e90c) + +running 1 test +test server::batch::scheduler::scheduler_prompt_lookup_tests::b1_terminal_length_skips_two_forwards_and_leaves_b2_unchanged ... FAILED + +failures: + +---- server::batch::scheduler::scheduler_prompt_lookup_tests::b1_terminal_length_skips_two_forwards_and_leaves_b2_unchanged stdout ---- + +thread 'server::batch::scheduler::scheduler_prompt_lookup_tests::b1_terminal_length_skips_two_forwards_and_leaves_b2_unchanged' (595831) panicked at src/server/batch/scheduler/../scheduler_prompt_lookup_tests.rs:477:5: +assertion `left == right` failed: terminal B=1 commits the pending token without submit or replay + left: 4 + right: 2 +note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace + + +failures: + server::batch::scheduler::scheduler_prompt_lookup_tests::b1_terminal_length_skips_two_forwards_and_leaves_b2_unchanged + +test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 9094 filtered out; finished in 0.63s + +mutation killed as expected (cargo test exit 101) diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/llama-parity.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/llama-parity.log new file mode 100644 index 000000000..1f535d1fa --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/llama-parity.log @@ -0,0 +1,37 @@ +true build --release --features cuda --bin mlxcel-engine-parity +MLXCEL_SDPA_DETERMINISTIC=1 ./target/release/mlxcel-engine-parity --model "models/mlx/llama-3.2-1b-instruct-4bit" --expect-identical +[engine-parity] model: models/mlx/llama-3.2-1b-instruct-4bit +[engine-parity] prompt tokens: 75 MLXCEL_SDPA_DETERMINISTIC=1 +[engine-parity] paths: + greedy a:cli 64 tokens cli + seeded-penalties-dry a:cli 64 tokens cli + greedy d:engine 64 tokens engine B=1 dense chunk=2048 + seeded-penalties-dry d:engine 64 tokens engine B=1 dense chunk=2048 + greedy b:dense 64 tokens Dense pc=off prefill[0..75) + seeded-penalties-dry b:dense 64 tokens Dense pc=off prefill[0..75) + greedy c:paged 64 tokens Paged pc=off prefill[0..75) paged-kernel-launches=1008 + seeded-penalties-dry c:paged 64 tokens Paged pc=off prefill[0..75) paged-kernel-launches=1008 + greedy e:run 64 tokens run -p parallel=1 pc=off prompt-tokens=75 chunk=2048 + seeded-penalties-dry e:run n/a the chat-request arms cover the greedy case + greedy f:server 64 tokens mlxcel-server parallel=4 pc=off prompt-tokens=75 chunk=2048 + seeded-penalties-dry f:server n/a the chat-request arms cover the greedy case + greedy b:dense+pc:miss 64 tokens Dense pc=on cached=0 forwarded=75 prefill[0..75) + greedy b:dense+pc:hit 64 tokens Dense pc=on cached=71 forwarded=4 adopted[0..71)+prefill[71..75) primed[0..71) + seeded-penalties-dry b:dense+pc:miss 64 tokens Dense pc=on cached=0 forwarded=75 prefill[0..75) + seeded-penalties-dry b:dense+pc:hit 64 tokens Dense pc=on cached=71 forwarded=4 adopted[0..71)+prefill[71..75) primed[0..71) +[engine-parity] pairs: + greedy a:cli vs b:dense identical + greedy a:cli vs c:paged identical + greedy b:dense vs c:paged identical + greedy b:dense vs d:engine identical + greedy f:server vs e:run identical + greedy b:dense vs b:dense+pc:miss identical + greedy b:dense+pc:miss vs b:dense+pc:hit identical + seeded-penalties-dry a:cli vs b:dense identical + seeded-penalties-dry a:cli vs c:paged identical + seeded-penalties-dry b:dense vs c:paged identical + seeded-penalties-dry b:dense vs d:engine identical + seeded-penalties-dry f:server vs e:run n/a + seeded-penalties-dry b:dense vs b:dense+pc:miss identical + seeded-penalties-dry b:dense+pc:miss vs b:dense+pc:hit identical +[engine-parity] summary: 14 pair(s), 13 identical, 0 diverged, 1 n/a diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/mutate-terminal-guard.patch b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/mutate-terminal-guard.patch new file mode 100644 index 000000000..57c573d0c --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/mutate-terminal-guard.patch @@ -0,0 +1,12 @@ +diff --git a/src/server/batch/scheduler/decode_tick.rs b/src/server/batch/scheduler/decode_tick.rs +--- a/src/server/batch/scheduler/decode_tick.rs ++++ b/src/server/batch/scheduler/decode_tick.rs +@@ -613,7 +613,7 @@ impl Scheduler { + // old scheduler submitted n+1, discarded both n and n+1, then replayed + // n synchronously on that terminal tick: two whole forwards whose + // result could not affect the response. +- let pending_spends_budget = self.b1_pending_spends_budget(seq_ids); ++ let pending_spends_budget = false; + let next = if pending_spends_budget { + None + } else { diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/qwen-parity.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/qwen-parity.log new file mode 100644 index 000000000..7957e3014 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/qwen-parity.log @@ -0,0 +1,39 @@ +true build --release --features cuda --bin mlxcel-engine-parity +MLXCEL_SDPA_DETERMINISTIC=1 ./target/release/mlxcel-engine-parity --model "models/mlx/qwen3-1.7b-4bit" --expect-identical +[engine-parity] model: models/mlx/qwen3-1.7b-4bit +[engine-parity] prompt tokens: 48 MLXCEL_SDPA_DETERMINISTIC=1 +[engine-parity] paths: + greedy a:cli 64 tokens cli + seeded-penalties-dry a:cli 64 tokens cli + greedy d:engine 64 tokens engine B=1 dense chunk=2048 + seeded-penalties-dry d:engine 64 tokens engine B=1 dense chunk=2048 + greedy b:dense 64 tokens Dense pc=off prefill[0..48) + seeded-penalties-dry b:dense 64 tokens Dense pc=off prefill[0..48) + greedy c:paged 64 tokens Paged pc=off prefill[0..48) paged-kernel-launches=1764 + seeded-penalties-dry c:paged 64 tokens Paged pc=off prefill[0..48) paged-kernel-launches=1764 + greedy e:run 64 tokens run -p parallel=1 pc=off prompt-tokens=48 chunk=2048 + seeded-penalties-dry e:run n/a the chat-request arms cover the greedy case + greedy f:server 64 tokens mlxcel-server parallel=4 pc=off prompt-tokens=48 chunk=2048 + seeded-penalties-dry f:server n/a the chat-request arms cover the greedy case + greedy b:dense+pc:miss 64 tokens Dense pc=on cached=0 forwarded=48 prefill[0..48) + greedy b:dense+pc:hit 64 tokens Dense pc=on cached=45 forwarded=3 adopted[0..45)+prefill[45..48) primed[0..45) + seeded-penalties-dry b:dense+pc:miss 64 tokens Dense pc=on cached=0 forwarded=48 prefill[0..48) + seeded-penalties-dry b:dense+pc:hit 64 tokens Dense pc=on cached=45 forwarded=3 adopted[0..45)+prefill[45..48) primed[0..45) +[engine-parity] pairs: + greedy a:cli vs b:dense identical + greedy a:cli vs c:paged identical + greedy b:dense vs c:paged identical + greedy b:dense vs d:engine identical + greedy f:server vs e:run identical + greedy b:dense vs b:dense+pc:miss identical + greedy b:dense+pc:miss vs b:dense+pc:hit diverge@58 left=374 right=594 + seeded-penalties-dry a:cli vs b:dense identical + seeded-penalties-dry a:cli vs c:paged identical + seeded-penalties-dry b:dense vs c:paged identical + seeded-penalties-dry b:dense vs d:engine identical + seeded-penalties-dry f:server vs e:run n/a + seeded-penalties-dry b:dense vs b:dense+pc:miss identical + seeded-penalties-dry b:dense+pc:miss vs b:dense+pc:hit diverge@61 left=576 right=362 +[engine-parity] summary: 14 pair(s), 11 identical, 2 diverged, 1 n/a +--expect-identical: 2 pair(s) diverged +make: *** [Makefile:1259: engine-parity] Error 1 diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/qwen-scoped-parity.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/qwen-scoped-parity.log new file mode 100644 index 000000000..18d8e3a63 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/qwen-scoped-parity.log @@ -0,0 +1,29 @@ +true build --release --features cuda --bin mlxcel-engine-parity +MLXCEL_SDPA_DETERMINISTIC=1 ./target/release/mlxcel-engine-parity --model "models/mlx/qwen3-1.7b-4bit" --expect-identical --no-prompt-cache-case +[engine-parity] model: models/mlx/qwen3-1.7b-4bit +[engine-parity] prompt tokens: 48 MLXCEL_SDPA_DETERMINISTIC=1 +[engine-parity] paths: + greedy a:cli 64 tokens cli + seeded-penalties-dry a:cli 64 tokens cli + greedy d:engine 64 tokens engine B=1 dense chunk=2048 + seeded-penalties-dry d:engine 64 tokens engine B=1 dense chunk=2048 + greedy b:dense 64 tokens Dense pc=off prefill[0..48) + seeded-penalties-dry b:dense 64 tokens Dense pc=off prefill[0..48) + greedy c:paged 64 tokens Paged pc=off prefill[0..48) paged-kernel-launches=1764 + seeded-penalties-dry c:paged 64 tokens Paged pc=off prefill[0..48) paged-kernel-launches=1764 + greedy e:run 64 tokens run -p parallel=1 pc=off prompt-tokens=48 chunk=2048 + seeded-penalties-dry e:run n/a the chat-request arms cover the greedy case + greedy f:server 64 tokens mlxcel-server parallel=4 pc=off prompt-tokens=48 chunk=2048 + seeded-penalties-dry f:server n/a the chat-request arms cover the greedy case +[engine-parity] pairs: + greedy a:cli vs b:dense identical + greedy a:cli vs c:paged identical + greedy b:dense vs c:paged identical + greedy b:dense vs d:engine identical + greedy f:server vs e:run identical + seeded-penalties-dry a:cli vs b:dense identical + seeded-penalties-dry a:cli vs c:paged identical + seeded-penalties-dry b:dense vs c:paged identical + seeded-penalties-dry b:dense vs d:engine identical + seeded-penalties-dry f:server vs e:run n/a +[engine-parity] summary: 10 pair(s), 9 identical, 0 diverged, 1 n/a diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/qwen-sync-parity.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/qwen-sync-parity.log new file mode 100644 index 000000000..c25ad6c2e --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/qwen-sync-parity.log @@ -0,0 +1,36 @@ +[engine-parity] model: models/mlx/qwen3-1.7b-4bit +[engine-parity] prompt tokens: 48 MLXCEL_SDPA_DETERMINISTIC=1 +[engine-parity] paths: + greedy a:cli 64 tokens cli + seeded-penalties-dry a:cli 64 tokens cli + greedy d:engine 64 tokens engine B=1 dense chunk=2048 + seeded-penalties-dry d:engine 64 tokens engine B=1 dense chunk=2048 + greedy b:dense 64 tokens Dense pc=off prefill[0..48) + seeded-penalties-dry b:dense 64 tokens Dense pc=off prefill[0..48) + greedy c:paged 64 tokens Paged pc=off prefill[0..48) paged-kernel-launches=1764 + seeded-penalties-dry c:paged 64 tokens Paged pc=off prefill[0..48) paged-kernel-launches=1764 + greedy e:run 64 tokens run -p parallel=1 pc=off prompt-tokens=48 chunk=2048 + seeded-penalties-dry e:run n/a the chat-request arms cover the greedy case + greedy f:server 64 tokens mlxcel-server parallel=4 pc=off prompt-tokens=48 chunk=2048 + seeded-penalties-dry f:server n/a the chat-request arms cover the greedy case + greedy b:dense+pc:miss 64 tokens Dense pc=on cached=0 forwarded=48 prefill[0..48) + greedy b:dense+pc:hit 64 tokens Dense pc=on cached=45 forwarded=3 adopted[0..45)+prefill[45..48) primed[0..45) + seeded-penalties-dry b:dense+pc:miss 64 tokens Dense pc=on cached=0 forwarded=48 prefill[0..48) + seeded-penalties-dry b:dense+pc:hit 64 tokens Dense pc=on cached=45 forwarded=3 adopted[0..45)+prefill[45..48) primed[0..45) +[engine-parity] pairs: + greedy a:cli vs b:dense identical + greedy a:cli vs c:paged identical + greedy b:dense vs c:paged identical + greedy b:dense vs d:engine identical + greedy f:server vs e:run identical + greedy b:dense vs b:dense+pc:miss identical + greedy b:dense+pc:miss vs b:dense+pc:hit diverge@58 left=374 right=594 + seeded-penalties-dry a:cli vs b:dense identical + seeded-penalties-dry a:cli vs c:paged identical + seeded-penalties-dry b:dense vs c:paged identical + seeded-penalties-dry b:dense vs d:engine identical + seeded-penalties-dry f:server vs e:run n/a + seeded-penalties-dry b:dense vs b:dense+pc:miss identical + seeded-penalties-dry b:dense+pc:miss vs b:dense+pc:hit diverge@61 left=576 right=362 +[engine-parity] summary: 14 pair(s), 11 identical, 2 diverged, 1 n/a +--expect-identical: 2 pair(s) diverged diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/run-guard-mutation-workspace.sh b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/run-guard-mutation-workspace.sh new file mode 100644 index 000000000..c5c599b39 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/correctness/run-guard-mutation-workspace.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +set -euo pipefail + +worktree=${WORKTREE:-/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227} +patch=/tmp/mlxcel-auto-plan/2227-acceptance/mutate-terminal-guard.patch +file=src/server/batch/scheduler/decode_tick.rs +mutated=0 + +cd "$worktree" +git diff --quiet -- "$file" || { + echo "refusing to mutate a dirty $file" >&2 + exit 2 +} +git apply --check "$patch" + +restore_guard() { + if (( mutated )); then + git apply -R "$patch" + mutated=0 + fi +} +trap restore_guard EXIT INT TERM + +git apply "$patch" +mutated=1 + +cargo test --workspace --profile test-fast --features cuda --no-run +set +e +gpu-lock run --tag issue-2227-guard-mutation-test -- target/test-fast/deps/mlxcel-e4114342978c2f44 \ + b1_terminal_length_skips_two_forwards_and_leaves_b2_unchanged \ + --test-threads=1 +test_rc=$? +set -e + +restore_guard +trap - EXIT INT TERM +git diff --exit-code -- "$file" + +if (( test_rc != 101 )); then + echo "mutation did not produce the required assertion failure" >&2 + exit 1 +fi + +echo "mutation killed as expected (cargo test exit $test_rc)" diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/cli-nsys-stats.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/cli-nsys-stats.txt new file mode 100644 index 000000000..5ec8b5ed1 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/cli-nsys-stats.txt @@ -0,0 +1,123 @@ +Generating SQLite file /tmp/mlxcel-auto-plan/2227-profile/cli-nsys.sqlite from /tmp/mlxcel-auto-plan/2227-profile/cli-nsys.nsys-rep +Processing [/tmp/mlxcel-auto-plan/2227-profile/cli-nsys.sqlite] with [/opt/nvidia/nsight-systems/2025.3.2/host-linux-armv8/reports/cuda_api_sum.py]... + + ** CUDA API Summary (cuda_api_sum): + + Time (%) Total Time (ns) Num Calls Avg (ns) Med (ns) Min (ns) Max (ns) StdDev (ns) Name + -------- --------------- --------- ------------ ----------- --------- ---------- ------------ --------------------------------------- + 37.9 255,843,872 65,480 3,907.2 528.0 384 65,349,616 405,367.0 cudaGraphAddKernelNode_v10000 + 10.6 71,428,112 4 17,857,028.0 5,439,696.0 4,507,024 56,041,696 25,465,551.2 cuModuleLoadDataEx + 9.8 66,417,776 704 94,343.4 29,800.0 2,064 3,560,688 252,525.7 cudaMemcpyAsync + 8.8 59,460,464 3,941 15,087.7 12,384.0 2,640 69,408 10,111.1 cudaGraphLaunch_v10000 + 8.7 58,529,296 3,894 15,030.6 13,432.0 560 1,201,248 21,493.3 cudaGraphExecUpdate_v10020 + 7.4 50,038,176 1,071 46,721.0 1,072.0 480 5,996,880 308,961.0 cudaMallocAsync_v11020 + 2.2 14,796,336 536 27,605.1 2,704.0 2,128 12,581,872 543,284.7 cudaLaunchKernel + 2.1 14,441,520 5,101 2,831.1 2,048.0 720 1,123,728 16,031.1 cudaLaunchHostFunc_v10000 + 2.1 14,048,048 5,078 2,766.5 2,000.0 304 42,800 2,800.3 cudaEventRecord + 1.9 13,090,928 3 4,363,642.7 2,687,312.0 2,286,624 8,116,992 3,256,664.1 cudaEventSynchronize + 1.6 11,115,520 3,945 2,817.6 2,064.0 256 25,696 2,668.2 cudaGraphDestroy_v10000 + 1.4 9,346,400 3,944 2,369.8 1,488.0 544 201,648 4,232.3 cudaGraphCreate_v10000 + 1.3 8,697,328 47 185,049.5 134,736.0 48,320 562,608 136,893.3 cudaGraphInstantiate_v12000 + 1.2 8,099,504 8,123 997.1 560.0 304 28,512 2,033.6 cudaEventQuery + 0.7 4,699,040 3,676 1,278.3 912.0 160 19,712 1,281.4 cudaGraphAddDependencies_v12030 + 0.6 3,831,344 4,936 776.2 448.0 224 11,424 1,011.3 cudaStreamWaitEvent + 0.4 2,460,704 47 52,355.4 35,504.0 8,800 282,960 59,673.7 cudaGraphExecDestroy_v10000 + 0.3 1,900,672 4,745 400.6 160.0 80 13,040 797.7 cuGraphAddKernelNode_v2 + 0.2 1,228,096 21 58,480.8 2,528.0 1,776 324,336 96,927.2 cudaStreamCreateWithFlags + 0.1 945,056 1,071 882.4 752.0 416 42,416 1,383.5 cudaFreeAsync_v11020 + 0.1 883,136 1 883,136.0 883,136.0 883,136 883,136 0.0 cuKernelGetFunction + 0.1 822,224 1 822,224.0 822,224.0 822,224 822,224 0.0 cudaHostAlloc + 0.1 513,456 7 73,350.9 26,336.0 1,984 224,896 92,390.5 cudaFree + 0.1 371,456 1 371,456.0 371,456.0 371,456 371,456 0.0 cudaFreeHost + 0.0 274,928 57 4,823.3 4,512.0 1,520 24,512 3,558.8 cudaGraphAddChildGraphNode_v10000 + 0.0 225,744 1,148 196.6 112.0 80 3,088 268.3 cudaMemPoolGetAttribute_v11020 + 0.0 197,664 1 197,664.0 197,664.0 197,664 197,664 0.0 cudaDeviceGetDefaultMemPool_v11020 + 0.0 187,760 5 37,552.0 2,208.0 1,392 179,664 79,444.3 cudaEventCreateWithFlags + 0.0 162,752 916 177.7 144.0 32 1,936 147.7 cuGetProcAddress_v2 + 0.0 139,488 4 34,872.0 21,008.0 18,144 79,328 29,700.4 cudaMallocManaged + 0.0 137,440 2 68,720.0 68,720.0 28,752 108,688 56,523.3 cuModuleLoadData + 0.0 117,600 2 58,800.0 58,800.0 5,696 111,904 75,100.4 cudaMalloc + 0.0 115,504 4 28,876.0 28,088.0 5,456 53,872 26,553.6 cudaMemGetInfo + 0.0 100,064 220 454.8 128.0 80 5,648 687.6 cudaGraphGetRootNodes_v10000 + 0.0 89,232 20 4,461.6 3,152.0 2,480 21,616 4,327.4 cudaStreamDestroy + 0.0 88,688 2 44,344.0 44,344.0 30,944 57,744 18,950.5 cuLibraryLoadData + 0.0 61,856 55 1,124.7 960.0 224 4,208 909.0 cuGraphKernelNodeSetParams_v2 + 0.0 59,312 56 1,059.1 960.0 112 8,656 1,258.6 cudaGraphRetainUserObject_v11030 + 0.0 59,264 196 302.4 144.0 112 1,792 335.5 cudaGraphAddEmptyNode_v10000 + 0.0 46,592 536 86.9 48.0 32 880 121.7 cuKernelGetName + 0.0 44,688 112 399.0 128.0 96 2,752 452.3 cuKernelSetAttribute + 0.0 37,664 1 37,664.0 37,664.0 37,664 37,664 0.0 cudaMemcpy + 0.0 31,632 56 564.9 544.0 112 1,520 415.3 cudaGraphChildGraphNodeGetGraph_v10000 + 0.0 27,360 2 13,680.0 13,680.0 3,120 24,240 14,934.1 cudaMemsetAsync + 0.0 23,392 4 5,848.0 5,832.0 2,512 9,216 2,821.6 cudaStreamSynchronize + 0.0 19,904 110 180.9 176.0 16 880 130.6 cuGraphNodeGetDependentNodes_v2 + 0.0 14,608 55 265.6 256.0 112 1,408 200.6 cudaGraphNodeGetDependentNodes_v12030 + 0.0 6,960 5 1,392.0 656.0 544 2,864 1,112.9 cudaEventDestroy + 0.0 6,512 49 132.9 96.0 80 1,440 192.4 cuOccupancyMaxActiveClusters + 0.0 4,176 3 1,392.0 1,776.0 464 1,936 807.6 cuInit + 0.0 2,464 1 2,464.0 2,464.0 2,464 2,464 0.0 cudaUserObjectRelease_v11030 + 0.0 1,424 4 356.0 200.0 64 960 422.6 cudaGetDeviceProperties_v12000 + 0.0 1,392 6 232.0 128.0 112 480 174.6 cudaGraphGetNodes_v10000 + 0.0 1,200 1 1,200.0 1,200.0 1,200 1,200 0.0 cudaUserObjectCreate_v11030 + 0.0 1,120 1 1,120.0 1,120.0 1,120 1,120 0.0 cudaGraphKernelNodeGetAttribute_v11000 + 0.0 976 2 488.0 488.0 112 864 531.7 cudaGraphNodeGetType_v10000 + 0.0 880 3 293.3 176.0 32 672 335.7 cuModuleGetLoadingMode + 0.0 720 2 360.0 360.0 128 592 328.1 cuOccupancyAvailableDynamicSMemPerBlock + 0.0 656 1 656.0 656.0 656 656 0.0 cuGraphCreate + 0.0 496 2 248.0 248.0 240 256 11.3 cuLibraryGetKernel + 0.0 192 1 192.0 192.0 192 192 0.0 cuGraphGetNodes + 0.0 144 1 144.0 144.0 144 144 0.0 cuStreamGetGreenCtx + +Processing [/tmp/mlxcel-auto-plan/2227-profile/cli-nsys.sqlite] with [/opt/nvidia/nsight-systems/2025.3.2/host-linux-armv8/reports/cuda_gpu_kern_sum.py]... + + ** CUDA GPU Kernel Summary (cuda_gpu_kern_sum): + + Time (%) Total Time (ns) Instances Avg (ns) Med (ns) Min (ns) Max (ns) StdDev (ns) Name + -------- --------------- --------- -------- -------- -------- -------- ----------- ---------------------------------------------------------------- + 100.0 1,116,448 536 2,082.9 1,536.0 1,248 12,288 1,244.3 mlx::core::cu::event_signal_kernel(unsigned int *, unsigned int) + +Processing [/tmp/mlxcel-auto-plan/2227-profile/cli-nsys.sqlite] with [/opt/nvidia/nsight-systems/2025.3.2/host-linux-armv8/reports/osrt_sum.py]... + + ** OS Runtime Summary (osrt_sum): + + Time (%) Total Time (ns) Num Calls Avg (ns) Med (ns) Min (ns) Max (ns) StdDev (ns) Name + -------- --------------- --------- ------------ ----------- --------- ------------- ------------- ---------------------- + 92.5 48,896,612,464 2,953 16,558,283.9 314,720.0 2,544 2,164,485,376 175,674,633.9 pthread_cond_wait + 4.0 2,115,318,912 6,630 319,052.6 87,184.0 1,008 162,089,680 3,693,828.5 poll + 2.5 1,344,050,064 2,882 466,360.2 258,280.0 1,024 66,127,072 2,551,405.3 sem_wait + 0.4 214,699,520 717 299,441.5 12,144.0 1,008 5,978,864 758,157.3 ioctl + 0.3 176,486,208 703 251,047.2 45,392.0 1,088 17,848,336 1,269,026.6 pread + 0.0 18,715,952 619 30,235.8 11,888.0 1,008 1,039,344 69,520.3 pthread_mutex_lock + 0.0 15,428,336 21 734,682.7 690,480.0 21,984 1,359,312 467,633.6 mlock + 0.0 15,371,088 28 548,967.4 46,440.0 32,736 11,103,440 2,104,525.7 pthread_join + 0.0 9,118,432 16 569,902.0 21,528.0 1,440 3,063,040 992,716.4 futex + 0.0 7,896,560 2,697 2,927.9 2,720.0 1,008 16,128 1,532.6 write + 0.0 7,818,560 2,044 3,825.1 3,664.0 1,008 17,856 1,894.4 pthread_cond_signal + 0.0 7,813,856 1,188 6,577.3 2,320.0 1,008 3,039,664 94,919.5 read + 0.0 5,058,816 1 5,058,816.0 5,058,816.0 5,058,816 5,058,816 0.0 nanosleep + 0.0 5,011,728 9 556,858.7 533,776.0 132,000 900,560 250,355.3 sem_timedwait + 0.0 2,654,816 15 176,987.7 124,032.0 69,344 547,568 145,583.4 pthread_create + 0.0 2,158,976 541 3,990.7 3,440.0 1,008 292,960 12,514.7 pthread_cond_broadcast + 0.0 2,055,952 25 82,238.1 8,064.0 2,896 528,000 124,287.9 mmap64 + 0.0 585,024 31 18,871.7 9,040.0 1,360 233,872 41,698.0 mmap + 0.0 305,344 53 5,761.2 3,136.0 1,056 29,120 5,881.5 fopen + 0.0 295,120 57 5,177.5 3,856.0 1,024 22,144 5,102.6 open64 + 0.0 257,680 1 257,680.0 257,680.0 257,680 257,680 0.0 pthread_rwlock_rdlock + 0.0 159,856 1 159,856.0 159,856.0 159,856 159,856 0.0 pthread_rwlock_wrlock + 0.0 104,576 6 17,429.3 17,240.0 2,432 28,816 9,327.5 fgets + 0.0 84,208 17 4,953.4 4,640.0 1,008 10,896 3,055.5 fread + 0.0 83,744 22 3,806.5 2,480.0 1,504 16,736 3,771.2 munmap + 0.0 52,528 20 2,626.4 2,576.0 1,008 4,640 1,258.3 fclose + 0.0 51,408 20 2,570.4 1,648.0 1,104 9,184 2,043.2 close + 0.0 47,744 6 7,957.3 7,160.0 2,576 14,672 5,482.8 stat + 0.0 35,616 13 2,739.7 2,160.0 1,120 8,384 1,869.8 statx + 0.0 33,424 7 4,774.9 4,080.0 1,072 8,800 3,122.0 open + 0.0 22,736 2 11,368.0 11,368.0 3,264 19,472 11,460.8 socket + 0.0 19,392 10 1,939.2 1,280.0 1,008 5,696 1,637.4 fcntl + 0.0 19,120 3 6,373.3 7,200.0 3,232 8,688 2,820.4 pipe2 + 0.0 19,056 1 19,056.0 19,056.0 19,056 19,056 0.0 connect + 0.0 4,944 1 4,944.0 4,944.0 4,944 4,944 0.0 signal + 0.0 2,800 1 2,800.0 2,800.0 2,800 2,800 0.0 fwrite + 0.0 2,384 1 2,384.0 2,384.0 2,384 2,384 0.0 bind + 0.0 1,968 1 1,968.0 1,968.0 1,968 1,968 0.0 mprotect + diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/cli-nsys.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/cli-nsys.log new file mode 100644 index 000000000..4893bb91c --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/cli-nsys.log @@ -0,0 +1,9 @@ +[cli ] prompt 256 tok TTFT 20.78 ms decode 128 tok in 669.25 ms = 191.26 tok/s chunk 2048 storage dense +[engine-bench] {"path":"cli","model":"qwen3-1.7b-4bit","prompt_target_len":256,"prompt_tokens":256,"generated_tokens":128,"ttft_ms":20.777547000000002,"prefill_tok_s":12320.992463643566,"decode_ms":669.24909,"decode_tok_s":191.25913193247675,"prefill_chunk":2048,"decode_storage":"dense","max_tokens":128,"label":"profile-cli","server_prompt_eval_ms":null,"server_generation_ms":null,"paged_decode_launches":null} +[engine-bench] summary (server vs cli at the same prompt length): + prompt 256: cli 20.78 ms TTFT, 191.26 tok/s | server - +Collecting data... +Generating '/tmp/nsys-report-8009.qdstrm' + [1/1] [0% ] cli-nsys.nsys-rep [1/1] [0% ] cli-nsys.nsys-rep [1/1] [6% ] cli-nsys.nsys-rep [1/1] [12% ] cli-nsys.nsys-rep [1/1] [==20% ] cli-nsys.nsys-rep [1/1] [=====30% ] cli-nsys.nsys-rep [1/1] [=======39% ] cli-nsys.nsys-rep [1/1] [==========48% ] cli-nsys.nsys-rep [1/1] [============57% ] cli-nsys.nsys-rep [1/1] [===============66% ] cli-nsys.nsys-rep [1/1] [==================76% ] cli-nsys.nsys-rep [1/1] [====================85% ] cli-nsys.nsys-rep [1/1] [=====================86% ] cli-nsys.nsys-rep [1/1] [========================100%] cli-nsys.nsys-rep [1/1] [========================100%] cli-nsys.nsys-rep +Generated: + /tmp/mlxcel-auto-plan/2227-profile/cli-nsys.nsys-rep diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/cli-plain.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/cli-plain.log new file mode 100644 index 000000000..4b986d34d --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/cli-plain.log @@ -0,0 +1,4 @@ +[cli ] prompt 256 tok TTFT 20.37 ms decode 128 tok in 660.11 ms = 193.91 tok/s chunk 2048 storage dense +[engine-bench] {"path":"cli","model":"qwen3-1.7b-4bit","prompt_target_len":256,"prompt_tokens":256,"generated_tokens":128,"ttft_ms":20.372872,"prefill_tok_s":12565.729564295109,"decode_ms":660.1149750000001,"decode_tok_s":193.90561469992403,"prefill_chunk":2048,"decode_storage":"dense","max_tokens":128,"label":"profile-cli","server_prompt_eval_ms":null,"server_generation_ms":null,"paged_decode_launches":null} +[engine-bench] summary (server vs cli at the same prompt length): + prompt 256: cli 20.37 ms TTFT, 193.91 tok/s | server - diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/environment.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/environment.txt new file mode 100644 index 000000000..e498ef4f8 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/environment.txt @@ -0,0 +1,51 @@ +2026-10-11T18:04:06+09:00 +spark-102 +Linux spark-102 7.0.0-1019-nvidia #19~24.04.2-Ubuntu SMP PREEMPT_DYNAMIC Sun Sep 6 18:35:11 UTC 2 aarch64 aarch64 aarch64 GNU/Linux +73700aafa6a792f07830578c0c26137cea3a038b + M src/server/batch/scheduler/config.rs + M src/server/batch/scheduler/decode_tick.rs + M src/server/batch/scheduler/mod.rs + M src/server/batch/scheduler/run_loop.rs + M src/server/batch/sequence.rs +?? src/server/batch/scheduler/b1_profile.rs +eb208514dc7dfbb8dbf9314d9c6d6cee5fd0ef50139abbb546e48d5b42a57572 /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/release/mlxcel-bench-engine +binary_size=90508048 binary_mtime=2026-10-11 18:01:32.590106717 +0900 +src/lib/mlx-cpp/patches-rocm/CORE_RESIDUAL.diff:18:# pin: 81ba1c6a0e50a9268b931579c2d4f1158b9aab5a +src/lib/mlx-cpp/patches-rocm/UPSTREAM:5:retargeted_to_mlx_pin: 81ba1c6a0e50a9268b931579c2d4f1158b9aab5a +src/lib/mlx-cpp/CMakeLists.txt:203: GIT_TAG 81ba1c6a0e50a9268b931579c2d4f1158b9aab5a) +NVIDIA Nsight Systems version 2025.3.2.474-253236389321v0 +Timestamp counter supported: Yes + +CPU Profiling Environment Check +Root privilege: disabled +Linux Kernel Paranoid Level = 4 +Linux Distribution = Ubuntu +Linux Kernel Version = 7.0.0-1019-nvidia: OK +Linux perf_event_open syscall available: Fail +Sampling trigger event available: Fail +Intel(c) Last Branch Record support: Not Available +CPU Profiling Environment (process-tree): Fail +CPU Profiling Environment (system-wide): Fail + +See the product documentation at https://docs.nvidia.com/nsight-systems for more information, +including information on how to set the Linux Kernel Paranoid Level. +Sun Oct 11 18:04:06 2026 ++-----------------------------------------------------------------------------------------+ +| NVIDIA-SMI 580.178.04 Driver Version: 580.178.04 CUDA Version: 13.0 | ++-----------------------------------------+------------------------+----------------------+ +| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | +| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | +| | | MIG M. | +|=========================================+========================+======================| +| 0 NVIDIA GB10 On | 0000000F:01:00.0 Off | N/A | +| N/A 47C P8 5W / N/A | Not Supported | 0% Default | +| | | N/A | ++-----------------------------------------+------------------------+----------------------+ + ++-----------------------------------------------------------------------------------------+ +| Processes: | +| GPU GI CI PID Type Process name GPU Memory | +| ID ID Usage | +|=========================================================================================| +| No running processes found | ++-----------------------------------------------------------------------------------------+ diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/hostgate.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/hostgate.log new file mode 100644 index 000000000..d97aaac21 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/hostgate.log @@ -0,0 +1,2 @@ +start 2026-10-11T09:03:11.023814+00:00 +quiet 2026-10-11T09:04:06.481854+00:00 diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/instrumentation.patch b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/instrumentation.patch new file mode 100644 index 000000000..2194c47c0 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/instrumentation.patch @@ -0,0 +1,472 @@ +diff --git a/src/server/batch/scheduler/config.rs b/src/server/batch/scheduler/config.rs +index 4a9e4fa5..03f9d950 100644 +--- a/src/server/batch/scheduler/config.rs ++++ b/src/server/batch/scheduler/config.rs +@@ -105,6 +105,7 @@ impl BatchScheduler { + request_rx, + batch_metrics, + batch_observability, ++ b1_decode_profile: b1_profile::B1DecodeProfile::new(), + config_eos, + prefill_chunk_policy: mlxcel_core::prefill_plan::PrefillChunkPolicy::resolve(Some( + prefill_chunk_size, +diff --git a/src/server/batch/scheduler/decode_tick.rs b/src/server/batch/scheduler/decode_tick.rs +index 01e4222b..46a1c3e3 100644 +--- a/src/server/batch/scheduler/decode_tick.rs ++++ b/src/server/batch/scheduler/decode_tick.rs +@@ -517,7 +517,10 @@ impl BatchScheduler { + } + } + let input = mlxcel_core::from_slice_i32(&last_tokens, &[seq_ids.len() as i32, 1]); ++ let profile_started = self.b1_decode_profile.start(); + self.decode_lookahead = self.prime_lookahead_with_input(seq_ids, &input, ¶ms); ++ self.b1_decode_profile ++ .record(b1_profile::Stage::LookaheadSubmit, profile_started); + } + + /// Submit one pipelined step for `seq_ids` on `input` (`[B, 1]`): the +@@ -608,9 +611,13 @@ impl BatchScheduler { + // through the host read below. This appends a second speculative KV + // position per sequence (the overshoot the issue accepts). + let next_input = mlxcel_core::engine::lookahead_feedback_input(&la.tokens); ++ let submit_started = self.b1_decode_profile.start(); + let next = self.prime_lookahead_with_input(seq_ids, &next_input, params); ++ self.b1_decode_profile ++ .record(b1_profile::Stage::LookaheadSubmit, submit_started); + + // Step 2: read step n's tokens to host (the sync point) and finish-check. ++ let collect_started = self.b1_decode_profile.start(); + let toks = match mlxcel_core::engine::try_tokens_to_host(&la.tokens) { + Ok(tokens) => tokens, + Err(msg) => { +@@ -618,6 +625,8 @@ impl BatchScheduler { + Vec::new() + } + }; ++ self.b1_decode_profile ++ .record(b1_profile::Stage::LookaheadCollect, collect_started); + let mut finishing = toks.len() != seq_ids.len(); + if !finishing { + for (i, &seq_id) in seq_ids.iter().enumerate() { +@@ -769,21 +778,39 @@ impl BatchScheduler { + let context = self.context_bound(); + let batch = StepBatch { seq_ids, input }; + let stepped = { ++ let lookup_started = self.b1_decode_profile.start(); + let Some(seqs) = self.active_batch.get_rows_mut(seq_ids) else { ++ self.b1_decode_profile ++ .record(b1_profile::Stage::RowLookup, lookup_started); + tracing::warn!("a sequence left the active batch before its decode step"); + return; + }; ++ self.b1_decode_profile ++ .record(b1_profile::Stage::RowLookup, lookup_started); + let tokenizer = &self.tokenizer; ++ let build_started = self.b1_decode_profile.start(); + let mut rows: Vec<_> = seqs + .into_iter() + .map(|seq| step_rows::step_row(seq, tokenizer, context, false)) + .collect(); +- self.engine.step(&batch, &mut rows) ++ self.b1_decode_profile ++ .record(b1_profile::Stage::RowBuild, build_started); ++ let engine_started = self.b1_decode_profile.start(); ++ let stepped = self.engine.step(&batch, &mut rows); ++ self.b1_decode_profile ++ .record(b1_profile::Stage::EngineStep, engine_started); ++ stepped + }; + match stepped { + Ok(out) => { ++ let finish_started = self.b1_decode_profile.start(); + self.finish_rows_state(&out.rows); ++ self.b1_decode_profile ++ .record(b1_profile::Stage::FinishState, finish_started); ++ let apply_started = self.b1_decode_profile.start(); + self.apply_row_outcomes(&out.rows); ++ self.b1_decode_profile ++ .record(b1_profile::Stage::ApplyOutcomes, apply_started); + } + Err(err) => tracing::error!("{err} during decode"), + } +@@ -848,23 +875,43 @@ impl BatchScheduler { + ); + let context = self.context_bound(); + let outcomes = { ++ let lookup_started = self.b1_decode_profile.start(); + let Some(seqs) = self.active_batch.get_rows_mut(seq_ids) else { ++ self.b1_decode_profile ++ .record(b1_profile::Stage::RowLookup, lookup_started); + tracing::warn!("a sequence left the active batch before its pipelined step"); + return; + }; ++ self.b1_decode_profile ++ .record(b1_profile::Stage::RowLookup, lookup_started); + let tokenizer = &self.tokenizer; ++ let build_started = self.b1_decode_profile.start(); + let mut rows: Vec<_> = seqs + .into_iter() + .map(|seq| step_rows::step_row(seq, tokenizer, context, false)) + .collect(); +- self.engine.finish_rows(tokens, &mut rows) ++ self.b1_decode_profile ++ .record(b1_profile::Stage::RowBuild, build_started); ++ let finish_started = self.b1_decode_profile.start(); ++ let outcomes = self.engine.finish_rows(tokens, &mut rows); ++ self.b1_decode_profile ++ .record(b1_profile::Stage::FusedFinishRows, finish_started); ++ outcomes + }; ++ let finish_state_started = self.b1_decode_profile.start(); + self.finish_rows_state(&outcomes); ++ self.b1_decode_profile.record( ++ b1_profile::Stage::FinishState, ++ finish_state_started, ++ ); + // The gate keeps per-row failures off this path; a failed row here is + // the engine refusing a token count that does not match the rows, and + // it must finish with an error rather than stall. + if outcomes.iter().any(|outcome| outcome.error.is_some()) { ++ let apply_started = self.b1_decode_profile.start(); + self.apply_row_outcomes(&outcomes); ++ self.b1_decode_profile ++ .record(b1_profile::Stage::ApplyOutcomes, apply_started); + } + } + +diff --git a/src/server/batch/scheduler/mod.rs b/src/server/batch/scheduler/mod.rs +index a1b6aa9c..073d11da 100644 +--- a/src/server/batch/scheduler/mod.rs ++++ b/src/server/batch/scheduler/mod.rs +@@ -337,6 +337,8 @@ pub struct BatchScheduler { + batch_metrics: Arc, + /// Detailed observability counters (prefill, decode, cache). + batch_observability: Arc, ++ /// Temporary issue #2227 pre-change host-time attribution. ++ b1_decode_profile: b1_profile::B1DecodeProfile, + + // -- Configuration -- + config_eos: Vec, +@@ -948,6 +950,7 @@ fn validate_dense_detached_kv_modes_against_table( + + mod admission; + mod admission_watermark; ++pub(crate) mod b1_profile; + mod block_reclaim; + mod config; + mod decode_tick; +diff --git a/src/server/batch/scheduler/run_loop.rs b/src/server/batch/scheduler/run_loop.rs +index 207b4cbe..cfd842ba 100644 +--- a/src/server/batch/scheduler/run_loop.rs ++++ b/src/server/batch/scheduler/run_loop.rs +@@ -257,6 +257,14 @@ impl BatchScheduler { + install_thread_local_default_stream(self.generation_stream.as_ref()); + + loop { ++ // Temporary issue #2227 profile: an active B=1 row at loop entry ++ // means prefill has ended and the next measurements belong to the ++ // decode request, so discard startup/prefill samples here. ++ if self.active_batch.len() == 1 { ++ self.b1_decode_profile.begin_decode_tick(); ++ } ++ let profile_tick_started = self.b1_decode_profile.start(); ++ let mut profiled_decode = false; + // 1. Non-blocking drain of all pending requests + self.drain_incoming_requests(); + +@@ -304,6 +312,7 @@ impl BatchScheduler { + } + BatchSchedulerAction::Decode(ids) => { + self.execute_decode_step(&ids); ++ profiled_decode = ids.len() == 1; + // A classic action ran: the next tick goes back to the + // in-flight speculative slice, if any (issue #734). + self.speculative_slice_yielded = false; +@@ -406,11 +415,23 @@ impl BatchScheduler { + } + + // 4. Clean up completed sequences ++ let finalize_started = self.b1_decode_profile.start(); + self.finalize_completed(); ++ self.b1_decode_profile.record( ++ b1_profile::Stage::FinalizeCompleted, ++ finalize_started, ++ ); ++ if profiled_decode { ++ self.b1_decode_profile.record_tick(profile_tick_started); ++ if self.active_batch.is_empty() { ++ self.b1_decode_profile.emit_and_reset(); ++ } ++ } + } + } + + pub(super) fn publish_metrics(&self) { ++ let profile_started = self.b1_decode_profile.start(); + let active = self.active_batch.len(); + let queued = self.prefill_queue.len(); + let paged_stats = self.engine.pool().paged_stats(); +@@ -434,5 +455,7 @@ impl BatchScheduler { + // makes the answer readable from `/health` without a profiler. + self.batch_observability + .update_paged_decode_gauges(mlxcel_core::cache::paged_batch_decode_stats()); ++ self.b1_decode_profile ++ .record(b1_profile::Stage::Metrics, profile_started); + } + } +diff --git a/src/server/batch/sequence.rs b/src/server/batch/sequence.rs +index cb4166ef..7e40c858 100644 +--- a/src/server/batch/sequence.rs ++++ b/src/server/batch/sequence.rs +@@ -728,7 +728,9 @@ pub(crate) fn emit_decoded_piece( + Some(lp) => GenerateEvent::TokenWithLogprobs(text, meta, lp), + None => GenerateEvent::Token(text, meta), + }; ++ let send_started = super::scheduler::b1_profile::started(); + let _ = response_tx.send(event); ++ super::scheduler::b1_profile::record_event_send(send_started); + return None; + } + +@@ -747,7 +749,9 @@ pub(crate) fn emit_decoded_piece( + Some(lp) => GenerateEvent::TokenWithLogprobs(chunk.emit, meta, lp), + None => GenerateEvent::Token(chunk.emit, meta), + }; ++ let send_started = super::scheduler::b1_profile::started(); + let _ = response_tx.send(event); ++ super::scheduler::b1_profile::record_event_send(send_started); + chunk.matched + } + +diff --git a/src/server/batch/scheduler/b1_profile.rs b/src/server/batch/scheduler/b1_profile.rs +new file mode 100644 +index 00000000..2be204a0 +--- /dev/null ++++ b/src/server/batch/scheduler/b1_profile.rs +@@ -0,0 +1,226 @@ ++// Copyright 2025-2026 Lablup Inc. ++// ++// Licensed under the Apache License, Version 2.0 (the "License"); ++// you may not use this file except in compliance with the License. ++// You may obtain a copy of the License at ++// ++// http://www.apache.org/licenses/LICENSE-2.0 ++// ++// Unless required by applicable law or agreed to in writing, software ++// distributed under the License is distributed on an "AS IS" BASIS, ++// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++// See the License for the specific language governing permissions and ++// limitations under the License. ++ ++//! Temporary host-clock attribution for issue #2227's pre-change profile. ++//! ++//! This module is removed after the required baseline profile. It is gated by ++//! `MLXCEL_B1_DECODE_PROFILE=1`, so the same release binary can run the CLI arm ++//! without timer overhead and the server arm with per-stage attribution. ++ ++use std::cell::Cell; ++use std::fmt::Write as _; ++use std::sync::OnceLock; ++use std::time::{Duration, Instant}; ++ ++const PROFILE_ENV: &str = "MLXCEL_B1_DECODE_PROFILE"; ++ ++#[derive(Debug, Clone, Copy)] ++pub(super) enum Stage { ++ Metrics, ++ RowLookup, ++ RowBuild, ++ EngineStep, ++ FinishState, ++ ApplyOutcomes, ++ LookaheadSubmit, ++ LookaheadCollect, ++ FusedFinishRows, ++ FinalizeCompleted, ++} ++ ++impl Stage { ++ const ALL: [Self; 10] = [ ++ Self::Metrics, ++ Self::RowLookup, ++ Self::RowBuild, ++ Self::EngineStep, ++ Self::FinishState, ++ Self::ApplyOutcomes, ++ Self::LookaheadSubmit, ++ Self::LookaheadCollect, ++ Self::FusedFinishRows, ++ Self::FinalizeCompleted, ++ ]; ++ ++ const fn index(self) -> usize { ++ self as usize ++ } ++ ++ const fn name(self) -> &'static str { ++ match self { ++ Self::Metrics => "metrics", ++ Self::RowLookup => "row_lookup", ++ Self::RowBuild => "row_build", ++ Self::EngineStep => "engine_step", ++ Self::FinishState => "finish_state", ++ Self::ApplyOutcomes => "apply_outcomes", ++ Self::LookaheadSubmit => "lookahead_submit", ++ Self::LookaheadCollect => "lookahead_collect", ++ Self::FusedFinishRows => "fused_finish_rows", ++ Self::FinalizeCompleted => "finalize_completed", ++ } ++ } ++} ++ ++fn enabled() -> bool { ++ static ENABLED: OnceLock = OnceLock::new(); ++ *ENABLED.get_or_init(|| std::env::var(PROFILE_ENV).is_ok_and(|value| value.trim() == "1")) ++} ++ ++pub(crate) fn started() -> Option { ++ enabled().then(Instant::now) ++} ++ ++fn duration_ns(duration: Duration) -> u64 { ++ duration.as_nanos().min(u128::from(u64::MAX)) as u64 ++} ++ ++thread_local! { ++ static EVENT_SEND_NS: Cell = const { Cell::new(0) }; ++ static EVENT_SEND_CALLS: Cell = const { Cell::new(0) }; ++} ++ ++pub(crate) fn record_event_send(started: Option) { ++ let Some(started) = started else { ++ return; ++ }; ++ let elapsed = duration_ns(started.elapsed()); ++ EVENT_SEND_NS.with(|total| total.set(total.get().saturating_add(elapsed))); ++ EVENT_SEND_CALLS.with(|calls| calls.set(calls.get().saturating_add(1))); ++} ++ ++fn reset_event_send() { ++ EVENT_SEND_NS.with(|total| total.set(0)); ++ EVENT_SEND_CALLS.with(|calls| calls.set(0)); ++} ++ ++fn event_send_snapshot() -> (u64, u64) { ++ let total = EVENT_SEND_NS.with(Cell::get); ++ let calls = EVENT_SEND_CALLS.with(Cell::get); ++ (total, calls) ++} ++ ++pub(super) struct B1DecodeProfile { ++ enabled: bool, ++ run: Cell, ++ ticks: Cell, ++ tick_ns: Cell, ++ stage_ns: [Cell; Stage::ALL.len()], ++ stage_calls: [Cell; Stage::ALL.len()], ++} ++ ++impl B1DecodeProfile { ++ pub(super) fn new() -> Self { ++ Self { ++ enabled: enabled(), ++ run: Cell::new(0), ++ ticks: Cell::new(0), ++ tick_ns: Cell::new(0), ++ stage_ns: std::array::from_fn(|_| Cell::new(0)), ++ stage_calls: std::array::from_fn(|_| Cell::new(0)), ++ } ++ } ++ ++ pub(super) fn start(&self) -> Option { ++ self.enabled.then(Instant::now) ++ } ++ ++ pub(super) fn begin_decode_tick(&self) { ++ if !self.enabled || self.ticks.get() != 0 { ++ return; ++ } ++ self.clear_measurement(); ++ } ++ ++ pub(super) fn record(&self, stage: Stage, started: Option) { ++ let Some(started) = started else { ++ return; ++ }; ++ let index = stage.index(); ++ self.stage_ns[index].set( ++ self.stage_ns[index] ++ .get() ++ .saturating_add(duration_ns(started.elapsed())), ++ ); ++ self.stage_calls[index].set(self.stage_calls[index].get().saturating_add(1)); ++ } ++ ++ pub(super) fn record_tick(&self, started: Option) { ++ let Some(started) = started else { ++ return; ++ }; ++ self.tick_ns ++ .set(self.tick_ns.get().saturating_add(duration_ns(started.elapsed()))); ++ self.ticks.set(self.ticks.get().saturating_add(1)); ++ } ++ ++ pub(super) fn emit_and_reset(&self) { ++ if !self.enabled || self.ticks.get() == 0 { ++ return; ++ } ++ let run = self.run.get().saturating_add(1); ++ self.run.set(run); ++ let ticks = self.ticks.get(); ++ let tick_ns = self.tick_ns.get(); ++ let mut line = format!( ++ "[b1-profile] {{\"run\":{run},\"ticks\":{ticks},\"tick_total_ns\":{tick_ns},\"tick_avg_us\":{:.3},\"stages\":{{", ++ tick_ns as f64 / ticks as f64 / 1_000.0 ++ ); ++ for (position, stage) in Stage::ALL.into_iter().enumerate() { ++ if position > 0 { ++ line.push(','); ++ } ++ let index = stage.index(); ++ let total = self.stage_ns[index].get(); ++ let calls = self.stage_calls[index].get(); ++ let tick_pct = if tick_ns == 0 { ++ 0.0 ++ } else { ++ total as f64 * 100.0 / tick_ns as f64 ++ }; ++ let _ = write!( ++ line, ++ "\"{}\":{{\"calls\":{},\"total_ns\":{},\"tick_pct\":{:.4}}}", ++ stage.name(), ++ calls, ++ total, ++ tick_pct ++ ); ++ } ++ let (event_ns, event_calls) = event_send_snapshot(); ++ let event_pct = if tick_ns == 0 { ++ 0.0 ++ } else { ++ event_ns as f64 * 100.0 / tick_ns as f64 ++ }; ++ let _ = write!( ++ line, ++ "}},\"event_send\":{{\"calls\":{event_calls},\"total_ns\":{event_ns},\"tick_pct\":{event_pct:.4}}}}}" ++ ); ++ eprintln!("{line}"); ++ self.clear_measurement(); ++ } ++ ++ fn clear_measurement(&self) { ++ self.ticks.set(0); ++ self.tick_ns.set(0); ++ for value in &self.stage_ns { ++ value.set(0); ++ } ++ for value in &self.stage_calls { ++ value.set(0); ++ } ++ reset_event_send(); ++ } ++} diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/parse-profile.py b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/parse-profile.py new file mode 100755 index 000000000..2a3fe7822 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/parse-profile.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 +"""Render issue #2227's measured-request host-timer summary.""" + +from __future__ import annotations + +import argparse +import json +from pathlib import Path + + +PREFIX = "[b1-profile] " + + +def records(path: Path) -> list[dict[str, object]]: + found: list[dict[str, object]] = [] + for line in path.read_text(encoding="utf-8").splitlines(): + if line.startswith(PREFIX): + found.append(json.loads(line.removeprefix(PREFIX))) + return found + + +def main() -> None: + parser = argparse.ArgumentParser() + parser.add_argument("log", type=Path) + args = parser.parse_args() + found = records(args.log) + if not found: + raise SystemExit(f"no {PREFIX.strip()} records in {args.log}") + measured = found[-1] + print( + f"run={measured['run']} ticks={measured['ticks']} " + f"tick_avg_us={measured['tick_avg_us']}" + ) + print("stage\tcalls\ttotal_ns\ttick_pct\tavg_ns_per_call") + stages = dict(measured["stages"]) + stages["event_send"] = measured["event_send"] + for name, raw in stages.items(): + stage = dict(raw) + calls = int(stage["calls"]) + total = int(stage["total_ns"]) + average = total / calls if calls else 0.0 + print(f"{name}\t{calls}\t{total}\t{stage['tick_pct']}\t{average:.3f}") + + +if __name__ == "__main__": + main() diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/profile-analysis.md b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/profile-analysis.md new file mode 100644 index 000000000..bc6331070 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/profile-analysis.md @@ -0,0 +1,45 @@ +# Issue #2227 pre-change B=1 profile analysis + +## Provenance and method + +The profile used one release build from source `73700aafa6a792f07830578c0c26137cea3a038b` plus the temporary, environment-gated profiler patch `306b2664d8b69186cc896ec83c1f6323e534372fc1148fd75fc4df9e5e2fe0b6`. The profiled `mlxcel-bench-engine` SHA-256 was `eb208514dc7dfbb8dbf9314d9c6d6cee5fd0ef50139abbb546e48d5b42a57572`. The temporary instrumentation was removed before the production change. + +Both paths used Qwen3-1.7B 4-bit, a 256-token prompt, 16 warm-up tokens, 128 measured decode tokens, dense storage, and `MLXCEL_SDPA_DETERMINISTIC=1`. The server and CLI executions came from the same binary. Host: `spark-102`, NVIDIA GB10, driver 580.178.04, CUDA 13.0, MLX pin `81ba1c6a0e50a9268b931579c2d4f1158b9aab5a`. + +Linux had `perf_event_paranoid=4`, and Nsight Systems reported CPU sampling unavailable. The CUDA/OSRT trace therefore used Nsight Systems 2025.3.2 with `--sample=none --event-sample=none --backtrace=none --cpuctxsw=none`. Temporary `Instant` timers attributed host-side stages. The tick denominator starts at the normal scheduler loop entry and ends after `finalize_completed`; the profiler clears any startup and prefill samples when the first B=1 decode tick begins. `lookahead_submit` includes asynchronous GPU work that completes before the call returns and must not be read as pure host overhead. + +The exact driver, parser, temporary patch, logs, and Nsight summaries are in the raw-data directory. Their source hashes are: + +- `run-profile.sh`: `9c3cab236f478d46524c6e990a566167be24694d53fb17651d240172b9e5b8f1` +- `parse-profile.py`: `f36f9d38083f07c40002f86a101565dd4cb268f5ec9ae1fd94a1bb9f3b86bb79` +- `instrumentation.patch`: `306b2664d8b69186cc896ec83c1f6323e534372fc1148fd75fc4df9e5e2fe0b6` +- `server-host-breakdown.txt`: `a9e49debc092aead3b64f5674062bdfbb2b087758a0d9772c768a69280ba1728` +- `server-nsys-stats.txt`: `c2439b8e2c180c71066f7877852da37f247bc9ed655cac3e84b59d9f4b2c7ed4` +- `cli-nsys-stats.txt`: `7eccd23136832d2c55c8c16f5c2ce20cda4acb81bcf43d5ad2c4bef0ffca397b` + +## Host timers + +The measured request had 127 decode ticks averaging 5,318.203 microseconds. + +| Stage | Calls | Total ns | Percent of full decode tick | +|---|---:|---:|---:| +| Metrics publication | 128 | 312,052 | 0.0462% | +| Row lookup | 127 | 17,824 | 0.0026% | +| Row build | 127 | 18,096 | 0.0027% | +| Lookahead collect | 126 | 564,546 | 0.0836% | +| Fused finish rows | 125 | 976,026 | 0.1445% | +| Provider channel send | 127 | 471,319 | 0.0698% | +| Lookahead submit | 127 | 656,315,740 | 97.1727% | +| Synchronous engine step | 2 | 13,668,204 | 2.0237% | + +The provider measurement covers only the `mpsc` send. It does not cover token decoding or `String` allocation, so no broader claim is made about those operations. `StreamFilter` is downstream of the provider and outside `mlxcel-bench-engine`'s server path. + +The issue requires leaving candidates below 0.1% alone. Row lookup plus row construction measured about 0.0053%, metrics 0.0462%, provider channel send 0.0698%, and lookahead collect 0.0836%; none was changed. `fused_finish_rows` exceeded 0.1%, but it performs the required shared sampling/finish state transition and is retained. The profiler did not identify an equivalent result-preserving call that could be removed from every tick. + +## CUDA evidence and selected change + +The Nsight Systems CUDA summaries recorded 4,067 `cudaGraphLaunch` calls on the server and 3,941 on the CLI, a difference of 126. `cudaGraphExecUpdate` was 4,019 versus 3,894, a difference of 125. These are aggregate CUDA graph API counts, not decode-token or model-forward counts. Each trace covers both the 16-token warm-up request and the 128-token measured request, and a model forward emits multiple graph calls, so this aggregate difference is used only as corroborating evidence of extra server-side GPU work. It is not divided into a per-token or per-forward estimate. + +Source tracing and the scheduler forward-count test identify the request-level cause. `DirectEngine` checks whether the pending token will exhaust `max_tokens` before submitting another lookahead. The scheduler previously submitted token n+1 first, collected pending terminal token n, unwound both speculative KV appends, and synchronously replayed token n. At the length boundary this performs two complete, unused Qwen decode forwards: the n+1 lookahead and the replay of n. It happens once per fused-lookahead-eligible capped B=1 request, rather than once per decode token. + +The production change applies the same known length-budget check to a B=1 pending lookahead. When that pending token must exhaust the budget, the scheduler skips n+1 and commits n through the shared `finish_rows` path. EOS and errors retain existing precedence and handling. B>1 keeps its existing teardown/replay path. Dense cycle-Llama tests first assert that lookahead is eligible and live, then count actual scheduler `submit`/`step` calls across max-token boundaries 0, 1, 2, 3, and 4; they pin B=1 at two forwards and unchanged B=2 at four for `max_tokens=3`, plus stochastic pending-draw commit and EOS precedence. A separate model-owned Muse fixture compares B=1 and B=2 generated token IDs, `FinishReason`, stream text, pool offset, and model-state offsets while explicitly documenting that Muse remains on its synchronous path. diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/profile-build.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/profile-build.log new file mode 100644 index 000000000..ea8b2718c --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/profile-build.log @@ -0,0 +1,106 @@ + Compiling mlxcel-core v0.7.0 (/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/src/lib/mlxcel-core) + Compiling mlxcel-surgery v0.7.0 (/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/src/lib/mlxcel-surgery) + Compiling mlxcel v0.7.0 (/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227) +warning: mlxcel-core@0.7.0: In file included from cpp/mlx_cxx_bridge.cpp:7: +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/release/build/mlxcel-core-4c8821fbbcc3d8f4/out/build/include/mlx/primitives.h: In member function 'std::pair mlx::core::AddMM::state() const': +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/release/build/mlxcel-core-4c8821fbbcc3d8f4/out/build/include/mlx/primitives.h:204:41: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 204 | std::pair state() const { +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp: In function 'mlx_cxx::{anonymous}::get_compiled_q_path_proportional(int, int, int, float)::&)>': +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3851:31: warning: '*(int*)((char*)&in_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 3851 | int B = in_shape[0]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3850:18: note: 'in_shape' declared here +warning: mlxcel-core@0.7.0: 3850 | auto in_shape = q_in.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3851:31: warning: '*(int*)((char*)&in_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 3851 | int B = in_shape[0]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3850:18: note: 'in_shape' declared here +warning: mlxcel-core@0.7.0: 3850 | auto in_shape = q_in.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp: In lambda function: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2190:24: warning: '*(int*)((char*)&shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 2190 | int B = shape[0], H = shape[1], S = shape[2], D = shape[3]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2189:14: note: 'shape' declared here +warning: mlxcel-core@0.7.0: 2189 | auto shape = x.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2190:24: warning: '*(int*)((char*)&shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 2190 | int B = shape[0], H = shape[1], S = shape[2], D = shape[3]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2189:14: note: 'shape' declared here +warning: mlxcel-core@0.7.0: 2189 | auto shape = x.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp: In lambda function: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3362:24: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 3362 | ref_rms); +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp: At global scope: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3792:24: warning: 'mlx_cxx::{anonymous}::ADD3_LN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 3792 | static const char* ADD3_LN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3027:24: warning: 'mlx_cxx::{anonymous}::MOE_FC1_RELU2_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 3027 | static const char* MOE_FC1_RELU2_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2847:24: warning: 'mlx_cxx::{anonymous}::MOE_DOWN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2847 | static const char* MOE_DOWN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2708:24: warning: 'mlx_cxx::{anonymous}::MOE_GATEUP_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2708 | static const char* MOE_GATEUP_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2129:24: warning: 'mlx_cxx::{anonymous}::MAMBA1_SCAN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2129 | static const char* MAMBA1_SCAN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:752:24: warning: 'mlx_cxx::{anonymous}::SSM_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 752 | static const char* SSM_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:452:24: warning: 'mlx_cxx::{anonymous}::XIELU_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 452 | static const char* XIELU_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:159:24: warning: 'mlx_cxx::{anonymous}::BITLINEAR_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 159 | static const char* BITLINEAR_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp: In function 'void mlx_cxx::nemotron_decode_step(uint64_t, const MlxArray&, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, std::unique_ptr&, rust::cxxbridge1::Slice >, rust::cxxbridge1::Slice >)': +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:156:16: warning: '*(int*)((char*)&id_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 156 | h = reshape(h, {id_shape[0], id_shape[1], (int)h.shape().back()}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:155:10: note: 'id_shape' declared here +warning: mlxcel-core@0.7.0: 155 | auto id_shape = input_ids.inner.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:156:16: warning: '*(int*)((char*)&id_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 156 | h = reshape(h, {id_shape[0], id_shape[1], (int)h.shape().back()}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:155:10: note: 'id_shape' declared here +warning: mlxcel-core@0.7.0: 155 | auto id_shape = input_ids.inner.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:244:28: warning: '*(int*)((char*)&ks + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 244 | k = reshape(k, {ks[0], ks[1], 1, ks[2], ks[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:243:22: note: 'ks' declared here +warning: mlxcel-core@0.7.0: 243 | auto ks = k.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:244:28: warning: '*(int*)((char*)&ks + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 244 | k = reshape(k, {ks[0], ks[1], 1, ks[2], ks[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:243:22: note: 'ks' declared here +warning: mlxcel-core@0.7.0: 243 | auto ks = k.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:248:28: warning: '*(int*)((char*)&vs + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 248 | v = reshape(v, {vs[0], vs[1], 1, vs[2], vs[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:247:22: note: 'vs' declared here +warning: mlxcel-core@0.7.0: 247 | auto vs = v.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:248:28: warning: '*(int*)((char*)&vs + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 248 | v = reshape(v, {vs[0], vs[1], 1, vs[2], vs[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:247:22: note: 'vs' declared here +warning: mlxcel-core@0.7.0: 247 | auto vs = v.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: In file included from ../mlx-cpp/turbo/kv_inplace_write.cpp:23: +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/release/build/mlxcel-core-4c8821fbbcc3d8f4/out/build/include/mlx/primitives.h: In member function 'std::pair mlx::core::AddMM::state() const': +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/release/build/mlxcel-core-4c8821fbbcc3d8f4/out/build/include/mlx/primitives.h:204:41: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 204 | std::pair state() const { +warning: mlxcel-core@0.7.0: | ^ + Finished `release` profile [optimized] target(s) in 16m 38s diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/profile-phase.sh b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/profile-phase.sh new file mode 100644 index 000000000..5805847c6 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/profile-phase.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +set -euo pipefail +cd /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227 +python3 - <<'PY' > /tmp/mlxcel-auto-plan/2227-profile/hostgate.log 2>&1 +import sys,datetime +sys.path.insert(0,'docs/benchmark_results/data/sdpa-plan-bucket-gb10-2026-09-12/harness') +import hostgate +print('start',datetime.datetime.now(datetime.timezone.utc).isoformat(),flush=True) +hostgate.wait_quiet(log=sys.stdout) +print('quiet',datetime.datetime.now(datetime.timezone.utc).isoformat(),flush=True) +PY +bash /tmp/mlxcel-auto-plan/2227-profile/run-profile.sh +OUT=/tmp/mlxcel-auto-plan/2227-run-parity/before bash /tmp/mlxcel-auto-plan/2227-profile/capture-run-before.sh diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/run-profile.sh b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/run-profile.sh new file mode 100755 index 000000000..5a45289da --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/run-profile.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash +set -euo pipefail + +WT=${WT:-/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227} +OUT=${OUT:-/tmp/mlxcel-auto-plan/2227-profile} +MODEL=${MODEL:-models/mlx/qwen3-1.7b-4bit} +BIN=${BIN:-$WT/target/release/mlxcel-bench-engine} +PROMPT_TOKENS=${PROMPT_TOKENS:-256} +MAX_TOKENS=${MAX_TOKENS:-128} +WARMUP_TOKENS=${WARMUP_TOKENS:-16} + +mkdir -p "$OUT" +cd "$WT" +test -x "$BIN" + +{ + date --iso-8601=seconds + hostname + uname -a + git rev-parse HEAD + git status --short + sha256sum "$BIN" + stat --format='binary_size=%s binary_mtime=%y' "$BIN" + rg -n '81ba1c6a0e50a9268b931579c2d4f1158b9aab5a' CMakeLists.txt cmake src 2>/dev/null || true + nsys --version + nsys status --environment + nvidia-smi +} >"$OUT/environment.txt" 2>&1 + +COMMON=( + --model "$MODEL" + --prompt-tokens "$PROMPT_TOKENS" + --max-tokens "$MAX_TOKENS" + --warmup-tokens "$WARMUP_TOKENS" + --decode-storage dense +) + +gpu-lock run --tag issue-2227-profile-cli -- \ + env MLXCEL_SDPA_DETERMINISTIC=1 "$BIN" \ + --path cli "${COMMON[@]}" --label profile-cli \ + >"$OUT/cli-plain.log" 2>&1 + +gpu-lock run --tag issue-2227-profile-server -- \ + env MLXCEL_SDPA_DETERMINISTIC=1 MLXCEL_B1_DECODE_PROFILE=1 "$BIN" \ + --path server "${COMMON[@]}" --label profile-server \ + >"$OUT/server-plain.log" 2>&1 + +NSYS=( + nsys profile + --trace=cuda,osrt + --sample=none + --event-sample=none + --backtrace=none + --cpuctxsw=none + --gpuctxsw=false + --force-overwrite=true +) + +gpu-lock run --tag issue-2227-nsys-cli -- \ + "${NSYS[@]}" -o "$OUT/cli-nsys" \ + env MLXCEL_SDPA_DETERMINISTIC=1 "$BIN" \ + --path cli "${COMMON[@]}" --label profile-cli \ + >"$OUT/cli-nsys.log" 2>&1 + +gpu-lock run --tag issue-2227-nsys-server -- \ + "${NSYS[@]}" -o "$OUT/server-nsys" \ + env MLXCEL_SDPA_DETERMINISTIC=1 MLXCEL_B1_DECODE_PROFILE=1 "$BIN" \ + --path server "${COMMON[@]}" --label profile-server \ + >"$OUT/server-nsys.log" 2>&1 + +for arm in cli server; do + nsys stats --force-export=true \ + --report cuda_api_sum,cuda_gpu_kern_sum,osrt_sum \ + "$OUT/$arm-nsys.nsys-rep" >"$OUT/$arm-nsys-stats.txt" +done + +python3 "$OUT/parse-profile.py" "$OUT/server-plain.log" \ + >"$OUT/server-host-breakdown.txt" diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/server-host-breakdown.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/server-host-breakdown.txt new file mode 100644 index 000000000..d75cef526 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/server-host-breakdown.txt @@ -0,0 +1,13 @@ +run=2 ticks=127 tick_avg_us=5318.203 +stage calls total_ns tick_pct avg_ns_per_call +metrics 128 312052 0.0462 2437.906 +row_lookup 127 17824 0.0026 140.346 +row_build 127 18096 0.0027 142.488 +engine_step 2 13668204 2.0237 6834102.000 +finish_state 127 6208 0.0009 48.882 +apply_outcomes 2 128 0.0 64.000 +lookahead_submit 127 656315740 97.1727 5167840.472 +lookahead_collect 126 564546 0.0836 4480.524 +fused_finish_rows 125 976026 0.1445 7808.208 +finalize_completed 127 63696 0.0094 501.543 +event_send 127 471319 0.0698 3711.173 diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/server-nsys-stats.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/server-nsys-stats.txt new file mode 100644 index 000000000..a54590439 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/server-nsys-stats.txt @@ -0,0 +1,125 @@ +Generating SQLite file /tmp/mlxcel-auto-plan/2227-profile/server-nsys.sqlite from /tmp/mlxcel-auto-plan/2227-profile/server-nsys.nsys-rep +Processing [/tmp/mlxcel-auto-plan/2227-profile/server-nsys.sqlite] with [/opt/nvidia/nsight-systems/2025.3.2/host-linux-armv8/reports/cuda_api_sum.py]... + + ** CUDA API Summary (cuda_api_sum): + + Time (%) Total Time (ns) Num Calls Avg (ns) Med (ns) Min (ns) Max (ns) StdDev (ns) Name + -------- --------------- --------- ------------ ----------- --------- ---------- ------------ --------------------------------------- + 34.5 262,712,816 67,796 3,875.0 528.0 400 65,145,088 399,933.5 cudaGraphAddKernelNode_v10000 + 12.7 96,363,472 704 136,879.9 45,184.0 2,096 3,528,768 324,864.8 cudaMemcpyAsync + 10.3 78,479,344 4 19,619,836.0 5,885,744.0 4,673,424 62,034,432 28,296,402.9 cuModuleLoadDataEx + 9.4 71,835,024 4,067 17,662.9 14,336.0 2,624 98,784 12,079.3 cudaGraphLaunch_v10000 + 8.8 66,874,912 4,019 16,639.7 14,688.0 544 80,912 11,422.3 cudaGraphExecUpdate_v10020 + 7.3 55,712,720 1,227 45,405.6 1,200.0 448 6,256,432 307,111.5 cudaMallocAsync_v11020 + 3.1 23,764,112 8 2,970,514.0 2,059,896.0 1,307,040 7,164,208 2,179,252.0 cudaEventSynchronize + 2.3 17,599,008 5,225 3,368.2 2,192.0 1,024 568,048 11,809.9 cudaLaunchHostFunc_v10000 + 2.0 15,042,432 5,207 2,888.9 2,144.0 320 184,704 3,878.9 cudaEventRecord + 1.5 11,533,376 4,071 2,833.1 2,080.0 240 25,504 2,804.2 cudaGraphDestroy_v10000 + 1.4 10,291,264 536 19,200.1 2,760.0 2,176 7,804,576 336,931.0 cudaLaunchKernel + 1.3 10,199,808 48 212,496.0 106,896.0 54,160 1,253,552 236,920.0 cudaGraphInstantiate_v12000 + 1.3 10,047,712 4,070 2,468.7 1,360.0 560 206,672 4,587.7 cudaGraphCreate_v10000 + 1.2 9,183,184 8,234 1,115.3 544.0 304 35,888 2,923.0 cudaEventQuery + 0.6 4,697,328 3,792 1,238.7 896.0 160 20,640 1,307.6 cudaGraphAddDependencies_v12030 + 0.6 4,333,264 5,060 856.4 544.0 240 11,760 1,133.5 cudaStreamWaitEvent + 0.4 3,234,608 48 67,387.7 37,760.0 7,920 479,808 106,259.9 cudaGraphExecDestroy_v10000 + 0.3 2,118,464 4,900 432.3 160.0 96 16,832 886.2 cuGraphAddKernelNode_v2 + 0.2 1,610,864 21 76,707.8 4,304.0 1,616 305,376 108,859.8 cudaStreamCreateWithFlags + 0.1 909,856 1 909,856.0 909,856.0 909,856 909,856 0.0 cudaHostAlloc + 0.1 890,592 1 890,592.0 890,592.0 890,592 890,592 0.0 cuKernelGetFunction + 0.0 375,776 370 1,015.6 832.0 432 12,032 727.7 cudaFreeAsync_v11020 + 0.0 364,016 1 364,016.0 364,016.0 364,016 364,016 0.0 cudaFreeHost + 0.0 312,112 5 62,422.4 19,648.0 8,384 225,136 92,486.5 cudaFree + 0.0 275,952 1,203 229.4 128.0 80 3,904 332.7 cudaMemPoolGetAttribute_v11020 + 0.0 252,384 57 4,427.8 2,864.0 1,328 20,576 4,260.1 cudaGraphAddChildGraphNode_v10000 + 0.0 234,368 153 1,531.8 832.0 416 7,248 1,509.5 cudaEventCreateWithFlags + 0.0 183,456 916 200.3 128.0 32 36,208 1,208.0 cuGetProcAddress_v2 + 0.0 182,592 153 1,193.4 784.0 224 5,360 1,023.4 cudaEventDestroy + 0.0 151,776 2 75,888.0 75,888.0 37,840 113,936 53,808.0 cuModuleLoadData + 0.0 127,808 2 63,904.0 63,904.0 6,240 121,568 81,549.2 cudaMalloc + 0.0 114,000 3 38,000.0 19,888.0 10,032 84,080 40,209.6 cudaMallocManaged + 0.0 103,024 4 25,756.0 23,544.0 5,648 50,288 23,368.6 cudaMemGetInfo + 0.0 91,520 2 45,760.0 45,760.0 32,496 59,024 18,758.1 cuLibraryLoadData + 0.0 84,816 20 4,240.8 2,944.0 2,464 22,320 4,367.3 cudaStreamDestroy + 0.0 66,720 196 340.4 160.0 112 1,600 352.7 cudaGraphAddEmptyNode_v10000 + 0.0 63,936 220 290.6 112.0 80 6,176 580.2 cudaGraphGetRootNodes_v10000 + 0.0 48,976 55 890.5 272.0 208 8,720 1,398.1 cuGraphKernelNodeSetParams_v2 + 0.0 47,440 536 88.5 48.0 0 624 101.3 cuKernelGetName + 0.0 38,560 112 344.3 128.0 96 2,192 383.0 cuKernelSetAttribute + 0.0 34,960 2 17,480.0 17,480.0 2,720 32,240 20,873.8 cudaMemsetAsync + 0.0 32,288 56 576.6 144.0 112 2,928 768.5 cudaGraphRetainUserObject_v11030 + 0.0 31,248 1 31,248.0 31,248.0 31,248 31,248 0.0 cudaMemcpy + 0.0 27,024 56 482.6 128.0 96 5,232 823.3 cudaGraphChildGraphNodeGetGraph_v10000 + 0.0 18,416 1 18,416.0 18,416.0 18,416 18,416 0.0 cudaDeviceGetDefaultMemPool_v11020 + 0.0 13,728 110 124.8 88.0 16 528 106.3 cuGraphNodeGetDependentNodes_v2 + 0.0 11,728 55 213.2 112.0 80 1,088 196.4 cudaGraphNodeGetDependentNodes_v12030 + 0.0 8,240 2 4,120.0 4,120.0 3,152 5,088 1,369.0 cudaStreamSynchronize + 0.0 7,088 49 144.7 96.0 80 1,760 238.8 cuOccupancyMaxActiveClusters + 0.0 5,952 1 5,952.0 5,952.0 5,952 5,952 0.0 cudaUserObjectRelease_v11030 + 0.0 5,808 3 1,936.0 2,320.0 688 2,800 1,107.1 cuInit + 0.0 1,472 4 368.0 208.0 48 1,008 449.0 cudaGetDeviceProperties_v12000 + 0.0 1,472 6 245.3 136.0 96 608 207.3 cudaGraphGetNodes_v10000 + 0.0 1,408 1 1,408.0 1,408.0 1,408 1,408 0.0 cudaUserObjectCreate_v11030 + 0.0 1,312 1 1,312.0 1,312.0 1,312 1,312 0.0 cudaGraphKernelNodeGetAttribute_v11000 + 0.0 1,008 2 504.0 504.0 112 896 554.4 cudaGraphNodeGetType_v10000 + 0.0 848 1 848.0 848.0 848 848 0.0 cuGraphCreate + 0.0 752 2 376.0 376.0 112 640 373.4 cuOccupancyAvailableDynamicSMemPerBlock + 0.0 624 3 208.0 48.0 48 528 277.1 cuModuleGetLoadingMode + 0.0 480 2 240.0 240.0 224 256 22.6 cuLibraryGetKernel + 0.0 192 1 192.0 192.0 192 192 0.0 cuGraphGetNodes + 0.0 144 1 144.0 144.0 144 144 0.0 cuStreamGetGreenCtx + +Processing [/tmp/mlxcel-auto-plan/2227-profile/server-nsys.sqlite] with [/opt/nvidia/nsight-systems/2025.3.2/host-linux-armv8/reports/cuda_gpu_kern_sum.py]... + + ** CUDA GPU Kernel Summary (cuda_gpu_kern_sum): + + Time (%) Total Time (ns) Instances Avg (ns) Med (ns) Min (ns) Max (ns) StdDev (ns) Name + -------- --------------- --------- -------- -------- -------- -------- ----------- ---------------------------------------------------------------- + 100.0 876,384 536 1,635.0 1,376.0 1,248 6,208 608.3 mlx::core::cu::event_signal_kernel(unsigned int *, unsigned int) + +Processing [/tmp/mlxcel-auto-plan/2227-profile/server-nsys.sqlite] with [/opt/nvidia/nsight-systems/2025.3.2/host-linux-armv8/reports/osrt_sum.py]... + + ** OS Runtime Summary (osrt_sum): + + Time (%) Total Time (ns) Num Calls Avg (ns) Med (ns) Min (ns) Max (ns) StdDev (ns) Name + -------- --------------- --------- ------------ ----------- --------- ------------- ------------- ---------------------- + 87.8 57,468,649,552 2,514 22,859,446.9 353,936.0 1,472 2,615,542,864 228,959,345.2 pthread_cond_wait + 3.9 2,578,964,672 5,892 437,706.2 97,520.0 1,008 143,015,840 4,649,507.6 poll + 2.6 1,732,034,624 29 59,725,331.9 36,160.0 31,904 1,720,427,760 319,400,386.6 pthread_join + 2.6 1,728,157,456 312 5,538,966.2 9,200.0 1,184 476,356,272 31,558,412.6 futex + 2.2 1,410,913,472 2,268 622,095.9 300,520.0 2,032 187,573,744 4,396,037.1 sem_wait + 0.4 239,281,600 725 330,043.6 10,560.0 1,008 5,985,136 823,448.2 ioctl + 0.3 197,888,752 705 280,693.3 47,680.0 1,056 19,635,328 1,392,170.9 pread + 0.0 24,339,664 3,355 7,254.7 3,744.0 1,008 256,160 17,847.4 write + 0.0 19,083,584 618 30,879.6 12,040.0 1,008 2,394,560 111,471.3 pthread_mutex_lock + 0.0 14,882,048 1,501 9,914.8 3,136.0 1,008 4,105,584 136,179.1 read + 0.0 14,661,792 21 698,180.6 631,776.0 19,552 1,250,224 444,424.8 mlock + 0.0 13,852,032 2,101 6,593.1 5,488.0 1,104 126,768 8,838.5 pthread_cond_signal + 0.0 5,057,024 1 5,057,024.0 5,057,024.0 5,057,024 5,057,024 0.0 nanosleep + 0.0 3,708,544 9 412,060.4 389,008.0 11,552 735,952 214,125.9 sem_timedwait + 0.0 3,058,240 17 179,896.5 112,256.0 69,392 936,736 214,263.8 pthread_create + 0.0 2,689,024 587 4,581.0 3,888.0 1,008 494,976 20,442.2 pthread_cond_broadcast + 0.0 2,007,632 27 74,356.7 4,112.0 1,728 535,680 121,459.4 mmap64 + 0.0 507,104 88 5,762.5 2,536.0 1,008 52,464 7,799.8 open64 + 0.0 357,296 30 11,909.9 6,248.0 1,056 58,128 12,765.7 mmap + 0.0 266,352 51 5,222.6 3,216.0 1,056 29,488 5,438.0 fopen + 0.0 221,312 23 9,622.3 2,032.0 1,104 150,944 30,990.8 munmap + 0.0 117,680 33 3,566.1 2,048.0 1,024 16,272 3,801.6 statx + 0.0 94,112 6 15,685.3 14,352.0 1,328 27,824 10,508.2 fgets + 0.0 89,504 17 5,264.9 5,408.0 1,104 12,448 3,126.6 fread + 0.0 81,472 29 2,809.4 2,288.0 1,056 13,648 2,499.9 close + 0.0 43,568 6 7,261.3 5,664.0 2,304 13,856 5,078.4 stat + 0.0 36,816 15 2,454.4 2,000.0 1,056 4,784 1,295.0 fclose + 0.0 28,768 7 4,109.7 3,920.0 1,392 7,536 1,992.1 open + 0.0 22,016 11 2,001.5 1,312.0 1,136 5,072 1,385.6 fcntl + 0.0 16,368 3 5,456.0 6,304.0 3,584 6,480 1,623.6 pipe2 + 0.0 15,024 3 5,008.0 4,464.0 3,104 7,456 2,226.4 mprotect + 0.0 14,448 2 7,224.0 7,224.0 5,168 9,280 2,907.6 socket + 0.0 13,648 1 13,648.0 13,648.0 13,648 13,648 0.0 socketpair + 0.0 12,736 2 6,368.0 6,368.0 1,584 11,152 6,765.6 epoll_ctl + 0.0 11,424 1 11,424.0 11,424.0 11,424 11,424 0.0 pthread_rwlock_wrlock + 0.0 11,152 1 11,152.0 11,152.0 11,152 11,152 0.0 connect + 0.0 3,984 1 3,984.0 3,984.0 3,984 3,984 0.0 signal + 0.0 3,264 1 3,264.0 3,264.0 3,264 3,264 0.0 fwrite + 0.0 2,496 1 2,496.0 2,496.0 2,496 2,496 0.0 bind + 0.0 1,184 1 1,184.0 1,184.0 1,184 1,184 0.0 listen + diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/server-nsys.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/server-nsys.log new file mode 100644 index 000000000..ceeeb2c32 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/server-nsys.log @@ -0,0 +1,11 @@ +[b1-profile] {"run":1,"ticks":15,"tick_total_ns":100885601,"tick_avg_us":6725.707,"stages":{"metrics":{"calls":16,"total_ns":44704,"tick_pct":0.0443},"row_lookup":{"calls":15,"total_ns":2800,"tick_pct":0.0028},"row_build":{"calls":15,"total_ns":3984,"tick_pct":0.0039},"engine_step":{"calls":2,"total_ns":16421509,"tick_pct":16.2774},"finish_state":{"calls":15,"total_ns":1072,"tick_pct":0.0011},"apply_outcomes":{"calls":2,"total_ns":192,"tick_pct":0.0002},"lookahead_submit":{"calls":15,"total_ns":81919956,"tick_pct":81.2008},"lookahead_collect":{"calls":14,"total_ns":116993,"tick_pct":0.1160},"fused_finish_rows":{"calls":13,"total_ns":161827,"tick_pct":0.1604},"finalize_completed":{"calls":15,"total_ns":41425,"tick_pct":0.0411}},"event_send":{"calls":15,"total_ns":78369,"tick_pct":0.0777}} +[b1-profile] {"run":2,"ticks":127,"tick_total_ns":682531371,"tick_avg_us":5374.263,"stages":{"metrics":{"calls":128,"total_ns":336533,"tick_pct":0.0493},"row_lookup":{"calls":127,"total_ns":15696,"tick_pct":0.0023},"row_build":{"calls":127,"total_ns":17217,"tick_pct":0.0025},"engine_step":{"calls":2,"total_ns":14050735,"tick_pct":2.0586},"finish_state":{"calls":127,"total_ns":5872,"tick_pct":0.0009},"apply_outcomes":{"calls":2,"total_ns":176,"tick_pct":0.0000},"lookahead_submit":{"calls":127,"total_ns":662206724,"tick_pct":97.0222},"lookahead_collect":{"calls":126,"total_ns":898284,"tick_pct":0.1316},"fused_finish_rows":{"calls":125,"total_ns":1433984,"tick_pct":0.2101},"finalize_completed":{"calls":127,"total_ns":84658,"tick_pct":0.0124}},"event_send":{"calls":127,"total_ns":653509,"tick_pct":0.0957}} +[server] prompt 256 tok TTFT 19.37 ms decode 128 tok in 682.62 ms = 187.51 tok/s chunk 2048 storage dense (scheduler: prompt_eval 18 ms, generation 683 ms; paged kernel launches 0) +[engine-bench] {"path":"server","model":"qwen3-1.7b-4bit","prompt_target_len":256,"prompt_tokens":256,"generated_tokens":128,"ttft_ms":19.372799,"prefill_tok_s":13214.404382144263,"decode_ms":682.6245399999999,"decode_tok_s":187.51157114861417,"prefill_chunk":2048,"decode_storage":"dense","max_tokens":128,"label":"profile-server","server_prompt_eval_ms":18,"server_generation_ms":683,"paged_decode_launches":0} +[engine-bench] summary (server vs cli at the same prompt length): + prompt 256: cli - | server 19.37 ms TTFT, 187.51 tok/s +Collecting data... +Generating '/tmp/nsys-report-5bf5.qdstrm' + [1/1] [0% ] server-nsys.nsys-rep [1/1] [0% ] server-nsys.nsys-rep [1/1] [5% ] server-nsys.nsys-rep [1/1] [11% ] server-nsys.nsys-rep [1/1] [==20% ] server-nsys.nsys-rep [1/1] [=====29% ] server-nsys.nsys-rep [1/1] [=======38% ] server-nsys.nsys-rep [1/1] [==========47% ] server-nsys.nsys-rep [1/1] [============56% ] server-nsys.nsys-rep [1/1] [===============65% ] server-nsys.nsys-rep [1/1] [=================74% ] server-nsys.nsys-rep [1/1] [====================83% ] server-nsys.nsys-rep [1/1] [=====================87% ] server-nsys.nsys-rep [1/1] [========================100%] server-nsys.nsys-rep [1/1] [========================100%] server-nsys.nsys-rep +Generated: + /tmp/mlxcel-auto-plan/2227-profile/server-nsys.nsys-rep diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/server-plain.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/server-plain.log new file mode 100644 index 000000000..2e9867282 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/profile/server-plain.log @@ -0,0 +1,6 @@ +[b1-profile] {"run":1,"ticks":15,"tick_total_ns":97854500,"tick_avg_us":6523.633,"stages":{"metrics":{"calls":16,"total_ns":35856,"tick_pct":0.0366},"row_lookup":{"calls":15,"total_ns":2336,"tick_pct":0.0024},"row_build":{"calls":15,"total_ns":4336,"tick_pct":0.0044},"engine_step":{"calls":2,"total_ns":15506940,"tick_pct":15.8469},"finish_state":{"calls":15,"total_ns":2304,"tick_pct":0.0024},"apply_outcomes":{"calls":2,"total_ns":256,"tick_pct":0.0003},"lookahead_submit":{"calls":15,"total_ns":79672864,"tick_pct":81.4197},"lookahead_collect":{"calls":14,"total_ns":89538,"tick_pct":0.0915},"fused_finish_rows":{"calls":13,"total_ns":145634,"tick_pct":0.1488},"finalize_completed":{"calls":15,"total_ns":32992,"tick_pct":0.0337}},"event_send":{"calls":15,"total_ns":73217,"tick_pct":0.0748}} +[b1-profile] {"run":2,"ticks":127,"tick_total_ns":675411720,"tick_avg_us":5318.203,"stages":{"metrics":{"calls":128,"total_ns":312052,"tick_pct":0.0462},"row_lookup":{"calls":127,"total_ns":17824,"tick_pct":0.0026},"row_build":{"calls":127,"total_ns":18096,"tick_pct":0.0027},"engine_step":{"calls":2,"total_ns":13668204,"tick_pct":2.0237},"finish_state":{"calls":127,"total_ns":6208,"tick_pct":0.0009},"apply_outcomes":{"calls":2,"total_ns":128,"tick_pct":0.0000},"lookahead_submit":{"calls":127,"total_ns":656315740,"tick_pct":97.1727},"lookahead_collect":{"calls":126,"total_ns":564546,"tick_pct":0.0836},"fused_finish_rows":{"calls":125,"total_ns":976026,"tick_pct":0.1445},"finalize_completed":{"calls":127,"total_ns":63696,"tick_pct":0.0094}},"event_send":{"calls":127,"total_ns":471319,"tick_pct":0.0698}} +[server] prompt 256 tok TTFT 18.40 ms decode 128 tok in 675.28 ms = 189.55 tok/s chunk 2048 storage dense (scheduler: prompt_eval 17 ms, generation 676 ms; paged kernel launches 0) +[engine-bench] {"path":"server","model":"qwen3-1.7b-4bit","prompt_target_len":256,"prompt_tokens":256,"generated_tokens":128,"ttft_ms":18.398359,"prefill_tok_s":13914.284420692085,"decode_ms":675.2802,"decode_tok_s":189.55094492626912,"prefill_chunk":2048,"decode_storage":"dense","max_tokens":128,"label":"profile-server","server_prompt_eval_ms":17,"server_generation_ms":676,"paged_decode_launches":0} +[engine-bench] summary (server vs cli at the same prompt length): + prompt 256: cli - | server 18.40 ms TTFT, 189.55 tok/s diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/base-release-build.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/base-release-build.log new file mode 100644 index 000000000..a026bd684 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/base-release-build.log @@ -0,0 +1,128 @@ + Compiling ring v0.17.14 + Compiling rustls v0.23.45 + Compiling esaxx-rs v0.1.10 + Compiling onig_sys v69.9.3 + Compiling cxx v1.0.202 + Compiling mlxcel-core v0.7.0 (/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-base-2227/src/lib/mlxcel-core) + Compiling onig v6.5.3 + Compiling link-cplusplus v1.0.12 + Compiling mime_guess v2.0.5 + Compiling tokenizers v0.22.2 + Compiling mlxcel-surgery v0.7.0 (/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-base-2227/src/lib/mlxcel-surgery) + Compiling tokenizers v0.21.4 + Compiling rustls-webpki v0.103.14 + Compiling tokio-rustls v0.26.5 + Compiling hyper-rustls v0.27.9 + Compiling reqwest v0.12.28 + Compiling ureq v3.4.0 + Compiling rust-embed-impl v8.12.0 + Compiling sentencepiece-sys v0.13.2 + Compiling mlxcel v0.7.0 (/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-base-2227) + Compiling blake3 v1.8.7 + Compiling sentencepiece v0.13.2 + Compiling rust-embed v8.12.0 + Compiling toktrie_hf_tokenizers v1.8.0 + Compiling hf-hub v0.5.0 +warning: mlxcel-core@0.7.0: In file included from cpp/mlx_cxx_bridge.cpp:7: +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-base-2227/target/release/build/mlxcel-core-4c8821fbbcc3d8f4/out/build/include/mlx/primitives.h: In member function 'std::pair mlx::core::AddMM::state() const': +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-base-2227/target/release/build/mlxcel-core-4c8821fbbcc3d8f4/out/build/include/mlx/primitives.h:204:41: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 204 | std::pair state() const { +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp: In function 'mlx_cxx::{anonymous}::get_compiled_q_path_proportional(int, int, int, float)::&)>': +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3842:31: warning: '*(int*)((char*)&in_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 3842 | int B = in_shape[0]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3841:18: note: 'in_shape' declared here +warning: mlxcel-core@0.7.0: 3841 | auto in_shape = q_in.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3842:31: warning: '*(int*)((char*)&in_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 3842 | int B = in_shape[0]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3841:18: note: 'in_shape' declared here +warning: mlxcel-core@0.7.0: 3841 | auto in_shape = q_in.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp: In lambda function: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2181:24: warning: '*(int*)((char*)&shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 2181 | int B = shape[0], H = shape[1], S = shape[2], D = shape[3]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2180:14: note: 'shape' declared here +warning: mlxcel-core@0.7.0: 2180 | auto shape = x.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2181:24: warning: '*(int*)((char*)&shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 2181 | int B = shape[0], H = shape[1], S = shape[2], D = shape[3]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2180:14: note: 'shape' declared here +warning: mlxcel-core@0.7.0: 2180 | auto shape = x.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp: In lambda function: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3358:24: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 3358 | ref_rms); +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp: At global scope: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3788:24: warning: 'mlx_cxx::{anonymous}::ADD3_LN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 3788 | static const char* ADD3_LN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3023:24: warning: 'mlx_cxx::{anonymous}::MOE_FC1_RELU2_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 3023 | static const char* MOE_FC1_RELU2_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2843:24: warning: 'mlx_cxx::{anonymous}::MOE_DOWN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2843 | static const char* MOE_DOWN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2704:24: warning: 'mlx_cxx::{anonymous}::MOE_GATEUP_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2704 | static const char* MOE_GATEUP_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2125:24: warning: 'mlx_cxx::{anonymous}::MAMBA1_SCAN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2125 | static const char* MAMBA1_SCAN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:752:24: warning: 'mlx_cxx::{anonymous}::SSM_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 752 | static const char* SSM_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:452:24: warning: 'mlx_cxx::{anonymous}::XIELU_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 452 | static const char* XIELU_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:159:24: warning: 'mlx_cxx::{anonymous}::BITLINEAR_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 159 | static const char* BITLINEAR_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp: In function 'void mlx_cxx::nemotron_decode_step(uint64_t, const MlxArray&, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, std::unique_ptr&, rust::cxxbridge1::Slice >, rust::cxxbridge1::Slice >)': +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:156:16: warning: '*(int*)((char*)&id_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 156 | h = reshape(h, {id_shape[0], id_shape[1], (int)h.shape().back()}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:155:10: note: 'id_shape' declared here +warning: mlxcel-core@0.7.0: 155 | auto id_shape = input_ids.inner.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:156:16: warning: '*(int*)((char*)&id_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 156 | h = reshape(h, {id_shape[0], id_shape[1], (int)h.shape().back()}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:155:10: note: 'id_shape' declared here +warning: mlxcel-core@0.7.0: 155 | auto id_shape = input_ids.inner.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:244:28: warning: '*(int*)((char*)&ks + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 244 | k = reshape(k, {ks[0], ks[1], 1, ks[2], ks[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:243:22: note: 'ks' declared here +warning: mlxcel-core@0.7.0: 243 | auto ks = k.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:244:28: warning: '*(int*)((char*)&ks + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 244 | k = reshape(k, {ks[0], ks[1], 1, ks[2], ks[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:243:22: note: 'ks' declared here +warning: mlxcel-core@0.7.0: 243 | auto ks = k.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:248:28: warning: '*(int*)((char*)&vs + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 248 | v = reshape(v, {vs[0], vs[1], 1, vs[2], vs[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:247:22: note: 'vs' declared here +warning: mlxcel-core@0.7.0: 247 | auto vs = v.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:248:28: warning: '*(int*)((char*)&vs + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 248 | v = reshape(v, {vs[0], vs[1], 1, vs[2], vs[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:247:22: note: 'vs' declared here +warning: mlxcel-core@0.7.0: 247 | auto vs = v.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: In file included from ../mlx-cpp/turbo/kv_inplace_write.cpp:23: +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-base-2227/target/release/build/mlxcel-core-4c8821fbbcc3d8f4/out/build/include/mlx/primitives.h: In member function 'std::pair mlx::core::AddMM::state() const': +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-base-2227/target/release/build/mlxcel-core-4c8821fbbcc3d8f4/out/build/include/mlx/primitives.h:204:41: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 204 | std::pair state() const { +warning: mlxcel-core@0.7.0: | ^ + Finished `release` profile [optimized] target(s) in 18m 24s diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/causal-test-build.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/causal-test-build.log new file mode 100644 index 000000000..f67b73298 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/causal-test-build.log @@ -0,0 +1,262 @@ +warning: mlxcel-core@0.7.0: In file included from cpp/mlx_cxx_bridge.cpp:7: +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/test-fast/build/mlxcel-core-951f0822c2faa7cb/out/build/include/mlx/primitives.h: In member function 'std::pair mlx::core::AddMM::state() const': +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/test-fast/build/mlxcel-core-951f0822c2faa7cb/out/build/include/mlx/primitives.h:204:41: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 204 | std::pair state() const { +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp: In function 'mlx_cxx::{anonymous}::get_compiled_q_path_proportional(int, int, int, float)::&)>': +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3851:31: warning: '*(int*)((char*)&in_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 3851 | int B = in_shape[0]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3850:18: note: 'in_shape' declared here +warning: mlxcel-core@0.7.0: 3850 | auto in_shape = q_in.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3851:31: warning: '*(int*)((char*)&in_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 3851 | int B = in_shape[0]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3850:18: note: 'in_shape' declared here +warning: mlxcel-core@0.7.0: 3850 | auto in_shape = q_in.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp: In lambda function: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2190:24: warning: '*(int*)((char*)&shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 2190 | int B = shape[0], H = shape[1], S = shape[2], D = shape[3]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2189:14: note: 'shape' declared here +warning: mlxcel-core@0.7.0: 2189 | auto shape = x.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2190:24: warning: '*(int*)((char*)&shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 2190 | int B = shape[0], H = shape[1], S = shape[2], D = shape[3]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2189:14: note: 'shape' declared here +warning: mlxcel-core@0.7.0: 2189 | auto shape = x.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp: In lambda function: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3362:24: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 3362 | ref_rms); +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp: At global scope: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3792:24: warning: 'mlx_cxx::{anonymous}::ADD3_LN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 3792 | static const char* ADD3_LN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3027:24: warning: 'mlx_cxx::{anonymous}::MOE_FC1_RELU2_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 3027 | static const char* MOE_FC1_RELU2_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2847:24: warning: 'mlx_cxx::{anonymous}::MOE_DOWN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2847 | static const char* MOE_DOWN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2708:24: warning: 'mlx_cxx::{anonymous}::MOE_GATEUP_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2708 | static const char* MOE_GATEUP_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2129:24: warning: 'mlx_cxx::{anonymous}::MAMBA1_SCAN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2129 | static const char* MAMBA1_SCAN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:752:24: warning: 'mlx_cxx::{anonymous}::SSM_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 752 | static const char* SSM_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:452:24: warning: 'mlx_cxx::{anonymous}::XIELU_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 452 | static const char* XIELU_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:159:24: warning: 'mlx_cxx::{anonymous}::BITLINEAR_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 159 | static const char* BITLINEAR_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp: In function 'void mlx_cxx::nemotron_decode_step(uint64_t, const MlxArray&, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, std::unique_ptr&, rust::cxxbridge1::Slice >, rust::cxxbridge1::Slice >)': +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:156:16: warning: '*(int*)((char*)&id_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 156 | h = reshape(h, {id_shape[0], id_shape[1], (int)h.shape().back()}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:155:10: note: 'id_shape' declared here +warning: mlxcel-core@0.7.0: 155 | auto id_shape = input_ids.inner.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:156:16: warning: '*(int*)((char*)&id_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 156 | h = reshape(h, {id_shape[0], id_shape[1], (int)h.shape().back()}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:155:10: note: 'id_shape' declared here +warning: mlxcel-core@0.7.0: 155 | auto id_shape = input_ids.inner.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:244:28: warning: '*(int*)((char*)&ks + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 244 | k = reshape(k, {ks[0], ks[1], 1, ks[2], ks[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:243:22: note: 'ks' declared here +warning: mlxcel-core@0.7.0: 243 | auto ks = k.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:244:28: warning: '*(int*)((char*)&ks + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 244 | k = reshape(k, {ks[0], ks[1], 1, ks[2], ks[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:243:22: note: 'ks' declared here +warning: mlxcel-core@0.7.0: 243 | auto ks = k.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:248:28: warning: '*(int*)((char*)&vs + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 248 | v = reshape(v, {vs[0], vs[1], 1, vs[2], vs[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:247:22: note: 'vs' declared here +warning: mlxcel-core@0.7.0: 247 | auto vs = v.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:248:28: warning: '*(int*)((char*)&vs + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 248 | v = reshape(v, {vs[0], vs[1], 1, vs[2], vs[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:247:22: note: 'vs' declared here +warning: mlxcel-core@0.7.0: 247 | auto vs = v.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: In file included from ../mlx-cpp/turbo/kv_inplace_write.cpp:23: +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/test-fast/build/mlxcel-core-951f0822c2faa7cb/out/build/include/mlx/primitives.h: In member function 'std::pair mlx::core::AddMM::state() const': +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/test-fast/build/mlxcel-core-951f0822c2faa7cb/out/build/include/mlx/primitives.h:204:41: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 204 | std::pair state() const { +warning: mlxcel-core@0.7.0: | ^ + Compiling mlxcel v0.7.0 (/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227) + Finished `test-fast` profile [optimized] target(s) in 2m 12s + Executable unittests src/lib.rs (target/test-fast/deps/mlxcel-e4114342978c2f44) + Executable unittests src/main.rs (target/test-fast/deps/mlxcel-e029287206517e01) + Executable unittests src/bin/bench_decode.rs (target/test-fast/deps/mlxcel_bench_decode-d8d701711f5fa4db) + Executable unittests src/bin/bench_engine.rs (target/test-fast/deps/mlxcel_bench_engine-2ec930d264c4367a) + Executable unittests src/bin/engine_parity.rs (target/test-fast/deps/mlxcel_engine_parity-9ed786ceb5161668) + Executable unittests src/bin/mlx_server.rs (target/test-fast/deps/mlxcel_server-f103ed86e524be74) + Executable unittests src/bin/speculative_bench.rs (target/test-fast/deps/speculative_bench-873145a883391206) + Executable tests/apertus_parity.rs (target/test-fast/deps/apertus_parity-c44bfaf23ceb5f2a) + Executable tests/apply_template_tools_parity.rs (target/test-fast/deps/apply_template_tools_parity-b2007d5a95013a11) + Executable tests/attention_f16_range.rs (target/test-fast/deps/attention_f16_range-138269846d1237aa) + Executable tests/autotuner_outcome.rs (target/test-fast/deps/autotuner_outcome-4c20917d1b09d047) + Executable tests/cascade_decode_dispatch.rs (target/test-fast/deps/cascade_decode_dispatch-62f66eadbdb18eda) + Executable tests/causal_prefill_greedy_parity.rs (target/test-fast/deps/causal_prefill_greedy_parity-b24e4113b58bf5d0) + Executable tests/chat_template_kwargs.rs (target/test-fast/deps/chat_template_kwargs-e6294d8887f3dfd8) + Executable tests/cli_help_consistency.rs (target/test-fast/deps/cli_help_consistency-2e4bdd7019e4ac9f) + Executable tests/cpu_device_custom_kernel_gates.rs (target/test-fast/deps/cpu_device_custom_kernel_gates-219ccab8fff654e1) + Executable tests/cpu_device_sdpa.rs (target/test-fast/deps/cpu_device_sdpa-e846797475f02825) + Executable tests/cuda_qmm_determinism.rs (target/test-fast/deps/cuda_qmm_determinism-0580441a9e835343) + Executable tests/cuda_sdpa_determinism.rs (target/test-fast/deps/cuda_sdpa_determinism-11feef284e612c65) + Executable tests/dead_doc_pointers.rs (target/test-fast/deps/dead_doc_pointers-ca67affaaac25f60) + Executable tests/deepseek_v2_greedy_parity.rs (target/test-fast/deps/deepseek_v2_greedy_parity-d173298dd0dfe794) + Executable tests/deepseek_v4_real_model.rs (target/test-fast/deps/deepseek_v4_real_model-c15e8bbf4b076998) + Executable tests/deepseek_vl_v2_parity.rs (target/test-fast/deps/deepseek_vl_v2_parity-c0ccf4da9d490ca0) + Executable tests/deepseekocr_2_resampler.rs (target/test-fast/deps/deepseekocr_2_resampler-ad3501f1d9ed4877) + Executable tests/deepseekocr_encoder_parity.rs (target/test-fast/deps/deepseekocr_encoder_parity-9e87576af190a9b5) + Executable tests/disaggregated_e2e.rs (target/test-fast/deps/disaggregated_e2e-4848b86f61cec466) + Executable tests/disaggregated_router_e2e.rs (target/test-fast/deps/disaggregated_router_e2e-7e3e5b706b1b110e) + Executable tests/disaggregated_serving_e2e.rs (target/test-fast/deps/disaggregated_serving_e2e-1e4b34efeb44049f) + Executable tests/dots_ocr_parity.rs (target/test-fast/deps/dots_ocr_parity-67cba3b161e4505a) + Executable tests/embedding_pooling_normalize_real.rs (target/test-fast/deps/embedding_pooling_normalize_real-d10955dd8b9aaa7e) + Executable tests/ernie4_5_moe_vl_parity.rs (target/test-fast/deps/ernie4_5_moe_vl_parity-c5a44a881cbb174d) + Executable tests/falcon_ocr_parity.rs (target/test-fast/deps/falcon_ocr_parity-7fc0e6d322316955) + Executable tests/fastvlm_parity.rs (target/test-fast/deps/fastvlm_parity-2042aa80ba2a521c) + Executable tests/florence2_fusion_parity.rs (target/test-fast/deps/florence2_fusion_parity-2583c03819278165) + Executable tests/florence2_postprocess_parity.rs (target/test-fast/deps/florence2_postprocess_parity-19db236ea85faf3c) + Executable tests/florence2_processor_parity.rs (target/test-fast/deps/florence2_processor_parity-4b74746a8bc1f78d) + Executable tests/florence2_quantized_parity.rs (target/test-fast/deps/florence2_quantized_parity-918e1afbf870f2d1) + Executable tests/florence2_text_parity.rs (target/test-fast/deps/florence2_text_parity-9dce19252589f2a1) + Executable tests/florence2_vision_parity.rs (target/test-fast/deps/florence2_vision_parity-9ab1c5fcb66e84b1) + Executable tests/gcp_predict_real_model.rs (target/test-fast/deps/gcp_predict_real_model-ad2470a51cd171da) + Executable tests/glm4v_moe_parity.rs (target/test-fast/deps/glm4v_moe_parity-58a3c5aaa3117dc7) + Executable tests/glm4v_parity.rs (target/test-fast/deps/glm4v_parity-6de5375d410ba9a4) + Executable tests/glm_ocr_parity.rs (target/test-fast/deps/glm_ocr_parity-420214652985ebca) + Executable tests/got_ocr_prompt_parity.rs (target/test-fast/deps/got_ocr_prompt_parity-767e02b0997a5a04) + Executable tests/got_ocr_real_model.rs (target/test-fast/deps/got_ocr_real_model-4359125e618e9ca2) + Executable tests/granite4_vision_parity.rs (target/test-fast/deps/granite4_vision_parity-c95852f9d741c413) + Executable tests/granite_vision_parity.rs (target/test-fast/deps/granite_vision_parity-f1608c43da7d0138) + Executable tests/hunyuan_vl_parity.rs (target/test-fast/deps/hunyuan_vl_parity-b2021063bb475f35) + Executable tests/internvl_parity.rs (target/test-fast/deps/internvl_parity-06fe5da83044d70e) + Executable tests/iquestloopcoder_parity.rs (target/test-fast/deps/iquestloopcoder_parity-660c85f48d3b81fa) + Executable tests/kimi_vl_parity.rs (target/test-fast/deps/kimi_vl_parity-26ed5217c0889d9c) + Executable tests/lang_bias.rs (target/test-fast/deps/lang_bias-b5d7e56713d0931b) + Executable tests/llama_chat_template_cli.rs (target/test-fast/deps/llama_chat_template_cli-ba7b27b2422e142c) + Executable tests/llama_compat_manifest.rs (target/test-fast/deps/llama_compat_manifest-fcd85f2b5b6009a5) + Executable tests/llama_compat_rope_freq_base.rs (target/test-fast/deps/llama_compat_rope_freq_base-52ae5c644ce3d347) + Executable tests/llama_compat_rope_scaling_override.rs (target/test-fast/deps/llama_compat_rope_scaling_override-634e4027e5826a68) + Executable tests/llama_compat_utility_routes.rs (target/test-fast/deps/llama_compat_utility_routes-47e5d7c8f7329113) + Executable tests/llama_compat_yarn_override.rs (target/test-fast/deps/llama_compat_yarn_override-d0f6c02aebc9d4ba) + Executable tests/llama_ggml_runtime_cli.rs (target/test-fast/deps/llama_ggml_runtime_cli-3053a09c56967f3f) + Executable tests/llama_logging_presets.rs (target/test-fast/deps/llama_logging_presets-8a4f2177a9edd8e6) + Executable tests/llama_model_source_cli.rs (target/test-fast/deps/llama_model_source_cli-ccb97ca32c61fd40) + Executable tests/mamba2_hybrid_decode_finite.rs (target/test-fast/deps/mamba2_hybrid_decode_finite-add021fce9fc603e) + Executable tests/mamba2_hybrid_finite.rs (target/test-fast/deps/mamba2_hybrid_finite-967483ae9fbb74dc) + Executable tests/max_kv_size_dense_e2e.rs (target/test-fast/deps/max_kv_size_dense_e2e-51bbe6daacbce4e6) + Executable tests/metal_block_vs_chain_op_parity.rs (target/test-fast/deps/metal_block_vs_chain_op_parity-bf79e9600bd70b8e) + Executable tests/mllama_parity.rs (target/test-fast/deps/mllama_parity-801c7c3c25a7c428) + Executable tests/model_loader_stdout_guard.rs (target/test-fast/deps/model_loader_stdout_guard-0872d345b83daea5) + Executable tests/model_loading.rs (target/test-fast/deps/model_loading-51125a9d94a8a1e6) + Executable tests/molmo_parity.rs (target/test-fast/deps/molmo_parity-78a82be660460062) + Executable tests/moondream2_parity.rs (target/test-fast/deps/moondream2_parity-64de1e4a812c5df6) + Executable tests/nemotron_parse_real_model.rs (target/test-fast/deps/nemotron_parse_real_model-70ad37b9f5b06003) + Executable tests/nemotron_voicechat_codec_real.rs (target/test-fast/deps/nemotron_voicechat_codec_real-a611132170248ea5) + Executable tests/nemotron_voicechat_front_real.rs (target/test-fast/deps/nemotron_voicechat_front_real-973fbeb950daea0e) + Executable tests/nemotron_voicechat_llm_real.rs (target/test-fast/deps/nemotron_voicechat_llm_real-a8c1e68664c3d216) + Executable tests/nemotron_voicechat_offline_real.rs (target/test-fast/deps/nemotron_voicechat_offline_real-d41233eca36885fd) + Executable tests/nemotron_voicechat_stream_real.rs (target/test-fast/deps/nemotron_voicechat_stream_real-88bd5a8555f1dc8c) + Executable tests/nemotron_voicechat_streaming_real.rs (target/test-fast/deps/nemotron_voicechat_streaming_real-e64bfda065b15f86) + Executable tests/nemotron_voicechat_tts_real.rs (target/test-fast/deps/nemotron_voicechat_tts_real-cf2d97a8b12f84a2) + Executable tests/paddleocr_vl_parity.rs (target/test-fast/deps/paddleocr_vl_parity-699fcb2a45b1b72c) + Executable tests/paged_decode_v2_greedy_parity.rs (target/test-fast/deps/paged_decode_v2_greedy_parity-35b27959d4a264c3) + Executable tests/paged_kv_serialize_parity.rs (target/test-fast/deps/paged_kv_serialize_parity-f358287d400f4c09) + Executable tests/paged_prefix_share_parity.rs (target/test-fast/deps/paged_prefix_share_parity-931ca02c63f47cbd) + Executable tests/paged_real_model_parity.rs (target/test-fast/deps/paged_real_model_parity-79904217e6718907) + Executable tests/paged_scheduler_parity.rs (target/test-fast/deps/paged_scheduler_parity-7d111b8f3d81ed82) + Executable tests/phi4mm_audio_parity.rs (target/test-fast/deps/phi4mm_audio_parity-5eb0a15b0d76628e) + Executable tests/pipeline_auto_partition_real_models.rs (target/test-fast/deps/pipeline_auto_partition_real_models-8db47da5a21d9350) + Executable tests/pipeline_ci_multi_stage_real_models.rs (target/test-fast/deps/pipeline_ci_multi_stage_real_models-a43a41029bda035a) + Executable tests/pipeline_cli_real_models.rs (target/test-fast/deps/pipeline_cli_real_models-207e16982539c7fe) + Executable tests/pipeline_elastic_repartition_real_models.rs (target/test-fast/deps/pipeline_elastic_repartition_real_models-d66be1191ccd53d2) + Executable tests/pipeline_lora_composition_real_models.rs (target/test-fast/deps/pipeline_lora_composition_real_models-ead36b0820d00cfa) + Executable tests/pipeline_observability_real_models.rs (target/test-fast/deps/pipeline_observability_real_models-d0030065f08d8806) + Executable tests/pipeline_remote_real_models.rs (target/test-fast/deps/pipeline_remote_real_models-33a14d3d4e098b14) + Executable tests/pipeline_server_real_models.rs (target/test-fast/deps/pipeline_server_real_models-2e5a52c9f63f50ba) + Executable tests/pipeline_server_remote_real_models.rs (target/test-fast/deps/pipeline_server_remote_real_models-1868bd067b6d0b68) + Executable tests/pipeline_stage_executor_real_models.rs (target/test-fast/deps/pipeline_stage_executor_real_models-14babd2449fe0997) + Executable tests/plamo2_parity.rs (target/test-fast/deps/plamo2_parity-30d11583853e1554) + Executable tests/pp_tp_2d_real_models.rs (target/test-fast/deps/pp_tp_2d_real_models-281cb6ff4d54681c) + Executable tests/pre_ampere_f16_quality.rs (target/test-fast/deps/pre_ampere_f16_quality-1fe282cf39704a90) + Executable tests/prompt_cache_compat_e2e.rs (target/test-fast/deps/prompt_cache_compat_e2e-00ac992017fb509a) + Executable tests/prompt_cache_e2e.rs (target/test-fast/deps/prompt_cache_e2e-34178c8f531b2f8b) + Executable tests/prompt_cache_prefill_bench.rs (target/test-fast/deps/prompt_cache_prefill_bench-5eb81d5890c52e5d) + Executable tests/qwen2_5_vl_parity.rs (target/test-fast/deps/qwen2_5_vl_parity-e606f3d0324be489) + Executable tests/qwen35_mtp_verify_parity.rs (target/test-fast/deps/qwen35_mtp_verify_parity-85d8b5eeb0993e08) + Executable tests/qwen38_mtp_chain_parity.rs (target/test-fast/deps/qwen38_mtp_chain_parity-2b7368b6d660a1b9) + Executable tests/qwen3_omni_moe_parity.rs (target/test-fast/deps/qwen3_omni_moe_parity-5c97750f1b386f79) + Executable tests/rdma_transport_bench.rs (target/test-fast/deps/rdma_transport_bench-c463b6f5edd9aa14) + Executable tests/realtime_ws.rs (target/test-fast/deps/realtime_ws-8d448b6b3978e98e) + Executable tests/rocm_cpu_blas_finegrained.rs (target/test-fast/deps/rocm_cpu_blas_finegrained-9e01e7eebb932ea8) + Executable tests/rocm_custom_kernel_jit_key.rs (target/test-fast/deps/rocm_custom_kernel_jit_key-429b78588e3ab20b) + Executable tests/rocm_device_map_concurrency.rs (target/test-fast/deps/rocm_device_map_concurrency-b0d502a30461e028) + Executable tests/rocm_fft_cache_env.rs (target/test-fast/deps/rocm_fft_cache_env-faaf2c4c2ea56be6) + Executable tests/rocm_fft_plan_cache.rs (target/test-fast/deps/rocm_fft_plan_cache-2933c1432fc8f46b) + Executable tests/rocm_gather_qmm_expert_batched.rs (target/test-fast/deps/rocm_gather_qmm_expert_batched-5e7629804b2127c0) + Executable tests/rocm_gpu_faults.rs (target/test-fast/deps/rocm_gpu_faults-8ac74879aac2f38e) + Executable tests/rocm_hipblaslt_concurrency.rs (target/test-fast/deps/rocm_hipblaslt_concurrency-a06938cd1f47570e) + Executable tests/rocm_inflight_bound.rs (target/test-fast/deps/rocm_inflight_bound-ea64ea44d6ab13f8) + Executable tests/rocm_jit_module_concurrency.rs (target/test-fast/deps/rocm_jit_module_concurrency-afd0e4ddc966b3ab) + Executable tests/rocm_mxfp4_quant.rs (target/test-fast/deps/rocm_mxfp4_quant-d8f2ed54547ef957) + Executable tests/rocm_qmm_batched_rows.rs (target/test-fast/deps/rocm_qmm_batched_rows-7c063f30782f80bb) + Executable tests/rocm_qmm_dequant_cache.rs (target/test-fast/deps/rocm_qmm_dequant_cache-f197b575a8ab5792) + Executable tests/rocm_qmm_env.rs (target/test-fast/deps/rocm_qmm_env-45bdba43a2258fda) + Executable tests/rocm_rocblas_handle_concurrency.rs (target/test-fast/deps/rocm_rocblas_handle_concurrency-46a5fa727df46606) + Executable tests/rocm_scalar_pool_concurrency.rs (target/test-fast/deps/rocm_scalar_pool_concurrency-3d0b3a76087317b6) + Executable tests/rocm_slice_update_reduce.rs (target/test-fast/deps/rocm_slice_update_reduce-317c5ec53f6e80a5) + Executable tests/rocm_slice_update_source.rs (target/test-fast/deps/rocm_slice_update_source-35e750a3d8e272d9) + Executable tests/rocm_strided_copy_grid.rs (target/test-fast/deps/rocm_strided_copy_grid-907df35d74ec26a1) + Executable tests/rocm_strided_scan.rs (target/test-fast/deps/rocm_strided_scan-f9cd902ec831070b) + Executable tests/rocm_wave64_port_refusal.rs (target/test-fast/deps/rocm_wave64_port_refusal-c314586229ba53d2) + Executable tests/rocm_wave_size.rs (target/test-fast/deps/rocm_wave_size-f5a9c5a45bf7fdab) + Executable tests/sampling_gumbel_kill_switch.rs (target/test-fast/deps/sampling_gumbel_kill_switch-9e6224e7dbb2fa87) + Executable tests/sampling_rejection_kill_switch.rs (target/test-fast/deps/sampling_rejection_kill_switch-12d3b1f579f8baf7) + Executable tests/sampling_top_k_above_vocab_e2e.rs (target/test-fast/deps/sampling_top_k_above_vocab_e2e-75e0f7228af789de) + Executable tests/smolvlm_parity.rs (target/test-fast/deps/smolvlm_parity-608d4f1820d455e5) + Executable tests/speculative_dispatch.rs (target/test-fast/deps/speculative_dispatch-d6380ee4637988e7) + Executable tests/speculative_parity.rs (target/test-fast/deps/speculative_parity-4de814b818ad16b5) + Executable tests/step3p7_parity.rs (target/test-fast/deps/step3p7_parity-129d3f4377a92c12) + Executable tests/structured_outputs.rs (target/test-fast/deps/structured_outputs-a032780570696018) + Executable tests/surgery_cli.rs (target/test-fast/deps/surgery_cli-273e8e62ee5e122c) + Executable tests/tensor_parallel_real_models.rs (target/test-fast/deps/tensor_parallel_real_models-a2e9a51b730af924) + Executable tests/thinking_budget.rs (target/test-fast/deps/thinking_budget-c2847a4d7ba0bc6e) + Executable tests/tp_e2e.rs (target/test-fast/deps/tp_e2e-dfb4b082e3ffd928) + Executable tests/turbo_kv_e2e.rs (target/test-fast/deps/turbo_kv_e2e-5724d8a936e28028) + Executable tests/vlm_concurrency.rs (target/test-fast/deps/vlm_concurrency-620f8b1cfff030af) + Executable tests/vlm_wrapper_capability_delegation.rs (target/test-fast/deps/vlm_wrapper_capability_delegation-d1ec0017ac51192e) + Executable tests/wht_op.rs (target/test-fast/deps/wht_op-8a3cfea2f7d8fb0c) + Executable tests/xla_gemma3n_prefill.rs (target/test-fast/deps/xla_gemma3n_prefill-b926285baa265003) + Executable tests/youtu_vl_parity.rs (target/test-fast/deps/youtu_vl_parity-a6076273912211e5) + Executable tests/zero_config_cluster_init.rs (target/test-fast/deps/zero_config_cluster_init-42f8f650c529fe07) + Executable unittests src/lib.rs (target/test-fast/deps/mlxcel_core-a9c9e3c743946c6b) + Executable unittests src/lib.rs (target/test-fast/deps/mlxcel_mlx_pin-7bbde732c345a80b) + Executable tests/cross_parser.rs (target/test-fast/deps/cross_parser-6f5e8642504955cf) + Executable unittests src/lib.rs (target/test-fast/deps/mlxcel_surgery-9d678b028e2c884a) + Executable tests/add_integration.rs (target/test-fast/deps/add_integration-546b1ff68c8c3742) + Executable tests/interpolate_integration.rs (target/test-fast/deps/interpolate_integration-51776ac318944ce5) + Executable tests/prune_integration.rs (target/test-fast/deps/prune_integration-150bd6435c018dab) + Executable tests/replace_integration.rs (target/test-fast/deps/replace_integration-ab6e6ee969a83bd6) + Executable tests/scale_integration.rs (target/test-fast/deps/scale_integration-e62651ee478e81ff) + Executable unittests src/lib.rs (target/test-fast/deps/mlxcel_xla-202b6bbdaef2e90c) diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/final-build-phase.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/final-build-phase.txt new file mode 100644 index 000000000..c591978ba --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/final-build-phase.txt @@ -0,0 +1 @@ +complete diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/final-build-source.txt b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/final-build-source.txt new file mode 100644 index 000000000..5f07df56b --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/final-build-source.txt @@ -0,0 +1 @@ +7c8830cd5aa01198e6ff93b661f90c048ccaeb1d diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/final-clippy.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/final-clippy.log new file mode 100644 index 000000000..48e02dc3a --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/final-clippy.log @@ -0,0 +1,45 @@ + Compiling mlxcel-core v0.7.0 (/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/src/lib/mlxcel-core) + Compiling mlxcel-surgery v0.7.0 (/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/src/lib/mlxcel-surgery) + Compiling mlxcel v0.7.0 (/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227) + Compiling mlxcel-xla v0.7.0 (/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/src/lib/mlxcel-xla) + Checking mlxcel-mlx-pin v0.7.0 (/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/src/lib/mlxcel-mlx-pin) +warning: mlxcel-core@0.7.0: In file included from cpp/mlx_cxx_bridge.cpp:7: +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/debug/build/mlxcel-core-79270cf3cdb9f64b/out/build/include/mlx/primitives.h: In member function 'std::pair mlx::core::AddMM::state() const': +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/debug/build/mlxcel-core-79270cf3cdb9f64b/out/build/include/mlx/primitives.h:204:41: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 204 | std::pair state() const { +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp: In lambda function: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3362:24: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 3362 | ref_rms); +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp: At global scope: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3792:24: warning: 'mlx_cxx::{anonymous}::ADD3_LN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 3792 | static const char* ADD3_LN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3027:24: warning: 'mlx_cxx::{anonymous}::MOE_FC1_RELU2_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 3027 | static const char* MOE_FC1_RELU2_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2847:24: warning: 'mlx_cxx::{anonymous}::MOE_DOWN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2847 | static const char* MOE_DOWN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2708:24: warning: 'mlx_cxx::{anonymous}::MOE_GATEUP_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2708 | static const char* MOE_GATEUP_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2129:24: warning: 'mlx_cxx::{anonymous}::MAMBA1_SCAN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2129 | static const char* MAMBA1_SCAN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:752:24: warning: 'mlx_cxx::{anonymous}::SSM_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 752 | static const char* SSM_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:452:24: warning: 'mlx_cxx::{anonymous}::XIELU_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 452 | static const char* XIELU_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:159:24: warning: 'mlx_cxx::{anonymous}::BITLINEAR_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 159 | static const char* BITLINEAR_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: In file included from ../mlx-cpp/turbo/kv_inplace_write.cpp:23: +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/debug/build/mlxcel-core-79270cf3cdb9f64b/out/build/include/mlx/primitives.h: In member function 'std::pair mlx::core::AddMM::state() const': +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/debug/build/mlxcel-core-79270cf3cdb9f64b/out/build/include/mlx/primitives.h:204:41: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 204 | std::pair state() const { +warning: mlxcel-core@0.7.0: | ^ + Finished `dev` profile [unoptimized + debuginfo] target(s) in 9m 53s diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/final-contracts.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/final-contracts.log new file mode 100644 index 000000000..92bb1b42e --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/final-contracts.log @@ -0,0 +1,57 @@ +[verify] kernel dtype cache keys... +kernel-dtype-keys: OK, 9 in scope (launching cuda_kernel or hip_kernel) of 199 source files scanned. +ok control -> exit 0 +ok dtype-key-dropped -> exit 1 +ok launch-in-header -> exit 1 +ok launch-in-new-directory -> exit 1 +ok launch-moved-to-helper -> exit 1 +ok launch-commented-out -> exit 1 +ok launcher-deleted -> exit 1 +ok hip-only-new-file -> exit 1 +ok hip-only-bridge-int-keys -> exit 1 +ok hip-only-bridge-dtype-keys -> exit 0 +ok unpinned-launcher -> exit 1 +ok token-in-comment -> exit 0 +ok hip-file-in-nested-build-dir -> exit 1 +ok git-work-tree-ignored -> exit 0 +ok git-work-tree-untracked -> exit 1 +ok empty-tree -> exit 1 +all kernel dtype-key checker cases passed +[verify] kernel port dispatch... +Kernel port dispatch check passed: 12 launcher file(s) route through select_kernel_port, 0 exempt; 1976 Rust file(s) free of backend-enumerating gates, 0 awaiting a predicate; 5 any-wave ROCm table(s) free of lane operations, wave-size test seam used only by tests. +ok control -> exit 0 +ok mark-shuffle-port -> exit 1 +ok shuffle-in-marked-body -> exit 1 +ok ballot-in-marked-body -> exit 1 +ok builtin-ballot-in-marked-body -> exit 1 +ok marked-entry-swapped -> exit 1 +ok marked-with-header -> exit 1 +ok shuffle-in-comment -> exit 0 +ok unmark-pinned-table -> exit 1 +ok seam-in-production -> exit 1 +ok seam-in-cpp -> exit 1 +ok seam-in-bridge -> exit 1 +ok seam-in-test-module -> exit 0 +all kernel port dispatch checker cases passed +[verify] llama-server b10621 compatibility manifest... +llama-compat manifest OK: 249 help entries, 323 spellings, 136 env vars, 53 routes, 74 native fields; states {'supported': 171, 'aliased': 22, 'not_applicable': 147, 'by_design': 36}; 0 distinct deferred issues +ok control -> exit 0 +ok supported-with-divergence -> exit 1 +ok divergence-on-deferred -> exit 0 +ok misspelled-divergence-key -> exit 1 +ok divergence-inside-mlxcel-claim -> exit 1 +ok divergence-not-a-list -> exit 1 +ok divergence-empty-string -> exit 1 +ok missing-divergence -> exit 1 +ok drifted-test-pointer -> exit 1 +ok valid-test-pointer -> exit 0 +ok by-design-with-empty-divergence -> exit 1 +ok policy-without-revisit -> exit 1 +ok architectural-with-revisit -> exit 1 +ok unknown-rationale-key -> exit 1 +ok rationale-on-supported -> exit 1 +ok rationale-on-deferred -> exit 1 +ok by-design-without-test -> exit 1 +ok by-design-foreign-issue -> exit 1 +ok well-formed-by-design -> exit 0 +all llama-compat manifest validator cases passed diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/final-fmt.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/final-fmt.log new file mode 100644 index 000000000..e69de29bb diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/final-release.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/final-release.log new file mode 100644 index 000000000..3a666cbc8 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/final-release.log @@ -0,0 +1,104 @@ +warning: mlxcel-core@0.7.0: In file included from cpp/mlx_cxx_bridge.cpp:7: +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/release/build/mlxcel-core-4c8821fbbcc3d8f4/out/build/include/mlx/primitives.h: In member function 'std::pair mlx::core::AddMM::state() const': +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/release/build/mlxcel-core-4c8821fbbcc3d8f4/out/build/include/mlx/primitives.h:204:41: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 204 | std::pair state() const { +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp: In function 'mlx_cxx::{anonymous}::get_compiled_q_path_proportional(int, int, int, float)::&)>': +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3851:31: warning: '*(int*)((char*)&in_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 3851 | int B = in_shape[0]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3850:18: note: 'in_shape' declared here +warning: mlxcel-core@0.7.0: 3850 | auto in_shape = q_in.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3851:31: warning: '*(int*)((char*)&in_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 3851 | int B = in_shape[0]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3850:18: note: 'in_shape' declared here +warning: mlxcel-core@0.7.0: 3850 | auto in_shape = q_in.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp: In lambda function: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2190:24: warning: '*(int*)((char*)&shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 2190 | int B = shape[0], H = shape[1], S = shape[2], D = shape[3]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2189:14: note: 'shape' declared here +warning: mlxcel-core@0.7.0: 2189 | auto shape = x.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2190:24: warning: '*(int*)((char*)&shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 2190 | int B = shape[0], H = shape[1], S = shape[2], D = shape[3]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2189:14: note: 'shape' declared here +warning: mlxcel-core@0.7.0: 2189 | auto shape = x.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp: In lambda function: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3362:24: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 3362 | ref_rms); +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp: At global scope: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3792:24: warning: 'mlx_cxx::{anonymous}::ADD3_LN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 3792 | static const char* ADD3_LN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3027:24: warning: 'mlx_cxx::{anonymous}::MOE_FC1_RELU2_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 3027 | static const char* MOE_FC1_RELU2_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2847:24: warning: 'mlx_cxx::{anonymous}::MOE_DOWN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2847 | static const char* MOE_DOWN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2708:24: warning: 'mlx_cxx::{anonymous}::MOE_GATEUP_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2708 | static const char* MOE_GATEUP_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2129:24: warning: 'mlx_cxx::{anonymous}::MAMBA1_SCAN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2129 | static const char* MAMBA1_SCAN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:752:24: warning: 'mlx_cxx::{anonymous}::SSM_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 752 | static const char* SSM_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:452:24: warning: 'mlx_cxx::{anonymous}::XIELU_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 452 | static const char* XIELU_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:159:24: warning: 'mlx_cxx::{anonymous}::BITLINEAR_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 159 | static const char* BITLINEAR_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp: In function 'void mlx_cxx::nemotron_decode_step(uint64_t, const MlxArray&, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, std::unique_ptr&, rust::cxxbridge1::Slice >, rust::cxxbridge1::Slice >)': +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:156:16: warning: '*(int*)((char*)&id_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 156 | h = reshape(h, {id_shape[0], id_shape[1], (int)h.shape().back()}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:155:10: note: 'id_shape' declared here +warning: mlxcel-core@0.7.0: 155 | auto id_shape = input_ids.inner.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:156:16: warning: '*(int*)((char*)&id_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 156 | h = reshape(h, {id_shape[0], id_shape[1], (int)h.shape().back()}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:155:10: note: 'id_shape' declared here +warning: mlxcel-core@0.7.0: 155 | auto id_shape = input_ids.inner.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:244:28: warning: '*(int*)((char*)&ks + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 244 | k = reshape(k, {ks[0], ks[1], 1, ks[2], ks[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:243:22: note: 'ks' declared here +warning: mlxcel-core@0.7.0: 243 | auto ks = k.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:244:28: warning: '*(int*)((char*)&ks + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 244 | k = reshape(k, {ks[0], ks[1], 1, ks[2], ks[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:243:22: note: 'ks' declared here +warning: mlxcel-core@0.7.0: 243 | auto ks = k.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:248:28: warning: '*(int*)((char*)&vs + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 248 | v = reshape(v, {vs[0], vs[1], 1, vs[2], vs[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:247:22: note: 'vs' declared here +warning: mlxcel-core@0.7.0: 247 | auto vs = v.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:248:28: warning: '*(int*)((char*)&vs + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 248 | v = reshape(v, {vs[0], vs[1], 1, vs[2], vs[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:247:22: note: 'vs' declared here +warning: mlxcel-core@0.7.0: 247 | auto vs = v.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: In file included from ../mlx-cpp/turbo/kv_inplace_write.cpp:23: +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/release/build/mlxcel-core-4c8821fbbcc3d8f4/out/build/include/mlx/primitives.h: In member function 'std::pair mlx::core::AddMM::state() const': +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/release/build/mlxcel-core-4c8821fbbcc3d8f4/out/build/include/mlx/primitives.h:204:41: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 204 | std::pair state() const { +warning: mlxcel-core@0.7.0: | ^ + Compiling mlxcel v0.7.0 (/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227) + Finished `release` profile [optimized] target(s) in 6m 50s diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/final-test-build.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/final-test-build.log new file mode 100644 index 000000000..cf80013e1 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/final-test-build.log @@ -0,0 +1,266 @@ + Compiling mlxcel-core v0.7.0 (/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/src/lib/mlxcel-core) + Compiling mlxcel-surgery v0.7.0 (/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/src/lib/mlxcel-surgery) + Compiling mlxcel v0.7.0 (/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227) + Compiling mlxcel-xla v0.7.0 (/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/src/lib/mlxcel-xla) + Compiling mlxcel-mlx-pin v0.7.0 (/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/src/lib/mlxcel-mlx-pin) +warning: mlxcel-core@0.7.0: In file included from cpp/mlx_cxx_bridge.cpp:7: +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/test-fast/build/mlxcel-core-951f0822c2faa7cb/out/build/include/mlx/primitives.h: In member function 'std::pair mlx::core::AddMM::state() const': +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/test-fast/build/mlxcel-core-951f0822c2faa7cb/out/build/include/mlx/primitives.h:204:41: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 204 | std::pair state() const { +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp: In function 'mlx_cxx::{anonymous}::get_compiled_q_path_proportional(int, int, int, float)::&)>': +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3851:31: warning: '*(int*)((char*)&in_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 3851 | int B = in_shape[0]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3850:18: note: 'in_shape' declared here +warning: mlxcel-core@0.7.0: 3850 | auto in_shape = q_in.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3851:31: warning: '*(int*)((char*)&in_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 3851 | int B = in_shape[0]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3850:18: note: 'in_shape' declared here +warning: mlxcel-core@0.7.0: 3850 | auto in_shape = q_in.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp: In lambda function: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2190:24: warning: '*(int*)((char*)&shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 2190 | int B = shape[0], H = shape[1], S = shape[2], D = shape[3]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2189:14: note: 'shape' declared here +warning: mlxcel-core@0.7.0: 2189 | auto shape = x.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2190:24: warning: '*(int*)((char*)&shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 2190 | int B = shape[0], H = shape[1], S = shape[2], D = shape[3]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2189:14: note: 'shape' declared here +warning: mlxcel-core@0.7.0: 2189 | auto shape = x.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp: In lambda function: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3362:24: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 3362 | ref_rms); +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp: At global scope: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3792:24: warning: 'mlx_cxx::{anonymous}::ADD3_LN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 3792 | static const char* ADD3_LN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3027:24: warning: 'mlx_cxx::{anonymous}::MOE_FC1_RELU2_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 3027 | static const char* MOE_FC1_RELU2_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2847:24: warning: 'mlx_cxx::{anonymous}::MOE_DOWN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2847 | static const char* MOE_DOWN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2708:24: warning: 'mlx_cxx::{anonymous}::MOE_GATEUP_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2708 | static const char* MOE_GATEUP_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2129:24: warning: 'mlx_cxx::{anonymous}::MAMBA1_SCAN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2129 | static const char* MAMBA1_SCAN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:752:24: warning: 'mlx_cxx::{anonymous}::SSM_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 752 | static const char* SSM_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:452:24: warning: 'mlx_cxx::{anonymous}::XIELU_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 452 | static const char* XIELU_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:159:24: warning: 'mlx_cxx::{anonymous}::BITLINEAR_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 159 | static const char* BITLINEAR_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp: In function 'void mlx_cxx::nemotron_decode_step(uint64_t, const MlxArray&, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, std::unique_ptr&, rust::cxxbridge1::Slice >, rust::cxxbridge1::Slice >)': +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:156:16: warning: '*(int*)((char*)&id_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 156 | h = reshape(h, {id_shape[0], id_shape[1], (int)h.shape().back()}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:155:10: note: 'id_shape' declared here +warning: mlxcel-core@0.7.0: 155 | auto id_shape = input_ids.inner.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:156:16: warning: '*(int*)((char*)&id_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 156 | h = reshape(h, {id_shape[0], id_shape[1], (int)h.shape().back()}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:155:10: note: 'id_shape' declared here +warning: mlxcel-core@0.7.0: 155 | auto id_shape = input_ids.inner.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:244:28: warning: '*(int*)((char*)&ks + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 244 | k = reshape(k, {ks[0], ks[1], 1, ks[2], ks[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:243:22: note: 'ks' declared here +warning: mlxcel-core@0.7.0: 243 | auto ks = k.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:244:28: warning: '*(int*)((char*)&ks + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 244 | k = reshape(k, {ks[0], ks[1], 1, ks[2], ks[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:243:22: note: 'ks' declared here +warning: mlxcel-core@0.7.0: 243 | auto ks = k.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:248:28: warning: '*(int*)((char*)&vs + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 248 | v = reshape(v, {vs[0], vs[1], 1, vs[2], vs[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:247:22: note: 'vs' declared here +warning: mlxcel-core@0.7.0: 247 | auto vs = v.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:248:28: warning: '*(int*)((char*)&vs + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 248 | v = reshape(v, {vs[0], vs[1], 1, vs[2], vs[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:247:22: note: 'vs' declared here +warning: mlxcel-core@0.7.0: 247 | auto vs = v.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: In file included from ../mlx-cpp/turbo/kv_inplace_write.cpp:23: +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/test-fast/build/mlxcel-core-951f0822c2faa7cb/out/build/include/mlx/primitives.h: In member function 'std::pair mlx::core::AddMM::state() const': +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/test-fast/build/mlxcel-core-951f0822c2faa7cb/out/build/include/mlx/primitives.h:204:41: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 204 | std::pair state() const { +warning: mlxcel-core@0.7.0: | ^ + Finished `test-fast` profile [optimized] target(s) in 17m 51s + Executable unittests src/lib.rs (target/test-fast/deps/mlxcel-e4114342978c2f44) + Executable unittests src/main.rs (target/test-fast/deps/mlxcel-e029287206517e01) + Executable unittests src/bin/bench_decode.rs (target/test-fast/deps/mlxcel_bench_decode-d8d701711f5fa4db) + Executable unittests src/bin/bench_engine.rs (target/test-fast/deps/mlxcel_bench_engine-2ec930d264c4367a) + Executable unittests src/bin/engine_parity.rs (target/test-fast/deps/mlxcel_engine_parity-9ed786ceb5161668) + Executable unittests src/bin/mlx_server.rs (target/test-fast/deps/mlxcel_server-f103ed86e524be74) + Executable unittests src/bin/speculative_bench.rs (target/test-fast/deps/speculative_bench-873145a883391206) + Executable tests/apertus_parity.rs (target/test-fast/deps/apertus_parity-c44bfaf23ceb5f2a) + Executable tests/apply_template_tools_parity.rs (target/test-fast/deps/apply_template_tools_parity-b2007d5a95013a11) + Executable tests/attention_f16_range.rs (target/test-fast/deps/attention_f16_range-138269846d1237aa) + Executable tests/autotuner_outcome.rs (target/test-fast/deps/autotuner_outcome-4c20917d1b09d047) + Executable tests/cascade_decode_dispatch.rs (target/test-fast/deps/cascade_decode_dispatch-62f66eadbdb18eda) + Executable tests/causal_prefill_greedy_parity.rs (target/test-fast/deps/causal_prefill_greedy_parity-b24e4113b58bf5d0) + Executable tests/chat_template_kwargs.rs (target/test-fast/deps/chat_template_kwargs-e6294d8887f3dfd8) + Executable tests/cli_help_consistency.rs (target/test-fast/deps/cli_help_consistency-2e4bdd7019e4ac9f) + Executable tests/cpu_device_custom_kernel_gates.rs (target/test-fast/deps/cpu_device_custom_kernel_gates-219ccab8fff654e1) + Executable tests/cpu_device_sdpa.rs (target/test-fast/deps/cpu_device_sdpa-e846797475f02825) + Executable tests/cuda_qmm_determinism.rs (target/test-fast/deps/cuda_qmm_determinism-0580441a9e835343) + Executable tests/cuda_sdpa_determinism.rs (target/test-fast/deps/cuda_sdpa_determinism-11feef284e612c65) + Executable tests/dead_doc_pointers.rs (target/test-fast/deps/dead_doc_pointers-ca67affaaac25f60) + Executable tests/deepseek_v2_greedy_parity.rs (target/test-fast/deps/deepseek_v2_greedy_parity-d173298dd0dfe794) + Executable tests/deepseek_v4_real_model.rs (target/test-fast/deps/deepseek_v4_real_model-c15e8bbf4b076998) + Executable tests/deepseek_vl_v2_parity.rs (target/test-fast/deps/deepseek_vl_v2_parity-c0ccf4da9d490ca0) + Executable tests/deepseekocr_2_resampler.rs (target/test-fast/deps/deepseekocr_2_resampler-ad3501f1d9ed4877) + Executable tests/deepseekocr_encoder_parity.rs (target/test-fast/deps/deepseekocr_encoder_parity-9e87576af190a9b5) + Executable tests/disaggregated_e2e.rs (target/test-fast/deps/disaggregated_e2e-4848b86f61cec466) + Executable tests/disaggregated_router_e2e.rs (target/test-fast/deps/disaggregated_router_e2e-7e3e5b706b1b110e) + Executable tests/disaggregated_serving_e2e.rs (target/test-fast/deps/disaggregated_serving_e2e-1e4b34efeb44049f) + Executable tests/dots_ocr_parity.rs (target/test-fast/deps/dots_ocr_parity-67cba3b161e4505a) + Executable tests/embedding_pooling_normalize_real.rs (target/test-fast/deps/embedding_pooling_normalize_real-d10955dd8b9aaa7e) + Executable tests/ernie4_5_moe_vl_parity.rs (target/test-fast/deps/ernie4_5_moe_vl_parity-c5a44a881cbb174d) + Executable tests/falcon_ocr_parity.rs (target/test-fast/deps/falcon_ocr_parity-7fc0e6d322316955) + Executable tests/fastvlm_parity.rs (target/test-fast/deps/fastvlm_parity-2042aa80ba2a521c) + Executable tests/florence2_fusion_parity.rs (target/test-fast/deps/florence2_fusion_parity-2583c03819278165) + Executable tests/florence2_postprocess_parity.rs (target/test-fast/deps/florence2_postprocess_parity-19db236ea85faf3c) + Executable tests/florence2_processor_parity.rs (target/test-fast/deps/florence2_processor_parity-4b74746a8bc1f78d) + Executable tests/florence2_quantized_parity.rs (target/test-fast/deps/florence2_quantized_parity-918e1afbf870f2d1) + Executable tests/florence2_text_parity.rs (target/test-fast/deps/florence2_text_parity-9dce19252589f2a1) + Executable tests/florence2_vision_parity.rs (target/test-fast/deps/florence2_vision_parity-9ab1c5fcb66e84b1) + Executable tests/gcp_predict_real_model.rs (target/test-fast/deps/gcp_predict_real_model-ad2470a51cd171da) + Executable tests/glm4v_moe_parity.rs (target/test-fast/deps/glm4v_moe_parity-58a3c5aaa3117dc7) + Executable tests/glm4v_parity.rs (target/test-fast/deps/glm4v_parity-6de5375d410ba9a4) + Executable tests/glm_ocr_parity.rs (target/test-fast/deps/glm_ocr_parity-420214652985ebca) + Executable tests/got_ocr_prompt_parity.rs (target/test-fast/deps/got_ocr_prompt_parity-767e02b0997a5a04) + Executable tests/got_ocr_real_model.rs (target/test-fast/deps/got_ocr_real_model-4359125e618e9ca2) + Executable tests/granite4_vision_parity.rs (target/test-fast/deps/granite4_vision_parity-c95852f9d741c413) + Executable tests/granite_vision_parity.rs (target/test-fast/deps/granite_vision_parity-f1608c43da7d0138) + Executable tests/hunyuan_vl_parity.rs (target/test-fast/deps/hunyuan_vl_parity-b2021063bb475f35) + Executable tests/internvl_parity.rs (target/test-fast/deps/internvl_parity-06fe5da83044d70e) + Executable tests/iquestloopcoder_parity.rs (target/test-fast/deps/iquestloopcoder_parity-660c85f48d3b81fa) + Executable tests/kimi_vl_parity.rs (target/test-fast/deps/kimi_vl_parity-26ed5217c0889d9c) + Executable tests/lang_bias.rs (target/test-fast/deps/lang_bias-b5d7e56713d0931b) + Executable tests/llama_chat_template_cli.rs (target/test-fast/deps/llama_chat_template_cli-ba7b27b2422e142c) + Executable tests/llama_compat_manifest.rs (target/test-fast/deps/llama_compat_manifest-fcd85f2b5b6009a5) + Executable tests/llama_compat_rope_freq_base.rs (target/test-fast/deps/llama_compat_rope_freq_base-52ae5c644ce3d347) + Executable tests/llama_compat_rope_scaling_override.rs (target/test-fast/deps/llama_compat_rope_scaling_override-634e4027e5826a68) + Executable tests/llama_compat_utility_routes.rs (target/test-fast/deps/llama_compat_utility_routes-47e5d7c8f7329113) + Executable tests/llama_compat_yarn_override.rs (target/test-fast/deps/llama_compat_yarn_override-d0f6c02aebc9d4ba) + Executable tests/llama_ggml_runtime_cli.rs (target/test-fast/deps/llama_ggml_runtime_cli-3053a09c56967f3f) + Executable tests/llama_logging_presets.rs (target/test-fast/deps/llama_logging_presets-8a4f2177a9edd8e6) + Executable tests/llama_model_source_cli.rs (target/test-fast/deps/llama_model_source_cli-ccb97ca32c61fd40) + Executable tests/mamba2_hybrid_decode_finite.rs (target/test-fast/deps/mamba2_hybrid_decode_finite-add021fce9fc603e) + Executable tests/mamba2_hybrid_finite.rs (target/test-fast/deps/mamba2_hybrid_finite-967483ae9fbb74dc) + Executable tests/max_kv_size_dense_e2e.rs (target/test-fast/deps/max_kv_size_dense_e2e-51bbe6daacbce4e6) + Executable tests/metal_block_vs_chain_op_parity.rs (target/test-fast/deps/metal_block_vs_chain_op_parity-bf79e9600bd70b8e) + Executable tests/mllama_parity.rs (target/test-fast/deps/mllama_parity-801c7c3c25a7c428) + Executable tests/model_loader_stdout_guard.rs (target/test-fast/deps/model_loader_stdout_guard-0872d345b83daea5) + Executable tests/model_loading.rs (target/test-fast/deps/model_loading-51125a9d94a8a1e6) + Executable tests/molmo_parity.rs (target/test-fast/deps/molmo_parity-78a82be660460062) + Executable tests/moondream2_parity.rs (target/test-fast/deps/moondream2_parity-64de1e4a812c5df6) + Executable tests/nemotron_parse_real_model.rs (target/test-fast/deps/nemotron_parse_real_model-70ad37b9f5b06003) + Executable tests/nemotron_voicechat_codec_real.rs (target/test-fast/deps/nemotron_voicechat_codec_real-a611132170248ea5) + Executable tests/nemotron_voicechat_front_real.rs (target/test-fast/deps/nemotron_voicechat_front_real-973fbeb950daea0e) + Executable tests/nemotron_voicechat_llm_real.rs (target/test-fast/deps/nemotron_voicechat_llm_real-a8c1e68664c3d216) + Executable tests/nemotron_voicechat_offline_real.rs (target/test-fast/deps/nemotron_voicechat_offline_real-d41233eca36885fd) + Executable tests/nemotron_voicechat_stream_real.rs (target/test-fast/deps/nemotron_voicechat_stream_real-88bd5a8555f1dc8c) + Executable tests/nemotron_voicechat_streaming_real.rs (target/test-fast/deps/nemotron_voicechat_streaming_real-e64bfda065b15f86) + Executable tests/nemotron_voicechat_tts_real.rs (target/test-fast/deps/nemotron_voicechat_tts_real-cf2d97a8b12f84a2) + Executable tests/paddleocr_vl_parity.rs (target/test-fast/deps/paddleocr_vl_parity-699fcb2a45b1b72c) + Executable tests/paged_decode_v2_greedy_parity.rs (target/test-fast/deps/paged_decode_v2_greedy_parity-35b27959d4a264c3) + Executable tests/paged_kv_serialize_parity.rs (target/test-fast/deps/paged_kv_serialize_parity-f358287d400f4c09) + Executable tests/paged_prefix_share_parity.rs (target/test-fast/deps/paged_prefix_share_parity-931ca02c63f47cbd) + Executable tests/paged_real_model_parity.rs (target/test-fast/deps/paged_real_model_parity-79904217e6718907) + Executable tests/paged_scheduler_parity.rs (target/test-fast/deps/paged_scheduler_parity-7d111b8f3d81ed82) + Executable tests/phi4mm_audio_parity.rs (target/test-fast/deps/phi4mm_audio_parity-5eb0a15b0d76628e) + Executable tests/pipeline_auto_partition_real_models.rs (target/test-fast/deps/pipeline_auto_partition_real_models-8db47da5a21d9350) + Executable tests/pipeline_ci_multi_stage_real_models.rs (target/test-fast/deps/pipeline_ci_multi_stage_real_models-a43a41029bda035a) + Executable tests/pipeline_cli_real_models.rs (target/test-fast/deps/pipeline_cli_real_models-207e16982539c7fe) + Executable tests/pipeline_elastic_repartition_real_models.rs (target/test-fast/deps/pipeline_elastic_repartition_real_models-d66be1191ccd53d2) + Executable tests/pipeline_lora_composition_real_models.rs (target/test-fast/deps/pipeline_lora_composition_real_models-ead36b0820d00cfa) + Executable tests/pipeline_observability_real_models.rs (target/test-fast/deps/pipeline_observability_real_models-d0030065f08d8806) + Executable tests/pipeline_remote_real_models.rs (target/test-fast/deps/pipeline_remote_real_models-33a14d3d4e098b14) + Executable tests/pipeline_server_real_models.rs (target/test-fast/deps/pipeline_server_real_models-2e5a52c9f63f50ba) + Executable tests/pipeline_server_remote_real_models.rs (target/test-fast/deps/pipeline_server_remote_real_models-1868bd067b6d0b68) + Executable tests/pipeline_stage_executor_real_models.rs (target/test-fast/deps/pipeline_stage_executor_real_models-14babd2449fe0997) + Executable tests/plamo2_parity.rs (target/test-fast/deps/plamo2_parity-30d11583853e1554) + Executable tests/pp_tp_2d_real_models.rs (target/test-fast/deps/pp_tp_2d_real_models-281cb6ff4d54681c) + Executable tests/pre_ampere_f16_quality.rs (target/test-fast/deps/pre_ampere_f16_quality-1fe282cf39704a90) + Executable tests/prompt_cache_compat_e2e.rs (target/test-fast/deps/prompt_cache_compat_e2e-00ac992017fb509a) + Executable tests/prompt_cache_e2e.rs (target/test-fast/deps/prompt_cache_e2e-34178c8f531b2f8b) + Executable tests/prompt_cache_prefill_bench.rs (target/test-fast/deps/prompt_cache_prefill_bench-5eb81d5890c52e5d) + Executable tests/qwen2_5_vl_parity.rs (target/test-fast/deps/qwen2_5_vl_parity-e606f3d0324be489) + Executable tests/qwen35_mtp_verify_parity.rs (target/test-fast/deps/qwen35_mtp_verify_parity-85d8b5eeb0993e08) + Executable tests/qwen38_mtp_chain_parity.rs (target/test-fast/deps/qwen38_mtp_chain_parity-2b7368b6d660a1b9) + Executable tests/qwen3_omni_moe_parity.rs (target/test-fast/deps/qwen3_omni_moe_parity-5c97750f1b386f79) + Executable tests/rdma_transport_bench.rs (target/test-fast/deps/rdma_transport_bench-c463b6f5edd9aa14) + Executable tests/realtime_ws.rs (target/test-fast/deps/realtime_ws-8d448b6b3978e98e) + Executable tests/rocm_cpu_blas_finegrained.rs (target/test-fast/deps/rocm_cpu_blas_finegrained-9e01e7eebb932ea8) + Executable tests/rocm_custom_kernel_jit_key.rs (target/test-fast/deps/rocm_custom_kernel_jit_key-429b78588e3ab20b) + Executable tests/rocm_device_map_concurrency.rs (target/test-fast/deps/rocm_device_map_concurrency-b0d502a30461e028) + Executable tests/rocm_fft_cache_env.rs (target/test-fast/deps/rocm_fft_cache_env-faaf2c4c2ea56be6) + Executable tests/rocm_fft_plan_cache.rs (target/test-fast/deps/rocm_fft_plan_cache-2933c1432fc8f46b) + Executable tests/rocm_gather_qmm_expert_batched.rs (target/test-fast/deps/rocm_gather_qmm_expert_batched-5e7629804b2127c0) + Executable tests/rocm_gpu_faults.rs (target/test-fast/deps/rocm_gpu_faults-8ac74879aac2f38e) + Executable tests/rocm_hipblaslt_concurrency.rs (target/test-fast/deps/rocm_hipblaslt_concurrency-a06938cd1f47570e) + Executable tests/rocm_inflight_bound.rs (target/test-fast/deps/rocm_inflight_bound-ea64ea44d6ab13f8) + Executable tests/rocm_jit_module_concurrency.rs (target/test-fast/deps/rocm_jit_module_concurrency-afd0e4ddc966b3ab) + Executable tests/rocm_mxfp4_quant.rs (target/test-fast/deps/rocm_mxfp4_quant-d8f2ed54547ef957) + Executable tests/rocm_qmm_batched_rows.rs (target/test-fast/deps/rocm_qmm_batched_rows-7c063f30782f80bb) + Executable tests/rocm_qmm_dequant_cache.rs (target/test-fast/deps/rocm_qmm_dequant_cache-f197b575a8ab5792) + Executable tests/rocm_qmm_env.rs (target/test-fast/deps/rocm_qmm_env-45bdba43a2258fda) + Executable tests/rocm_rocblas_handle_concurrency.rs (target/test-fast/deps/rocm_rocblas_handle_concurrency-46a5fa727df46606) + Executable tests/rocm_scalar_pool_concurrency.rs (target/test-fast/deps/rocm_scalar_pool_concurrency-3d0b3a76087317b6) + Executable tests/rocm_slice_update_reduce.rs (target/test-fast/deps/rocm_slice_update_reduce-317c5ec53f6e80a5) + Executable tests/rocm_slice_update_source.rs (target/test-fast/deps/rocm_slice_update_source-35e750a3d8e272d9) + Executable tests/rocm_strided_copy_grid.rs (target/test-fast/deps/rocm_strided_copy_grid-907df35d74ec26a1) + Executable tests/rocm_strided_scan.rs (target/test-fast/deps/rocm_strided_scan-f9cd902ec831070b) + Executable tests/rocm_wave64_port_refusal.rs (target/test-fast/deps/rocm_wave64_port_refusal-c314586229ba53d2) + Executable tests/rocm_wave_size.rs (target/test-fast/deps/rocm_wave_size-f5a9c5a45bf7fdab) + Executable tests/sampling_gumbel_kill_switch.rs (target/test-fast/deps/sampling_gumbel_kill_switch-9e6224e7dbb2fa87) + Executable tests/sampling_rejection_kill_switch.rs (target/test-fast/deps/sampling_rejection_kill_switch-12d3b1f579f8baf7) + Executable tests/sampling_top_k_above_vocab_e2e.rs (target/test-fast/deps/sampling_top_k_above_vocab_e2e-75e0f7228af789de) + Executable tests/smolvlm_parity.rs (target/test-fast/deps/smolvlm_parity-608d4f1820d455e5) + Executable tests/speculative_dispatch.rs (target/test-fast/deps/speculative_dispatch-d6380ee4637988e7) + Executable tests/speculative_parity.rs (target/test-fast/deps/speculative_parity-4de814b818ad16b5) + Executable tests/step3p7_parity.rs (target/test-fast/deps/step3p7_parity-129d3f4377a92c12) + Executable tests/structured_outputs.rs (target/test-fast/deps/structured_outputs-a032780570696018) + Executable tests/surgery_cli.rs (target/test-fast/deps/surgery_cli-273e8e62ee5e122c) + Executable tests/tensor_parallel_real_models.rs (target/test-fast/deps/tensor_parallel_real_models-a2e9a51b730af924) + Executable tests/thinking_budget.rs (target/test-fast/deps/thinking_budget-c2847a4d7ba0bc6e) + Executable tests/tp_e2e.rs (target/test-fast/deps/tp_e2e-dfb4b082e3ffd928) + Executable tests/turbo_kv_e2e.rs (target/test-fast/deps/turbo_kv_e2e-5724d8a936e28028) + Executable tests/vlm_concurrency.rs (target/test-fast/deps/vlm_concurrency-620f8b1cfff030af) + Executable tests/vlm_wrapper_capability_delegation.rs (target/test-fast/deps/vlm_wrapper_capability_delegation-d1ec0017ac51192e) + Executable tests/wht_op.rs (target/test-fast/deps/wht_op-8a3cfea2f7d8fb0c) + Executable tests/xla_gemma3n_prefill.rs (target/test-fast/deps/xla_gemma3n_prefill-b926285baa265003) + Executable tests/youtu_vl_parity.rs (target/test-fast/deps/youtu_vl_parity-a6076273912211e5) + Executable tests/zero_config_cluster_init.rs (target/test-fast/deps/zero_config_cluster_init-42f8f650c529fe07) + Executable unittests src/lib.rs (target/test-fast/deps/mlxcel_core-a9c9e3c743946c6b) + Executable unittests src/lib.rs (target/test-fast/deps/mlxcel_mlx_pin-7bbde732c345a80b) + Executable tests/cross_parser.rs (target/test-fast/deps/cross_parser-6f5e8642504955cf) + Executable unittests src/lib.rs (target/test-fast/deps/mlxcel_surgery-9d678b028e2c884a) + Executable tests/add_integration.rs (target/test-fast/deps/add_integration-546b1ff68c8c3742) + Executable tests/interpolate_integration.rs (target/test-fast/deps/interpolate_integration-51776ac318944ce5) + Executable tests/prune_integration.rs (target/test-fast/deps/prune_integration-150bd6435c018dab) + Executable tests/replace_integration.rs (target/test-fast/deps/replace_integration-ab6e6ee969a83bd6) + Executable tests/scale_integration.rs (target/test-fast/deps/scale_integration-e62651ee478e81ff) + Executable unittests src/lib.rs (target/test-fast/deps/mlxcel_xla-202b6bbdaef2e90c) diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/full-cuda.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/full-cuda.log new file mode 100644 index 000000000..38cc712b6 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/full-cuda.log @@ -0,0 +1,13711 @@ +[verify] test (workspace, test-fast profile, features=cuda, single threaded)... +cargo test --workspace --profile test-fast --features cuda --no-fail-fast -- --test-threads=1 +warning: mlxcel-core@0.7.0: In file included from cpp/mlx_cxx_bridge.cpp:7: +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/test-fast/build/mlxcel-core-951f0822c2faa7cb/out/build/include/mlx/primitives.h: In member function 'std::pair mlx::core::AddMM::state() const': +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/test-fast/build/mlxcel-core-951f0822c2faa7cb/out/build/include/mlx/primitives.h:204:41: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 204 | std::pair state() const { +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp: In function 'mlx_cxx::{anonymous}::get_compiled_q_path_proportional(int, int, int, float)::&)>': +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3851:31: warning: '*(int*)((char*)&in_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 3851 | int B = in_shape[0]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3850:18: note: 'in_shape' declared here +warning: mlxcel-core@0.7.0: 3850 | auto in_shape = q_in.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3851:31: warning: '*(int*)((char*)&in_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 3851 | int B = in_shape[0]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3850:18: note: 'in_shape' declared here +warning: mlxcel-core@0.7.0: 3850 | auto in_shape = q_in.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp: In lambda function: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2190:24: warning: '*(int*)((char*)&shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 2190 | int B = shape[0], H = shape[1], S = shape[2], D = shape[3]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2189:14: note: 'shape' declared here +warning: mlxcel-core@0.7.0: 2189 | auto shape = x.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2190:24: warning: '*(int*)((char*)&shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 2190 | int B = shape[0], H = shape[1], S = shape[2], D = shape[3]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2189:14: note: 'shape' declared here +warning: mlxcel-core@0.7.0: 2189 | auto shape = x.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp: In lambda function: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3362:24: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 3362 | ref_rms); +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp: At global scope: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3792:24: warning: 'mlx_cxx::{anonymous}::ADD3_LN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 3792 | static const char* ADD3_LN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3027:24: warning: 'mlx_cxx::{anonymous}::MOE_FC1_RELU2_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 3027 | static const char* MOE_FC1_RELU2_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2847:24: warning: 'mlx_cxx::{anonymous}::MOE_DOWN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2847 | static const char* MOE_DOWN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2708:24: warning: 'mlx_cxx::{anonymous}::MOE_GATEUP_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2708 | static const char* MOE_GATEUP_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2129:24: warning: 'mlx_cxx::{anonymous}::MAMBA1_SCAN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2129 | static const char* MAMBA1_SCAN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:752:24: warning: 'mlx_cxx::{anonymous}::SSM_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 752 | static const char* SSM_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:452:24: warning: 'mlx_cxx::{anonymous}::XIELU_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 452 | static const char* XIELU_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:159:24: warning: 'mlx_cxx::{anonymous}::BITLINEAR_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 159 | static const char* BITLINEAR_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp: In function 'void mlx_cxx::nemotron_decode_step(uint64_t, const MlxArray&, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, std::unique_ptr&, rust::cxxbridge1::Slice >, rust::cxxbridge1::Slice >)': +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:156:16: warning: '*(int*)((char*)&id_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 156 | h = reshape(h, {id_shape[0], id_shape[1], (int)h.shape().back()}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:155:10: note: 'id_shape' declared here +warning: mlxcel-core@0.7.0: 155 | auto id_shape = input_ids.inner.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:156:16: warning: '*(int*)((char*)&id_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 156 | h = reshape(h, {id_shape[0], id_shape[1], (int)h.shape().back()}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:155:10: note: 'id_shape' declared here +warning: mlxcel-core@0.7.0: 155 | auto id_shape = input_ids.inner.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:244:28: warning: '*(int*)((char*)&ks + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 244 | k = reshape(k, {ks[0], ks[1], 1, ks[2], ks[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:243:22: note: 'ks' declared here +warning: mlxcel-core@0.7.0: 243 | auto ks = k.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:244:28: warning: '*(int*)((char*)&ks + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 244 | k = reshape(k, {ks[0], ks[1], 1, ks[2], ks[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:243:22: note: 'ks' declared here +warning: mlxcel-core@0.7.0: 243 | auto ks = k.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:248:28: warning: '*(int*)((char*)&vs + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 248 | v = reshape(v, {vs[0], vs[1], 1, vs[2], vs[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:247:22: note: 'vs' declared here +warning: mlxcel-core@0.7.0: 247 | auto vs = v.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:248:28: warning: '*(int*)((char*)&vs + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 248 | v = reshape(v, {vs[0], vs[1], 1, vs[2], vs[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:247:22: note: 'vs' declared here +warning: mlxcel-core@0.7.0: 247 | auto vs = v.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: In file included from ../mlx-cpp/turbo/kv_inplace_write.cpp:23: +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/test-fast/build/mlxcel-core-951f0822c2faa7cb/out/build/include/mlx/primitives.h: In member function 'std::pair mlx::core::AddMM::state() const': +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/test-fast/build/mlxcel-core-951f0822c2faa7cb/out/build/include/mlx/primitives.h:204:41: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 204 | std::pair state() const { +warning: mlxcel-core@0.7.0: | ^ + Finished `test-fast` profile [optimized] target(s) in 0.23s + Running unittests src/lib.rs (target/test-fast/deps/mlxcel-e4114342978c2f44) + +running 9095 tests +test audio::encoder::tests::audio_linear_applies_checkpoint_clip_bounds ... ok +test audio::encoder::tests::audio_linear_without_bounds_is_plain_linear ... ok +test audio::f32_weights::tests::mixed_bf16_f32_promotion_follows_the_build ... ok +test audio::f32_weights::tests::precast_conv_and_layer_norm_match_the_promoted_graph ... ok +test audio::f32_weights::tests::precast_matmul_and_addmm_match_the_promoted_graph ... ok +test audio::f32_weights::tests::promoted_subset_filters_by_prefix_and_predicate ... ok +test audio::fastconformer::streaming_tests::full_chunks_emit_without_partial_and_final_closes ... ok +test audio::fastconformer::streaming_tests::push_of_eight_mel_frames_emits_one_encoder_frame ... ok +test audio::fastconformer::streaming_tests::streamed_encoder_matches_offline_chunked_limited ... ok +test audio::fastconformer::streaming_tests::streaming_rejects_bad_inputs ... ok +test audio::fastconformer::tests::attention_loads_non_default_quantization ... ok +test audio::fastconformer::tests::bad_inputs_and_weights_fail_cleanly ... ok +test audio::fastconformer::tests::block_output_shape_and_layout_gate_is_idempotent ... ok +test audio::fastconformer::tests::chunked_limited_mask_70_0_allows_self_and_70_left ... ok +test audio::fastconformer::tests::config_accepts_flat_and_nested_context_sizes ... ok +test audio::fastconformer::tests::perception_f32_weights_match_the_promoted_bf16_path ... ok +test audio::fastconformer::tests::perception_projects_and_returns_encoder_output ... ok +test audio::fastconformer::tests::rel_pos_embedding_rows_run_from_l_minus_1_down ... ok +test audio::fastconformer::tests::rel_shift_matches_hand_indexing ... ok +test audio::fastconformer::tests::subsampling_lengths_128_mel_frames_give_17 ... ok +test audio::feature_extractor::tests::malformed_config_scalars_fall_back_to_defaults ... ok +test audio::feature_extractor::tests::streaming_wav_length_sentinel_reads_bounded_payload_to_eof ... ok +test audio::feature_extractor::tests::test_default_config_matches_reference ... ok +test audio::feature_extractor::tests::test_from_processor_config ... ok +test audio::feature_extractor::tests::test_golden_log_mel_matches_reference ... ok +test audio::feature_extractor::tests::test_periodic_hann_window_mel_peak ... ok +test audio::feature_extractor::tests::test_semicausal_left_pad_frame_count ... ok +test audio::feature_extractor::tests::test_tail_padding_mask_and_zeroing ... ok +test audio::fft::tests::empty_input_returns_zero_magnitudes_with_requested_cardinality ... ok +test audio::fft::tests::matches_dft_for_actual_audio_frame_sizes ... ok +test audio::fft::tests::oversized_input_fails_closed_without_transform_scratch ... ok +test audio::fft::tests::preserves_requested_cardinality_and_zero_fills_extra_bins ... ok +test audio::gemma3n::attention::tests::attention_mask_minimum_remains_finite_in_checkpoint_dtypes ... ok +test audio::gemma3n::attention::tests::relative_shift_matches_pinned_jax_layout ... ok +test audio::gemma3n::attention::tests::softcap_is_not_an_unbounded_attention_substitute ... ok +test audio::gemma3n::encoder::tests::cumulative_group_norm_does_not_collapse_to_ordinary_group_norm ... ok +test audio::gemma3n::encoder::tests::default_local_attention_contract_rejects_global_substitution ... ok +test audio::gemma3n::encoder::tests::invalid_sscp_config_is_rejected_before_loading_weights ... ok +test audio::gemma3n::encoder::tests::malformed_checkpoint_conv_shape_is_rejected ... ok +test audio::gemma3n::encoder::tests::malformed_checkpoint_projection_shape_is_rejected ... ok +test audio::gemma3n::encoder::tests::sscp_casts_processor_features_to_checkpoint_convolution_dtype ... ok +test audio::gemma3n::encoder::tests::tiny_encoder_exercises_sscp_conformer_reduction_and_mask ... ok +test audio::gemma3n::feature_extractor::tests::batch_padding_keeps_clip_boundaries_and_mask ... ok +test audio::gemma3n::feature_extractor::tests::clips_longer_than_thirty_seconds_are_truncated_at_the_reference_boundary ... ok +test audio::gemma3n::feature_extractor::tests::deterministic_waveform_matches_pinned_transformers_mel_fixture ... ok +test audio::gemma3n::feature_extractor::tests::feature_loop_observes_live_cancellation ... ok +test audio::gemma3n::feature_extractor::tests::hard_mel_floor_is_log_one_e_minus_five ... ok +test audio::gemma3n::feature_extractor::tests::official_boundary_emits_2997_mel_frames_and_188_tokens ... ok +test audio::gemma3n::feature_extractor::tests::rejects_empty_nonfinite_and_out_of_range_clips ... ok +test audio::gemma3n::feature_extractor::tests::sub_frame_clip_matches_reference_zero_frame_result ... ok +test audio::inkling_dmel::tests::compact_batch_caps_actual_transforms_before_fft_work ... ok +test audio::inkling_dmel::tests::compact_batch_checks_cancellation_between_frames ... ok +test audio::inkling_dmel::tests::compact_batch_transforms_only_valid_rows_for_skewed_clips ... ok +test audio::inkling_dmel::tests::dmel_boundaries_round_down_and_ties_go_low ... ok +test audio::inkling_dmel::tests::frame_count_and_mask_follow_hop ... ok +test audio::inkling_dmel::tests::log_mel_matches_pinned_numpy_fixture ... ok +test audio::inkling_dmel::tests::rejects_invalid_configuration_and_non_finite_input ... ok +test audio::inkling_processor::tests::loaded_processor_config_accepts_exact_frontend_and_rejects_drift ... ok +test audio::inkling_processor::tests::missing_processor_config_uses_pinned_defaults ... ok +test audio::inkling_tower::tests::concatenate_many_preserves_256_array_cardinality_and_order ... ok +test audio::inkling_tower::tests::request_ceiling_joins_6000_chunks_once_in_order ... ok +test audio::inkling_tower::tests::tower_rejects_wrong_shape_and_empty_frames ... ok +test audio::inkling_tower::tests::tower_sums_channels_then_norms_across_chunks ... ok +test audio::nemotron_codec::codec_tests::cache_update_semantics ... ok +test audio::nemotron_codec::codec_tests::decode_step_stream_matches_full_decode_after_delay ... ok +test audio::nemotron_codec::codec_tests::default_config_matches_checkpoint ... ok +test audio::nemotron_codec::codec_tests::encode_decode_shapes ... ok +test audio::nemotron_codec::codec_tests::invalid_codes_are_rejected ... ok +test audio::nemotron_codec::codec_tests::layout_gate_is_idempotent ... ok +test audio::nemotron_codec::codec_tests::stft_istft_round_trip ... ok +test audio::nemotron_h_nano_omni::encoder::abort_safety_tests::conv_module_pointwise1_returns_err_on_channel_mismatch ... ok +test audio::nemotron_h_nano_omni::encoder::abort_safety_tests::subsampling_conv2d_layer_returns_err_on_channel_mismatch ... ok +test audio::nemotron_h_nano_omni::encoder_tests::config_subsampling_output_matches_iteration_count ... ok +test audio::nemotron_h_nano_omni::encoder_tests::encoder_loads_and_produces_expected_shape ... ok +test audio::nemotron_h_nano_omni::encoder_tests::encoder_with_attention_mask_zeros_padded_frames ... ok +test audio::nemotron_h_nano_omni::encoder_tests::missing_weight_surfaces_as_loader_error ... ok +test audio::nemotron_h_nano_omni::encoder_tests::projector_loads_and_maps_to_llm_hidden ... ok +test audio::nemotron_h_nano_omni::encoder_tests::rel_position_first_row_matches_analytic_frequencies ... ok +test audio::nemotron_h_nano_omni::encoder_tests::rel_position_vector_descends_for_t4 ... ok +test audio::nemotron_h_nano_omni::encoder_tests::rel_position_vector_handles_edge_lengths ... ok +test audio::nemotron_h_nano_omni::encoder_tests::synthetic_audio_pipeline_produces_consistent_token_count ... ok +test audio::nemotron_h_nano_omni::feature_extractor::tests::batch_extract_pads_to_longest_clip ... ok +test audio::nemotron_h_nano_omni::feature_extractor::tests::malformed_spectrum_config_falls_back_to_bounded_defaults ... ok +test audio::nemotron_h_nano_omni::feature_extractor::tests::normalization_zero_means_within_valid_range ... ok +test audio::nemotron_h_nano_omni::feature_extractor::tests::one_second_tone_has_expected_frame_count ... ok +test audio::nemotron_h_nano_omni::feature_extractor::tests::subsampling_output_length_matches_upstream_formula ... ok +test audio::nemotron_mel::stream_tests::streaming_mel_joined_outputs_equal_offline ... ok +test audio::nemotron_mel::stream_tests::streaming_mel_rejects_bad_settings_and_closed_push ... ok +test audio::nemotron_mel::stream_tests::streaming_mel_with_frame_lookahead_emits_eight_hops_per_frame ... ok +test audio::nemotron_mel::tests::defaults_match_checkpoint_preprocessor ... ok +test audio::nemotron_mel::tests::frame_count_is_one_plus_floor_len_over_hop ... ok +test audio::nemotron_mel::tests::log_mel_array_shape ... ok +test audio::nemotron_mel::tests::per_feature_normalization_zero_mean ... ok +test audio::nemotron_mel::tests::preemphasis_first_sample_unchanged ... ok +test audio::nemotron_mel::tests::silence_gives_log_guard_floor ... ok +test audio::nemotron_mel::tests::slaney_filterbank_rows_are_nonnegative_triangles ... ok +test audio::nemotron_mel::tests::tone_energy_lands_in_matching_mel_bin ... ok +test audio::nemotron_mel::tests::window_is_symmetric_hann_centered_in_n_fft ... ok +test audio::phi4mm::config::tests::rejects_architecture_drift ... ok +test audio::phi4mm::feature_extractor::tests::batch_preserves_multiple_clip_boundaries_without_padding ... ok +test audio::phi4mm::feature_extractor::tests::deterministic_waveform_matches_pinned_speechlib_features ... ok +test audio::phi4mm::feature_extractor::tests::empty_one_frame_and_oversized_audio_are_rejected_before_allocation ... ok +test audio::phi4mm::feature_extractor::tests::framing_loop_observes_live_cancellation_before_mlx_allocation ... ok +test audio::phi4mm::feature_extractor::tests::phi_frontend_call_path_matches_pre_move_scipy_reference ... ok +test audio::phi4mm::feature_extractor::tests::pinned_processor_relabels_24khz_before_feature_extraction ... ok +test audio::phi4mm::feature_extractor::tests::rejects_too_short_resampled_or_non_finite_waveforms ... ok +test audio::phi4mm::feature_extractor::tests::speechlib_filterbank_has_pinned_reference_entries ... ok +test audio::phi4mm::feature_extractor::tests::token_count_is_ceiling_frames_over_eight ... ok +test audio::preprocessing::container::tests::a_clip_past_the_duration_cap_is_refused ... ok +test audio::preprocessing::container::tests::a_corrupt_payload_is_refused_rather_than_decoded ... ok +test audio::preprocessing::container::tests::a_flac_header_with_a_garbage_body_is_refused_structurally ... ok +test audio::preprocessing::container::tests::a_sound_flac_passes_the_structural_check ... ok +test audio::preprocessing::container::tests::a_truncated_container_is_refused ... ok +test audio::preprocessing::container::tests::every_container_decodes_the_same_clip ... ok +test audio::preprocessing::container::tests::inspect_reports_the_declared_geometry_for_every_container ... ok +test audio::preprocessing::container::tests::sniffing_identifies_each_container_from_its_bytes ... ok +test audio::preprocessing::container::tests::the_structural_check_names_what_was_wrong ... ok +test audio::preprocessing::container::tests::unrecognized_bytes_keep_the_wav_readers_diagnostic ... ok +test audio::preprocessing::resampling::tests::neutral_polyphase_matches_pinned_scipy_reference ... ok +test audio::preprocessing::tests::acquisition_decode_and_resample_are_independently_cancellable ... ok +test audio::preprocessing::tests::aggregate_caps_reject_before_waveform_allocation_and_do_not_multiply_per_clip_max ... ok +test audio::preprocessing::tests::batch_preserves_clip_boundaries_order_and_placeholder_ordinals ... ok +test audio::preprocessing::tests::cli_file_acquisition_checks_cancellation_between_bounded_chunks ... ok +test audio::preprocessing::tests::cli_file_and_server_bytes_produce_identical_normalized_waveforms ... ok +test audio::preprocessing::tests::deterministic_resampling_downmix_and_normalization_have_golden_values ... ok +test audio::preprocessing::tests::family_policies_pin_waveform_feature_and_placeholder_contracts ... ok +test audio::preprocessing::tests::malformed_known_policy_keys_fail_closed_with_typed_startup_errors ... ok +test audio::preprocessing::tests::malformed_nonfinite_oversize_and_placeholder_fail_typed ... ok +test audio::preprocessing::tests::missing_processor_metadata_uses_revision_pinned_official_defaults ... ok +test audio::preprocessing::tests::model_processor_config_overrides_bounds_but_rejects_frontend_drift ... ok +test audio::preprocessing::tests::source_rate_and_phi_polyphase_work_are_bounded_and_inner_loop_is_cancellable ... ok +test audio::qwen3_omni_moe::code2wav::tests::samples_per_frame_is_product_of_all_upsample_stages ... ok +test audio::qwen3_omni_moe::code2wav_blocks::tests::causal_conv_padding_arithmetic ... ok +test audio::qwen3_omni_moe::code2wav_blocks::tests::snake_beta_with_zero_params_is_x_plus_sin_squared ... ok +test audio::qwen3_omni_moe::speech::tests::im_start_only_in_generated_tokens_is_ignored ... ok +test audio::qwen3_omni_moe::speech::tests::no_im_start_yields_no_segments ... ok +test audio::qwen3_omni_moe::speech::tests::segments_split_at_im_start_and_extend_to_generated_end ... ok +test audio::qwen3_omni_moe::speech_config_tests::parses_nested_talker_and_code2wav_configs_from_root ... ok +test audio::qwen3_omni_moe::speech_config_tests::rejects_invalid_sampling_limits_from_generation_config ... ok +test audio::qwen3_omni_moe::speech_config_tests::rejects_mismatched_talker_and_code2wav_group_counts ... ok +test audio::qwen3_omni_moe::speech_config_tests::talker_sampling_reads_generation_config_fields ... ok +test audio::qwen3_omni_moe::speech_config_tests::tts_and_role_token_ids_default_when_absent ... ok +test audio::qwen3_omni_moe::tests::audio_out_len_matches_reference_formula ... ok +test audio::qwen3_omni_moe::tests::chunk_out_len_is_triple_ceil_div ... ok +test audio::rnnt::stream_tests::rnnt_stream_accumulates_trimmed_text_and_deltas ... ok +test audio::rnnt::stream_tests::rnnt_stream_delta_rule ... ok +test audio::rnnt::stream_tests::rnnt_stream_special_tokens_advance_state_without_update ... ok +test audio::rnnt::tests::args_deserialize_checkpoint_objects ... ok +test audio::rnnt::tests::blank_only_frame_emits_nothing ... ok +test audio::rnnt::tests::max_symbols_bounds_loop ... ok +test audio::rnnt::tests::piece_decode_maps_underscore_to_space_and_drops_lang_tags ... ok +test audio::rnnt::tests::rnnt_joint_loads_non_default_quantization ... ok +test audio::rnnt::tests::stacked_lstm_matches_cpu_reference_in_both_layouts ... ok +test audio::stage_probe::tests::counts_syncs_and_ignores_marks_without_detail ... ok +test audio::stage_probe::tests::detail_marks_sum_repeated_names_in_order ... ok +test audio::wav_writer::tests::encode_then_read_round_trips_mono_samples ... ok +test audio::wav_writer::tests::full_scale_values_saturate_without_wrapping ... ok +test audio::wav_writer::tests::header_advertises_sample_rate_and_mono_channel ... ok +test audio::wav_writer::tests::header_data_length_matches_payload ... ok +test audio::wav_writer::tests::interleaved_stereo_round_trips_through_mono_downmix ... ok +test audio::wav_writer::tests::pathological_floats_saturate_without_panicking ... ok +test audio::whisper_mel::tests::frame_count_matches_reference_for_one_second ... ok +test audio::whisper_mel::tests::full_chunk_yields_3000_frames ... ok +test audio::whisper_mel::tests::mel_filters_have_expected_shape_and_unit_scale ... ok +test audio::whisper_mel::tests::normalization_keeps_values_in_expected_band ... ok +test audio::whisper_mel::tests::periodic_hann_endpoints ... ok +test audio::whisper_mel::tests::reflect_pad_empty_returns_zeros ... ok +test audio::whisper_mel::tests::reflect_pad_shorter_than_pad_does_not_panic ... ok +test audio::whisper_mel::tests::resample_halves_length_from_32k ... ok +test audio::whisper_mel::tests::resample_is_identity_at_native_rate ... ok +test audio::whisper_mel::tests::resample_scales_length_from_24k ... ok +test audio::whisper_mel::tests::resampled_len_clamps_pathological_low_rate ... ok +test audio::whisper_mel::tests::tone_energy_peaks_in_low_mel_bins ... ok +test audio::whisper_mel::tests::very_short_audio_returns_empty_spectrogram ... ok +test backend::tests::mlx_backend_creates_a_session_and_advertises_batched_serving ... ok +test backend::tests::mlx_backend_reports_mlx_name ... ok +test backend::tests::mlx_session_threads_the_token_bias_through ... ok +test backend::tests::seam_delegates_to_real_mlx_loader_on_missing_dir ... ok +test backend::tests::select_backend_resolves_to_mlx_under_default_features ... ok +test cli::batch_quant_args::tests::default_impl_matches_an_empty_command_line ... ok +test cli::batch_quant_args::tests::each_flag_overrides_its_default ... ok +test cli::cache_args::tests::a_falsy_value_is_a_disable_rather_than_an_absence ... ok +test cli::cache_args::tests::a_negative_cache_ram_other_than_the_sentinel_is_refused ... ok +test cli::cache_args::tests::a_negative_cache_reuse_is_out_of_domain ... ok +test cli::cache_args::tests::a_positive_cache_reuse_is_refused_with_what_is_missing ... ok +test cli::cache_args::tests::an_empty_group_leaves_every_decision_to_mlxcels_own_flags ... ok +test cli::cache_args::tests::cache_prompt_and_no_cache_prompt_resolve_to_a_tri_state ... ok +test cli::cache_args::tests::cache_ram_is_read_in_mebibytes ... ok +test cli::cache_args::tests::cache_ram_sentinels_follow_upstream ... ok +test cli::cache_args::tests::cache_reuse_is_checked_before_anything_else_resolves ... ok +test cli::cache_args::tests::cache_reuse_zero_is_upstreams_default_and_is_accepted ... ok +test cli::cache_args::tests::no_cont_batching_pins_the_decode_width ... ok +test cli::cache_args::tests::the_last_batching_flag_on_the_command_line_wins ... ok +test cli::cache_args::tests::the_last_prompt_cache_flag_on_the_command_line_wins ... ok +test cli::cache_list::tests::a_bare_repo_id_without_an_owner_is_listed_once ... ok +test cli::cache_list::tests::a_checkpoint_is_never_descended_into ... ok +test cli::cache_list::tests::a_directory_holding_no_checkpoint_is_not_listed ... ok +test cli::cache_list::tests::a_safetensors_only_directory_counts_as_a_checkpoint ... ok +test cli::cache_list::tests::an_empty_store_reports_zero_models_in_b10621s_format ... ok +test cli::cache_list::tests::an_unresolvable_store_root_reports_an_empty_cache ... ok +test cli::cache_list::tests::every_listed_id_is_a_repository_id_the_model_flag_accepts ... ok +test cli::cache_list::tests::hidden_directories_are_skipped ... ok +test cli::cache_list::tests::the_listing_is_sorted_so_the_output_is_stable ... ok +test cli::cache_list::tests::the_rendered_layout_matches_the_pinned_binarys_output_shape ... ok +test cli::chat_compat_args::tests::a_blank_value_is_treated_as_absent ... ok +test cli::chat_compat_args::tests::a_bool_pair_environment_value_reaches_the_resolution ... ok +test cli::chat_compat_args::tests::a_reasoning_effort_level_becomes_the_template_kwarg ... ok +test cli::chat_compat_args::tests::an_explicit_flag_wins_over_the_environment ... ok +test cli::chat_compat_args::tests::an_unknown_reasoning_format_names_the_option_and_the_accepted_set ... ok +test cli::chat_compat_args::tests::an_unknown_reasoning_value_is_rejected_with_the_upstream_vocabulary ... ok +test cli::chat_compat_args::tests::an_unparseable_bool_pair_value_is_reported_like_b10621_throws ... ok +test cli::chat_compat_args::tests::asking_for_special_tokens_in_the_output_is_rejected ... ok +test cli::chat_compat_args::tests::both_escape_positions_are_inert_because_the_server_has_no_prompt_flag ... ok +test cli::chat_compat_args::tests::both_reasoning_preserve_halves_write_the_kwarg ... ok +test cli::chat_compat_args::tests::every_reasoning_flag_contributes_to_one_kwarg_map ... ok +test cli::chat_compat_args::tests::every_reasoning_format_name_resolves ... ok +test cli::chat_compat_args::tests::no_diagnostic_carries_a_run_of_collapsed_indentation ... ok +test cli::chat_compat_args::tests::nothing_supplied_resolves_to_b10621s_defaults ... ok +test cli::chat_compat_args::tests::reasoning_auto_writes_nothing_and_leaves_the_template_default ... ok +test cli::chat_compat_args::tests::reasoning_on_and_off_write_the_enable_thinking_kwarg ... ok +test cli::chat_compat_args::tests::skip_chat_parsing_and_prefill_reach_the_resolution ... ok +test cli::chat_compat_args::tests::the_budget_message_keeps_its_surrounding_whitespace ... ok +test cli::chat_compat_args::tests::the_inert_positive_halves_change_nothing ... ok +test cli::chat_compat_args::tests::the_level_is_passed_through_without_translation ... ok +test cli::chat_compat_args::tests::the_literal_default_level_erases_the_kwarg_as_upstream_does ... ok +test cli::chat_compat_args::tests::turning_the_jinja_engine_off_is_rejected ... ok +test cli::completion::tests::every_brace_and_case_is_balanced ... ok +test cli::completion::tests::hidden_aliases_of_a_visible_argument_never_reach_the_script ... ok +test cli::completion::tests::hidden_arguments_never_reach_the_script ... ok +test cli::completion::tests::path_valued_options_get_file_completion ... ok +test cli::completion::tests::the_function_name_is_a_legal_bash_identifier ... ok +test cli::completion::tests::the_header_names_the_invocation_whose_options_were_harvested ... ok +test cli::completion::tests::the_output_is_byte_identical_across_runs ... ok +test cli::completion::tests::the_script_registers_the_completion_against_the_executable ... ok +test cli::completion::tests::value_less_flags_never_get_file_completion ... ok +test cli::completion::tests::visible_options_and_their_visible_aliases_are_offered ... ok +test cli::context_args::tests::context_shift_enables_and_no_context_shift_wins_over_the_environment ... ok +test cli::context_args::tests::keep_accepts_the_minus_one_keep_all_form ... ok +test cli::context_args::tests::swa_full_is_refused_with_a_diagnostic_naming_the_missing_mode ... ok +test cli::context_args::tests::the_defaults_match_b10621 ... ok +test cli::context_args::tests::the_group_parses_from_a_command_line_on_a_bare_parser ... ok +test cli::draft_block_policy::tests::a_case_variant_mode_is_still_recognised ... ok +test cli::draft_block_policy::tests::a_compressed_tensors_nvfp4_export_classifies_as_nvfp4 ... ok +test cli::draft_block_policy::tests::a_nested_text_config_declaration_is_found ... ok +test cli::draft_block_policy::tests::a_quantization_block_without_a_mode_classifies_as_affine ... ok +test cli::draft_block_policy::tests::a_vendor_fp8_quantization_config_classifies_as_other ... ok +test cli::draft_block_policy::tests::an_explicit_affine_mode_classifies_as_affine ... ok +test cli::draft_block_policy::tests::an_mlx_native_nvfp4_mode_classifies_as_nvfp4 ... ok +test cli::draft_block_policy::tests::an_unquantized_checkpoint_classifies_as_other_not_unknown ... ok +test cli::draft_block_policy::tests::an_unreadable_target_config_is_distinguishable_from_an_unmeasured_device ... ok +test cli::draft_block_policy::tests::block_float_modes_other_than_nvfp4_classify_as_other ... ok +test cli::draft_block_policy::tests::every_block_size_source_has_a_distinct_reason ... ok +test cli::draft_block_policy::tests::gb10_with_a_non_affine_target_takes_the_flat_fallback ... ok +test cli::draft_block_policy::tests::gb10_with_an_affine_target_resolves_to_the_measured_width ... ok +test cli::draft_block_policy::tests::measured_defaults_never_disable_speculation ... ok +test cli::draft_block_policy::tests::mtp_kinds_keep_their_own_default_on_every_device ... ok +test cli::draft_block_policy::tests::no_cuda_has_no_measured_default_for_any_kind_or_quantization ... ok +test cli::draft_block_policy::tests::peeking_a_missing_checkpoint_is_unknown_not_a_failure ... ok +test cli::draft_block_policy::tests::peeking_an_unparseable_config_is_unknown ... ok +test cli::draft_block_policy::tests::peeking_reads_the_declaration_from_disk ... ok +test cli::draft_block_policy::tests::pre_ampere_cuda_has_no_measured_default ... ok +test cli::draft_block_policy::tests::resolve_measured_block_size_reports_the_fallback_source ... ok +test cli::draft_block_policy::tests::resolve_measured_block_size_reports_the_measured_source ... ok +test cli::embedding_compat_args::embedding_compat_args_tests::a_bad_pooling_value_in_the_environment_is_refused_the_same_way ... ok +test cli::embedding_compat_args::embedding_compat_args_tests::an_unknown_pooling_value_names_the_domain ... ok +test cli::embedding_compat_args::embedding_compat_args_tests::asking_for_both_modes_is_refused ... ok +test cli::embedding_compat_args::embedding_compat_args_tests::nothing_supplied_resolves_to_nothing_requested ... ok +test cli::embedding_compat_args::embedding_compat_args_tests::pooling_none_is_refused_with_the_reason ... ok +test cli::embedding_compat_args::embedding_compat_args_tests::pooling_rank_selects_reranking_rather_than_a_kernel ... ok +test cli::embedding_compat_args::embedding_compat_args_tests::the_embedding_flag_restricts_the_server ... ok +test cli::embedding_compat_args::embedding_compat_args_tests::the_environment_alone_resolves_the_group ... ok +test cli::embedding_compat_args::embedding_compat_args_tests::the_mode_variables_follow_b10621s_truthy_set ... ok +test cli::embedding_compat_args::embedding_compat_args_tests::the_rerank_flag_implies_the_embedding_restriction_as_upstream_does ... ok +test cli::embedding_compat_args::embedding_compat_args_tests::the_three_poolable_values_map_onto_mlxcel_kernels ... ok +test cli::embedding_compat_args::embedding_compat_args_tests::the_whole_embd_normalize_domain_is_accepted ... ok +test cli::flag_surface::tests::a_non_utf8_argument_is_compared_rather_than_aborting ... ok +test cli::flag_surface::tests::dump_includes_hidden_args_env_defaults_and_aliases ... ok +test cli::flag_surface::tests::dump_is_deterministic_and_sorted_by_long_name ... ok +test cli::flag_surface::tests::dump_requested_matches_only_the_exact_position ... ok +test cli::flag_surface::tests::serve_dump_requires_the_serve_subcommand_in_front_of_the_sentinel ... ok +test cli::ggml_compat_args::tests::a_blank_environment_value_is_treated_as_absent ... ok +test cli::ggml_compat_args::tests::a_bool_pair_reads_both_the_variable_and_its_no_alias ... ok +test cli::ggml_compat_args::tests::a_defrag_threshold_is_inert_because_it_is_inert_upstream_too ... ok +test cli::ggml_compat_args::tests::a_device_list_points_at_the_mlxcel_device_variable ... ok +test cli::ggml_compat_args::tests::a_non_numeric_gpu_layer_value_reports_the_upstream_vocabulary ... ok +test cli::ggml_compat_args::tests::a_partial_gpu_layer_budget_is_rejected_and_a_full_one_is_not ... ok +test cli::ggml_compat_args::tests::a_value_less_flag_fires_only_on_b10621s_truthy_set ... ok +test cli::ggml_compat_args::tests::an_empty_argument_set_is_inert ... ok +test cli::ggml_compat_args::tests::an_empty_numa_value_is_b10621s_distribute_and_is_still_rejected ... ok +test cli::ggml_compat_args::tests::an_explicit_command_line_flag_wins_over_the_environment ... ok +test cli::ggml_compat_args::tests::an_override_tensor_specification_is_rejected ... ok +test cli::ggml_compat_args::tests::an_rpc_server_list_points_at_mlxcels_own_transport ... ok +test cli::ggml_compat_args::tests::an_unknown_flash_attention_value_reports_the_upstream_vocabulary ... ok +test cli::ggml_compat_args::tests::an_unknown_layer_count_makes_every_non_negative_budget_unsupported ... ok +test cli::ggml_compat_args::tests::an_unparseable_bool_pair_value_is_reported_like_b10621_throws ... ok +test cli::ggml_compat_args::tests::any_non_positive_thread_count_is_inert_because_upstream_treats_it_as_auto ... ok +test cli::ggml_compat_args::tests::both_flash_attention_positions_that_mlxcel_satisfies_are_inert ... ok +test cli::ggml_compat_args::tests::context_fitting_points_at_the_memory_estimator ... ok +test cli::ggml_compat_args::tests::control_vector_layer_range_alone_is_inert ... ok +test cli::ggml_compat_args::tests::control_vectors_are_rejected_before_the_model_load ... ok +test cli::ggml_compat_args::tests::enabling_libllama_timers_points_at_the_http_counters ... ok +test cli::ggml_compat_args::tests::env_bindings_reach_the_argument_set_and_are_then_classified ... ok +test cli::ggml_compat_args::tests::every_cpu_thread_pool_knob_rejects_a_non_default_value ... ok +test cli::ggml_compat_args::tests::every_diagnostic_names_the_option_the_value_and_a_limitation ... ok +test cli::ggml_compat_args::tests::every_expert_and_offload_request_is_rejected ... ok +test cli::ggml_compat_args::tests::every_memory_and_loading_request_mlxcel_cannot_honour_is_rejected ... ok +test cli::ggml_compat_args::tests::every_multi_device_request_points_at_mlxcels_own_parallelism ... ok +test cli::ggml_compat_args::tests::gguf_metadata_overrides_point_at_the_config_file ... ok +test cli::ggml_compat_args::tests::inert_numeric_values_are_compared_as_numbers_not_spellings ... ok +test cli::ggml_compat_args::tests::listing_devices_points_at_inspect ... ok +test cli::ggml_compat_args::tests::load_mode_is_the_authority_over_the_deprecated_loading_flags ... ok +test cli::ggml_compat_args::tests::only_the_residency_load_modes_point_at_the_wired_memory_limit ... ok +test cli::ggml_compat_args::tests::the_layer_count_is_read_from_either_config_shape ... ok +test cli::ggml_compat_args::tests::the_layer_count_survives_every_config_spelling_in_tree ... ok +test cli::ggml_compat_args::tests::turning_flash_attention_off_is_rejected ... ok +test cli::ggml_compat_args::tests::values_matching_what_mlxcel_already_does_are_inert ... ok +test cli::grammar_args::tests::a_malformed_schema_fails_startup_but_a_malformed_grammar_defers_like_b10621 ... ok +test cli::grammar_args::tests::a_value_that_spells_a_grammar_flag_is_not_mistaken_for_one ... ok +test cli::grammar_args::tests::everything_after_a_double_dash_is_ignored ... ok +test cli::grammar_args::tests::no_flag_resolves_to_no_grammar ... ok +test cli::grammar_args::tests::the_last_grammar_flag_on_the_command_line_wins ... ok +test cli::grammar_args::tests::the_short_spellings_and_the_equals_form_are_recognised ... ok +test cli::infill_args::tests::an_absent_flag_leaves_prefix_suffix_middle_ordering ... ok +test cli::infill_args::tests::spm_infill_selects_the_suffix_prefix_middle_ordering ... ok +test cli::infill_args::tests::spm_infill_takes_no_value ... ok +test cli::llama_short_flags::tests::a_non_utf8_argument_passes_through_unchanged ... ok +test cli::llama_short_flags::tests::a_start_offset_protects_a_subcommand_token ... ok +test cli::llama_short_flags::tests::a_value_less_flag_does_not_swallow_the_next_token ... ok +test cli::llama_short_flags::tests::a_value_less_token_does_not_swallow_the_next_entry ... ok +test cli::llama_short_flags::tests::a_value_that_looks_like_a_short_option_is_left_alone ... ok +test cli::llama_short_flags::tests::every_table_entry_is_rewritten_to_its_long_spelling ... ok +test cli::llama_short_flags::tests::no_table_token_shadows_a_real_mlxcel_short_option ... ok +test cli::llama_short_flags::tests::nothing_after_a_double_dash_terminator_is_rewritten ... ok +test cli::llama_short_flags::tests::the_inline_equals_form_is_rewritten_too ... ok +test cli::llama_short_flags::tests::the_program_name_is_never_rewritten ... ok +test cli::llama_short_flags::tests::the_table_is_sorted_and_free_of_duplicate_tokens ... ok +test cli::llama_short_flags::tests::the_value_of_a_rewritten_option_is_never_itself_rewritten ... ok +test cli::llama_short_flags::tests::unknown_short_clusters_are_left_for_clap_to_reject ... ok +test cli::logging_compat_args::tests::a_command_line_verbosity_is_attributed_to_the_command_line ... ok +test cli::logging_compat_args::tests::a_malformed_bool_pair_environment_value_fails_loudly ... ok +test cli::logging_compat_args::tests::a_missing_api_key_file_does_not_abort_registration ... ok +test cli::logging_compat_args::tests::an_absent_log_prompts_dir_is_not_refused ... ok +test cli::logging_compat_args::tests::an_empty_argument_set_is_supported ... ok +test cli::logging_compat_args::tests::an_environment_verbosity_is_attributed_to_the_environment ... ok +test cli::logging_compat_args::tests::an_unknown_log_colors_value_fails_resolution_with_the_option_named ... ok +test cli::logging_compat_args::tests::cache_list_and_completion_bash_are_early_actions ... ok +test cli::logging_compat_args::tests::cache_list_wins_when_both_introspection_flags_are_given ... ok +test cli::logging_compat_args::tests::every_model_preset_refusal_carries_a_runnable_download_example ... ok +test cli::logging_compat_args::tests::every_preset_is_refused_and_names_its_own_flag ... ok +test cli::logging_compat_args::tests::every_preset_names_an_mlx_community_checkpoint_or_none_at_all ... ok +test cli::logging_compat_args::tests::log_colors_accepts_exactly_b10621s_vocabulary ... ok +test cli::logging_compat_args::tests::log_prompts_dir_is_refused_with_a_named_alternative ... ok +test cli::logging_compat_args::tests::log_prompts_dir_is_reported_before_a_preset ... ok +test cli::logging_compat_args::tests::registering_credentials_redacts_keys_tokens_and_key_files ... ok +test cli::logging_compat_args::tests::spec_default_points_at_mlxcels_own_drafters ... ok +test cli::logging_compat_args::tests::the_bool_pair_environment_bindings_follow_b10621s_vocabulary ... ok +test cli::logging_compat_args::tests::the_command_line_beats_the_environment_for_both_bool_pairs ... ok +test cli::logging_compat_args::tests::the_compiled_default_is_attributed_to_neither ... ok +test cli::logging_compat_args::tests::the_default_format_matches_b10621s_server_defaults ... ok +test cli::logging_compat_args::tests::the_first_preset_in_help_order_is_the_one_reported ... ok +test cli::logging_compat_args::tests::the_llama_arg_no_alias_disables_the_pair ... ok +test cli::logging_compat_args::tests::the_preset_table_covers_every_b10621_preset_flag ... ok +test cli::logging_compat_args::tests::the_speculative_presets_name_a_draft_checkpoint_too ... ok +test cli::max_tokens::tests::explicit_budget_ignores_context_window ... ok +test cli::max_tokens::tests::parse_negative_is_unlimited_sentinel ... ok +test cli::max_tokens::tests::parse_non_negative_is_verbatim ... ok +test cli::max_tokens::tests::parse_rejects_non_integer ... ok +test cli::max_tokens::tests::unlimited_clamps_to_at_least_one ... ok +test cli::max_tokens::tests::unlimited_resolves_to_window_minus_prompt ... ok +test cli::multimodal_compat_args::tests::a_bare_argument_set_is_inert ... ok +test cli::multimodal_compat_args::tests::a_maximum_below_the_minimum_is_refused_as_upstream_throws ... ok +test cli::multimodal_compat_args::tests::a_non_integer_image_token_bound_is_refused ... ok +test cli::multimodal_compat_args::tests::a_non_positive_image_token_bound_means_use_the_models_own ... ok +test cli::multimodal_compat_args::tests::an_empty_projector_value_from_an_unset_variable_is_ignored ... ok +test cli::multimodal_compat_args::tests::an_explicit_command_line_half_wins_over_the_environment ... ok +test cli::multimodal_compat_args::tests::an_unrecognized_boolean_value_stops_startup_as_upstream_throws ... ok +test cli::multimodal_compat_args::tests::every_projector_flag_reports_in_a_fixed_order ... ok +test cli::multimodal_compat_args::tests::image_token_bounds_parse_upstreams_value_domain ... ok +test cli::multimodal_compat_args::tests::llama_arg_mmproj_auto_resolves_through_b10621s_own_vocabulary ... ok +test cli::multimodal_compat_args::tests::llama_arg_mmproj_offload_off_reaches_the_rejection ... ok +test cli::multimodal_compat_args::tests::media_root_resolution_requires_an_existing_directory ... ok +test cli::multimodal_compat_args::tests::mmproj_device_none_and_a_named_device_are_both_refused ... ok +test cli::multimodal_compat_args::tests::mmproj_file_is_refused_with_an_mlx_replacement ... ok +test cli::multimodal_compat_args::tests::mmproj_url_is_refused_for_the_same_reason ... ok +test cli::multimodal_compat_args::tests::mtmd_batch_max_tokens_is_inert_at_the_upstream_default_only ... ok +test cli::multimodal_compat_args::tests::no_media_path_leaves_local_files_disabled ... ok +test cli::multimodal_compat_args::tests::no_mmproj_disables_media_admission_on_both_spellings ... ok +test cli::multimodal_compat_args::tests::projector_placement_accepts_only_the_inert_half ... ok +test cli::multimodal_compat_args::tests::the_no_alias_variable_means_false_as_upstream_defines_it ... ok +test cli::rope_args::tests::a_real_yarn_value_becomes_a_knob_on_the_override ... ok +test cli::rope_args::tests::a_yarn_knob_outside_its_domain_is_refused_at_startup ... ok +test cli::rope_args::tests::a_zero_ext_factor_is_a_real_request_not_a_sentinel ... ok +test cli::rope_args::tests::an_empty_group_resolves_to_no_override ... ok +test cli::rope_args::tests::an_invalid_rope_scale_is_still_refused_next_to_a_yarn_knob ... ok +test cli::rope_args::tests::every_non_sentinel_yarn_flag_resolves_onto_the_knobs ... ok +test cli::rope_args::tests::rope_scaling_yarn_resolves_into_an_override ... ok +test cli::rope_args::tests::the_group_parses_from_a_command_line_on_a_bare_parser ... ok +test cli::rope_args::tests::the_rope_flags_resolve_into_an_override ... ok +test cli::rope_args::tests::the_yarn_sentinels_are_accepted_and_carry_no_override ... ok +test cli::slot_args::tests::cache_idle_slots_is_refused_when_asked_for_and_inert_when_disabled ... ok +test cli::slot_args::tests::checkpoint_min_step_refuses_a_spacing_and_accepts_zero ... ok +test cli::slot_args::tests::ctx_checkpoints_refuses_a_ring_and_accepts_zero ... ok +test cli::slot_args::tests::kv_unified_explicit_flags_override_the_auto_default ... ok +test cli::slot_args::tests::kv_unified_resolves_to_b10621_auto_default ... ok +test cli::slot_args::tests::slot_prompt_similarity_refuses_upstreams_own_default ... ok +test cli::slot_args::tests::the_default_group_is_accepted ... ok +test cli::spec_compat_args::tests::backend_sampling_positive_half_is_always_inert ... ok +test cli::spec_compat_args::tests::defaults_are_inert ... ok +test cli::spec_compat_args::tests::draft_kv_cache_types_accept_only_f16 ... ok +test cli::spec_compat_args::tests::draft_ngl_full_offload_spellings_are_inert_and_partial_offload_is_rejected ... ok +test cli::spec_compat_args::tests::draft_sampler_thresholds_accept_only_their_inert_defaults ... ok +test cli::spec_compat_args::tests::ggml_draft_placement_values_are_rejected ... ok +test cli::spec_compat_args::tests::lookup_caches_are_rejected ... ok +test cli::spec_compat_args::tests::ngram_tuning_knobs_are_inert_while_no_ngram_selector_can_be_chosen ... ok +test cli::spec_compat_args::tests::no_backend_sampling_half_is_rejected ... ok +test cli::spec_compat_args::tests::spec_draft_hf_is_rejected_with_the_model_draft_alternative ... ok +test cli::spec_compat_args::tests::spec_type_resolves_the_translatable_values_and_rejects_the_rest ... ok +test cli::speculative_args::tests::default_block_size_for_dflash_is_16 ... ok +test cli::speculative_args::tests::default_block_size_for_internal_mtp_shares_dflash_default ... ok +test cli::speculative_args::tests::default_block_size_for_mtp_is_4 ... ok +test cli::speculative_args::tests::draft_max_fallback_precedence_table ... ok +test cli::speculative_args::tests::env_fallback_draft_block_size_fills_from_env_when_cli_unset ... ok +test cli::speculative_args::tests::env_fallback_draft_block_size_ignores_unparseable_env ... ok +test cli::speculative_args::tests::env_fallback_draft_block_size_keeps_cli_when_set ... ok +test cli::speculative_args::tests::env_fallback_draft_kind_fills_from_env_when_cli_unset ... ok +test cli::speculative_args::tests::env_fallback_draft_kind_keeps_cli_when_set ... ok +test cli::speculative_args::tests::parse_kind_accepts_dflash_and_mtp ... ok +test cli::speculative_args::tests::parse_kind_rejects_internal_mtp_with_helpful_error ... ok +test cli::speculative_args::tests::parse_kind_rejects_unknown_with_known_values_in_error ... ok +test cli::speculative_args::tests::parse_kind_returns_none_when_unset ... ok +test cli::speculative_args::tests::resolve_draft_block_size_defaults_a_dspark_drafter_to_its_runtime_verify_width ... ok +test cli::speculative_args::tests::resolve_draft_block_size_derives_inkling_default_from_the_mtp_layer_count ... ok +test cli::speculative_args::tests::resolve_draft_block_size_falls_back_to_per_kind_default_without_a_drafter_hint ... ok +test cli::speculative_args::tests::resolve_draft_block_size_honors_a_dspark_runtime_block_size_up_to_the_trained_width ... ok +test cli::speculative_args::tests::resolve_draft_block_size_honors_the_qwen35_mtp_drafters_own_configured_value ... ok +test cli::speculative_args::tests::resolve_draft_block_size_ignores_block_size_from_a_non_qwen35_mtp_drafter ... ok +test cli::speculative_args::tests::resolve_draft_block_size_keeps_the_flat_default_for_a_plain_dflash_drafter ... ok +test cli::speculative_args::tests::resolve_draft_block_size_uses_override_when_provided ... ok +test cli::speculative_args::tests::user_selectable_kinds_excludes_internal_mtp ... ok +test cli::turbo_args::tests::a_value_outside_both_vocabularies_lists_what_mlxcel_accepts ... ok +test cli::turbo_args::tests::an_ordinary_family_keeps_every_other_mode ... ok +test cli::turbo_args::tests::an_unreadable_config_passes_the_requested_mode_through ... ok +test cli::turbo_args::tests::apply_to_environment_preserves_negative_inputs_for_runtime_clamping ... ok +test cli::turbo_args::tests::apply_to_environment_translates_some_into_env_var ... ok +test cli::turbo_args::tests::apply_to_environment_with_none_leaves_env_untouched ... ok +test cli::turbo_args::tests::asymmetric_modes_on_an_mla_latent_family_resolve_to_fp16 ... ok +test cli::turbo_args::tests::every_other_ggml_quantizer_is_rejected_with_its_own_explanation ... ok +test cli::turbo_args::tests::f16_is_the_one_ggml_kv_spelling_mlxcel_answers ... ok +test cli::turbo_args::tests::no_kv_cache_diagnostic_carries_collapsed_indentation ... ok +test cli::turbo_args::tests::resolve_split_flags_fp16_k_fp16_plus_turbo3_v_returns_turbo3_asym ... ok +test cli::turbo_args::tests::resolve_split_flags_fp16_k_turbo3_asym_v_returns_turbo3_asym ... ok +test cli::turbo_args::tests::resolve_split_flags_fp16_k_turbo3_v_returns_turbo3_asym ... ok +test cli::turbo_args::tests::resolve_split_flags_symmetric_turbo3_is_rejected_with_helpful_error ... ok +test cli::turbo_args::tests::split_cache_flags_accept_exact_llama_f16_alias ... ok +test cli::turbo_args::tests::split_cache_flags_do_not_translate_ggml_quantizers ... ok +test cli::turbo_args::tests::turbo4_on_a_non_allowlisted_family_resolves_to_turbo4_asym ... ok +test cli::turbo_args::tests::turbo4_on_an_allowlisted_family_is_left_alone ... ok +test cli::turbo_args::tests::turbo4_on_an_mla_latent_family_resolves_to_fp16_with_a_warning ... ok +test cli::ui_compat_args::tests::an_empty_group_is_inert ... ok +test cli::ui_compat_args::tests::bool_pair_env_bindings_follow_b10621_rules ... ok +test cli::ui_compat_args::tests::every_manifest_spelling_parses ... ok +test cli::ui_compat_args::tests::every_unsupported_enabling_form_is_rejected_with_its_flag_named ... ok +test cli::ui_compat_args::tests::single_dash_agent_spellings_rewrite_to_the_long_forms ... ok +test cli::ui_compat_args::tests::supported_webui_and_negative_forms_do_not_fail_the_compat_checker ... ok +test cli::ui_compat_args::tests::webui_enable_disable_resolves_with_last_flag_winning ... ok +test distributed::backpressure::tests::all_load_levels_snapshot ... ok +test distributed::backpressure::tests::backpressure_policy_display ... ok +test distributed::backpressure::tests::critical_nodes_list ... ok +test distributed::backpressure::tests::custom_config_thresholds ... ok +test distributed::backpressure::tests::load_level_display ... ok +test distributed::backpressure::tests::load_level_ordering ... ok +test distributed::backpressure::tests::overflow_policy_default_is_redirect ... ok +test distributed::backpressure::tests::record_signal ... ok +test distributed::backpressure::tests::remove_node ... ok +test distributed::backpressure::tests::unknown_node_returns_none ... ok +test distributed::backpressure::tests::update_from_metrics_critical_by_memory ... ok +test distributed::backpressure::tests::update_from_metrics_critical_by_requests ... ok +test distributed::backpressure::tests::update_from_metrics_high ... ok +test distributed::backpressure::tests::update_from_metrics_high_by_memory ... ok +test distributed::backpressure::tests::update_from_metrics_low ... ok +test distributed::backpressure::tests::update_from_metrics_normal ... ok +test distributed::bench::tests::bench_config_defaults ... ok +test distributed::bench::tests::latency_result_display ... ok +test distributed::bench::tests::throughput_result_display ... ok +test distributed::bench_activation::tests::markdown_row_renders_stable_shape ... ok +test distributed::bench_activation::tests::measure_activation_transfer_yields_ordered_percentiles ... ok +test distributed::bench_activation::tests::render_markdown_report_composes_title_methodology_and_rows ... ok +test distributed::cluster_init::tests::allocate_data_ports_returns_distinct_increasing_values ... ok +test distributed::cluster_init::tests::discover_peers_mdns_times_out_with_actionable_error ... ok +test distributed::cluster_init::tests::discover_peers_static_mode_short_circuits ... ok +test distributed::cluster_init::tests::discovery_mode_parses_common_aliases ... ok +test distributed::cluster_init::tests::is_port_available_detects_bound_port ... ok +test distributed::cluster_init::tests::plan_cluster_2_stage_matches_expected_topology ... ok +test distributed::cluster_init::tests::plan_cluster_emits_byte_identical_toml ... ok +test distributed::cluster_init::tests::plan_cluster_rejects_control_http_port_collision ... ok +test distributed::cluster_init::tests::plan_cluster_reordered_peers_produce_same_topology ... ok +test distributed::cluster_init::tests::plan_cluster_requires_pp_stages_at_least_two ... ok +test distributed::cluster_init::tests::plan_cluster_stage_count_mismatch_is_actionable_error ... ok +test distributed::cluster_init::tests::render_deterministic_toml_is_stable ... ok +test distributed::cluster_init::tests::toml_escape_string_handles_special_chars ... ok +test distributed::cluster_init::tests::write_plan_toml_persists_generated_bytes ... ok +test distributed::config::tests::find_node_by_id ... ok +test distributed::config::tests::from_cli_builds_single_node ... ok +test distributed::config::tests::from_cli_deduplicates_local_address_in_peers ... ok +test distributed::config::tests::from_cli_with_peers ... ok +test distributed::config::tests::node_role_display_roundtrip ... ok +test distributed::config::tests::node_role_serialization ... ok +test distributed::config::tests::parse_cluster_config_toml ... ok +test distributed::config::tests::parse_node_role_from_str ... ok +test distributed::config::tests::parse_pipeline_stage_cluster_with_rdma_backend ... ok +test distributed::config::tests::parse_pipeline_stage_cluster_with_transport_backend ... ok +test distributed::config::tests::parse_pp_tp_2x2_cluster_config ... ok +test distributed::config::tests::parse_pp_tp_role_variants ... ok +test distributed::config::tests::pp_tp_duplicate_pair_fails_validation ... ok +test distributed::config::tests::pp_tp_missing_pair_fails_validation ... ok +test distributed::config::tests::pp_tp_missing_stage_fails_validation ... ok +test distributed::config::tests::pp_tp_out_of_range_rank_fails_validation ... ok +test distributed::config::tests::pp_tp_role_predicates ... ok +test distributed::config::tests::reject_control_characters_in_cluster_name ... ok +test distributed::config::tests::reject_control_characters_in_node_id ... ok +test distributed::config::tests::reject_duplicate_addresses ... ok +test distributed::config::tests::reject_duplicate_node_ids ... ok +test distributed::config::tests::reject_empty_node_id ... ok +test distributed::config::tests::reject_empty_nodes ... ok +test distributed::config::tests::reject_pipeline_config_with_missing_stage_index ... ok +test distributed::config::tests::reject_pipeline_config_with_non_stage_node_stage_field ... ok +test distributed::config::tests::topology_summary_contains_all_nodes ... ok +test distributed::config::tests::topology_summary_shows_stage_and_rank ... ok +test distributed::connection_pool::tests::pool_acquire_and_release ... ok +test distributed::connection_pool::tests::pool_acquire_unreachable_fails ... ok +test distributed::connection_pool::tests::pool_config_default_values ... ok +test distributed::connection_pool::tests::pool_shutdown_clears_state ... ok +test distributed::connection_pool::tests::pool_stats_empty ... ok +test distributed::correlation::tests::correlation_id_default ... ok +test distributed::correlation::tests::correlation_id_display ... ok +test distributed::correlation::tests::correlation_id_from_string ... ok +test distributed::correlation::tests::correlation_id_from_string_accepts_max_length ... ok +test distributed::correlation::tests::correlation_id_from_string_rejects_empty ... ok +test distributed::correlation::tests::correlation_id_from_string_rejects_too_long ... ok +test distributed::correlation::tests::correlation_id_serde_roundtrip ... ok +test distributed::correlation::tests::correlation_id_uniqueness ... ok +test distributed::correlation::tests::request_context_bytes_roundtrip ... ok +test distributed::correlation::tests::request_context_from_incoming_accepts_below_max ... ok +test distributed::correlation::tests::request_context_from_incoming_increments_hop ... ok +test distributed::correlation::tests::request_context_from_incoming_rejects_max_hops ... ok +test distributed::correlation::tests::request_context_from_incoming_saturates_overflow ... ok +test distributed::correlation::tests::request_context_from_invalid_bytes ... ok +test distributed::correlation::tests::request_context_new ... ok +test distributed::correlation::tests::request_context_to_bytes_returns_some ... ok +test distributed::correlation::tests::request_context_with_parent_span ... ok +test distributed::disaggregated::benchmark::tests::benchmark_1p1d_produces_positive_throughput ... ok +test distributed::disaggregated::benchmark::tests::benchmark_baseline_has_no_transfer_overhead ... ok +test distributed::disaggregated::benchmark::tests::benchmark_cache_transfer_bytes_scale_with_prompt ... ok +test distributed::disaggregated::benchmark::tests::benchmark_cache_transfer_profile_has_all_phases ... ok +test distributed::disaggregated::benchmark::tests::benchmark_ttft_includes_cache_transfer ... ok +test distributed::disaggregated::benchmark::tests::config_builder_chain ... ok +test distributed::disaggregated::benchmark::tests::config_default_is_valid ... ok +test distributed::disaggregated::benchmark::tests::config_validation_rejects_empty_prompt_lengths ... ok +test distributed::disaggregated::benchmark::tests::config_validation_rejects_zero_decode_nodes ... ok +test distributed::disaggregated::benchmark::tests::config_validation_rejects_zero_prefill_nodes ... ok +test distributed::disaggregated::benchmark::tests::crossover_analysis_display_works ... ok +test distributed::disaggregated::benchmark::tests::crossover_analysis_produces_entries ... ok +test distributed::disaggregated::benchmark::tests::format_di_report_contains_summary ... ok +test distributed::disaggregated::benchmark::tests::prompt_length_analysis_has_correct_count ... ok +test distributed::disaggregated::benchmark::tests::prompt_length_analysis_slope_is_positive ... ok +test distributed::disaggregated::benchmark::tests::prompt_length_analysis_transfer_time_increases ... ok +test distributed::disaggregated::coordinator::tests::allowlist_accepts_on_list_target ... ok +test distributed::disaggregated::coordinator::tests::allowlist_compares_canonical_addresses ... ok +test distributed::disaggregated::coordinator::tests::allowlist_from_env_parses_configured_list ... ok +test distributed::disaggregated::coordinator::tests::allowlist_from_env_skips_unparseable_entries ... ok +test distributed::disaggregated::coordinator::tests::allowlist_from_env_unset_or_empty_is_permissive ... ok +test distributed::disaggregated::coordinator::tests::allowlist_rejects_off_list_target ... ok +test distributed::disaggregated::coordinator::tests::allowlist_unconfigured_is_permissive ... ok +test distributed::disaggregated::coordinator::tests::coordinator_binds_mode_and_peer ... ok +test distributed::disaggregated::coordinator::tests::coordinator_recv_rejects_non_handoff_frame ... ok +test distributed::disaggregated::coordinator::tests::coordinator_round_trips_a_handoff_frame ... ok +test distributed::disaggregated::decode_scheduler::tests::active_sequence_ids_returns_decoding_sequences ... ok +test distributed::disaggregated::decode_scheduler::tests::admit_blocked_under_memory_pressure ... ok +test distributed::disaggregated::decode_scheduler::tests::admit_respects_batch_size_limit ... ok +test distributed::disaggregated::decode_scheduler::tests::available_capacity_reflects_batch_state ... ok +test distributed::disaggregated::decode_scheduler::tests::available_capacity_zero_under_memory_pressure ... ok +test distributed::disaggregated::decode_scheduler::tests::can_accept_checks_queue_and_memory ... ok +test distributed::disaggregated::decode_scheduler::tests::can_accept_false_under_memory_pressure ... ok +test distributed::disaggregated::decode_scheduler::tests::completed_slot_frees_capacity ... ok +test distributed::disaggregated::decode_scheduler::tests::completion_reason_display ... ok +test distributed::disaggregated::decode_scheduler::tests::concurrent_ingestion_multiple_requests ... ok +test distributed::disaggregated::decode_scheduler::tests::decode_request_prompt_len ... ok +test distributed::disaggregated::decode_scheduler::tests::decode_scheduler_always_skips_prefill ... ok +test distributed::disaggregated::decode_scheduler::tests::decode_sequence_token_limit ... ok +test distributed::disaggregated::decode_scheduler::tests::default_config_has_sane_defaults ... ok +test distributed::disaggregated::decode_scheduler::tests::drain_events_clears_buffer ... ok +test distributed::disaggregated::decode_scheduler::tests::ingest_and_admit_basic ... ok +test distributed::disaggregated::decode_scheduler::tests::ingest_rejected_under_memory_pressure ... ok +test distributed::disaggregated::decode_scheduler::tests::ingest_rejected_when_max_sequences_reached ... ok +test distributed::disaggregated::decode_scheduler::tests::ingest_rejected_when_queue_full ... ok +test distributed::disaggregated::decode_scheduler::tests::mark_complete_emits_event ... ok +test distributed::disaggregated::decode_scheduler::tests::mark_complete_failure_increments_failed_count ... ok +test distributed::disaggregated::decode_scheduler::tests::mark_complete_nonexistent_fails ... ok +test distributed::disaggregated::decode_scheduler::tests::mark_complete_removes_from_active_batch ... ok +test distributed::disaggregated::decode_scheduler::tests::memory_utilization_clamping ... ok +test distributed::disaggregated::decode_scheduler::tests::record_token_nonexistent_fails ... ok +test distributed::disaggregated::decode_scheduler::tests::record_token_returns_true_at_limit ... ok +test distributed::disaggregated::decode_scheduler::tests::scheduler_debug_display ... ok +test distributed::disaggregated::decode_scheduler::tests::sequence_status_display ... ok +test distributed::disaggregated::decode_scheduler::tests::stats_snapshot ... ok +test distributed::disaggregated::handoff_impl::tests::handoff_payload_round_trips_over_mock_transport ... ok +test distributed::disaggregated::handoff_impl::tests::recv_handoff_payload_rejects_mismatched_tensor_id ... ok +test distributed::disaggregated::handoff_impl::tests::recv_handoff_payload_rejects_non_handoff_message ... ok +test distributed::disaggregated::prefill_scheduler::tests::acknowledge_nonexistent_handoff_fails ... ok +test distributed::disaggregated::prefill_scheduler::tests::can_accept_checks_both_limits ... ok +test distributed::disaggregated::prefill_scheduler::tests::chunked_coordinator_basic ... ok +test distributed::disaggregated::prefill_scheduler::tests::chunked_coordinator_bytes_tracking ... ok +test distributed::disaggregated::prefill_scheduler::tests::chunked_coordinator_exact_multiple ... ok +test distributed::disaggregated::prefill_scheduler::tests::chunked_coordinator_finalization ... ok +test distributed::disaggregated::prefill_scheduler::tests::chunked_coordinator_layer_tracking ... ok +test distributed::disaggregated::prefill_scheduler::tests::chunked_coordinator_progress ... ok +test distributed::disaggregated::prefill_scheduler::tests::chunked_coordinator_single_chunk ... ok +test distributed::disaggregated::prefill_scheduler::tests::chunked_coordinator_zero_tokens ... ok +test distributed::disaggregated::prefill_scheduler::tests::default_config_has_sane_defaults ... ok +test distributed::disaggregated::prefill_scheduler::tests::dequeue_blocked_under_memory_pressure ... ok +test distributed::disaggregated::prefill_scheduler::tests::dequeue_respects_concurrency_limit ... ok +test distributed::disaggregated::prefill_scheduler::tests::enqueue_and_dequeue_basic ... ok +test distributed::disaggregated::prefill_scheduler::tests::enqueue_rejected_under_memory_pressure ... ok +test distributed::disaggregated::prefill_scheduler::tests::fail_handoff_allows_retry ... ok +test distributed::disaggregated::prefill_scheduler::tests::handoff_retry_limit ... ok +test distributed::disaggregated::prefill_scheduler::tests::handoff_status_display ... ok +test distributed::disaggregated::prefill_scheduler::tests::handoff_timeout_check ... ok +test distributed::disaggregated::prefill_scheduler::tests::initiate_and_acknowledge_handoff ... ok +test distributed::disaggregated::prefill_scheduler::tests::memory_utilization_clamping ... ok +test distributed::disaggregated::prefill_scheduler::tests::prefill_result_throughput ... ok +test distributed::disaggregated::prefill_scheduler::tests::prefill_scheduler_always_skips_decode ... ok +test distributed::disaggregated::prefill_scheduler::tests::scheduler_creates_chunked_coordinator_for_long_prompts ... ok +test distributed::disaggregated::prefill_scheduler::tests::scheduler_debug_display ... ok +test distributed::disaggregated::prefill_scheduler::tests::scheduler_no_chunked_when_disabled ... ok +test distributed::disaggregated::prefill_scheduler::tests::statistics_accumulate ... ok +test distributed::disaggregated::prefill_scheduler::tests::text_request_is_not_vlm ... ok +test distributed::disaggregated::prefill_scheduler::tests::vlm_request_has_image_data ... ok +test distributed::disaggregated::request_router::tests::apply_backpressure_queues_when_all_prefill_unreachable ... ok +test distributed::disaggregated::request_router::tests::apply_backpressure_returns_accept_when_nodes_available ... ok +test distributed::disaggregated::request_router::tests::auto_purge_removes_old_terminal_on_overflow ... ok +test distributed::disaggregated::request_router::tests::backpressure_rejects_when_queue_full ... ok +test distributed::disaggregated::request_router::tests::collect_timed_out_finds_stale_requests ... ok +test distributed::disaggregated::request_router::tests::decode_tie_break_is_stable_across_routers ... ok +test distributed::disaggregated::request_router::tests::failover_reroute_assignment_is_stable_across_routers ... ok +test distributed::disaggregated::request_router::tests::failover_reroutes_to_survivor_after_marking_unreachable ... ok +test distributed::disaggregated::request_router::tests::handle_node_failure_distributes_rerouted_requests ... ok +test distributed::disaggregated::request_router::tests::handle_node_failure_during_transfer_requeues_for_prefill ... ok +test distributed::disaggregated::request_router::tests::handle_node_failure_fails_request_when_no_alternative ... ok +test distributed::disaggregated::request_router::tests::handle_node_failure_reroutes_prefilling_requests ... ok +test distributed::disaggregated::request_router::tests::least_loaded_prefers_idle_node ... ok +test distributed::disaggregated::request_router::tests::memory_aware_prefers_node_with_more_free_memory ... ok +test distributed::disaggregated::request_router::tests::metrics_are_updated ... ok +test distributed::disaggregated::request_router::tests::node_load_info_utilization ... ok +test distributed::disaggregated::request_router::tests::phase_display_and_terminal ... ok +test distributed::disaggregated::request_router::tests::phase_transitions_work ... ok +test distributed::disaggregated::request_router::tests::prefill_tie_break_is_stable_across_routers ... ok +test distributed::disaggregated::request_router::tests::prompt_length_aware_routes_long_prompt_to_memory_rich_node ... ok +test distributed::disaggregated::request_router::tests::purge_terminal_removes_old_completed ... ok +test distributed::disaggregated::request_router::tests::round_robin_distributes_evenly ... ok +test distributed::disaggregated::request_router::tests::round_robin_selection_sequence_is_stable_across_routers ... ok +test distributed::disaggregated::request_router::tests::route_to_decode_round_robin_distributes_across_decode_nodes ... ok +test distributed::disaggregated::request_router::tests::route_to_decode_selects_decode_node ... ok +test distributed::disaggregated::request_router::tests::route_to_prefill_selects_prefill_node ... ok +test distributed::disaggregated::request_router::tests::strategy_display ... ok +test distributed::disaggregated::request_router::tests::unreachable_decode_node_is_skipped ... ok +test distributed::disaggregated::request_router::tests::unreachable_prefill_node_is_skipped ... ok +test distributed::disaggregated::serving::tests::config_from_cli_decode_requires_prefill_peers ... ok +test distributed::disaggregated::serving::tests::config_from_cli_decode_with_peers ... ok +test distributed::disaggregated::serving::tests::config_from_cli_hybrid_mode ... ok +test distributed::disaggregated::serving::tests::config_from_cli_invalid_role ... ok +test distributed::disaggregated::serving::tests::config_from_cli_no_flags_returns_none ... ok +test distributed::disaggregated::serving::tests::config_from_cli_peers_without_role_defaults_hybrid ... ok +test distributed::disaggregated::serving::tests::config_from_cli_prefill_requires_decode_peers ... ok +test distributed::disaggregated::serving::tests::config_from_cli_prefill_with_peers ... ok +test distributed::disaggregated::serving::tests::guard_decode_only ... ok +test distributed::disaggregated::serving::tests::guard_hybrid_is_local ... ok +test distributed::disaggregated::serving::tests::guard_prefill_only ... ok +test distributed::disaggregated::serving::tests::guard_router ... ok +test distributed::disaggregated::serving::tests::metrics_initial_values ... ok +test distributed::disaggregated::serving::tests::metrics_record_cache_transfer ... ok +test distributed::disaggregated::serving::tests::metrics_record_cache_transfer_failure ... ok +test distributed::disaggregated::serving::tests::metrics_record_decode_tokens ... ok +test distributed::disaggregated::serving::tests::metrics_record_prefill ... ok +test distributed::disaggregated::serving::tests::metrics_stream_bridged ... ok +test distributed::disaggregated::serving::tests::metrics_update_queue_depths ... ok +test distributed::disaggregated::serving::tests::server_debug_format ... ok +test distributed::disaggregated::serving::tests::server_decode_mode_ready_with_prefill_peers ... ok +test distributed::disaggregated::serving::tests::server_hybrid_mode ... ok +test distributed::disaggregated::serving::tests::server_prefill_mode_not_ready_without_peers ... ok +test distributed::disaggregated::serving::tests::server_prefill_mode_ready_with_decode_peers ... ok +test distributed::disaggregated::serving::tests::server_router_mode_ready_with_both_peers ... ok +test distributed::disaggregated::serving::tests::server_router_mode_requires_both_peers ... ok +test distributed::disaggregated::serving::tests::server_uptime_increases ... ok +test distributed::disaggregated::serving::tests::serving_mode_display ... ok +test distributed::disaggregated::serving::tests::serving_mode_from_node_role_decode ... ok +test distributed::disaggregated::serving::tests::serving_mode_from_node_role_hybrid ... ok +test distributed::disaggregated::serving::tests::serving_mode_from_node_role_pipeline_defaults_hybrid ... ok +test distributed::disaggregated::serving::tests::serving_mode_from_node_role_prefill ... ok +test distributed::disaggregated::serving::tests::serving_mode_needs_model ... ok +test distributed::disaggregated::serving::tests::serving_mode_runs_inference ... ok +test distributed::disaggregated::serving_protocol::tests::control_parts_rejects_a_tensor_data_frame ... ok +test distributed::disaggregated::serving_protocol::tests::decode_meta_frame_round_trips_through_a_control_message ... ok +test distributed::disaggregated::serving_protocol::tests::prefill_request_frame_carries_router_chosen_decode_target ... ok +test distributed::disaggregated::serving_protocol::tests::prefill_request_frame_decode_target_defaults_to_none ... ok +test distributed::disaggregated::serving_protocol::tests::prefill_request_frame_round_trips_through_a_control_message ... ok +test distributed::disaggregated::serving_protocol::tests::result_frame_carries_authoritative_generated_token_count ... ok +test distributed::disaggregated::serving_protocol::tests::result_frame_generated_tokens_defaults_to_none ... ok +test distributed::disaggregated::serving_protocol::tests::result_frame_round_trips_both_phases ... ok +test distributed::disaggregated::serving_protocol::tests::result_frame_start_sequence_defaults_to_zero ... ok +test distributed::disaggregated::serving_protocol::tests::sampling_round_trips_through_the_serializable_mirror ... ok +test distributed::disaggregated::serving_protocol::tests::sampling_state_encodes_negative_infinity_as_json_safe_bits ... ok +test distributed::disaggregated::serving_protocol::tests::sampling_state_from_an_older_peer_without_p_less_defaults_to_disabled ... ok +test distributed::disaggregated::serving_protocol::tests::sampling_state_from_an_older_peer_without_penalty_last_n_defaults_to_full_history ... ok +test distributed::disaggregated::serving_protocol::tests::sampling_state_from_an_older_peer_without_the_1485_fields_stays_on_the_pre_1485_chain ... ok +test distributed::disaggregated::serving_protocol::tests::sampling_state_from_an_older_peer_without_top_n_sigma_defaults_to_disabled ... ok +test distributed::disaggregated::serving_protocol::tests::sampling_state_from_an_older_peer_without_typical_p_defaults_to_disabled ... ok +test distributed::disaggregated::serving_protocol::tests::sampling_state_new_fields_default_for_older_peers ... ok +test distributed::disaggregated::serving_protocol::tests::sampling_state_round_trips_the_1485_fields ... ok +test distributed::disaggregated::stream_bridge::tests::bridge_debug_format ... ok +test distributed::disaggregated::stream_bridge::tests::bridge_decode_token_sequence_gap ... ok +test distributed::disaggregated::stream_bridge::tests::bridge_decode_token_wrong_phase ... ok +test distributed::disaggregated::stream_bridge::tests::bridge_elapsed_increases ... ok +test distributed::disaggregated::stream_bridge::tests::bridge_finalize_from_any_phase ... ok +test distributed::disaggregated::stream_bridge::tests::bridge_finalize_only_once ... ok +test distributed::disaggregated::stream_bridge::tests::bridge_full_lifecycle ... ok +test distributed::disaggregated::stream_bridge::tests::bridge_handoff_not_timed_out_in_other_phases ... ok +test distributed::disaggregated::stream_bridge::tests::bridge_handoff_timeout ... ok +test distributed::disaggregated::stream_bridge::tests::bridge_initial_state ... ok +test distributed::disaggregated::stream_bridge::tests::bridge_start_decode_stream ... ok +test distributed::disaggregated::stream_bridge::tests::bridge_start_decode_stream_wrong_phase ... ok +test distributed::disaggregated::stream_bridge::tests::bridge_submit_first_token_success ... ok +test distributed::disaggregated::stream_bridge::tests::bridge_submit_first_token_wrong_phase ... ok +test distributed::disaggregated::stream_bridge::tests::bridge_submit_first_token_wrong_seq ... ok +test distributed::disaggregated::stream_bridge::tests::error_display_lock_poisoned ... ok +test distributed::disaggregated::stream_bridge::tests::error_display_phase_transition ... ok +test distributed::disaggregated::stream_bridge::tests::error_display_sequence_gap ... ok +test distributed::disaggregated::stream_bridge::tests::error_is_std_error ... ok +test distributed::disaggregated::stream_bridge::tests::stream_phase_display ... ok +test distributed::disaggregated::stream_bridge::tests::token_source_display ... ok +test distributed::discovery::tests::initialize_distributed_creates_registry ... ok +test distributed::discovery::tests::probe_reachable_peer ... ok +test distributed::discovery::tests::probe_unreachable_peers ... ok +test distributed::failure_detector::tests::default_config ... ok +test distributed::failure_detector::tests::detect_failure_after_timeout ... ok +test distributed::failure_detector::tests::failure_timeout_calculation ... ok +test distributed::failure_detector::tests::is_node_failed_unknown_returns_false ... ok +test distributed::failure_detector::tests::no_duplicate_failure_notifications ... ok +test distributed::failure_detector::tests::no_failure_when_heartbeats_are_fresh ... ok +test distributed::failure_detector::tests::record_heartbeat_for_unknown_node_is_noop ... ok +test distributed::failure_detector::tests::recovery_after_heartbeat ... ok +test distributed::failure_detector::tests::register_and_unregister ... ok +test distributed::failure_detector::tests::subscribe_receives_events ... ok +test distributed::handoff_queue::tests::block_policy_falls_back_to_reject_sync ... ok +test distributed::handoff_queue::tests::clear_empties_queue ... ok +test distributed::handoff_queue::tests::dequeue_empty_returns_none ... ok +test distributed::handoff_queue::tests::drop_oldest_policy_when_full ... ok +test distributed::handoff_queue::tests::enqueue_and_dequeue ... ok +test distributed::handoff_queue::tests::fifo_ordering ... ok +test distributed::handoff_queue::tests::manager_creates_queues_on_demand ... ok +test distributed::handoff_queue::tests::manager_custom_config_per_queue ... ok +test distributed::handoff_queue::tests::manager_get_nonexistent_returns_none ... ok +test distributed::handoff_queue::tests::manager_queue_names ... ok +test distributed::handoff_queue::tests::manager_remove_queue ... ok +test distributed::handoff_queue::tests::overflow_policy_display ... ok +test distributed::handoff_queue::tests::peek_does_not_remove ... ok +test distributed::handoff_queue::tests::reject_policy_when_full ... ok +test distributed::handoff_queue::tests::stats_track_operations ... ok +test distributed::heartbeat::tests::default_config_values ... ok +test distributed::heartbeat::tests::heartbeat_payload_serialization ... ok +test distributed::heartbeat::tests::heartbeat_payload_with_metrics ... ok +test distributed::heartbeat::tests::process_incoming_heartbeat_records ... ok +test distributed::heartbeat::tests::process_invalid_heartbeat_does_not_panic ... ok +test distributed::heartbeat::tests::service_creation_registers_peers ... ok +test distributed::heartbeat::tests::service_with_metrics_collector ... ok +test distributed::heartbeat::tests::stop_cancels_service ... ok +test distributed::heartbeat::tests::subscribe_events ... ok +test distributed::kv_cache_serde::tests::cache_type_invalid_discriminant ... ok +test distributed::kv_cache_serde::tests::cache_type_round_trip ... ok +test distributed::kv_cache_serde::tests::chunked_cache_extract_round_trip ... ok +test distributed::kv_cache_serde::tests::deserialize_cache_state_rejects_forged_metadata_length ... ok +test distributed::kv_cache_serde::tests::deserialize_cache_state_rejects_oversized_frame ... ok +test distributed::kv_cache_serde::tests::deserialize_too_short_buffer ... ok +test distributed::kv_cache_serde::tests::deserialize_v1_payload_defaults_to_dense_backend ... ok +test distributed::kv_cache_serde::tests::deserialize_wrong_version ... ok +test distributed::kv_cache_serde::tests::empty_cache_state_round_trip ... ok +test distributed::kv_cache_serde::tests::empty_kv_cache_extract_reconstruct ... ok +test distributed::kv_cache_serde::tests::full_state_serialize_deserialize_round_trip ... ok +test distributed::kv_cache_serde::tests::kv_cache_extract_reconstruct_round_trip ... ok +test distributed::kv_cache_serde::tests::mlx_dtype_element_size_known_types ... ok +test distributed::kv_cache_serde::tests::mlx_dtype_element_size_unknown ... ok +test distributed::kv_cache_serde::tests::mlx_dtype_to_tensor_dtype_invalid ... ok +test distributed::kv_cache_serde::tests::mlx_dtype_to_tensor_dtype_valid ... ok +test distributed::kv_cache_serde::tests::multi_layer_state_round_trip ... ok +test distributed::kv_cache_serde::tests::raw_tensor_data_serde_round_trip ... ok +test distributed::kv_cache_serde::tests::reconstruct_mlx_array_round_trips_16bit_floats ... ok +test distributed::kv_cache_serde::tests::restore_into_kv_caches_round_trip ... ok +test distributed::kv_cache_serde::tests::restore_into_sequence_cache_set_restores_paged_state ... ok +test distributed::kv_cache_serde::tests::restore_into_sequence_cache_set_round_trip ... ok +test distributed::kv_cache_serde::tests::restore_layer_count_mismatch_fails ... ok +test distributed::kv_cache_serde::tests::rotating_cache_extract_round_trip ... ok +test distributed::kv_cache_serde::tests::validate_paged_payload_accepts_coherent_handoff ... ok +test distributed::kv_cache_serde::tests::validate_paged_payload_passes_dense_payload_unchanged ... ok +test distributed::kv_cache_serde::tests::validate_paged_payload_rejects_block_count_over_limit ... ok +test distributed::kv_cache_serde::tests::validate_paged_payload_rejects_cross_layer_block ... ok +test distributed::kv_cache_serde::tests::validate_paged_payload_rejects_empty_block_table ... ok +test distributed::kv_cache_serde::tests::validate_paged_payload_rejects_geometry_dtype_mismatch ... ok +test distributed::kv_cache_serde::tests::validate_paged_payload_rejects_geometry_shape_mismatch ... ok +test distributed::kv_cache_serde::tests::validate_paged_payload_rejects_layer_out_of_range ... ok +test distributed::kv_cache_serde::tests::validate_paged_payload_rejects_metadata_only_handoff ... ok +test distributed::kv_cache_serde::tests::validate_paged_payload_rejects_missing_block_contents ... ok +test distributed::kv_cache_serde::tests::validate_paged_payload_rejects_orphan_contents ... ok +test distributed::kv_cache_serde::tests::validate_paged_payload_rejects_oversized_slab ... ok +test distributed::kv_cache_serde::tests::validate_paged_payload_rejects_paged_backend_without_metadata ... ok +test distributed::kv_cache_serde::tests::validate_raw_tensor_negative_shape ... ok +test distributed::kv_cache_serde::tests::validate_raw_tensor_scalar ... ok +test distributed::kv_cache_serde::tests::validate_raw_tensor_size_mismatch ... ok +test distributed::kv_cache_serde::tests::validate_raw_tensor_valid_float32 ... ok +test distributed::kv_cache_transfer::benchmark::tests::bench_config_bytes_per_layer ... ok +test distributed::kv_cache_transfer::benchmark::tests::bench_config_default ... ok +test distributed::kv_cache_transfer::benchmark::tests::bench_config_total_bytes ... ok +test distributed::kv_cache_transfer::benchmark::tests::bench_config_total_size_str ... ok +test distributed::kv_cache_transfer::benchmark::tests::benchmark_result_summary_format ... ok +test distributed::kv_cache_transfer::benchmark::tests::benchmark_run_all ... ok +test distributed::kv_cache_transfer::benchmark::tests::format_bytes_ranges ... ok +test distributed::kv_cache_transfer::benchmark::tests::synthetic_entries_correct_count ... ok +test distributed::kv_cache_transfer::benchmark::tests::synthetic_entries_deterministic ... ok +test distributed::kv_cache_transfer::parallel::tests::concurrency_capped_at_16 ... ok +test distributed::kv_cache_transfer::parallel::tests::concurrency_capped_at_num_layers ... ok +test distributed::kv_cache_transfer::parallel::tests::concurrency_large_layers ... ok +test distributed::kv_cache_transfer::parallel::tests::concurrency_small_layers ... ok +test distributed::kv_cache_transfer::parallel::tests::concurrency_zero_bandwidth ... ok +test distributed::kv_cache_transfer::parallel::tests::concurrency_zero_layers ... ok +test distributed::kv_cache_transfer::parallel::tests::parallel_transfer_concurrency ... ok +test distributed::kv_cache_transfer::quantized::tests::config_default_is_none ... ok +test distributed::kv_cache_transfer::quantized::tests::config_protect_boundary ... ok +test distributed::kv_cache_transfer::quantized::tests::config_uniform ... ok +test distributed::kv_cache_transfer::quantized::tests::quantize_all_layers ... ok +test distributed::kv_cache_transfer::quantized::tests::quantize_dequantize_roundtrip ... ok +test distributed::kv_cache_transfer::quantized::tests::quantize_empty_entry ... ok +test distributed::kv_cache_transfer::quantized::tests::quantize_int4_reduces_more ... ok +test distributed::kv_cache_transfer::quantized::tests::quantize_int8_reduces_size ... ok +test distributed::kv_cache_transfer::quantized::tests::quantize_none_is_identity ... ok +test distributed::kv_cache_transfer::quantized::tests::quantized_entry_totals ... ok +test distributed::kv_cache_transfer::quantized::tests::savings_int4 ... ok +test distributed::kv_cache_transfer::quantized::tests::savings_int8 ... ok +test distributed::kv_cache_transfer::quantized::tests::savings_none ... ok +test distributed::kv_cache_transfer::streamed::tests::notifier_send_receive ... ok +test distributed::kv_cache_transfer::streamed::tests::notifier_take_receiver_once ... ok +test distributed::kv_cache_transfer::streamed::tests::prepare_empty_entry ... ok +test distributed::kv_cache_transfer::streamed::tests::prepare_no_quantization ... ok +test distributed::kv_cache_transfer::streamed::tests::prepare_with_int4_quantization ... ok +test distributed::kv_cache_transfer::streamed::tests::prepare_with_int8_quantization ... ok +test distributed::kv_cache_transfer::streamed::tests::reassemble_int8_roundtrip ... ok +test distributed::kv_cache_transfer::streamed::tests::reassemble_no_quantization ... ok +test distributed::kv_cache_transfer::tests::adaptive_selector_high_bandwidth ... ok +test distributed::kv_cache_transfer::tests::adaptive_selector_low_bandwidth ... ok +test distributed::kv_cache_transfer::tests::adaptive_selector_medium_bandwidth_large_cache ... ok +test distributed::kv_cache_transfer::tests::adaptive_selector_no_data ... ok +test distributed::kv_cache_transfer::tests::bandwidth_estimator_ewma ... ok +test distributed::kv_cache_transfer::tests::bandwidth_estimator_first_sample ... ok +test distributed::kv_cache_transfer::tests::bandwidth_estimator_initial ... ok +test distributed::kv_cache_transfer::tests::bandwidth_estimator_no_data_transfer_time ... ok +test distributed::kv_cache_transfer::tests::bandwidth_estimator_percentiles ... ok +test distributed::kv_cache_transfer::tests::bandwidth_estimator_transfer_time ... ok +test distributed::kv_cache_transfer::tests::bandwidth_sample_throughput ... ok +test distributed::kv_cache_transfer::tests::bandwidth_sample_zero_duration ... ok +test distributed::kv_cache_transfer::tests::layer_transfer_header_roundtrip ... ok +test distributed::kv_cache_transfer::tests::layer_transfer_result_ratio ... ok +test distributed::kv_cache_transfer::tests::layer_transfer_result_zero_original ... ok +test distributed::kv_cache_transfer::tests::quantization_level_bandwidth_ratio ... ok +test distributed::kv_cache_transfer::tests::quantization_level_default_is_none ... ok +test distributed::kv_cache_transfer::tests::quantization_level_display ... ok +test distributed::kv_cache_transfer::tests::transfer_config_default ... ok +test distributed::kv_cache_transfer::tests::transfer_config_presets ... ok +test distributed::kv_cache_transfer::tests::transfer_result_improvement ... ok +test distributed::kv_cache_transfer::tests::transfer_strategy_display ... ok +test distributed::metrics::tests::cluster_metrics_crud ... ok +test distributed::metrics::tests::collector_concurrent_access ... ok +test distributed::metrics::tests::collector_latency_window_eviction ... ok +test distributed::metrics::tests::collector_memory_update ... ok +test distributed::metrics::tests::collector_network_bytes ... ok +test distributed::metrics::tests::collector_paged_decode_fallbacks ... ok +test distributed::metrics::tests::collector_paged_kv_metrics ... ok +test distributed::metrics::tests::collector_record_latency ... ok +test distributed::metrics::tests::collector_request_completed_saturates_at_zero ... ok +test distributed::metrics::tests::collector_request_tracking ... ok +test distributed::metrics::tests::collector_reset ... ok +test distributed::metrics::tests::collector_token_tracking ... ok +test distributed::metrics::tests::percentiles_empty_samples ... ok +test distributed::metrics::tests::percentiles_ordered_correctly ... ok +test distributed::metrics::tests::percentiles_single_sample ... ok +test distributed::metrics::tests::throughput_empty ... ok +test distributed::mock_transport::tests::backend_returns_tcp ... ok +test distributed::mock_transport::tests::bidirectional_communication ... ok +test distributed::mock_transport::tests::connect_is_noop ... ok +test distributed::mock_transport::tests::latency_simulation ... ok +test distributed::mock_transport::tests::local_addr_returns_configured_address ... ok +test distributed::mock_transport::tests::multiple_messages_maintain_order ... ok +test distributed::mock_transport::tests::partition_blocks_messages ... ok +test distributed::mock_transport::tests::router_partition_and_heal ... ok +test distributed::mock_transport::tests::rpc_call_and_response ... ok +test distributed::mock_transport::tests::rpc_fails_without_handler ... ok +test distributed::mock_transport::tests::send_and_recv_control_message ... ok +test distributed::mock_transport::tests::send_and_recv_tensor_data ... ok +test distributed::mock_transport::tests::send_to_unknown_peer_fails ... ok +test distributed::mock_transport::tests::shutdown_prevents_further_operations ... ok +test distributed::mock_transport::tests::stream_send_and_recv ... ok +test distributed::pipeline::activation_transfer::tests::test_activation_latency ... ok +test distributed::pipeline::activation_transfer::tests::test_build_pipeline_links_3_stages ... ok +test distributed::pipeline::activation_transfer::tests::test_build_pipeline_links_min_stages ... ok +test distributed::pipeline::activation_transfer::tests::test_build_pipeline_links_too_few ... ok +test distributed::pipeline::activation_transfer::tests::test_channel_backpressure ... ok +test distributed::pipeline::activation_transfer::tests::test_channel_closed_detection ... ok +test distributed::pipeline::activation_transfer::tests::test_channel_recv_returns_none_on_drop ... ok +test distributed::pipeline::activation_transfer::tests::test_channel_recv_timeout ... ok +test distributed::pipeline::activation_transfer::tests::test_channel_send_recv ... ok +test distributed::pipeline::activation_transfer::tests::test_channel_try_send_full ... ok +test distributed::pipeline::activation_transfer::tests::test_concurrent_micro_batches ... ok +test distributed::pipeline::activation_transfer::tests::test_end_to_end_3_stage_pipeline ... ok +test distributed::pipeline::activation_transfer::tests::test_forward_message_fields ... ok +test distributed::pipeline::activation_transfer::tests::test_message_display ... ok +test distributed::pipeline::activation_transfer::tests::test_payload_size_with_mask ... ok +test distributed::pipeline::activation_transfer::tests::test_pipeline_channel_forward ... ok +test distributed::pipeline::activation_transfer::tests::test_pipeline_channel_reverse ... ok +test distributed::pipeline::activation_transfer::tests::test_queued_count ... ok +test distributed::pipeline::activation_transfer::tests::test_reverse_message_fields ... ok +test distributed::pipeline::activation_transfer::tests::test_serialize_deserialize_activation ... ok +test distributed::pipeline::activation_transfer::tests::test_stage_link_forward_path ... ok +test distributed::pipeline::activation_transfer::tests::test_stage_link_reverse_path ... ok +test distributed::pipeline::activation_transfer::tests::test_transport_stage_link_round_trip_and_lifecycle ... ok +test distributed::pipeline::activation_transfer::tests::test_validate_empty_tensor ... ok +test distributed::pipeline::activation_transfer::tests::test_validate_forward_from_last_stage ... ok +test distributed::pipeline::activation_transfer::tests::test_validate_good_forward ... ok +test distributed::pipeline::activation_transfer::tests::test_validate_good_reverse ... ok +test distributed::pipeline::activation_transfer::tests::test_validate_reverse_from_stage_zero ... ok +test distributed::pipeline::activation_transfer::tests::test_validate_stage_out_of_range ... ok +test distributed::pipeline::activation_transfer::tests::test_validate_too_few_stages ... ok +test distributed::pipeline::benchmark::tests::benchmark_bubble_efficiency_computable ... ok +test distributed::pipeline::benchmark::tests::benchmark_four_stages_produces_results ... ok +test distributed::pipeline::benchmark::tests::benchmark_more_micro_batches_improves_utilization ... ok +test distributed::pipeline::benchmark::tests::benchmark_tpot_reasonable ... ok +test distributed::pipeline::benchmark::tests::benchmark_two_stages_produces_results ... ok +test distributed::pipeline::benchmark::tests::config_builders ... ok +test distributed::pipeline::benchmark::tests::config_default_is_valid ... ok +test distributed::pipeline::benchmark::tests::config_single_stage_rejected ... ok +test distributed::pipeline::benchmark::tests::config_zero_decode_steps_rejected ... ok +test distributed::pipeline::benchmark::tests::config_zero_micro_batches_rejected ... ok +test distributed::pipeline::benchmark::tests::format_report_contains_summary_table ... ok +test distributed::pipeline::benchmark::tests::result_display_contains_key_info ... ok +test distributed::pipeline::benchmark::tests::scaling_benchmark_produces_results ... ok +test distributed::pipeline::benchmark::tests::scaling_empty_stages_rejected ... ok +test distributed::pipeline::benchmark::tests::scaling_factor_out_of_bounds ... ok +test distributed::pipeline::benchmark::tests::scaling_result_display ... ok +test distributed::pipeline::benchmark::tests::simulate_step_completes ... ok +test distributed::pipeline::benchmark::tests::simulate_step_four_stages ... ok +test distributed::pipeline::cache_manager::tests::admission_basic ... ok +test distributed::pipeline::cache_manager::tests::admission_duplicate_rejected ... ok +test distributed::pipeline::cache_manager::tests::admission_insufficient_memory ... ok +test distributed::pipeline::cache_manager::tests::admission_max_sequences_rejected ... ok +test distributed::pipeline::cache_manager::tests::admission_with_estimated_max_tokens ... ok +test distributed::pipeline::cache_manager::tests::attribution::admission_diagnostic_points_to_offending_stage ... ok +test distributed::pipeline::cache_manager::tests::attribution::sequence_cap_diagnostic_uses_short_metric_label ... ok +test distributed::pipeline::cache_manager::tests::attribution::successful_coordinated_admission_returns_ok ... ok +test distributed::pipeline::cache_manager::tests::broadcast_2d_eviction_clears_all_slots ... ok +test distributed::pipeline::cache_manager::tests::broadcast_eviction_all_stages ... ok +test distributed::pipeline::cache_manager::tests::check_pipeline_pressure_none ... ok +test distributed::pipeline::cache_manager::tests::check_pipeline_pressure_one_stage ... ok +test distributed::pipeline::cache_manager::tests::config_estimate_memory ... ok +test distributed::pipeline::cache_manager::tests::config_num_layers ... ok +test distributed::pipeline::cache_manager::tests::config_validate_bad_stage ... ok +test distributed::pipeline::cache_manager::tests::config_validate_bad_threshold ... ok +test distributed::pipeline::cache_manager::tests::config_validate_empty_range ... ok +test distributed::pipeline::cache_manager::tests::config_validate_ok ... ok +test distributed::pipeline::cache_manager::tests::coordinated_2d_admission_accepts_when_every_slot_fits ... ok +test distributed::pipeline::cache_manager::tests::coordinated_2d_admission_rejects_when_any_slot_is_full_and_keeps_grid_empty ... ok +test distributed::pipeline::cache_manager::tests::coordinated_admission_all_accept ... ok +test distributed::pipeline::cache_manager::tests::coordinated_admission_one_rejects ... ok +test distributed::pipeline::cache_manager::tests::display_cache_manager ... ok +test distributed::pipeline::cache_manager::tests::display_cache_metadata_sync ... ok +test distributed::pipeline::cache_manager::tests::display_eviction_event ... ok +test distributed::pipeline::cache_manager::tests::display_preemption_signal ... ok +test distributed::pipeline::cache_manager::tests::display_rejection_reason ... ok +test distributed::pipeline::cache_manager::tests::eviction_basic ... ok +test distributed::pipeline::cache_manager::tests::eviction_broadcast_idempotent ... ok +test distributed::pipeline::cache_manager::tests::eviction_broadcast_removes_allocation ... ok +test distributed::pipeline::cache_manager::tests::eviction_candidates_longest ... ok +test distributed::pipeline::cache_manager::tests::eviction_candidates_longest_tie_break_is_deterministic ... ok +test distributed::pipeline::cache_manager::tests::eviction_candidates_lru ... ok +test distributed::pipeline::cache_manager::tests::eviction_candidates_lru_tie_break_is_deterministic ... ok +test distributed::pipeline::cache_manager::tests::eviction_candidates_shortest ... ok +test distributed::pipeline::cache_manager::tests::eviction_candidates_shortest_tie_break_is_deterministic ... ok +test distributed::pipeline::cache_manager::tests::eviction_not_found ... ok +test distributed::pipeline::cache_manager::tests::generate_metadata_sync ... ok +test distributed::pipeline::cache_manager::tests::generate_metadata_sync_missing ... ok +test distributed::pipeline::cache_manager::tests::manager_creation ... ok +test distributed::pipeline::cache_manager::tests::metadata_sync_inactive_evicts ... ok +test distributed::pipeline::cache_manager::tests::metadata_sync_updates_offset ... ok +test distributed::pipeline::cache_manager::tests::no_pressure_when_under_threshold ... ok +test distributed::pipeline::cache_manager::tests::pp_tp_coord_display_and_order ... ok +test distributed::pipeline::cache_manager::tests::preemption_signal_order_is_deterministic_under_ties ... ok +test distributed::pipeline::cache_manager::tests::pressure_when_above_threshold ... ok +test distributed::pipeline::cache_manager::tests::sync_metadata_across_stages ... ok +test distributed::pipeline::elastic::tests::apply_new_plan_error_transitions_to_failed ... ok +test distributed::pipeline::elastic::tests::disabled_config_rejects_construction ... ok +test distributed::pipeline::elastic::tests::drain_timeout_transitions_to_failed_and_emits_failed_event ... ok +test distributed::pipeline::elastic::tests::explicit_trigger_bypasses_cool_down ... ok +test distributed::pipeline::elastic::tests::explicit_trigger_drives_idle_to_idle_and_emits_events ... ok +test distributed::pipeline::elastic::tests::noop_sink_does_not_panic ... ok +test distributed::pipeline::elastic::tests::pressure_trigger_below_threshold_is_rejected ... ok +test distributed::pipeline::elastic::tests::pressure_trigger_within_cool_down_is_rejected ... ok +test distributed::pipeline::local_runtime::tests::num_layers_counts_all_decoder_blocks_for_deepseek_v3 ... ok +test distributed::pipeline::local_runtime::tests::num_layers_returns_raw_count_for_llama_family ... ok +test distributed::pipeline::metrics::tests::bubble_ratio_perfect_pipeline ... ok +test distributed::pipeline::metrics::tests::bubble_ratio_serial_pipeline ... ok +test distributed::pipeline::metrics::tests::bubble_ratio_zero_wall_time ... ok +test distributed::pipeline::metrics::tests::metrics_collector_accumulation ... ok +test distributed::pipeline::metrics::tests::metrics_summary_display ... ok +test distributed::pipeline::metrics::tests::observability::admission_rejection_counters_aggregate_by_stage_and_reason ... ok +test distributed::pipeline::metrics::tests::observability::latency_histogram_reports_max_regardless_of_bucket_ceiling ... ok +test distributed::pipeline::metrics::tests::observability::latency_histogram_reports_stable_ordering ... ok +test distributed::pipeline::metrics::tests::observability::observability_snapshot_bundles_every_family ... ok +test distributed::pipeline::metrics::tests::observability::stage_utilization_busy_fraction_rolls_up_samples ... ok +test distributed::pipeline::metrics::tests::pipeline_metrics_display ... ok +test distributed::pipeline::metrics::tests::record_operations ... ok +test distributed::pipeline::metrics::tests::repartition::completed_events_drive_drain_histogram_totals ... ok +test distributed::pipeline::metrics::tests::repartition::failed_events_are_counted_but_not_in_drain_histogram ... ok +test distributed::pipeline::metrics::tests::repartition::progress_events_do_not_affect_terminal_totals ... ok +test distributed::pipeline::metrics::tests::repartition::sink_counts_events_by_trigger_and_outcome ... ok +test distributed::pipeline::metrics::tests::stage_utilization_all_compute ... ok +test distributed::pipeline::metrics::tests::stage_utilization_half_compute ... ok +test distributed::pipeline::metrics::tests::stage_utilization_zero_time ... ok +test distributed::pipeline::metrics::tests::theoretical_bubble_ratio_gpipe ... ok +test distributed::pipeline::metrics::tests::theoretical_bubble_ratio_many_micro_batches ... ok +test distributed::pipeline::metrics::tests::theoretical_bubble_ratio_single_stage ... ok +test distributed::pipeline::micro_batch::tests::coverage_no_gaps ... ok +test distributed::pipeline::micro_batch::tests::micro_batch_advance_and_complete ... ok +test distributed::pipeline::micro_batch::tests::micro_batch_display ... ok +test distributed::pipeline::micro_batch::tests::split_even_division ... ok +test distributed::pipeline::micro_batch::tests::split_one_per_micro_batch ... ok +test distributed::pipeline::micro_batch::tests::split_single_micro_batch ... ok +test distributed::pipeline::micro_batch::tests::split_uneven_division ... ok +test distributed::pipeline::micro_batch::tests::split_zero_batch_size_errors ... ok +test distributed::pipeline::micro_batch::tests::split_zero_micro_batch_size_errors ... ok +test distributed::pipeline::micro_batch::tests::suggested_size_basic ... ok +test distributed::pipeline::micro_batch::tests::suggested_size_edge_cases ... ok +test distributed::pipeline::micro_batch::tests::suggested_size_single_stage ... ok +test distributed::pipeline::micro_batch::tests::suggested_size_small_batch ... ok +test distributed::pipeline::partial_loading::tests::classify_embedding_keys ... ok +test distributed::pipeline::partial_loading::tests::classify_language_model_prefix ... ok +test distributed::pipeline::partial_loading::tests::classify_lm_head_keys ... ok +test distributed::pipeline::partial_loading::tests::classify_norm_keys ... ok +test distributed::pipeline::partial_loading::tests::classify_other_keys ... ok +test distributed::pipeline::partial_loading::tests::classify_standard_layer_key ... ok +test distributed::pipeline::partial_loading::tests::classify_transformer_prefix ... ok +test distributed::pipeline::partial_loading::tests::estimate_partial_memory_first_stage ... ok +test distributed::pipeline::partial_loading::tests::estimate_partial_memory_full_model ... ok +test distributed::pipeline::partial_loading::tests::estimate_partial_memory_last_stage ... ok +test distributed::pipeline::partial_loading::tests::estimate_partial_memory_middle_stage ... ok +test distributed::pipeline::partial_loading::tests::filter_weight_keys_basic ... ok +test distributed::pipeline::partial_loading::tests::filter_weight_map_last_stage_keeps_norm ... ok +test distributed::pipeline::partial_loading::tests::filter_weight_map_removes_unneeded ... ok +test distributed::pipeline::partial_loading::tests::layer_filter_from_stage_first ... ok +test distributed::pipeline::partial_loading::tests::layer_filter_from_stage_last ... ok +test distributed::pipeline::partial_loading::tests::layer_filter_is_full_model ... ok +test distributed::pipeline::partial_loading::tests::parse_leading_usize_invalid ... ok +test distributed::pipeline::partial_loading::tests::parse_leading_usize_valid ... ok +test distributed::pipeline::partial_loading::tests::safetensors_index_invalid_json ... ok +test distributed::pipeline::partial_loading::tests::safetensors_index_missing_weight_map ... ok +test distributed::pipeline::partial_loading::tests::safetensors_index_parse ... ok +test distributed::pipeline::partial_loading::tests::safetensors_index_rejects_path_traversal_dotdot ... ok +test distributed::pipeline::partial_loading::tests::safetensors_index_rejects_path_traversal_slash ... ok +test distributed::pipeline::partial_loading::tests::safetensors_index_rejects_path_traversal_subdir ... ok +test distributed::pipeline::partial_loading::tests::safetensors_index_required_shards_first_stage ... ok +test distributed::pipeline::partial_loading::tests::safetensors_index_required_shards_last_stage ... ok +test distributed::pipeline::partial_loading::tests::safetensors_index_required_shards_spans_both ... ok +test distributed::pipeline::partial_loading::tests::should_load_first_stage ... ok +test distributed::pipeline::partial_loading::tests::should_load_last_stage ... ok +test distributed::pipeline::partial_loading::tests::should_load_middle_stage ... ok +test distributed::pipeline::partial_loading::tests::validate_partial_memory_exact_fit ... ok +test distributed::pipeline::partial_loading::tests::validate_partial_memory_insufficient ... ok +test distributed::pipeline::partial_loading::tests::validate_partial_memory_ok ... ok +test distributed::pipeline::partial_loading_adapter::tests::filter_adapter_weights_drops_out_of_range_tensors ... ok +test distributed::pipeline::partial_loading_adapter::tests::filter_adapter_weights_full_range_keeps_everything ... ok +test distributed::pipeline::partial_loading_adapter::tests::load_stage_adapter_weights_falls_back_to_adapter_model_safetensors ... ok +test distributed::pipeline::partial_loading_adapter::tests::load_stage_adapter_weights_skips_out_of_range_tensors ... ok +test distributed::pipeline::partial_loading_adapter::tests::resolve_adapter_weights_path_errors_on_missing_files ... ok +test distributed::pipeline::partial_loading_adapter::tests::should_load_adapter_key_first_stage_embedding ... ok +test distributed::pipeline::partial_loading_adapter::tests::should_load_adapter_key_language_model_prefix ... ok +test distributed::pipeline::partial_loading_adapter::tests::should_load_adapter_key_last_stage_lm_head ... ok +test distributed::pipeline::partial_loading_adapter::tests::should_load_adapter_key_layer_in_range ... ok +test distributed::pipeline::partial_loading_adapter::tests::should_load_adapter_key_layer_out_of_range ... ok +test distributed::pipeline::partial_loading_adapter::tests::stage_filtered_fusion_is_noop_on_empty_stage_adapter ... ok +test distributed::pipeline::partial_loading_adapter::tests::stage_filtered_fusion_matches_full_fusion_on_stage_subset ... ok +test distributed::pipeline::partial_loading_adapter::tests::stage_local_fusion_rejects_a_conv1d_layout_stage_weight_map ... ok +test distributed::pipeline::partial_loading_adapter::tests::stage_local_fusion_reports_the_pairs_it_applied ... ok +test distributed::pipeline::partial_loading_adapter::tests::stage_local_fusion_still_applies_to_an_out_in_stage_weight_map ... ok +test distributed::pipeline::partial_loading_adapter::tests::stage_with_no_in_range_adapter_tensors_is_valid ... ok +test distributed::pipeline::partition::tests::auto_partition_balances_bytes_when_both_devices_roomy ... ok +test distributed::pipeline::partition::tests::auto_partition_embedding_too_large_fails ... ok +test distributed::pipeline::partition::tests::auto_partition_four_equal_devices ... ok +test distributed::pipeline::partition::tests::auto_partition_honors_per_layer_bytes ... ok +test distributed::pipeline::partition::tests::auto_partition_insufficient_memory_fails ... ok +test distributed::pipeline::partition::tests::auto_partition_lm_head_too_large_fails ... ok +test distributed::pipeline::partition::tests::auto_partition_memory_estimates_include_embedding_and_head ... ok +test distributed::pipeline::partition::tests::auto_partition_merges_overlapping_adjacency_groups ... ok +test distributed::pipeline::partition::tests::auto_partition_more_devices_than_layers_fails ... ok +test distributed::pipeline::partition::tests::auto_partition_no_devices_fails ... ok +test distributed::pipeline::partition::tests::auto_partition_non_uniform_two_devices ... ok +test distributed::pipeline::partition::tests::auto_partition_one_layer_per_device ... ok +test distributed::pipeline::partition::tests::auto_partition_refuses_to_split_adjacency_group ... ok +test distributed::pipeline::partition::tests::auto_partition_rejects_when_single_heavy_layer_exceeds_all_budgets ... ok +test distributed::pipeline::partition::tests::auto_partition_respects_heterogeneous_budget_with_real_bytes ... ok +test distributed::pipeline::partition::tests::auto_partition_single_device ... ok +test distributed::pipeline::partition::tests::auto_partition_three_non_uniform_devices ... ok +test distributed::pipeline::partition::tests::auto_partition_two_equal_devices ... ok +test distributed::pipeline::partition::tests::auto_partition_with_report_emits_imbalance_warning ... ok +test distributed::pipeline::partition::tests::auto_partition_with_report_no_warnings_on_balanced_plan ... ok +test distributed::pipeline::partition::tests::auto_partition_zero_layers_fails ... ok +test distributed::pipeline::partition::tests::build_manual_assignments_gap_fails ... ok +test distributed::pipeline::partition::tests::build_manual_assignments_memory_exceeded_fails ... ok +test distributed::pipeline::partition::tests::build_manual_assignments_mismatched_device_count_fails ... ok +test distributed::pipeline::partition::tests::build_manual_assignments_rejects_adjacency_cut ... ok +test distributed::pipeline::partition::tests::build_manual_assignments_valid ... ok +test distributed::pipeline::partition::tests::device_spec_with_compute_units ... ok +test distributed::pipeline::partition::tests::model_profile_total_bytes ... ok +test distributed::pipeline::partition::tests::parse_manual_partition_basic ... ok +test distributed::pipeline::partition::tests::parse_manual_partition_empty_fails ... ok +test distributed::pipeline::partition::tests::parse_manual_partition_exceeds_layers_fails ... ok +test distributed::pipeline::partition::tests::parse_manual_partition_inverted_range_fails ... ok +test distributed::pipeline::partition::tests::parse_manual_partition_missing_dash_fails ... ok +test distributed::pipeline::partition::tests::parse_manual_partition_non_numeric_fails ... ok +test distributed::pipeline::partition::tests::parse_manual_partition_single_layer_range ... ok +test distributed::pipeline::partition::tests::parse_manual_partition_three_stages ... ok +test distributed::pipeline::partition::tests::parse_manual_partition_whitespace ... ok +test distributed::pipeline::partition::tests::partition_config_default_is_auto ... ok +test distributed::pipeline::partition::tests::partition_config_manual_stores_ranges ... ok +test distributed::pipeline::partition::tests::profile_falls_back_to_layer_param_bytes_without_override ... ok +test distributed::pipeline::partition::tests::profile_reports_per_layer_bytes_when_override_set ... ok +test distributed::pipeline::partition::tests::validate_adjacency_allows_split_on_boundary ... ok +test distributed::pipeline::partition::tests::validate_memory_fit_exceeds ... ok +test distributed::pipeline::partition::tests::validate_memory_fit_ok ... ok +test distributed::pipeline::partition::tests::validate_partition_empty_fails ... ok +test distributed::pipeline::partition::tests::validate_partition_gap_fails ... ok +test distributed::pipeline::partition::tests::validate_partition_missing_embedding_fails ... ok +test distributed::pipeline::partition::tests::validate_partition_missing_lm_head_fails ... ok +test distributed::pipeline::partition::tests::validate_partition_overlap_fails ... ok +test distributed::pipeline::partition::tests::validate_partition_valid ... ok +test distributed::pipeline::partition_balance::tests::balance_accommodates_one_tight_stage_with_room_on_another ... ok +test distributed::pipeline::partition_balance::tests::balance_errors_when_every_layer_exceeds_largest_budget ... ok +test distributed::pipeline::partition_balance::tests::balance_respects_forbidden_boundaries ... ok +test distributed::pipeline::partition_balance::tests::balance_respects_tight_budget ... ok +test distributed::pipeline::partition_balance::tests::balance_single_stage_returns_whole_model ... ok +test distributed::pipeline::partition_balance::tests::balance_uniform_layers_two_stages ... ok +test distributed::pipeline::partition_balance::tests::balance_variable_layers_skews_toward_heavy_stage ... ok +test distributed::pipeline::partition_balance::tests::imbalance_warning_fires_on_forced_skew ... ok +test distributed::pipeline::partition_profile::tests::build_profile_emits_gemma4_kv_shared_adjacency ... ok +test distributed::pipeline::partition_profile::tests::build_profile_for_llama_style_config ... ok +test distributed::pipeline::partition_profile::tests::build_profile_handles_tied_word_embeddings ... ok +test distributed::pipeline::partition_profile::tests::build_profile_kimi_k3_distinguishes_kda_mla_and_moe_layers ... ok +test distributed::pipeline::partition_profile::tests::build_profile_marks_moe_layers_heavier ... ok +test distributed::pipeline::partition_profile::tests::build_profile_separates_dense_and_moe_in_deepseek ... ok +test distributed::pipeline::partition_profile::tests::quantized_profile_reports_smaller_bytes_than_full_precision ... ok +test distributed::pipeline::partition_quality::tests::format_report_is_multiline_and_stable ... ok +test distributed::pipeline::partition_quality::tests::format_report_prints_warnings_block ... ok +test distributed::pipeline::partition_quality::tests::populate_actual_memory_sets_measurements ... ok +test distributed::pipeline::partition_quality::tests::report_captures_imbalance_ratio ... ok +test distributed::pipeline::partition_quality::tests::report_flags_skewed_plan ... ok +test distributed::pipeline::partition_quality::tests::summarize_quality_warnings_passes_through ... ok +test distributed::pipeline::runtime::tests::remote_runtime_begin_drain_marks_stages_and_blocks_new_sequences ... ok +test distributed::pipeline::runtime::tests::remote_runtime_rejects_empty_peer_set ... ok +test distributed::pipeline::runtime::tests::remote_runtime_rejects_non_thunderbolt_bind_address ... ok +test distributed::pipeline::runtime::tests::remote_runtime_timeout_cleans_up_sequence_state ... ok +test distributed::pipeline::schedule::tests::create_gpipe_schedule_convenience ... ok +test distributed::pipeline::schedule::tests::create_gpipe_schedule_zero_batch_errors ... ok +test distributed::pipeline::schedule::tests::gpipe_display ... ok +test distributed::pipeline::schedule::tests::gpipe_three_stages ... ok +test distributed::pipeline::schedule::tests::gpipe_two_stages_four_micro_batches ... ok +test distributed::pipeline::schedule::tests::gpipe_two_stages_one_micro_batch ... ok +test distributed::pipeline::schedule::tests::in_flight_tracking ... ok +test distributed::pipeline::schedule::tests::mark_sequence_done ... ok +test distributed::pipeline::schedule::tests::pipeline_config_validation ... ok +test distributed::pipeline::schedule::tests::schedule_action_display ... ok +test distributed::pipeline::server_runtime::tests::pipeline_server_model_delegates_sequence_lifecycle ... ok +test distributed::pipeline::server_runtime::tests::pipeline_server_model_uses_runtime_for_forward_paths ... ok +test distributed::pipeline::serving::tests::chunked_prefill_basic ... ok +test distributed::pipeline::serving::tests::chunked_prefill_cancel ... ok +test distributed::pipeline::serving::tests::chunked_prefill_disabled ... ok +test distributed::pipeline::serving::tests::coordinator_allocate_sequence_id ... ok +test distributed::pipeline::serving::tests::coordinator_begin_drain_blocks_new_requests ... ok +test distributed::pipeline::serving::tests::coordinator_capacity_limit ... ok +test distributed::pipeline::serving::tests::coordinator_duplicate_request_id_rejected ... ok +test distributed::pipeline::serving::tests::coordinator_enforce_timeouts ... ok +test distributed::pipeline::serving::tests::coordinator_health_update ... ok +test distributed::pipeline::serving::tests::coordinator_multi_token_accumulation ... ok +test distributed::pipeline::serving::tests::coordinator_shutdown_fails_inflight_requests_and_completes_drain ... ok +test distributed::pipeline::serving::tests::coordinator_stage_failure ... ok +test distributed::pipeline::serving::tests::coordinator_submit_and_stage_output ... ok +test distributed::pipeline::serving::tests::detect_pipeline_config_multi_stage ... ok +test distributed::pipeline::serving::tests::detect_pipeline_config_single_stage ... ok +test distributed::pipeline::serving::tests::pipeline_request_new ... ok +test distributed::pipeline::serving::tests::pipeline_request_prefill_progress ... ok +test distributed::pipeline::serving::tests::pipeline_response_error ... ok +test distributed::pipeline::serving::tests::pipeline_response_success ... ok +test distributed::pipeline::serving::tests::serving_config_builders ... ok +test distributed::pipeline::serving::tests::serving_config_out_of_range ... ok +test distributed::pipeline::serving::tests::serving_config_single_stage ... ok +test distributed::pipeline::serving::tests::serving_config_valid ... ok +test distributed::pipeline::serving::tests::should_use_pipeline_active ... ok +test distributed::pipeline::serving::tests::should_use_pipeline_none ... ok +test distributed::pipeline::serving::tests::should_use_pipeline_single ... ok +test distributed::pipeline::serving::tests::stage_health_usable ... ok +test distributed::pipeline::serving::tests::stage_role_entry_point ... ok +test distributed::pipeline::serving::tests::stage_role_from_index_single ... ok +test distributed::pipeline::serving::tests::stage_role_from_index_three_stages ... ok +test distributed::pipeline::serving::tests::stage_role_from_index_two_stages ... ok +test distributed::pipeline::serving::tests::stage_role_produces_tokens ... ok +test distributed::pipeline::serving::tests::to_schedule_config ... ok +test distributed::pipeline::stage_executor::common::tests::shared_transformer_stage_model_preserves_hidden_states ... ok +test distributed::pipeline::stage_executor::common::tests::shared_transformer_stage_model_rejects_cache_count_mismatch ... ok +test distributed::pipeline::stage_executor::family_registry_tests::all_stage_family_variants_have_stable_names ... ok +test distributed::pipeline::stage_executor::family_registry_tests::new_issue_345_families_are_registered ... ok +test distributed::pipeline::stage_executor::family_registry_tests::qwen3_next_family_is_registered ... ok +test distributed::pipeline::stage_executor::family_registry_tests::supported_families_is_sorted_by_name ... ok +test distributed::pipeline::stage_executor::family_registry_tests::supported_families_names_are_unique ... ok +test distributed::pipeline::stage_worker::tests::stage_worker_loop_preserves_input_order_across_micro_batches ... ok +test distributed::pipeline::stage_worker::tests::stage_worker_loop_retains_request_scoped_caches_across_runs ... ok +test distributed::pipeline::trace::tests::activation_send_and_recv_pair_carries_direction_metadata ... ok +test distributed::pipeline::trace::tests::admission_reject_records_reason_and_occupancy ... ok +test distributed::pipeline::trace::tests::flush_is_idempotent ... ok +test distributed::pipeline::trace::tests::flush_writes_chrome_tracing_envelope ... ok +test distributed::pipeline::trace::tests::stage_span_emits_duration_event_on_drop ... ok +test distributed::rdma_capabilities::tests::acceleration_display_strings_are_stable ... ok +test distributed::rdma_capabilities::tests::capabilities_default_to_current_protocol_version ... ok +test distributed::rdma_capabilities::tests::os_family_is_never_empty ... ok +test distributed::rdma_capabilities::tests::probe_returns_structured_result ... ok +test distributed::rdma_capabilities::tests::protocol_version_negotiation_rejects_mismatch ... ok +test distributed::rdma_capabilities::tests::protocol_version_negotiation_rejects_zero ... ok +test distributed::rdma_capabilities::tests::protocol_version_negotiation_succeeds_for_matching_peer ... ok +test distributed::rdma_capabilities::tests::tcp_fallback_carries_reason ... ok +test distributed::rdma_transport::tests::bind_succeeds_and_reports_backend_rdma ... ok +test distributed::rdma_transport::tests::capability_negotiation_yields_stable_state ... ok +test distributed::rdma_transport::tests::check_peer_protocol_rejects_mismatch ... ok +test distributed::rdma_transport::tests::connect_counts_successful_peers ... ok +test distributed::rdma_transport::tests::record_peer_fallback_flips_state_and_logs_reason ... ok +test distributed::rdma_transport::tests::small_message_send_loopback_matches_tcp_semantics ... ok +test distributed::registry::tests::all_nodes_ordered_by_id_across_registries ... ok +test distributed::registry::tests::concurrent_access ... ok +test distributed::registry::tests::find_pp_tp_node_returns_exact_intersection ... ok +test distributed::registry::tests::local_pp_tp_coords_none_for_legacy_topology ... ok +test distributed::registry::tests::local_pp_tp_coords_reflect_local_node ... ok +test distributed::registry::tests::nodes_at_rank_returns_all_stages ... ok +test distributed::registry::tests::nodes_at_stage_returns_all_ranks ... ok +test distributed::registry::tests::nodes_with_role_filter ... ok +test distributed::registry::tests::nodes_with_role_ordered_by_id_across_registries ... ok +test distributed::registry::tests::ordering_survives_upsert_and_remove ... ok +test distributed::registry::tests::peer_addresses_excludes_local ... ok +test distributed::registry::tests::peer_addresses_ordered_by_id_across_registries ... ok +test distributed::registry::tests::registry_from_config ... ok +test distributed::registry::tests::set_node_status ... ok +test distributed::registry::tests::topology_summary_includes_all ... ok +test distributed::registry::tests::topology_summary_lists_nodes_in_id_order ... ok +test distributed::registry::tests::update_resources ... ok +test distributed::registry::tests::upsert_and_remove ... ok +test distributed::request_tracker::tests::active_count_tracks_non_terminal ... ok +test distributed::request_tracker::tests::eviction_removes_oldest_completed ... ok +test distributed::request_tracker::tests::eviction_tie_break_is_deterministic ... ok +test distributed::request_tracker::tests::failed_state_is_terminal ... ok +test distributed::request_tracker::tests::invalid_transition_routing_to_handoff_rejected ... ok +test distributed::request_tracker::tests::invalid_transition_submitted_to_completed_rejected ... ok +test distributed::request_tracker::tests::invalid_transition_submitted_to_processing_rejected ... ok +test distributed::request_tracker::tests::lifecycle_tracks_all_transitions ... ok +test distributed::request_tracker::tests::remove_request ... ok +test distributed::request_tracker::tests::request_id_display ... ok +test distributed::request_tracker::tests::request_id_from_string_rejects_empty ... ok +test distributed::request_tracker::tests::request_id_from_string_rejects_too_long ... ok +test distributed::request_tracker::tests::request_id_from_string_valid ... ok +test distributed::request_tracker::tests::request_id_uniqueness ... ok +test distributed::request_tracker::tests::request_state_display ... ok +test distributed::request_tracker::tests::submit_creates_lifecycle_in_submitted_state ... ok +test distributed::request_tracker::tests::submit_with_id ... ok +test distributed::request_tracker::tests::terminal_state_rejects_further_transitions ... ok +test distributed::request_tracker::tests::transition_through_full_lifecycle ... ok +test distributed::request_tracker::tests::transition_unknown_request_returns_false ... ok +test distributed::request_tracker::tests::valid_transition_submitted_to_failed ... ok +test distributed::routing::tests::load_balanced_filters_by_role ... ok +test distributed::routing::tests::load_balanced_selects_least_loaded ... ok +test distributed::routing::tests::pipeline_stage_errors_when_no_matching_stage ... ok +test distributed::routing::tests::pipeline_stage_errors_without_stage ... ok +test distributed::routing::tests::pipeline_stage_selects_correct_stage ... ok +test distributed::routing::tests::pp_tp_router_requires_preferred_stage_and_rank ... ok +test distributed::routing::tests::pp_tp_router_selects_exact_intersection ... ok +test distributed::routing::tests::pp_tp_router_skips_offline_intersection ... ok +test distributed::routing::tests::role_based_errors_when_no_online_nodes ... ok +test distributed::routing::tests::role_based_falls_back_when_no_role_preference ... ok +test distributed::routing::tests::role_based_matches_hybrid_as_wildcard ... ok +test distributed::routing::tests::role_based_respects_affinity ... ok +test distributed::routing::tests::role_based_selects_matching_role ... ok +test distributed::routing::tests::role_based_skips_unreachable_nodes ... ok +test distributed::routing::tests::round_robin_distributes_evenly ... ok +test distributed::routing::tests::round_robin_errors_when_no_online ... ok +test distributed::routing::tests::routing_decision_display_fields ... ok +test distributed::routing::tests::routing_request_new_defaults_are_neutral ... ok +test distributed::routing::tests::traffic_class_display ... ok +test distributed::scheduler::tests::active_request_count ... ok +test distributed::scheduler::tests::backpressure_redirect_avoids_critical_node ... ok +test distributed::scheduler::tests::backpressure_updates_and_queries ... ok +test distributed::scheduler::tests::complete_request_lifecycle ... ok +test distributed::scheduler::tests::coordination_mode_display ... ok +test distributed::scheduler::tests::custom_routing_strategy ... ok +test distributed::scheduler::tests::fail_request_lifecycle ... ok +test distributed::scheduler::tests::handoff_lifecycle ... ok +test distributed::scheduler::tests::handoff_queue_receives_item ... ok +test distributed::scheduler::tests::handoff_rejected_when_queue_full ... ok +test distributed::scheduler::tests::scheduler_default_mode_is_centralized ... ok +test distributed::scheduler::tests::scheduler_default_strategy_is_load_balanced ... ok +test distributed::scheduler::tests::set_strategy_changes_behavior ... ok +test distributed::scheduler::tests::submit_request_assigns_id_and_routes ... ok +test distributed::scheduler::tests::submit_request_with_decode_role ... ok +test distributed::scheduler::tests::submit_request_with_role_preference ... ok +test distributed::tcp_transport::tests::deserialize_rejects_truncated_control ... ok +test distributed::tcp_transport::tests::deserialize_rejects_truncated_tensor ... ok +test distributed::tcp_transport::tests::serialize_deserialize_roundtrip_control ... ok +test distributed::tcp_transport::tests::serialize_deserialize_roundtrip_tensor ... ok +test distributed::tcp_transport::tests::tcp_transport_bind_and_local_addr ... ok +test distributed::tcp_transport::tests::tcp_transport_send_recv_control_message ... ok +test distributed::tcp_transport::tests::tcp_transport_send_recv_tensor_data ... ok +test distributed::tensor_chunked::tests::test_assembler_basic ... ok +test distributed::tensor_chunked::tests::test_assembler_duplicate_chunk ... ok +test distributed::tensor_chunked::tests::test_assembler_incomplete_assemble ... ok +test distributed::tensor_chunked::tests::test_assembler_out_of_order ... ok +test distributed::tensor_chunked::tests::test_assembler_progress ... ok +test distributed::tensor_chunked::tests::test_chunk_frame_encode_decode_roundtrip ... ok +test distributed::tensor_chunked::tests::test_should_chunk ... ok +test distributed::tensor_chunked::tests::test_split_empty_data ... ok +test distributed::tensor_chunked::tests::test_split_into_chunks_basic ... ok +test distributed::tensor_chunked::tests::test_split_into_chunks_non_aligned ... ok +test distributed::tensor_chunked::tests::test_split_single_chunk ... ok +test distributed::tensor_chunked::tests::test_split_zero_chunk_size ... ok +test distributed::tensor_compress::tests::test_compress_decompress_roundtrip ... ok +test distributed::tensor_compress::tests::test_compress_decompress_varied_data ... ok +test distributed::tensor_compress::tests::test_compress_if_beneficial_empty ... ok +test distributed::tensor_compress::tests::test_compress_if_beneficial_random ... ok +test distributed::tensor_compress::tests::test_compress_if_beneficial_sparse ... ok +test distributed::tensor_compress::tests::test_compression_ratio_sparse_tensor ... ok +test distributed::tensor_compress::tests::test_decompress_corrupted ... ok +test distributed::tensor_compress::tests::test_decompress_invalid ... ok +test distributed::tensor_compress::tests::test_likely_compressible_random ... ok +test distributed::tensor_compress::tests::test_likely_compressible_repeated_pattern ... ok +test distributed::tensor_compress::tests::test_likely_compressible_short ... ok +test distributed::tensor_compress::tests::test_likely_compressible_zeros ... ok +test distributed::tensor_parallel::benchmark::tests::allreduce_profile_total_time ... ok +test distributed::tensor_parallel::benchmark::tests::benchmark_config_default_valid ... ok +test distributed::tensor_parallel::benchmark::tests::benchmark_config_empty_tp_sizes_invalid ... ok +test distributed::tensor_parallel::benchmark::tests::benchmark_config_zero_decode_steps_invalid ... ok +test distributed::tensor_parallel::benchmark::tests::crossover_analysis_basic ... ok +test distributed::tensor_parallel::benchmark::tests::display_impls_non_empty ... ok +test distributed::tensor_parallel::benchmark::tests::format_report_non_empty ... ok +test distributed::tensor_parallel::benchmark::tests::lockstep_benchmark_tp1 ... ok +test distributed::tensor_parallel::benchmark::tests::lockstep_benchmark_tp2 ... ok +test distributed::tensor_parallel::benchmark::tests::lockstep_benchmark_tp4 ... ok +test distributed::tensor_parallel::benchmark::tests::run_tp_benchmark_single_device ... ok +test distributed::tensor_parallel::benchmark::tests::run_tp_benchmark_tp2 ... ok +test distributed::tensor_parallel::benchmark::tests::run_tp_benchmark_tp4 ... ok +test distributed::tensor_parallel::benchmark::tests::scaling_analysis_basic ... ok +test distributed::tensor_parallel::cache_manager::tests::aggregate_reports ... ok +test distributed::tensor_parallel::cache_manager::tests::allocate_cache_basic ... ok +test distributed::tensor_parallel::cache_manager::tests::allocate_cache_duplicate_rejected ... ok +test distributed::tensor_parallel::cache_manager::tests::allocate_cache_insufficient_memory ... ok +test distributed::tensor_parallel::cache_manager::tests::allocate_cache_max_sequences ... ok +test distributed::tensor_parallel::cache_manager::tests::apply_eviction_basic ... ok +test distributed::tensor_parallel::cache_manager::tests::apply_eviction_idempotent ... ok +test distributed::tensor_parallel::cache_manager::tests::bytes_per_token_per_layer_mha ... ok +test distributed::tensor_parallel::cache_manager::tests::cache_size_estimate_mha ... ok +test distributed::tensor_parallel::cache_manager::tests::cache_size_estimate_mqa_replicated ... ok +test distributed::tensor_parallel::cache_manager::tests::check_pressure_prefix_is_deterministic_under_ties ... ok +test distributed::tensor_parallel::cache_manager::tests::check_tp_pressure_none ... ok +test distributed::tensor_parallel::cache_manager::tests::check_tp_pressure_one_rank ... ok +test distributed::tensor_parallel::cache_manager::tests::config_validate_bad_rank ... ok +test distributed::tensor_parallel::cache_manager::tests::config_validate_bad_threshold ... ok +test distributed::tensor_parallel::cache_manager::tests::config_validate_indivisible_kv_heads ... ok +test distributed::tensor_parallel::cache_manager::tests::config_validate_ok ... ok +test distributed::tensor_parallel::cache_manager::tests::coordinate_eviction_across_ranks ... ok +test distributed::tensor_parallel::cache_manager::tests::display_aggregate_report ... ok +test distributed::tensor_parallel::cache_manager::tests::display_cache_size_estimate ... ok +test distributed::tensor_parallel::cache_manager::tests::display_eviction_policy ... ok +test distributed::tensor_parallel::cache_manager::tests::display_eviction_reason ... ok +test distributed::tensor_parallel::cache_manager::tests::display_eviction_signal ... ok +test distributed::tensor_parallel::cache_manager::tests::display_memory_report ... ok +test distributed::tensor_parallel::cache_manager::tests::display_sharded_cache_allocation ... ok +test distributed::tensor_parallel::cache_manager::tests::display_tp_cache_manager ... ok +test distributed::tensor_parallel::cache_manager::tests::estimate_memory_mha ... ok +test distributed::tensor_parallel::cache_manager::tests::eviction_candidates_least_tokens ... ok +test distributed::tensor_parallel::cache_manager::tests::eviction_candidates_least_tokens_tie_break_is_deterministic ... ok +test distributed::tensor_parallel::cache_manager::tests::eviction_candidates_lru ... ok +test distributed::tensor_parallel::cache_manager::tests::eviction_candidates_lru_tie_break_is_deterministic ... ok +test distributed::tensor_parallel::cache_manager::tests::free_cache_basic ... ok +test distributed::tensor_parallel::cache_manager::tests::free_cache_not_found ... ok +test distributed::tensor_parallel::cache_manager::tests::gqa_local_kv_heads_tp4 ... ok +test distributed::tensor_parallel::cache_manager::tests::gqa_replicated_when_fewer_kv_than_tp ... ok +test distributed::tensor_parallel::cache_manager::tests::gqa_sharding_proportional ... ok +test distributed::tensor_parallel::cache_manager::tests::manager_creation ... ok +test distributed::tensor_parallel::cache_manager::tests::manager_creation_invalid_config ... ok +test distributed::tensor_parallel::cache_manager::tests::memory_proportional_to_tp_size ... ok +test distributed::tensor_parallel::cache_manager::tests::memory_report_basic ... ok +test distributed::tensor_parallel::cache_manager::tests::mha_local_kv_heads_tp4 ... ok +test distributed::tensor_parallel::cache_manager::tests::mha_sharding_proportional ... ok +test distributed::tensor_parallel::cache_manager::tests::mqa_replicated_no_memory_savings ... ok +test distributed::tensor_parallel::cache_manager::tests::mqa_replicated_on_all_ranks ... ok +test distributed::tensor_parallel::cache_manager::tests::no_pressure_when_under_threshold ... ok +test distributed::tensor_parallel::cache_manager::tests::pressure_when_above_threshold ... ok +test distributed::tensor_parallel::cache_manager::tests::update_offset_increases_memory ... ok +test distributed::tensor_parallel::cache_manager::tests::update_offset_not_found ... ok +test distributed::tensor_parallel::collective::tests::test_all_gather_four_ranks_f32 ... ok +test distributed::tensor_parallel::collective::tests::test_all_gather_single_rank ... ok +test distributed::tensor_parallel::collective::tests::test_all_gather_two_ranks_f32 ... ok +test distributed::tensor_parallel::collective::tests::test_all_reduce_four_ranks_f32 ... ok +test distributed::tensor_parallel::collective::tests::test_all_reduce_int4_unsupported ... ok +test distributed::tensor_parallel::collective::tests::test_all_reduce_odd_element_count ... ok +test distributed::tensor_parallel::collective::tests::test_all_reduce_single_rank ... ok +test distributed::tensor_parallel::collective::tests::test_all_reduce_two_ranks_f32 ... ok +test distributed::tensor_parallel::collective::tests::test_all_reduce_two_ranks_i32 ... ok +test distributed::tensor_parallel::collective::tests::test_all_reduce_unaligned_buffer ... ok +test distributed::tensor_parallel::collective::tests::test_benchmark_result_display ... ok +test distributed::tensor_parallel::collective::tests::test_bf16_roundtrip ... ok +test distributed::tensor_parallel::collective::tests::test_config_validation_ok ... ok +test distributed::tensor_parallel::collective::tests::test_config_validation_rank_out_of_range ... ok +test distributed::tensor_parallel::collective::tests::test_config_validation_zero_chunk ... ok +test distributed::tensor_parallel::collective::tests::test_config_validation_zero_world ... ok +test distributed::tensor_parallel::collective::tests::test_elementwise_add_bf16 ... ok +test distributed::tensor_parallel::collective::tests::test_elementwise_add_f16 ... ok +test distributed::tensor_parallel::collective::tests::test_elementwise_add_f32 ... ok +test distributed::tensor_parallel::collective::tests::test_elementwise_add_length_mismatch ... ok +test distributed::tensor_parallel::collective::tests::test_elementwise_add_unsupported_dtype ... ok +test distributed::tensor_parallel::collective::tests::test_f16_roundtrip ... ok +test distributed::tensor_parallel::collective::tests::test_reduce_scatter_single_rank ... ok +test distributed::tensor_parallel::collective::tests::test_reduce_scatter_two_ranks_f32 ... ok +test distributed::tensor_parallel::collective::tests::test_ring_allreduce_data_volume ... ok +test distributed::tensor_parallel::collective::tests::test_ring_topology_neighbors ... ok +test distributed::tensor_parallel::collective::tests::test_ring_topology_single_rank ... ok +test distributed::tensor_parallel::collective::tests::test_split_and_reassemble_even ... ok +test distributed::tensor_parallel::collective::tests::test_split_and_reassemble_uneven ... ok +test distributed::tensor_parallel::config::tests::default_shard_config ... ok +test distributed::tensor_parallel::config::tests::embedding_mode_display ... ok +test distributed::tensor_parallel::config::tests::embedding_mode_parse ... ok +test distributed::tensor_parallel::config::tests::moe_shard_mode_display ... ok +test distributed::tensor_parallel::config::tests::moe_shard_mode_parse ... ok +test distributed::tensor_parallel::config::tests::shard_config_validate_invalid_non_power_of_two ... ok +test distributed::tensor_parallel::config::tests::shard_config_validate_invalid_zero ... ok +test distributed::tensor_parallel::config::tests::shard_config_validate_valid ... ok +test distributed::tensor_parallel::config::tests::shard_config_with_tp_size ... ok +test distributed::tensor_parallel::inference::tests::ensure_single_rank_runtime_rejects_multi_rank ... ok +test distributed::tensor_parallel::inference::tests::resolve_model_shard_plan_still_rejects_partial_text_config_when_multi_rank ... ok +test distributed::tensor_parallel::inference::tests::resolve_model_shard_plan_tolerates_partial_text_config_when_single_rank ... ok +test distributed::tensor_parallel::inference::tests::resolve_model_shard_plan_uses_text_config_layer_count ... ok +test distributed::tensor_parallel::inference::tests::shard_config_from_cli_parses_modes ... ok +test distributed::tensor_parallel::llama_runtime::tests::local_llama_args_preserves_computed_head_dim_when_config_omits_it ... ok +test distributed::tensor_parallel::llama_runtime::tests::logical_weight_name_maps_auxiliary_quantization_keys_to_weight_name ... ok +test distributed::tensor_parallel::llama_runtime::tests::tensor_parallel_ernie45_matches_full_model_logits ... ok +test distributed::tensor_parallel::llama_runtime::tests::tensor_parallel_gemma3_matches_full_model_logits ... ok +test distributed::tensor_parallel::llama_runtime::tests::tensor_parallel_gemma4_embed_scale_not_doubled_for_input_embeddings ... ok +test distributed::tensor_parallel::llama_runtime::tests::tensor_parallel_gemma4_matches_full_model_logits ... ok +test distributed::tensor_parallel::llama_runtime::tests::tensor_parallel_hunyuan_v1_dense_matches_full_model_logits ... ok +test distributed::tensor_parallel::llama_runtime::tests::tensor_parallel_llama_matches_full_model_logits ... ok +test distributed::tensor_parallel::llama_runtime::tests::tensor_parallel_llama_propagates_rope_scaling_to_every_rank ... ok +test distributed::tensor_parallel::llama_runtime::tests::tensor_parallel_llama_propagates_rope_traditional_to_every_rank ... ok +test distributed::tensor_parallel::llama_runtime::tests::tensor_parallel_qwen2_matches_full_model_logits ... ok +test distributed::tensor_parallel::llama_runtime::tests::tensor_parallel_qwen35_matches_full_model_logits ... ok +test distributed::tensor_parallel::llama_runtime::tests::tensor_parallel_qwen35_text_only_27b_debug_layerwise_runtime_divergence ... ignored, requires local qwen3.5 large weights and CUDA runtime +test distributed::tensor_parallel::llama_runtime::tests::tensor_parallel_qwen35_text_only_9b_debug_layerwise_runtime_divergence ... ignored, requires local qwen3.5 large weights and CUDA runtime +test distributed::tensor_parallel::llama_runtime::tests::tensor_parallel_qwen35_text_only_9b_debug_linear_attn_stages ... ignored, requires local qwen3.5 large weights and CUDA runtime +test distributed::tensor_parallel::llama_runtime::tests::tensor_parallel_qwen35_text_only_9b_prefill_logits_match_full_model ... ignored, requires local qwen3.5 large weights and CUDA runtime +test distributed::tensor_parallel::llama_runtime::tests::tensor_parallel_qwen3_matches_full_model_logits ... ok +test distributed::tensor_parallel::llama_runtime::tests::tensor_parallel_qwen3_propagates_rope_scaling_to_every_rank ... ok +test distributed::tensor_parallel::llama_runtime::tests::validate_supported_runtime_accepts_ernie45_replicated_path ... ok +test distributed::tensor_parallel::llama_runtime::tests::validate_supported_runtime_accepts_gemma3_replicated_path ... ok +test distributed::tensor_parallel::llama_runtime::tests::validate_supported_runtime_accepts_gemma4_replicated_path ... ok +test distributed::tensor_parallel::llama_runtime::tests::validate_supported_runtime_accepts_hunyuan_v1_dense_replicated_path ... ok +test distributed::tensor_parallel::llama_runtime::tests::validate_supported_runtime_accepts_llama_replicated_path ... ok +test distributed::tensor_parallel::llama_runtime::tests::validate_supported_runtime_accepts_qwen2_replicated_path ... ok +test distributed::tensor_parallel::llama_runtime::tests::validate_supported_runtime_accepts_qwen35_replicated_path ... ok +test distributed::tensor_parallel::llama_runtime::tests::validate_supported_runtime_accepts_qwen3_replicated_path ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_allreduce_required ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_attention_type_display ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_attention_type_gqa ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_attention_type_mha ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_attention_type_mqa ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_gemma3_4b_sliding_window_tp2 ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_head_assignment_four_ranks ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_head_assignment_single_rank ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_head_assignment_two_ranks ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_kv_assignment_gqa_replicated ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_kv_assignment_gqa_shardable ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_kv_assignment_head_range ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_kv_assignment_mha_sharded ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_kv_assignment_mqa ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_kv_assignment_single_rank ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_llama3_1_8b_tp2 ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_local_shapes_mha_tp2 ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_local_shapes_mqa_tp4 ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_local_shapes_single_rank ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_local_shapes_with_sliding_window ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_mistral_7b_tp2 ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_qwen2_5_7b_tp4 ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_validate_heads_not_divisible_by_tp ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_validate_invalid_gqa_ratio ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_validate_kv_heads_not_divisible_by_tp ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_validate_rank_out_of_range ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_validate_valid_config ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_validate_zero_heads ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_validate_zero_tp_size ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_verify_head_coverage_gqa_replicated_tp8 ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_verify_head_coverage_gqa_tp4 ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_verify_head_coverage_mha_tp4 ... ok +test distributed::tensor_parallel::parallel_attention::tests::test_verify_head_coverage_mqa_tp4 ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_activation_default ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_activation_display ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_activation_properties ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_deepseek_v3_ffn_tp8 ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_ffn_shapes_equal_split ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_gelu_approx_activation ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_gemma3_4b_ffn_tp2 ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_llama3_1_8b_ffn_tp2 ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_local_shapes_single_rank ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_local_shapes_tp2 ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_local_shapes_tp4 ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_mixtral_expert_ffn_tp2 ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_qwen2_5_7b_ffn_tp4 ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_validate_intermediate_not_divisible ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_validate_rank_out_of_range ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_validate_valid_config ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_validate_zero_hidden ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_validate_zero_intermediate ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_validate_zero_tp_size ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_verify_intermediate_coverage_tp2 ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_verify_intermediate_coverage_tp4 ... ok +test distributed::tensor_parallel::parallel_ffn::tests::test_verify_intermediate_coverage_tp8 ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_communication_expert_parallel ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_communication_single_rank ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_communication_within_expert ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_deepseek_v3_tp8 ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_expert_assignment_balanced ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_expert_assignment_one_per_rank ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_expert_assignment_single_rank ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_expert_assignment_unbalanced ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_llama4_scout_tp4 ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_mixtral_8x7b_tp2 ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_mode_default ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_mode_display ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_moe_shapes_expert_parallel_single_rank ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_moe_shapes_expert_parallel_tp2 ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_moe_shapes_shared_expert_default_size ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_moe_shapes_with_shared_expert ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_moe_shapes_within_expert_tp2 ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_moe_shapes_within_expert_tp4 ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_router_always_replicated ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_validate_expert_parallel_insufficient_experts ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_validate_experts_per_token_exceeds_total ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_validate_rank_out_of_range ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_validate_shared_expert_not_divisible ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_validate_valid_expert_parallel ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_validate_valid_within_expert ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_validate_within_expert_not_divisible ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_validate_zero_experts ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_verify_expert_coverage_tp2 ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_verify_expert_coverage_tp4 ... ok +test distributed::tensor_parallel::parallel_moe::tests::test_verify_expert_coverage_tp8 ... ok +test distributed::tensor_parallel::plan_generator::tests::cohere_plan ... ok +test distributed::tensor_parallel::plan_generator::tests::deepseek_dense_plan ... ok +test distributed::tensor_parallel::plan_generator::tests::deepseek_moe_plan_has_dense_ffn ... ok +test distributed::tensor_parallel::plan_generator::tests::deepseek_moe_plan_has_mla ... ok +test distributed::tensor_parallel::plan_generator::tests::expand_weight_names_count ... ok +test distributed::tensor_parallel::plan_generator::tests::gemma_plan ... ok +test distributed::tensor_parallel::plan_generator::tests::invalid_tp_size_rejected ... ok +test distributed::tensor_parallel::plan_generator::tests::kimi_k3_is_replicated ... ok +test distributed::tensor_parallel::plan_generator::tests::llama4_plan_has_moe ... ok +test distributed::tensor_parallel::plan_generator::tests::llama_plan_has_correct_strategies ... ok +test distributed::tensor_parallel::plan_generator::tests::llama_plan_with_vocab_parallel_embedding ... ok +test distributed::tensor_parallel::plan_generator::tests::mistral_uses_llama_plan ... ok +test distributed::tensor_parallel::plan_generator::tests::mixtral_plan ... ok +test distributed::tensor_parallel::plan_generator::tests::olmo_family_uses_llama_plan ... ok +test distributed::tensor_parallel::plan_generator::tests::olmoe_plan ... ok +test distributed::tensor_parallel::plan_generator::tests::phi_plan_has_both_naming_conventions ... ok +test distributed::tensor_parallel::plan_generator::tests::phimoe_plan ... ok +test distributed::tensor_parallel::plan_generator::tests::plan_summary_contains_key_info ... ok +test distributed::tensor_parallel::plan_generator::tests::qwen3_5_moe_plan ... ok +test distributed::tensor_parallel::plan_generator::tests::qwen3_5_plan ... ok +test distributed::tensor_parallel::plan_generator::tests::qwen3_next_is_replicated ... ok +test distributed::tensor_parallel::plan_generator::tests::qwen_moe_plan_expert_parallel ... ok +test distributed::tensor_parallel::plan_generator::tests::qwen_moe_plan_within_expert ... ok +test distributed::tensor_parallel::plan_generator::tests::qwen_plan ... ok +test distributed::tensor_parallel::plan_generator::tests::ssm_models_are_replicated ... ok +test distributed::tensor_parallel::plan_generator::tests::starcoder2_plan ... ok +test distributed::tensor_parallel::plan_generator::tests::tp_size_1_returns_replicated ... ok +test distributed::tensor_parallel::plan_generator::tests::unknown_architecture_uses_generic_fallback ... ok +test distributed::tensor_parallel::shard_strategy::tests::comm_pattern_display ... ok +test distributed::tensor_parallel::shard_strategy::tests::model_shard_plan_expand_weight_names ... ok +test distributed::tensor_parallel::shard_strategy::tests::plan_for_weight_exact_match ... ok +test distributed::tensor_parallel::shard_strategy::tests::plan_for_weight_pattern_match ... ok +test distributed::tensor_parallel::shard_strategy::tests::shard_strategy_display ... ok +test distributed::tensor_parallel::shard_strategy::tests::summary_format ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_byte_ranges_axis0 ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_byte_ranges_axis1 ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_byte_ranges_replicated ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_column_parallel_even_split ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_dtype_byte_sizes ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_embedding_replicated_by_default ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_embedding_vocab_parallel ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_empty_shape_error ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_expert_parallel_shard_spec ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_lm_head_vocab_parallel ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_memory_validation_consistent ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_memory_validation_non_divisible ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_memory_validation_savings_ratio ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_non_divisible_dimension_remainder_distribution ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_rank_out_of_range ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_replicated_weight_returns_full_range ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_row_parallel_even_split ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_shard_3d_tensor_axis0 ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_shard_3d_tensor_axis1 ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_shard_axis0_contiguous ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_shard_axis1_strided ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_shard_data_too_short ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_shard_range_dim_less_than_tp ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_shard_range_tp1 ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_shard_replicated_returns_full_data ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_shard_spec_shard_size ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_shard_with_dtype_size_2 ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_sharded_shape_column_parallel ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_sharded_shape_replicated ... ok +test distributed::tensor_parallel::sharded_loading::tests::test_sharded_shape_row_parallel ... ok +test distributed::tensor_parallel::synchronized::tests::test_barrier_duplicate_arrival_rejected ... ok +test distributed::tensor_parallel::synchronized::tests::test_barrier_multi_rank ... ok +test distributed::tensor_parallel::synchronized::tests::test_barrier_rank_out_of_range ... ok +test distributed::tensor_parallel::synchronized::tests::test_barrier_single_rank ... ok +test distributed::tensor_parallel::synchronized::tests::test_barrier_step_id ... ok +test distributed::tensor_parallel::synchronized::tests::test_barrier_timeout ... ok +test distributed::tensor_parallel::synchronized::tests::test_config_default ... ok +test distributed::tensor_parallel::synchronized::tests::test_config_new_coordinator ... ok +test distributed::tensor_parallel::synchronized::tests::test_config_new_non_coordinator ... ok +test distributed::tensor_parallel::synchronized::tests::test_config_validate_coordinator_mismatch ... ok +test distributed::tensor_parallel::synchronized::tests::test_config_validate_ok ... ok +test distributed::tensor_parallel::synchronized::tests::test_config_validate_rank_out_of_range ... ok +test distributed::tensor_parallel::synchronized::tests::test_config_validate_zero_tp_size ... ok +test distributed::tensor_parallel::synchronized::tests::test_eviction_reason_display ... ok +test distributed::tensor_parallel::synchronized::tests::test_group_health_all_shut_down ... ok +test distributed::tensor_parallel::synchronized::tests::test_group_health_heartbeat_timeout ... ok +test distributed::tensor_parallel::synchronized::tests::test_group_health_initial ... ok +test distributed::tensor_parallel::synchronized::tests::test_group_health_rank_failure ... ok +test distributed::tensor_parallel::synchronized::tests::test_group_health_rank_status ... ok +test distributed::tensor_parallel::synchronized::tests::test_rank_status_display ... ok +test distributed::tensor_parallel::synchronized::tests::test_sampled_tokens_serialize_roundtrip ... ok +test distributed::tensor_parallel::synchronized::tests::test_sampling_mode_display ... ok +test distributed::tensor_parallel::synchronized::tests::test_step_decision_display ... ok +test distributed::tensor_parallel::synchronized::tests::test_step_decision_kind_name ... ok +test distributed::tensor_parallel::synchronized::tests::test_step_decision_serialize_roundtrip ... ok +test distributed::tensor_parallel::synchronized::tests::test_step_decision_step_id ... ok +test distributed::tensor_parallel::tp_executor::tests::test_admit_duplicate_rejected ... ok +test distributed::tensor_parallel::tp_executor::tests::test_admit_sequence ... ok +test distributed::tensor_parallel::tp_executor::tests::test_apply_sampled_tokens ... ok +test distributed::tensor_parallel::tp_executor::tests::test_apply_sampled_tokens_count_mismatch ... ok +test distributed::tensor_parallel::tp_executor::tests::test_apply_sampled_tokens_with_completion ... ok +test distributed::tensor_parallel::tp_executor::tests::test_barrier ... ok +test distributed::tensor_parallel::tp_executor::tests::test_barrier_arrive ... ok +test distributed::tensor_parallel::tp_executor::tests::test_barrier_arrive_no_active_barrier ... ok +test distributed::tensor_parallel::tp_executor::tests::test_barrier_timeout_detection ... ok +test distributed::tensor_parallel::tp_executor::tests::test_decode ... ok +test distributed::tensor_parallel::tp_executor::tests::test_decode_not_prefilled ... ok +test distributed::tensor_parallel::tp_executor::tests::test_error_count ... ok +test distributed::tensor_parallel::tp_executor::tests::test_evict_sequence ... ok +test distributed::tensor_parallel::tp_executor::tests::test_executor_new ... ok +test distributed::tensor_parallel::tp_executor::tests::test_executor_non_coordinator ... ok +test distributed::tensor_parallel::tp_executor::tests::test_lockstep_two_executors ... ok +test distributed::tensor_parallel::tp_executor::tests::test_prefill ... ok +test distributed::tensor_parallel::tp_executor::tests::test_prefill_mismatched_lengths ... ok +test distributed::tensor_parallel::tp_executor::tests::test_prefill_missing_sequence ... ok +test distributed::tensor_parallel::tp_executor::tests::test_report_failure ... ok +test distributed::tensor_parallel::tp_executor::tests::test_shutdown ... ok +test distributed::tensor_parallel::tp_executor::tests::test_step_ordering_enforced ... ok +test distributed::tensor_parallel::tp_executor::tests::test_step_ordering_equal_rejected ... ok +test distributed::tensor_parallel::tp_scheduler::tests::test_barrier_decision ... ok +test distributed::tensor_parallel::tp_scheduler::tests::test_continuous_batching_readmit_after_eviction ... ok +test distributed::tensor_parallel::tp_scheduler::tests::test_evict_already_completed ... ok +test distributed::tensor_parallel::tp_scheduler::tests::test_has_work ... ok +test distributed::tensor_parallel::tp_scheduler::tests::test_manual_eviction ... ok +test distributed::tensor_parallel::tp_scheduler::tests::test_record_sampled_token_count_mismatch ... ok +test distributed::tensor_parallel::tp_scheduler::tests::test_record_sampled_tokens ... ok +test distributed::tensor_parallel::tp_scheduler::tests::test_record_sampled_with_completion ... ok +test distributed::tensor_parallel::tp_scheduler::tests::test_schedule_admits_and_prefills ... ok +test distributed::tensor_parallel::tp_scheduler::tests::test_schedule_decode_after_prefill ... ok +test distributed::tensor_parallel::tp_scheduler::tests::test_schedule_empty_returns_empty ... ok +test distributed::tensor_parallel::tp_scheduler::tests::test_schedule_respects_max_batch_size ... ok +test distributed::tensor_parallel::tp_scheduler::tests::test_scheduler_new_rank0 ... ok +test distributed::tensor_parallel::tp_scheduler::tests::test_scheduler_rejects_non_coordinator ... ok +test distributed::tensor_parallel::tp_scheduler::tests::test_shutdown_decision ... ok +test distributed::tensor_parallel::tp_scheduler::tests::test_step_ids_are_monotonic ... ok +test distributed::tensor_parallel::tp_scheduler::tests::test_submit_duplicate_rejected ... ok +test distributed::tensor_parallel::tp_scheduler::tests::test_submit_sequence ... ok +test distributed::tensor_parallel::tp_scheduler::tests::test_submit_zero_max_tokens_rejected ... ok +test distributed::tensor_parallel::tp_scheduler::tests::test_submit_zero_prompt_rejected ... ok +test distributed::tensor_protocol::tests::test_chunk_frame_decode_truncated ... ok +test distributed::tensor_protocol::tests::test_chunk_frame_roundtrip ... ok +test distributed::tensor_protocol::tests::test_header_decode_truncated ... ok +test distributed::tensor_protocol::tests::test_header_decode_wrong_version ... ok +test distributed::tensor_protocol::tests::test_header_encode_decode_roundtrip ... ok +test distributed::tensor_protocol::tests::test_header_num_elements ... ok +test distributed::tensor_protocol::tests::test_header_with_empty_metadata ... ok +test distributed::tensor_protocol::tests::test_header_with_flags ... ok +test distributed::tensor_protocol::tests::test_tensor_dtype_display ... ok +test distributed::tensor_protocol::tests::test_tensor_dtype_element_size ... ok +test distributed::tensor_protocol::tests::test_tensor_dtype_roundtrip ... ok +test distributed::tensor_protocol::tests::test_tensor_flags_default ... ok +test distributed::tensor_protocol::tests::test_tensor_flags_set_and_check ... ok +test distributed::tensor_protocol::tests::test_tensor_kind_display ... ok +test distributed::tensor_protocol::tests::test_tensor_kind_invalid ... ok +test distributed::tensor_protocol::tests::test_tensor_kind_roundtrip ... ok +test distributed::tensor_quantize::tests::test_bandwidth_ratio ... ok +test distributed::tensor_quantize::tests::test_f16_infinity ... ok +test distributed::tensor_quantize::tests::test_f16_roundtrip_basic ... ok +test distributed::tensor_quantize::tests::test_f16_zero ... ok +test distributed::tensor_quantize::tests::test_quantize_dequantize_int4_accuracy ... ok +test distributed::tensor_quantize::tests::test_quantize_dequantize_int4_bandwidth ... ok +test distributed::tensor_quantize::tests::test_quantize_dequantize_int4_zeros ... ok +test distributed::tensor_quantize::tests::test_quantize_dequantize_int8_accuracy ... ok +test distributed::tensor_quantize::tests::test_quantize_dequantize_int8_bandwidth ... ok +test distributed::tensor_quantize::tests::test_quantize_dequantize_int8_zeros ... ok +test distributed::tensor_quantize::tests::test_quantize_int4_non_group_aligned ... ok +test distributed::tensor_quantize::tests::test_quantize_int4_odd_elements ... ok +test distributed::tensor_quantize::tests::test_quantize_int8_non_group_aligned ... ok +test distributed::tensor_serialize::tests::test_all_tensor_kinds ... ok +test distributed::tensor_serialize::tests::test_deserialize_truncated_data ... ok +test distributed::tensor_serialize::tests::test_serialize_data_size_mismatch ... ok +test distributed::tensor_serialize::tests::test_serialize_deserialize_float16_bitexact ... ok +test distributed::tensor_serialize::tests::test_serialize_deserialize_float32_bitexact ... ok +test distributed::tensor_serialize::tests::test_serialize_deserialize_multidim ... ok +test distributed::tensor_serialize::tests::test_serialize_quantization_wrong_dtype ... ok +test distributed::tensor_serialize::tests::test_serialize_to_bytes ... ok +test distributed::tensor_serialize::tests::test_serialize_with_compression ... ok +test distributed::tensor_serialize::tests::test_serialize_with_compression_and_quantization ... ok +test distributed::tensor_serialize::tests::test_serialize_with_int4_quantization ... ok +test distributed::tensor_serialize::tests::test_serialize_with_int8_quantization ... ok +test distributed::test_harness::tests::add_nodes_to_cluster ... ok +test distributed::test_harness::tests::create_empty_cluster ... ok +test distributed::test_harness::tests::mock_transfer_latency_benchmark ... ok +test distributed::test_harness::tests::node_ids_returns_all_ids ... ok +test distributed::test_harness::tests::nodes_can_communicate ... ok +test distributed::test_harness::tests::partition_prevents_communication ... ok +test distributed::test_harness::tests::perf_baseline_fails_on_regression ... ok +test distributed::test_harness::tests::perf_baseline_passes_within_threshold ... ok +test distributed::test_harness::tests::remove_node_from_cluster ... ok +test distributed::test_harness::tests::roles_are_preserved ... ok +test distributed::test_harness::tests::serialization_roundtrip_benchmark ... ok +test distributed::test_harness::tests::shutdown_stops_all_nodes ... ok +test distributed::test_harness::tests::wait_for_status_succeeds ... ok +test distributed::test_harness::tests::wait_for_status_times_out ... ok +test distributed::thunderbolt_transport::tests::thunderbolt_backend_type_and_availability_query ... ok +test distributed::thunderbolt_transport::tests::thunderbolt_config_defaults ... ok +test distributed::thunderbolt_transport::tests::thunderbolt_config_from_bind_address_uses_matching_interface ... ok +test distributed::thunderbolt_transport::tests::thunderbolt_parse_ifconfig_addresses ... ok +test distributed::thunderbolt_transport::tests::thunderbolt_parse_networksetup_output ... ok +test distributed::thunderbolt_transport::tests::thunderbolt_rejects_non_thunderbolt_bind_address ... ok +test distributed::thunderbolt_transport::tests::thunderbolt_resolve_bind_address_from_specific_host ... ok +test distributed::thunderbolt_transport::tests::thunderbolt_resolve_bind_address_from_unspecified_host ... ok +test distributed::transport::tests::message_kind_rejects_unknown ... ok +test distributed::transport::tests::message_kind_roundtrip ... ok +test distributed::transport::tests::transport_backend_display ... ok +test distributed::transport::tests::transport_backend_from_str_accepts_rdma ... ok +test distributed::transport::tests::transport_backend_from_str_reports_valid_set_in_error ... ok +test distributed::transport::tests::transport_message_payload_size ... ok +test downloader::completeness::tests::absent_when_not_a_dir_or_no_config ... ok +test downloader::completeness::tests::complete_malformed_index_with_weights ... ok +test downloader::completeness::tests::complete_sharded_all_present ... ok +test downloader::completeness::tests::complete_single_file ... ok +test downloader::completeness::tests::complete_stale_index_repackaged_quant ... ok +test downloader::completeness::tests::incomplete_malformed_index_no_weights ... ok +test downloader::completeness::tests::incomplete_sharded_missing_shard ... ok +test downloader::completeness::tests::incomplete_sharded_zero_byte_shard ... ok +test downloader::completeness::tests::incomplete_single_file_no_weights ... ok +test downloader::completeness::tests::traversal_shard_name_counts_as_missing ... ok +test downloader::errors::tests::parses_authentication_failure ... ok +test downloader::errors::tests::parses_legacy_status_code_format ... ok +test downloader::errors::tests::parses_ureq_3x_format ... ok +test downloader::errors::tests::rejects_out_of_range_codes ... ok +test downloader::errors::tests::returns_none_for_non_http_errors ... ok +test downloader::model_format::tests::a_bare_dot_gguf_name_is_not_treated_as_a_file ... ok +test downloader::model_format::tests::a_directory_named_like_a_gguf_file_still_resolves ... ok +test downloader::model_format::tests::a_real_gguf_file_is_still_rejected ... ok +test downloader::model_format::tests::a_urls_userinfo_is_redacted_before_it_reaches_a_diagnostic ... ok +test downloader::model_format::tests::generic_url_diagnostic_mentions_registries ... ok +test downloader::model_format::tests::gguf_diagnostic_names_the_value_the_reason_and_a_replacement ... ok +test downloader::model_format::tests::huggingface_repo_is_extracted_from_every_supported_url_shape ... ok +test downloader::model_format::tests::huggingface_url_diagnostic_offers_the_exact_repo_id ... ok +test downloader::model_format::tests::huggingface_urls_are_classified_separately_from_other_urls ... ok +test downloader::model_format::tests::mlx_references_are_not_classified_as_unsupported ... ok +test downloader::model_format::tests::no_format_diagnostic_carries_a_run_of_collapsed_indentation ... ok +test downloader::model_format::tests::non_huggingface_urls_yield_no_repo_id ... ok +test downloader::model_format::tests::plain_gguf_paths_are_classified_as_gguf ... ok +test downloader::model_format::tests::quant_tags_and_split_suffixes_are_stripped_from_the_suggested_name ... ok +test downloader::model_format::tests::redaction_leaves_a_credential_free_value_untouched ... ok +test downloader::model_format::tests::split_diagnostic_says_splits_are_not_reassembled ... ok +test downloader::model_format::tests::split_shard_names_are_classified_as_split ... ok +test downloader::model_format::tests::supported_references_pass_the_gate ... ok +test downloader::model_format::tests::the_url_diagnostic_does_not_echo_a_credential ... ok +test downloader::progress::tests::ci_one_suppresses_bars ... ok +test downloader::progress::tests::ci_true_suppresses_bars ... ok +test downloader::progress::tests::hidden_multi_progress_when_suppressed ... ok +test downloader::progress::tests::mlxcel_no_progress_suppresses_bars ... ok +test downloader::progress::tests::mlxcel_no_progress_takes_precedence_over_other_vars ... ok +test downloader::progress::tests::no_color_suppresses_bars ... ok +test downloader::resolver::tests::a_model_url_shaped_value_is_rejected_with_the_repo_id_to_use ... ok +test downloader::resolver::tests::an_existing_gguf_file_is_rejected_before_the_existing_path_branch ... ok +test downloader::resolver::tests::bare_name_expands_to_default_org_and_reuses_store ... ok +test downloader::resolver::tests::bare_name_honors_default_org_override ... ok +test downloader::resolver::tests::bare_name_with_invalid_default_org_errors_without_network ... ok +test downloader::resolver::tests::default_org_falls_back_when_unset_or_blank ... ok +test downloader::resolver::tests::existing_directory_path_is_used_verbatim ... ok +test downloader::resolver::tests::existing_file_path_is_used_verbatim ... ok +test downloader::resolver::tests::existing_path_shaped_like_repo_id_is_still_used_verbatim ... ok +test downloader::resolver::tests::legacy_cwd_wins_over_hf_and_store ... ok +test downloader::resolver::tests::legacy_models_dir_basename_roundtrip ... ok +test downloader::resolver::tests::locate_ignores_incomplete_legacy_dir ... ok +test downloader::resolver::tests::locate_ignores_incomplete_store_dir ... ok +test downloader::resolver::tests::locate_prefers_legacy_cwd_models_when_complete ... ok +test downloader::resolver::tests::locate_returns_none_on_total_miss ... ok +test downloader::resolver::tests::locate_reuses_hf_cache_snapshot ... ok +test downloader::resolver::tests::locate_skips_legacy_cwd_dir_for_a_revision_request ... ok +test downloader::resolver::tests::locate_skips_mlxcel_store_for_a_revision_request ... ok +test downloader::resolver::tests::locate_uses_mlxcel_store_when_complete ... ok +test downloader::resolver::tests::locate_uses_override_models_root_for_store_probe ... ok +test downloader::resolver::tests::no_revision_with_existing_local_path_is_unchanged ... ok +test downloader::resolver::tests::nonexistent_multi_segment_path_errors_clearly ... ok +test downloader::resolver::tests::nonexistent_non_repo_id_value_errors_clearly ... ok +test downloader::resolver::tests::normalize_bare_name_falls_back_on_blank_default_org ... ok +test downloader::resolver::tests::normalize_bare_name_honors_default_org_override ... ok +test downloader::resolver::tests::normalize_bare_name_prepends_default_org ... ok +test downloader::resolver::tests::normalize_bare_name_with_invalid_default_org_errors ... ok +test downloader::resolver::tests::normalize_passes_through_owner_name_unchanged ... ok +test downloader::resolver::tests::offline_mode_leaves_an_existing_local_path_alone ... ok +test downloader::resolver::tests::offline_mode_still_answers_from_the_mlxcel_store ... ok +test downloader::resolver::tests::offline_mode_turns_a_repo_id_miss_into_an_error_without_downloading ... ok +test downloader::resolver::tests::repo_id_shape_accepts_owner_name ... ok +test downloader::resolver::tests::repo_id_shape_matches_locked_dot_owner_spec ... ok +test downloader::resolver::tests::repo_id_shape_rejects_non_owner_name ... ok +test downloader::resolver::tests::resolve_model_source_reuses_store_without_download ... ok +test downloader::resolver::tests::resolve_model_source_with_override_reuses_override_store ... ok +test downloader::resolver::tests::revision_request_refuses_to_download_into_an_occupied_store ... ok +test downloader::resolver::tests::revision_with_existing_local_path_errors ... ok +test downloader::resolver::tests::the_offline_diagnostic_reports_the_revision_when_one_was_requested ... ok +test downloader::store::tests::dir_size_sums_nested_files ... ok +test downloader::store::tests::hf_cache_snapshot_none_when_incomplete ... ok +test downloader::store::tests::hf_cache_snapshot_none_when_repo_absent ... ok +test downloader::store::tests::hf_cache_snapshot_resolves_branch_via_refs ... ok +test downloader::store::tests::hf_cache_snapshot_resolves_direct_commit_hash ... ok +test downloader::store::tests::hf_cache_snapshot_uses_hf_home_hub_subdir ... ok +test downloader::store::tests::hf_repo_folder_matches_hf_layout ... ok +test downloader::store::tests::list_models_in_empty_when_no_models_dir ... ok +test downloader::store::tests::list_models_in_finds_owner_name_and_bare ... ok +test downloader::store::tests::list_models_in_skips_incomplete_dirs ... ok +test downloader::store::tests::list_models_with_override_walks_override_root_without_models_subdir ... ok +test downloader::store::tests::model_dir_in_handles_bare_repo_id ... ok +test downloader::store::tests::model_dir_in_rejects_path_traversal ... ok +test downloader::store::tests::model_dir_in_separates_owners_with_same_name ... ok +test downloader::store::tests::model_dir_uses_owner_name_layout_under_override ... ok +test downloader::store::tests::model_dir_with_override_rejects_path_traversal_under_override_root ... ok +test downloader::store::tests::models_root_empty_env_var_is_ignored ... ok +test downloader::store::tests::models_root_env_var_beats_cache_dir_with_no_models_subdir ... ok +test downloader::store::tests::models_root_falls_back_to_cache_dir_models_subdir ... ok +test downloader::store::tests::models_root_inline_override_beats_env_and_cache_dir ... ok +test downloader::store::tests::remove_model_in_contains_traversal_to_store ... ok +test downloader::store::tests::remove_model_in_deletes_store_dir ... ok +test downloader::store::tests::remove_model_in_not_found_when_absent_everywhere ... ok +test downloader::store::tests::remove_model_in_reports_hf_cache_only_without_deleting ... ok +test downloader::store::tests::remove_model_with_override_contains_traversal_to_override_root ... ok +test downloader::store::tests::remove_model_with_override_deletes_from_override_root ... ok +test downloader::store::tests::store_root_honors_mlxcel_cache_dir_override ... ok +test downloader::tests::allow_list_handles_subdirectories ... ok +test downloader::tests::allow_list_includes_configs_and_tokenizer_files ... ok +test downloader::tests::allow_list_includes_safetensors_and_index ... ok +test downloader::tests::allow_list_includes_tiktoken ... ok +test downloader::tests::allow_list_still_accepts_normal_subdir_paths ... ok +test downloader::tests::anonymous_fd_download_maps_metadata_status_without_publishing ... ok +test downloader::tests::anonymous_fd_download_offline_rejects_before_metadata_request ... ok +test downloader::tests::anonymous_fd_download_rejects_disconnect_truncation_before_publish ... ok +test downloader::tests::anonymous_fd_download_rejects_metadata_without_weight_files_before_transfer ... ok +test downloader::tests::anonymous_fd_download_rejects_same_size_checksum_mismatch_before_publish ... ok +test downloader::tests::anonymous_fd_download_sends_no_ambient_credentials_on_metadata_head_or_get ... ok +test downloader::tests::anonymous_probe_clears_saved_hf_cache_token ... ok +test downloader::tests::bare_name_download_dest_lands_under_default_org ... ok +test downloader::tests::cleanup_stale_partials_handles_missing_dir_gracefully ... ok +test downloader::tests::cleanup_stale_partials_ignores_directories ... ok +test downloader::tests::cleanup_stale_partials_removes_aged_orphans ... ok +test downloader::tests::default_local_dir_is_global_store ... ok +test downloader::tests::deny_list_excludes_docs_and_metadata ... ok +test downloader::tests::deny_list_excludes_media ... ok +test downloader::tests::deny_list_excludes_pytorch_and_other_formats ... ok +test downloader::tests::deny_list_excludes_source_code ... ok +test downloader::tests::deny_list_rejects_absolute_paths ... ok +test downloader::tests::deny_list_rejects_backslash_separators ... ok +test downloader::tests::deny_list_rejects_empty_or_dot_components ... ok +test downloader::tests::deny_list_rejects_parent_traversal ... ok +test downloader::tests::download_repo_inside_runtime_errors_instead_of_aborting ... ok +test downloader::tests::download_repo_rejects_non_ascii_token ... ok +test downloader::tests::encode_path_segments_handles_empty_input ... ok +test downloader::tests::explicit_local_dir_is_respected ... ok +test downloader::tests::extra_ca_certs_defaults_to_empty_when_unset ... ok +test downloader::tests::extra_ca_certs_errors_on_malformed_pem ... ok +test downloader::tests::extra_ca_certs_errors_on_missing_file ... ok +test downloader::tests::extra_ca_certs_errors_on_non_utf8_value ... ok +test downloader::tests::extra_ca_certs_errors_on_unreadable_file ... ok +test downloader::tests::extra_ca_certs_loads_multiple_certs_from_bundle ... ok +test downloader::tests::extra_ca_certs_loads_single_cert_from_file ... ok +test downloader::tests::extra_ca_certs_rejects_oversized_bundle_before_parsing ... ok +test downloader::tests::extra_ca_certs_treats_whitespace_value_as_unset ... ok +test downloader::tests::fd_relative_download_parent_refuses_symlink_component ... ok +test downloader::tests::fd_stream_enospc_writer_cleans_partial_without_publishing ... ok +test downloader::tests::fd_stream_timeout_keeps_partial_private_and_unpublished ... ok +test downloader::tests::file_url_encodes_repo_id_and_revision ... ok +test downloader::tests::file_url_percent_encodes_reserved_characters_in_filename ... ok +test downloader::tests::file_url_preserves_safe_subdir_paths ... ok +test downloader::tests::from_args_carries_all_fields ... ok +test downloader::tests::include_globs_select_only_safe_allow_list_files ... ok +test downloader::tests::live_download_smoke_test ... ignored, hits the real Hugging Face Hub; CI must not depend on network access +test downloader::tests::local_dir_wins_over_models_dir_override ... ok +test downloader::tests::malicious_siblings_payload_is_filtered_out ... ok +test downloader::tests::manifest_bounds_reject_oversized_names_and_file_lists ... ok +test downloader::tests::models_dir_override_places_snapshot_without_models_subdir ... ok +test downloader::tests::open_tempfile_no_symlink_refuses_pre_existing_regular_file ... ok +test downloader::tests::open_tempfile_no_symlink_refuses_pre_staged_symlink ... ok +test downloader::tests::open_tempfile_no_symlink_succeeds_on_clean_path ... ok +test downloader::tests::repo_basename_strips_owner ... ok +test downloader::tests::require_secure_endpoint_allows_https_with_token ... ok +test downloader::tests::require_secure_endpoint_allows_plaintext_anonymous ... ok +test downloader::tests::require_secure_endpoint_honors_opt_out ... ok +test downloader::tests::require_secure_endpoint_refuses_plaintext_with_token ... ok +test downloader::tests::require_secure_endpoint_treats_empty_opt_out_as_unset ... ok +test downloader::tests::selected_safetensors_requires_lfs_sha256 ... ok +test downloader::tests::snapshot_complete_rejects_zero_byte_files ... ok +test downloader::tests::snapshot_complete_requires_config_json ... ok +test downloader::tests::stream_file_cleans_up_tempfile_on_error ... ok +test downloader::tests::stream_file_rejects_known_size_mismatch_before_publish ... ok +test downloader::tests::token_resolution_anonymous_mode_ignores_explicit_and_env_tokens ... ok +test downloader::tests::token_resolution_anonymous_when_unset ... ok +test downloader::tests::token_resolution_explicit_wins ... ok +test downloader::tests::token_resolution_falls_back_to_alt_env ... ok +test downloader::tests::token_resolution_hf_token_env ... ok +test downloader::tests::token_resolution_treats_empty_as_anonymous ... ok +test downloader::tests::validate_token_rejects_control_chars ... ok +test embeddings::engine_tests::dimensions_truncates_and_renormalizes ... ok +test embeddings::engine_tests::embed_texts_rejects_empty_strings ... ok +test embeddings::engine_tests::embed_texts_uses_the_tokenizer_and_counts_tokens ... ok +test embeddings::engine_tests::embed_tokens_rejects_out_of_vocab_ids ... ok +test embeddings::engine_tests::embed_tokens_returns_unit_vectors_in_request_order_across_micro_batches ... ok +test embeddings::engine_tests::engine_reports_stub_limits ... ok +test embeddings::engine_tests::image_input_is_rejected_by_text_only_models ... ok +test embeddings::engine_tests::multi_vector_reply_has_one_row_per_real_token ... ok +test embeddings::loader_tests::generation_loader_bails_for_embedding_checkpoints ... ok +test embeddings::loader_tests::load_embedding_model_rejects_generation_checkpoints ... ok +test embeddings::loader_tests::load_embedding_model_reports_missing_weights_for_a_ported_family ... ok +test embeddings::loader_tests::max_length_takes_the_smallest_declared_bound ... ok +test embeddings::loader_tests::pad_token_and_vocab_size_resolve_from_configs ... ok +test embeddings::loader_tests::quantization_params_reads_group_size_and_bits ... ok +test embeddings::loader_tests::subfolder_loader_prefixes_module_folders_and_skips_adapters ... ok +test embeddings::loader_tests::subfolder_loader_requires_top_level_weights ... ok +test embeddings::loader_tests::unported_family_error_names_the_family_and_the_route ... ok +test embeddings::maxsim::maxsim_tests::maxsim_identity_equals_query_length ... ok +test embeddings::maxsim::maxsim_tests::maxsim_is_asymmetric ... ok +test embeddings::maxsim::maxsim_tests::maxsim_of_an_empty_side_is_zero ... ok +test embeddings::maxsim::maxsim_tests::maxsim_ranks_the_matching_document_first ... ok +test embeddings::maxsim::maxsim_tests::mlx_maxsim_matches_cpu ... ok +test embeddings::maxsim::maxsim_tests::mlx_maxsim_rejects_a_non_matrix_input ... ok +test embeddings::normalize::normalize_tests::a_p_norm_above_two_uses_that_p ... ok +test embeddings::normalize::normalize_tests::a_zero_vector_normalizes_to_zeros_rather_than_nan ... ok +test embeddings::normalize::normalize_tests::euclidean_matches_the_pooling_kernel_it_delegates_to ... ok +test embeddings::normalize::normalize_tests::euclidean_produces_a_unit_vector ... ok +test embeddings::normalize::normalize_tests::max_absolute_rescales_into_the_int16_range ... ok +test embeddings::normalize::normalize_tests::none_leaves_the_vector_untouched ... ok +test embeddings::normalize::normalize_tests::rows_are_normalized_independently ... ok +test embeddings::normalize::normalize_tests::taxicab_produces_a_unit_l1_vector ... ok +test embeddings::normalize::normalize_tests::the_default_is_euclidean_and_the_model_flag_maps_onto_the_domain ... ok +test embeddings::normalize::normalize_tests::the_domain_accepts_minus_one_and_above ... ok +test embeddings::pooling_tests::cls_pooling_picks_first_real_token_with_left_padding ... ok +test embeddings::pooling_tests::lasttoken_all_padding_row_uses_last_index ... ok +test embeddings::pooling_tests::lasttoken_pooling_left_padding ... ok +test embeddings::pooling_tests::lasttoken_pooling_right_padding ... ok +test embeddings::pooling_tests::legacy_pooling_config_maps_each_flag ... ok +test embeddings::pooling_tests::max_pooling_ignores_padding ... ok +test embeddings::pooling_tests::mean_pooling_all_padding_row_is_zero_not_nan ... ok +test embeddings::pooling_tests::mean_pooling_ignores_padding ... ok +test embeddings::pooling_tests::new_style_pooling_config ... ok +test embeddings::pooling_tests::normalize_unit_norm_and_eps_guard ... ok +test embeddings::pooling_tests::pooling_config_read_reports_missing_file_as_none ... ok +test embeddings::pooling_tests::pooling_mode_parses_and_displays ... ok +test embeddings::pooling_tests::resolve_pooling_mode_prefers_config_then_default_then_env ... ok +test embeddings::pooling_tests::truncate_dimensions_renormalizes ... ok +test embeddings::pooling_tests::unsupported_pooling_mode_is_an_error ... ok +test embeddings::real_checkpoint_tests::every_embedding_family_has_a_forward_pass ... ok +test embeddings::real_checkpoint_tests::generation_loader_rejects_real_embedding_checkpoints ... ok +test embeddings::real_checkpoint_tests::local_embedding_checkpoints_detect_to_their_families ... ok +test embeddings::real_checkpoint_tests::minilm_is_detected_as_bert_embedding_with_mean_pooling ... ok +test embeddings::real_checkpoint_tests::minilm_subfolder_loader_reads_top_level_shard_and_prefixes_dense_folder ... ok +test embeddings::real_checkpoint_tests::minilm_tokenizer_batch_is_right_padded_with_special_tokens ... ok +test embeddings::real_checkpoint_tests::qwen3_embedding_is_detected_by_pooling_layout_with_lasttoken ... ok +test embeddings::real_checkpoint_tests::qwen3_embedding_tokenizer_batch_keeps_trailing_endoftext ... ok +test embeddings::tokenize_tests::encode_batch_pads_to_fixed_width_when_requested ... ok +test embeddings::tokenize_tests::encode_batch_right_pads_and_counts_real_tokens ... ok +test embeddings::tokenize_tests::encode_batch_token_type_ids_for_pairs ... ok +test embeddings::tokenize_tests::encode_batch_truncates_keeping_trailing_special_token ... ok +test embeddings::tokenize_tests::from_rows_fills_missing_segment_ids_with_zeros ... ok +test embeddings::tokenize_tests::strip_padding_and_truncation_removes_builtin_settings ... ok +test embeddings::tokenize_tests::truncate_keeps_only_trailing_specials_and_handles_tiny_limits ... ok +test execution::config_fields::tests::alias_lists_prefer_modern_spellings_over_legacy ... ok +test execution::config_fields::tests::multi_query_false_or_absent_falls_back_to_mha ... ok +test execution::config_fields::tests::multi_query_true_is_one_kv_head ... ok +test execution::config_fields::tests::multi_query_with_zero_heads_stays_at_one ... ok +test execution::config_fields::tests::non_boolean_multi_query_is_not_multi_query ... ok +test execution::config_fields::tests::numeric_kv_head_field_outranks_multi_query ... ok +test execution::config_fields::tests::openai_era_spellings_resolve ... ok +test execution::config_fields::tests::text_config_unwraps_vlm_nesting ... ok +test execution::kv_arch::tests::batch_scales_linearly ... ok +test execution::kv_arch::tests::ctx_rounds_up_to_256 ... ok +test execution::kv_arch::tests::gemma3_explicit_head_fields_win_over_defaults ... ok +test execution::kv_arch::tests::gemma3_missing_head_fields_use_hf_defaults ... ok +test execution::kv_arch::tests::gpt2_n_layer_and_n_embd_classify_as_standard_mha ... ok +test execution::kv_arch::tests::gpt_bigcode_multi_query_false_is_full_mha ... ok +test execution::kv_arch::tests::gpt_bigcode_multi_query_is_one_kv_head ... ok +test execution::kv_arch::tests::gpt_bigcode_over_reservation_scales_with_n_head ... ok +test execution::kv_arch::tests::gqa_head_dim_from_hidden_when_absent ... ok +test execution::kv_arch::tests::int8_halves_every_arch ... ok +test execution::kv_arch::tests::jamba_counts_only_attention_layers ... ok +test execution::kv_arch::tests::layer_types_array_counts_global_vs_sliding ... ok +test execution::kv_arch::tests::layer_types_global_layers_use_their_own_geometry ... ok +test execution::kv_arch::tests::layers_block_type_array_counts_attention ... ok +test execution::kv_arch::tests::missing_architecture_fields_returns_none ... ok +test execution::kv_arch::tests::mla_v2_uses_decompressed_per_head ... ok +test execution::kv_arch::tests::mla_v3_uses_compressed_latent ... ok +test execution::kv_arch::tests::modern_naming_families_are_unchanged ... ok +test execution::kv_arch::tests::nemotron_h_pattern_counts_star_layers ... ok +test execution::kv_arch::tests::numeric_kv_heads_outrank_multi_query_flag ... ok +test execution::kv_arch::tests::pure_ssm_has_zero_kv ... ok +test execution::kv_arch::tests::qwen3_next_interval_with_mlp_only ... ok +test execution::kv_arch::tests::recurrent_gemma_attention_layers_are_windowed ... ok +test execution::kv_arch::tests::sliding_window_is_a_massive_saving_vs_flat ... ok +test execution::kv_arch::tests::sliding_window_pattern_splits_global_and_windowed ... ok +test execution::kv_arch::tests::standard_matches_flat_formula ... ok +test execution::kv_arch::tests::unwindowed_estimate_sizes_every_layer_at_the_full_context ... ok +test execution::kv_arch::tests::vlm_text_config_is_used ... ok +test execution::kv_cache_advisor::tests::advise_classifies_standard_config_for_all_ranges ... ok +test execution::kv_cache_advisor::tests::advise_returns_empty_for_missing_config ... ok +test execution::kv_cache_advisor::tests::allowlisted_family_long_suggests_symmetric_turbo4 ... ok +test execution::kv_cache_advisor::tests::alternate_naming_non_power_of_two_head_dim_withholds_turbo ... ok +test execution::kv_cache_advisor::tests::alternate_naming_power_of_two_head_dim_keeps_turbo ... ok +test execution::kv_cache_advisor::tests::context_range_bucketing ... ok +test execution::kv_cache_advisor::tests::default_kv_cache_mode_unchanged_without_opt_in ... ok +test execution::kv_cache_advisor::tests::headline_includes_also_consider_when_present ... ok +test execution::kv_cache_advisor::tests::latent_mla_families_are_advised_fp16_because_the_binary_refuses_the_rest ... ok +test execution::kv_cache_advisor::tests::mla_uses_int8_never_turbo ... ok +test execution::kv_cache_advisor::tests::non_power_of_two_head_dim_withholds_turbo ... ok +test execution::kv_cache_advisor::tests::openai_era_naming_derives_head_dim_for_turbo_guard ... ok +test execution::kv_cache_advisor::tests::openai_era_naming_produces_advice ... ok +test execution::kv_cache_advisor::tests::power_of_two_head_dim_keeps_turbo ... ok +test execution::kv_cache_advisor::tests::pure_ssm_is_always_fp16 ... ok +test execution::kv_cache_advisor::tests::recommendation_is_always_an_allowed_kv_cache_mode ... ok +test execution::kv_cache_advisor::tests::render_block_empty_for_no_advice ... ok +test execution::kv_cache_advisor::tests::render_block_states_advisory_and_no_weight_change ... ok +test execution::kv_cache_advisor::tests::short_context_is_always_fp16 ... ok +test execution::kv_cache_advisor::tests::standard_long_non_allowlisted_never_symmetric_turbo4 ... ok +test execution::kv_cache_advisor::tests::standard_medium_suggests_int8_then_delegated ... ok +test execution::kv_cache_advisor::tests::symmetric_turbo4_only_for_allowlisted_families ... ok +test execution::memory_estimate::inflight_tests::auto_kv_budget_leaves_room_for_the_inflight_reserve ... ok +test execution::memory_estimate::inflight_tests::default_budget_and_env_name_match_the_overlay_source ... ok +test execution::memory_estimate::inflight_tests::non_rocm_estimate_reserves_nothing_for_inflight ... ok +test execution::memory_estimate::inflight_tests::reserve_parser_follows_strtoull_where_the_overlay_does ... ok +test execution::memory_estimate::inflight_tests::reserve_parser_matches_the_overlay_for_the_specified_inputs ... ok +test execution::memory_estimate::tests::a_zero_allocator_cap_is_unset_not_a_zero_budget ... ok +test execution::memory_estimate::tests::activation_dims_default_intermediate_and_vocab ... ok +test execution::memory_estimate::tests::activation_grows_with_batch_through_the_full_estimate ... ok +test execution::memory_estimate::tests::activation_is_capped_by_prefill_chunk ... ok +test execution::memory_estimate::tests::activation_prefill_span_handles_a_disabled_chunk ... ok +test execution::memory_estimate::tests::activation_scales_linearly_with_batch ... ok +test execution::memory_estimate::tests::an_env_limit_answers_without_touching_the_allocator ... ok +test execution::memory_estimate::tests::auto_kv_budget_inverts_the_fit_inequality ... ok +test execution::memory_estimate::tests::auto_kv_budget_saturates_to_zero_when_overcommitted ... ok +test execution::memory_estimate::tests::available_memory_honors_env_limit_before_runtime_init ... ok +test execution::memory_estimate::tests::available_memory_honors_short_suffix_env_limit ... ok +test execution::memory_estimate::tests::compute_activation_bytes_is_streaming_plus_logits ... ok +test execution::memory_estimate::tests::compute_runtime_headroom_default_factor_yields_twenty_percent ... ok +test execution::memory_estimate::tests::compute_runtime_headroom_disabled_below_or_at_one ... ok +test execution::memory_estimate::tests::env_limit_wins_over_every_other_source ... ok +test execution::memory_estimate::tests::estimate_falls_back_to_analytical_without_safetensors ... ok +test execution::memory_estimate::tests::estimate_falls_back_to_seven_billion_with_no_config ... ok +test execution::memory_estimate::tests::estimate_scales_kv_cache_by_batch ... ok +test execution::memory_estimate::tests::estimate_total_includes_activation_reserve ... ok +test execution::memory_estimate::tests::estimate_uses_exact_safetensors_when_index_present ... ok +test execution::memory_estimate::tests::fits_flips_when_total_exceeds_available ... ok +test execution::memory_estimate::tests::format_bytes_roundtrip_gib_mib_small ... ok +test execution::memory_estimate::tests::format_estimate_contains_breakdown_fields ... ok +test execution::memory_estimate::tests::inspect_family_slug_is_classifier_derived_not_raw_model_type ... ok +test execution::memory_estimate::tests::inspect_family_slug_matches_arch_registry_id ... ok +test execution::memory_estimate::tests::inspect_report_copies_estimate_contract ... ok +test execution::memory_estimate::tests::inspect_report_serializes_nulls_and_stable_key_order ... ok +test execution::memory_estimate::tests::int8_kv_halves_kv_bytes ... ok +test execution::memory_estimate::tests::kv_cache_bytes_per_token_is_nonzero_for_real_config ... ok +test execution::memory_estimate::tests::kv_params_agree_with_classifier_for_openai_era_naming ... ok +test execution::memory_estimate::tests::kv_params_prefer_explicit_head_dim_when_hidden_division_differs ... ok +test execution::memory_estimate::tests::nothing_detectable_resolves_to_zero ... ok +test execution::memory_estimate::tests::openai_era_naming_yields_nonzero_kv_and_activation ... ok +test execution::memory_estimate::tests::paged_block_bytes_matches_uniform_geometry ... ok +test execution::memory_estimate::tests::paged_block_bytes_none_on_zero_or_missing_geometry ... ok +test execution::memory_estimate::tests::paged_block_bytes_resolves_for_openai_era_naming ... ok +test execution::memory_estimate::tests::paged_budget_directive_parses_auto_and_bytes ... ok +test execution::memory_estimate::tests::paged_budget_directive_parses_disable_keywords ... ok +test execution::memory_estimate::tests::paged_slab_blocks_malformed_env_derives_like_unset ... ok +test execution::memory_estimate::tests::parse_optional_memory_size_accepts_the_runtime_grammar ... ok +test execution::memory_estimate::tests::parse_optional_memory_size_rejects_non_positive_and_non_finite ... ok +test execution::memory_estimate::tests::quant_hint_label_distinguishes_modes ... ok +test execution::memory_estimate::tests::resolve_block_budget_auto_scales_with_available_memory ... ok +test execution::memory_estimate::tests::resolve_block_budget_below_the_workspace_reserve_is_zero_blocks ... ok +test execution::memory_estimate::tests::resolve_block_budget_explicit_bytes_floors_to_block_count ... ok +test execution::memory_estimate::tests::resolve_paged_block_budget_disabled_is_unbounded ... ok +test execution::memory_estimate::tests::slack_and_overflow_are_mutually_exclusive ... ok +test execution::memory_estimate::tests::the_allocator_cap_wins_when_no_env_limit_is_set ... ok +test execution::memory_estimate::tests::the_v2_workspace_reserve_is_small_and_scales_with_the_head_dim ... ok +test execution::memory_estimate::tests::unified_memory_is_step_three_and_only_reachable_on_apple ... ok +test execution::quant_advisor::tests::advise_quantization_exact_bytes_field_is_none_for_empty_dir ... ok +test execution::quant_advisor::tests::advise_quantization_uses_exact_bytes_from_index ... ok +test execution::quant_advisor::tests::advise_quantization_uses_override_params ... ok +test execution::quant_advisor::tests::detects_bfloat16_from_torch_dtype ... ok +test execution::quant_advisor::tests::estimates_llama3_8b_in_correct_range ... ok +test execution::quant_advisor::tests::estimates_qwen2_0_5b_in_correct_range ... ok +test execution::quant_advisor::tests::format_bytes_gib ... ok +test execution::quant_advisor::tests::format_bytes_mib ... ok +test execution::quant_advisor::tests::format_bytes_small ... ok +test execution::quant_advisor::tests::kv_cache_estimate_prefers_explicit_head_dim ... ok +test execution::quant_advisor::tests::returns_none_for_empty_config ... ok +test execution::quant_advisor::tests::text_config_nested_works ... ok +test execution::runtime::tests::cache_limit_explicit_value_overrides_the_default ... ok +test execution::runtime::tests::cache_limit_garbage_keeps_the_default ... ok +test execution::runtime::tests::cache_limit_unset_applies_the_backend_default ... ok +test execution::runtime::tests::cache_limit_zero_or_none_disables_the_default ... ok +test execution::runtime::tests::checked_init_agrees_with_the_architecture_check_on_this_host ... ok +test execution::runtime::tests::checked_init_agrees_with_the_rocm_architecture_check_on_this_host ... ok +test execution::runtime::tests::initialize_runtime_reports_the_cpu_override_without_hiding_the_backend ... ok +test execution::runtime::tests::parse_memory_size_accepts_every_suffix_spelling ... ok +test execution::runtime::tests::parse_memory_size_bytes ... ok +test execution::runtime::tests::parse_memory_size_fractional_gb ... ok +test execution::runtime::tests::parse_memory_size_fractional_is_exact_floor ... ok +test execution::runtime::tests::parse_memory_size_gb ... ok +test execution::runtime::tests::parse_memory_size_invalid ... ok +test execution::runtime::tests::parse_memory_size_mb ... ok +test execution::runtime::tests::parse_memory_size_rejects_garbage ... ok +test execution::runtime::tests::parse_memory_size_saturates_instead_of_wrapping ... ok +test execution::runtime::tests::parse_runtime_device_accepts_cpu ... ok +test execution::runtime::tests::parse_runtime_device_accepts_gpu_aliases ... ok +test execution::runtime::tests::parse_runtime_device_rejects_unknown_values ... ok +test execution::runtime::tests::resolve_device_separates_backend_availability_from_the_cpu_override ... ok +test execution::runtime::tests::resolve_runtime_device_defaults_to_gpu ... ok +test execution::runtime::tests::resolve_runtime_device_preserves_invalid_override ... ok +test execution::runtime::tests::the_architecture_refusal_only_applies_to_gpu_runs ... ok +test execution::runtime::tests::the_cache_default_leaves_the_memory_limit_the_estimator_reads ... ok +test execution::runtime::tests::the_default_cache_limit_is_rocm_only ... ok +test execution::runtime::tests::warns_only_for_cpu_fallback_on_nvidia_host_without_cuda ... ok +test execution::sampling::tests::build_sampling_config_keeps_dry_sequence_breakers_at_zero_temperature ... ok +test execution::sampling::tests::build_sampling_config_keeps_sampling_fields_when_temperature_is_positive ... ok +test execution::sampling::tests::build_sampling_config_threads_p_less_in_both_branches ... ok +test execution::sampling::tests::build_sampling_config_threads_top_n_sigma_in_both_branches ... ok +test execution::sampling::tests::build_sampling_config_threads_typical_p_in_both_branches ... ok +test execution::sampling::tests::build_sampling_config_uses_greedy_defaults_when_temperature_is_zero ... ok +test lang_analyzer_tests::b4_cache_integration_roundtrip ... ok +test lang_analyzer_tests::b4_cache_real_tokenizer_integration_smoke ... ok +test lang_analyzer_tests::b8_resolve_token_bias_empty_returns_empty ... ok +test lang_analyzer_tests::b8_resolve_token_bias_populates_from_cache ... ok +test lang_analyzer_tests::b8_session_default_bias_is_empty ... ok +test lang_analyzer_tests::b8_session_with_token_bias_caches_map ... ok +test lang_analyzer_tests::b8_speculative_generator_default_bias_is_empty ... ok +test lang_analyzer_tests::b8_speculative_generator_with_token_bias_caches_map ... ok +test lang_analyzer_tests::build_flags_special_tokens ... ok +test lang_analyzer_tests::build_index_from_real_tokenizer_smoke ... ok +test lang_analyzer_tests::build_inverts_by_script ... ok +test lang_analyzer_tests::build_populates_all_tokens ... ok +test lang_analyzer_tests::build_vocab_hash_deterministic ... ok +test lang_analyzer_tests::build_vocab_hash_differs_across_tokenizers ... ok +test lang_analyzer_tests::issue589_can_trim_prompt_cache_empty_slice ... ok +test lang_analyzer_tests::issue589_can_trim_prompt_cache_standard_caches ... ok +test lang_analyzer_tests::issue589_kv_cache_is_trimmable_always_true ... ok +test lang_analyzer_tests::lang_analyze_bpe_prefix_alone_returns_empty ... ok +test lang_analyzer_tests::lang_analyze_bpe_prefix_strips_prefix ... ok +test lang_analyzer_tests::lang_analyze_hangul_and_han ... ok +test lang_analyzer_tests::lang_analyze_hiragana_and_han ... ok +test lang_analyzer_tests::lang_analyze_numeric_is_numeric_flag ... ok +test lang_analyzer_tests::lang_analyze_numeric_returns_empty_scripts ... ok +test lang_analyzer_tests::lang_analyze_punctuation_is_punctuation_flag ... ok +test lang_analyzer_tests::lang_analyze_punctuation_returns_empty_scripts ... ok +test lang_analyzer_tests::lang_analyze_pure_cyrillic ... ok +test lang_analyzer_tests::lang_analyze_pure_han ... ok +test lang_analyzer_tests::lang_analyze_pure_hangul ... ok +test lang_analyzer_tests::lang_analyze_pure_hiragana ... ok +test lang_analyzer_tests::lang_analyze_pure_katakana ... ok +test lang_analyzer_tests::lang_analyze_pure_latin ... ok +test lang_analyzer_tests::lang_analyze_whitespace_is_whitespace_flag ... ok +test lang_analyzer_tests::real_multilingual_tokenizer_populates_non_latin_scripts ... ok +test lang_analyzer_tests::version_constant_is_three ... ok +test lang_bias::tests::cli_lang_bias_replaces_yaml_bias ... ok +test lang_bias::tests::cli_policy_overrides_yaml_policy ... ok +test lang_bias::tests::include_byte_fragments_alone_activates_resolver ... ok +test lang_bias::tests::include_byte_fragments_flag_flips_exception_config ... ok +test lang_bias::tests::include_flags_flip_exception_config ... ok +test lang_bias::tests::parse_bias_f32_special_values ... ok +test lang_bias::tests::parse_duplicate_language_code ... ok +test lang_bias::tests::parse_empty_bias_value ... ok +test lang_bias::tests::parse_empty_language_code ... ok +test lang_bias::tests::parse_positive_float ... ok +test lang_bias::tests::parse_single_neg_inf ... ok +test lang_bias::tests::parse_three_entries_mixed_signs ... ok +test lang_bias::tests::parse_two_entries ... ok +test lang_bias::tests::parse_unknown_language_code ... ok +test lang_bias::tests::parse_unparseable_float ... ok +test lang_bias::tests::parse_whitespace_tolerance ... ok +test lang_bias::tests::resolve_lang_bias_only_returns_some ... ok +test lang_bias::tests::resolve_no_active_flags_returns_none ... ok +test lang_bias::tests::yaml_and_cli_byte_fragments_additive ... ok +test lang_bias::tests::yaml_and_cli_paths_agree_on_multi_cjk_order ... ok +test lang_bias::tests::yaml_bias_block_rejects_a_sequence ... ok +test lang_bias::tests::yaml_duplicate_language_code_is_rejected ... ok +test lang_bias::tests::yaml_empty_bias_block_resolves_to_an_empty_set ... ok +test lang_bias::tests::yaml_include_byte_fragments_resolves ... ok +test lang_bias::tests::yaml_missing_bias_field_defaults_to_empty ... ok +test lang_bias::tests::yaml_multi_cjk_bias_keeps_document_order_across_repeated_resolves ... ok +test lang_bias::tests::yaml_multi_cjk_first_language_wins_on_shared_han_tokens ... ok +test lang_bias::tests::yaml_unknown_top_level_key_errors ... ok +test lang_bias::tests::yaml_well_formed_parses ... ok +test loaded_model_capabilities::tests::image_token_block_info_from_runtime_uses_standard_runtime_path ... ok +test loaded_model_capabilities::tests::standard_image_token_block_info_disables_boi_eoi_when_tokens_are_absent ... ok +test loaded_model_capabilities::tests::standard_image_token_block_info_preserves_vision_module_fields ... ok +test loaded_model_capabilities::tests::vision_module_from_runtime_returns_standard_module_reference ... ok +test loading::config_backed::tests::config_backed_registry_covers_standard_text_models ... ok +test loading::config_backed::tests::config_backed_registry_excludes_special_and_vlm_models ... ok +test loading::config_backed::tests::config_backed_registry_is_driven_by_shared_registration_surface ... ok +test loading::generation_config_tests::generation_defaults_accept_single_eos_and_partial_sampling ... ok +test loading::generation_config_tests::generation_defaults_ignore_malformed_or_out_of_range_fields ... ok +test loading::generation_config_tests::missing_generation_config_returns_empty_defaults ... ok +test loading::generation_config_tests::muse_glimmer_generation_defaults_match_pinned_fixture ... ok +test loading::nonstandard::tests::nonstandard_registry_covers_special_directory_families ... ok +test loading::nonstandard::tests::nonstandard_registry_excludes_standard_and_vlm_families ... ok +test loading::special::tests::adapter_loading_unsupported_message_groups_vlm_families ... ok +test loading::special::tests::adapter_loading_unsupported_message_returns_none_for_text_models ... ok +test loading::special::tests::qwen35_text_config_merges_top_level_quantization ... ok +test loading::special::tests::qwen35_text_config_preserves_nested_quantization ... ok +test loading::special::tests::special_weight_loader_kind_covers_special_families ... ok +test loading::special::tests::special_weight_loader_kind_returns_none_for_config_backed_models ... ok +test loading::tests::context_window_falls_back_to_top_level_when_text_config_lacks_key ... ok +test loading::tests::context_window_is_none_when_absent_or_zero ... ok +test loading::tests::context_window_prefers_nested_text_config_for_vlm ... ok +test loading::tests::context_window_reads_top_level_max_position_embeddings ... ok +test loading::tests::context_window_supports_alternate_keys ... ok +test loading::tests::conv1d_weight_is_channel_last_detects_depthwise_mlx_layout ... ok +test loading::tests::conv2d_weight_is_channel_last_detects_mlx_layout ... ok +test loading::tests::directory_load_route_distinguishes_vlm_nonstandard_and_config_backed ... ok +test loading::tests::directory_load_route_handles_mistral3_llama_fallback ... ok +test loading::tests::directory_load_route_handles_mistral3_mistral4_subtype ... ok +test loading::tests::directory_load_route_handles_mistral3_text_subtype ... ok +test loading::tests::is_ministral3_config_detects_nested_model_type ... ok +test loading::tests::is_ministral3_config_returns_false_without_matching_text_model ... ok +test loading::tests::is_mistral4_config_detects_nested_model_type ... ok +test loading::tests::is_mistral4_config_returns_false_without_matching_text_model ... ok +test loading::tests::is_vlm_model_type_distinguishes_multimodal_variants ... ok +test loading::tests::model_capabilities_distinguish_kind_and_adapter_support ... ok +test loading::tests::model_load_policy_combines_routes_and_capabilities ... ok +test loading::tests::model_load_policy_handles_mistral3_mistral4_wrapper_config ... ok +test loading::tests::model_load_policy_handles_mistral3_text_wrapper_config ... ok +test loading::tests::model_path_str_accepts_utf8_paths ... ok +test loading::tests::model_path_str_rejects_non_utf8_paths ... ok +test loading::tests::parse_eos_token_ids_ignores_invalid_entries ... ok +test loading::tests::parse_eos_token_ids_supports_number_arrays ... ok +test loading::tests::parse_eos_token_ids_supports_single_number ... ok +test loading::tests::qwen35_vlm_kind_matches_supported_model_types ... ok +test loading::tests::read_eos_token_ids_falls_back_to_model_config ... ok +test loading::tests::read_eos_token_ids_falls_back_to_tokenizer_config_ids ... ok +test loading::tests::read_eos_token_ids_prefers_generation_config_over_tokenizer_config ... ok +test loading::tests::read_eos_token_ids_reads_generation_config ... ok +test loading::tests::read_eos_token_ids_resolves_tokenizer_config_eos_token_content ... ok +test loading::tests::read_eos_token_ids_returns_empty_for_missing_file ... ok +test loading::tests::read_model_context_window_reads_config_json ... ok +test loading::tests::read_model_context_window_returns_none_for_missing_file ... ok +test loading::tests::require_qwen35_vlm_kind_rejects_non_vlm_variants ... ok +test loading::tests::resolve_model_dir_keeps_directory_paths ... ok +test loading::tests::resolve_model_dir_uses_parent_for_model_files ... ok +test loading::tests::weight_load_route_distinguishes_loader_strategies ... ok +test loading::vlm::cohere_compass::tests::explicit_pixel_keys_win_over_the_size_block ... ok +test loading::vlm::cohere_compass::tests::inverted_bounds_fall_back ... ok +test loading::vlm::cohere_compass::tests::no_sidecar_falls_back_to_the_family_defaults ... ok +test loading::vlm::cohere_compass::tests::preprocessor_config_is_the_fallback ... ok +test loading::vlm::cohere_compass::tests::the_nested_processor_config_block_wins_over_preprocessor_config ... ok +test loading::vlm::deepseekocr::tests::a_declared_language_config_block_beats_the_inherited_root_block ... ok +test loading::vlm::deepseekocr::tests::a_missing_language_config_names_the_family ... ok +test loading::vlm::deepseekocr::tests::a_partial_quantization_block_resolves_per_key ... ok +test loading::vlm::deepseekocr::tests::an_undeclared_quantization_block_keeps_the_family_defaults ... ok +test loading::vlm::deepseekocr::tests::an_unparseable_inherited_mode_is_rejected ... ok +test loading::vlm::deepseekocr::tests::inherits_the_root_quantization_block_into_the_text_args ... ok +test loading::vlm::deepseekocr::tests::supplies_the_missing_model_type_for_the_sub_config ... ok +test loading::vlm::deepseekocr::tests::the_in_tree_checkpoint_declaration_resolves_to_the_previous_fallback ... ok +test loading::vlm::deepseekocr::tests::unlimited_ocr_window_falls_back_and_clamps ... ok +test loading::vlm::deepseekocr::tests::unlimited_ocr_window_reads_the_declared_sliding_window ... ok +test loading::vlm::falcon_ocr::tests::an_odd_row_count_is_rejected_rather_than_silently_truncated ... ok +test loading::vlm::falcon_ocr::tests::quantization_sidecars_split_with_their_weight ... ok +test loading::vlm::falcon_ocr::tests::the_fused_w13_splits_on_alternating_rows ... ok +test loading::vlm::falcon_ocr::tests::the_key_splitter_only_matches_the_fused_projection ... ok +test loading::vlm::falcon_ocr::tests::the_other_checkpoint_keys_pass_through_unchanged ... ok +test loading::vlm::gemma::tests::gemma3n_language_model_prefix_prefers_quantized_prefix_when_present ... ok +test loading::vlm::gemma::tests::gemma3n_metadata_applies_defaults_and_overrides ... ok +test loading::vlm::gemma::tests::gemma3n_needs_conv_transpose_checks_reference_conv_shape ... ok +test loading::vlm::gemma::tests::sanitize_gemma3n_weights_strips_model_prefix_and_transposes_conv_weights ... ok +test loading::vlm::gemma::tests::sanitize_gemma4_audio_weights_is_idempotent ... ok +test loading::vlm::gemma::tests::sanitize_gemma4_audio_weights_preserves_channel_last_checkpoint ... ok +test loading::vlm::gemma::tests::sanitize_gemma4_audio_weights_transposes_pytorch_layout ... ok +test loading::vlm::gemma_unified::tests::unified_key_normalization_prefixes ... ok +test loading::vlm::gemma_unified::tests::unified_sanitize_drops_audio_when_absent ... ok +test loading::vlm::gemma_unified::tests::unified_sanitize_drops_rotary_and_lm_head ... ok +test loading::vlm::gemma_unified::tests::unified_sanitize_moe_split_normalizes_model_prefix ... ok +test loading::vlm::gemma_unified::tests::unified_sanitize_quantized_split_dequant_equivalence ... ok +test loading::vlm::gemma_unified::tests::unified_sanitize_splits_moe_switch_glu ... ok +test loading::vlm::gemma_unified::tests::unified_sanitize_splits_quantized_moe_switch_glu ... ok +test loading::vlm::got_ocr::tests::canonical_names_match_what_each_consumer_reads ... ok +test loading::vlm::got_ocr::tests::canonicalize_got_keys_maps_both_layouts_to_one ... ok +test loading::vlm::got_ocr::tests::converted_neck_names_are_rewritten_to_sequential_indices ... ok +test loading::vlm::got_ocr::tests::sanitize_is_idempotent ... ok +test loading::vlm::got_ocr::tests::stop_set_adds_the_turn_separator ... ok +test loading::vlm::got_ocr::tests::text_config_is_the_flat_root_relabelled_as_qwen2 ... ok +test loading::vlm::got_ocr::tests::tied_lm_head_is_dropped_only_when_requested ... ok +test loading::vlm::idefics2::tests::normalize_fills_mistral_defaults_and_respects_overrides ... ok +test loading::vlm::idefics2::tests::perceiver_heads_default_when_config_stripped ... ok +test loading::vlm::idefics2::tests::remap_promotes_language_model_head_to_top_level ... ok +test loading::vlm::inkling::tests::normalizes_all_hmlp_parameter_kinds ... ok +test loading::vlm::jina_vlm::tests::a_diverging_pooling_head_shape_is_not_taken_from_the_tower ... ok +test loading::vlm::jina_vlm::tests::a_zero_geometry_divisor_in_the_preprocessor_config_does_not_panic_the_load ... ok +test loading::vlm::jina_vlm::tests::a_zero_or_negative_vision_config_divisor_is_rejected_at_load ... ok +test loading::vlm::jina_vlm::tests::eos_ids_fall_back_to_the_config_when_generation_config_is_absent ... ok +test loading::vlm::jina_vlm::tests::jvlm_is_the_routed_model_type_with_jina_vlm_as_an_alias ... ok +test loading::vlm::jina_vlm::tests::overlap_margins_wider_than_the_crop_are_rejected_at_load ... ok +test loading::vlm::jina_vlm::tests::quantization_is_inherited_from_the_top_level_block ... ok +test loading::vlm::jina_vlm::tests::the_connector_reads_its_own_pooling_and_projector_blocks ... ok +test loading::vlm::jina_vlm::tests::the_nested_vision_config_flattens_to_the_released_shapes ... ok +test loading::vlm::kimi_k3_loader::tests::keeps_vision_and_in_range_text_layers_only ... ok +test loading::vlm::kimi_k3_loader::tests::processor_and_vision_config_must_agree_on_patch_and_merge ... ok +test loading::vlm::kimi_k3_loader::tests::splits_vision_keys_from_text_keys ... ok +test loading::vlm::kimi_vl_loader::tests::parses_real_kimi_vl_text_config_with_null_q_lora_rank ... ok +test loading::vlm::kimi_vl_loader::tests::remaps_language_and_vision_prefixes ... ok +test loading::vlm::kimi_vl_loader::tests::transposes_pytorch_conv_patch_embed_weight ... ok +test loading::vlm::lfm2_vl::tests::marker_resolution_uses_tokenizer_ids_and_requires_tiling_table ... ok +test loading::vlm::lfm2_vl::tests::positive_i32_field_rejects_invalid_downsample_factor ... ok +test loading::vlm::lfm2_vl::tests::processor_metadata_rejects_malformed_json ... ok +test loading::vlm::lfm2_vl::tests::processor_sidecar_unwraps_nested_image_processor_config ... ok +test loading::vlm::lfm2_vl::tests::tiling_policy_reads_reference_processor_defaults ... ok +test loading::vlm::lfm2_vl::tests::tiling_validation_bounds_canvas_allocation ... ok +test loading::vlm::lfm2_vl::tests::tiling_validation_bounds_single_view_patch_budget ... ok +test loading::vlm::lfm2_vl::tests::tiling_validation_uses_processor_max_num_patches_not_vision_table_len ... ok +test loading::vlm::lfm2_vl::tests::token_field_rejects_out_of_range_ids ... ok +test loading::vlm::llava::tests::detect_bunny_text_backend_prefers_nested_text_config_then_top_level_hint ... ok +test loading::vlm::llava::tests::host_family_validation_accepts_floor_patch_grid_used_by_llava_interleave ... ok +test loading::vlm::llava::tests::host_family_validation_rejects_incompatible_processor_family ... ok +test loading::vlm::llava::tests::host_weight_filter_keeps_no_decoder_layer_or_lm_head ... ok +test loading::vlm::llava::tests::infer_llama_config_from_weights_populates_missing_fields ... ok +test loading::vlm::llava::tests::infer_llama_config_from_weights_preserves_existing_values ... ok +test loading::vlm::llava::tests::inherit_text_quantization_if_missing_rejects_non_object_configs ... ok +test loading::vlm::llava::tests::iree_vision_contract_processor_metadata_must_match_host_pixel_producer ... ok +test loading::vlm::llava::tests::llava_text_backend_rejects_unknown_backends ... ok +test loading::vlm::llava::tests::parse_bunny_vision_config_preserves_full_configs ... ok +test loading::vlm::llava::tests::parse_bunny_vision_config_uses_defaults_for_sparse_configs ... ok +test loading::vlm::llava::tests::rewrite_bunny_weight_key_rewrites_expected_prefixes ... ok +test loading::vlm::llmjp_vl::tests::an_unsupported_decoder_backbone_is_named_in_the_error ... ok +test loading::vlm::llmjp_vl::tests::image_and_stop_ids_match_both_released_tokenizers ... ok +test loading::vlm::llmjp_vl::tests::image_token_ids_resolve_from_added_tokens_decoder ... ok +test loading::vlm::llmjp_vl::tests::llm_config_is_used_when_text_config_is_absent ... ok +test loading::vlm::llmjp_vl::tests::select_layer_other_than_minus_one_is_rejected_by_name ... ok +test loading::vlm::llmjp_vl::tests::stop_ids_combine_generation_config_and_the_harmony_terminators ... ok +test loading::vlm::llmjp_vl::tests::top_level_quantization_is_inherited_by_the_decoder_config ... ok +test loading::vlm::locateanything::tests::already_converted_mlx_keys_pass_through_unchanged ... ok +test loading::vlm::locateanything::tests::an_absent_merge_kernel_axis_still_defaults_instead_of_being_rejected ... ok +test loading::vlm::locateanything::tests::an_overflowing_connector_input_width_is_an_error_rather_than_a_truncation ... ok +test loading::vlm::locateanything::tests::connector_input_dim_matches_the_checkpoint_layer_norm_width ... ok +test loading::vlm::locateanything::tests::drops_the_tied_lm_head_only_when_embeddings_are_tied ... ok +test loading::vlm::locateanything::tests::falls_back_to_qwen2_defaults_without_an_eos_in_config ... ok +test loading::vlm::locateanything::tests::leaves_an_already_channel_last_patch_embed_weight_alone ... ok +test loading::vlm::locateanything::tests::mixed_precision_qkv_planes_reach_the_backbone_still_packed ... ok +test loading::vlm::locateanything::tests::parses_the_real_text_config_with_inherited_quantization ... ok +test loading::vlm::locateanything::tests::parses_the_real_vision_config_into_the_shared_moonvit_config ... ok +test loading::vlm::locateanything::tests::plain_bf16_conversion_is_skipped_when_the_flag_is_off ... ok +test loading::vlm::locateanything::tests::rejects_a_merge_kernel_axis_outside_the_documented_range ... ok +test loading::vlm::locateanything::tests::rejects_a_non_moonvit_vision_tower ... ok +test loading::vlm::locateanything::tests::rejects_a_non_square_merge_kernel ... ok +test loading::vlm::locateanything::tests::rejects_a_patch_size_outside_the_documented_range ... ok +test loading::vlm::locateanything::tests::remaps_unconverted_upstream_prefixes ... ok +test loading::vlm::locateanything::tests::resolves_qwen2_stop_tokens_from_the_real_config ... ok +test loading::vlm::locateanything::tests::resolves_the_image_framing_tokens_from_added_tokens ... ok +test loading::vlm::locateanything::tests::the_loader_and_processor_geometry_bounds_stay_equal ... ok +test loading::vlm::locateanything::tests::the_released_geometry_sits_inside_the_new_range_checks ... ok +test loading::vlm::locateanything::tests::transposes_a_pytorch_conv_patch_embed_weight ... ok +test loading::vlm::mage_vl::tests::hub_and_converted_keys_remap_to_one_layout ... ok +test loading::vlm::mage_vl::tests::mage_vl_with_empty_vision_config_loads_text_only ... ok +test loading::vlm::mage_vl::tests::mage_vl_with_language_model_only_loads_text_only ... ok +test loading::vlm::mage_vl::tests::mage_vl_with_vision_config_but_no_vision_weights_loads_text_only ... ok +test loading::vlm::mage_vl::tests::text_config_lifts_rope_and_inherits_quantization ... ok +test loading::vlm::muse_glimmer::tests::builder_rejects_video_temporal_layouts ... ok +test loading::vlm::muse_glimmer::tests::muse_affine_quantization_rejects_missing_biases_and_global_scale ... ok +test loading::vlm::muse_glimmer::tests::muse_glimmer_image_request_expands_and_scatters_shared_runtime_embeddings ... ok +test loading::vlm::muse_glimmer::tests::muse_glimmer_loaded_model_delegates_text_and_runtime_capabilities ... ok +test loading::vlm::muse_glimmer::tests::muse_glimmer_request_rejects_placeholder_image_mismatch ... ok +test loading::vlm::muse_glimmer::tests::muse_glimmer_request_rejects_reserved_video_token ... ok +test loading::vlm::muse_glimmer::tests::muse_glimmer_text_only_request_bypasses_vision_cleanly ... ok +test loading::vlm::muse_glimmer::tests::muse_glimmer_xla_image_preprocessor_rejects_family_explicitly ... ok +test loading::vlm::muse_glimmer::tests::muse_quantization_contract_accepts_text_sidecars_and_rejects_unsafe_layouts ... ok +test loading::vlm::muse_glimmer::tests::muse_weight_classifier_normalizes_mlx_vlm_roots_and_rejects_unknowns ... ok +test loading::vlm::muse_glimmer::tests::pinned_weight_index_classifies_each_source_weight_once ... ok +test loading::vlm::muse_glimmer::tests::published_weight_roots_match_checkpoint_index_keys ... ok +test loading::vlm::muse_glimmer::tests::root_quantization_is_inherited_into_muse_text_config ... ok +test loading::vlm::muse_glimmer::tests::synthetic_muse_vlm_builder_exposes_typed_methods ... ok +test loading::vlm::nemotron_h_nano_omni::tests::filter_out_audio_weights_drops_audio_when_disabled ... ok +test loading::vlm::nemotron_h_nano_omni::tests::filter_out_audio_weights_keeps_audio_when_audio_enabled ... ok +test loading::vlm::nemotron_h_nano_omni::tests::sanitize_audio_weights_channel_last_pointwise_left_untouched ... ok +test loading::vlm::nemotron_h_nano_omni::tests::sanitize_audio_weights_conv2d_is_idempotent ... ok +test loading::vlm::nemotron_h_nano_omni::tests::sanitize_audio_weights_depthwise_conv1d_is_idempotent ... ok +test loading::vlm::nemotron_h_nano_omni::tests::sanitize_audio_weights_drops_feature_extractor_and_num_batches_tracked ... ok +test loading::vlm::nemotron_h_nano_omni::tests::sanitize_audio_weights_skips_channel_last_conv2d ... ok +test loading::vlm::nemotron_h_nano_omni::tests::sanitize_audio_weights_skips_channel_last_depthwise_conv1d ... ok +test loading::vlm::nemotron_h_nano_omni::tests::sanitize_audio_weights_transposes_conv_weights ... ok +test loading::vlm::nemotron_h_nano_omni::tests::sanitize_audio_weights_transposes_pytorch_depthwise_conv1d ... ok +test loading::vlm::nemotron_h_nano_omni::tests::sanitize_audio_weights_transposes_pytorch_pointwise_conv1d ... ok +test loading::vlm::paddleocr::tests::remap_is_lossless_for_real_checkpoint ... ok +test loading::vlm::paddleocr::tests::remap_key_passes_through_sanitized_vision_keys ... ok +test loading::vlm::paddleocr::tests::remap_key_still_handles_reference_sanitize_layout ... ok +test loading::vlm::paddleocr::tests::remap_key_strips_language_model_wrapper ... ok +test loading::vlm::paddleocr::tests::remap_produces_text_and_vision_keys_for_real_checkpoint ... ok +test loading::vlm::pixtral::tests::apply_mistral_attention_head_override_uses_q_proj_shape ... ok +test loading::vlm::pixtral::tests::build_mistral_text_config_infers_and_inherits_quantization ... ok +test loading::vlm::pixtral::tests::build_mistral_text_config_preserves_existing_quantization ... ok +test loading::vlm::pixtral::tests::inherit_quantization_if_missing_rejects_non_object_configs ... ok +test loading::vlm::qwen::glm_ocr_loader_tests::drop_extra_text_layers_removes_mtp_block ... ok +test loading::vlm::qwen::glm_ocr_loader_tests::normalize_leaves_glm4v_style_config_untouched ... ok +test loading::vlm::qwen::glm_ocr_loader_tests::normalize_lifts_rope_parameters_into_config_fields ... ok +test loading::vlm::qwen::qwen3_omni_speech_loader_tests::speech_key_filter_partitions_thinker_and_speech_weights ... ok +test loading::vlm::qwen::tests::native_key_remap_maps_a_whole_export_and_leaves_a_conversion_alone ... ok +test loading::vlm::qwen::tests::native_key_remap_renames_the_tower_and_unwraps_the_language_model ... ok +test loading::vlm::qwen::tests::qwen2_5_vl_raw_export_matches_mlx_conversion ... ignored, loads two 3B Qwen2.5-VL checkpoints +test loading::vlm::qwen_text_only_tests::qwen3_vl_with_empty_vision_config_loads_text_only ... ok +test loading::vlm::qwen_text_only_tests::qwen3_vl_with_vision_config_but_no_vision_weights_loads_text_only ... ok +test loading::vlm::qwen_text_only_tests::qwen3_vl_without_vision_config_loads_text_only ... ok +test loading::vlm::siglip::tests::build_paligemma_text_model_rejects_unknown_backend ... ok +test loading::vlm::siglip::tests::inject_aya_text_defaults_preserves_explicit_values ... ok +test loading::vlm::siglip::tests::inject_aya_text_defaults_rejects_non_object_configs ... ok +test loading::vlm::siglip::tests::inject_aya_text_defaults_sets_missing_values ... ok +test loading::vlm::siglip::tests::inject_paligemma_text_defaults_rejects_non_object_configs ... ok +test loading::vlm::siglip::tests::inject_paligemma_text_defaults_uses_query_scalar_when_present ... ok +test loading::vlm::siglip::tests::quantization_and_token_helpers_apply_defaults ... ok +test loading::vlm::siglip::tests::rewrite_aya_weight_key_maps_known_prefixes ... ok +test loading::vlm::siglip::tests::rewrite_paligemma_weight_key_rewrites_projector_prefix ... ok +test loading::vlm::smolvlm::tests::declared_preprocessor_defaults_splitting_to_true ... ok +test loading::vlm::smolvlm::tests::idefics3_text_config_parses_into_llama_args ... ok +test loading::vlm::smolvlm::tests::idefics3_vision_config_parses_into_siglip_vision_config ... ok +test loading::vlm::smolvlm::tests::policy_read_from_preprocessor_config ... ok +test loading::vlm::smolvlm::tests::remap_preserves_smolvlm2_layout ... ok +test loading::vlm::smolvlm::tests::remap_promotes_idefics3_nested_lm_head_to_top_level ... ok +test loading::vlm::smolvlm::tests::unknown_processor_defaults_splitting_to_false ... ok +test loading::vlm::special::tests::dequantize_moondream3_weight_restores_interleaved_uint4_rows ... ok +test loading::vlm::special::tests::flatten_phi4mm_patch_embedding_flattens_both_layouts_to_same_shape ... ok +test loading::vlm::special::tests::inherit_quantization_if_missing_copies_top_level_quantization_once ... ok +test loading::vlm::special::tests::inherit_quantization_if_missing_rejects_non_object_text_config ... ok +test loading::vlm::special::tests::llama4_helpers_cover_prefix_detection_defaults_and_token_math ... ok +test loading::vlm::special::tests::llama4_mm_tokens_per_image_applies_pixel_shuffle_ratio ... ok +test loading::vlm::special::tests::load_minicpmv4_6_vlm_rejects_an_unsupported_output_gate_type ... ok +test loading::vlm::special::tests::minicpmv4_6_text_weights_strips_language_model_prefix_and_keeps_lm_head ... ok +test loading::vlm::special::tests::molmo2_empty_vision_wrapper_does_not_shadow_top_level_sections ... ok +test loading::vlm::special::tests::molmo2_helpers_clamp_layer_count_and_parse_defaults ... ok +test loading::vlm::special::tests::molmo2_layer_resolution_uses_declared_depth_and_preserves_config_order ... ok +test loading::vlm::special::tests::molmo2_max_crops_uses_default_when_preprocessor_is_missing ... ok +test loading::vlm::special::tests::moondream2_text_config_helper_fills_dense_phi_shapes ... ok +test loading::vlm::special::tests::moondream3_text_and_vision_config_helpers_fill_default_shapes ... ok +test loading::vlm::special::tests::phi3_num_crops_prefers_preprocessor_then_config_then_default ... ok +test loading::vlm::special::tests::phi3_patch_embedding_transpose_detection_matches_layout_expectations ... ok +test loading::vlm::special::tests::phi4_siglip_text_config_value_inherits_root_text_fields ... ok +test loading::vlm::special::tests::phi4mm_text_config_value_inherits_root_text_fields ... ok +test loading::vlm::special::tests::phi4mm_vision_config_value_uses_crop_size_defaults ... ok +test loading::vlm::special::tests::remap_minicpmo_text_weights_strips_language_model_prefix ... ok +test loading::vlm::special::tests::remap_minicpmv4_6_weights_maps_all_namespaces_and_skips_position_ids ... ok +test loading::vlm::special::tests::remap_phi4mm_audio_weights_transposes_convolutions_and_rejects_partial_lora ... ok +test loading::vlm::special::tests::resolve_moondream2_eos_falls_back_to_endoftext_id_for_legacy_era ... ok +test loading::vlm::special::tests::resolve_moondream2_eos_is_zero_for_starmie_era_despite_stale_tokenizer_config ... ok +test loading::vlm::special::tests::resolve_moondream2_eos_prefers_explicit_config_ids ... ok +test loading::vlm::special::tests::resolve_moondream2_eos_reads_id_from_tokenizer_config_for_legacy_era ... ok +test loading::vlm::special::tests::rewrite_molmo2_weight_key_maps_text_vision_and_lm_head_prefixes ... ok +test loading::vlm::special::tests::rewrite_moondream2_weight_key_covers_the_real_checkpoint_exactly ... ok +test loading::vlm::special::tests::rewrite_moondream2_weight_key_maps_unified_checkpoint_layout ... ok +test loading::vlm::special::tests::rewrite_moondream3_weight_key_strips_model_prefix_and_skips_region_branch ... ok +test loading::vlm::special::tests::rewrite_phi3_weight_key_skips_position_ids_and_maps_known_prefixes ... ok +test loading::vlm::special::tests::rewrite_phi4_siglip_weight_key_keeps_text_keys_and_remaps_multimodal_prefixes ... ok +test loading::vlm::special::tests::rewrite_phi4mm_weight_key_maps_multimodal_prefixes ... ok +test loading::vlm::step3p7::tests::maps_vision_prefixes_to_vision_model ... ok +test loading::vlm::step3p7::tests::projector_and_lm_head_stay_top_level ... ok +test loading::vlm::step3p7::tests::resblocks_spelling_and_fused_qkv_naming_normalize ... ok +test loading::vlm::step3p7::tests::strips_language_model_wrapper_to_model_prefix ... ok +test loading::vlm::tests::inherit_qwen_vision_quantization_preserves_existing_values ... ok +test loading::vlm::tests::inherit_qwen_vision_quantization_uses_top_level_defaults ... ok +test loading::vlm::tests::older_qwen_vl_families_still_resolve_token_ids_from_defaults ... ok +test loading::vlm::tests::qwen35_vl_token_ids_default_only_the_image_and_video_ids ... ok +test loading::vlm::tests::qwen35_vl_token_ids_range_checks_default_image_and_video_ids ... ok +test loading::vlm::tests::qwen35_vl_token_ids_range_checks_image_and_video_ids_too ... ok +test loading::vlm::tests::qwen35_vl_token_ids_read_the_published_checkpoint_ids ... ok +test loading::vlm::tests::qwen35_vl_token_ids_rejects_a_negative_vision_start ... ok +test loading::vlm::tests::qwen35_vl_token_ids_rejects_a_vision_start_beyond_vocab_size ... ok +test loading::vlm::tests::qwen35_vl_token_ids_rejects_an_overflowing_vision_start ... ok +test loading::vlm::tests::qwen35_vl_token_ids_requires_vision_start_from_config ... ok +test loading::vlm::tests::qwen_vl_token_ids_applies_defaults_and_overrides ... ok +test loading::vlm::tests::qwen_vl_token_ids_rejects_negative_and_overflowing_config_ids ... ok +test loading::vlm::tests::require_object_mut_rejects_non_object_values ... ok +test loading::vlm::tests::rewrite_qwen3_vl_weight_key_rewrites_language_and_visual_prefixes ... ok +test loading::vlm::tests::rewrite_qwen3_vl_weight_key_sanitizes_moe_expert_weights ... ok +test loading::vlm::youtu_vl_loader::tests::build_processor_uses_autoprocessor_patch_cap ... ok +test loading::vlm::youtu_vl_loader::tests::real_checkpoint_grid_matches_autoprocessor ... ignored, needs models/mlx/youtu-vl-4b-instruct +test loading::vlm::youtu_vl_loader::tests::weight_remap_handles_youtu_vl_prefixes ... ok +test lora::config::tests::dora_and_full_are_not_fusable_lora ... ok +test lora::config::tests::test_default_lora_params ... ok +test lora::config::tests::test_effective_scale_with_alpha ... ok +test lora::config::tests::test_parse_minimal_config ... ok +test lora::loader::tests::a_mismatch_that_is_not_a_transpose_omits_the_transpose_hint ... ok +test lora::loader::tests::a_peft_base_layer_pair_resolves_to_the_wrapped_weight ... ok +test lora::loader::tests::a_peft_named_adapter_is_reported_once_with_the_conversion_hint ... ok +test lora::loader::tests::a_transposed_base_weight_is_reported_instead_of_reaching_mlx_add ... ok +test lora::loader::tests::a_valid_adapter_directory_still_applies_and_names_its_directory_on_failure ... ok +test lora::loader::tests::adapter_pair_without_base_weight_is_an_error ... ok +test lora::loader::tests::adapter_with_unknown_leaf_is_an_error ... ok +test lora::loader::tests::all_violations_are_reported_together ... ok +test lora::loader::tests::an_adapter_that_applies_nothing_is_refused ... ok +test lora::loader::tests::an_already_transposed_gpt2_checkpoint_still_fuses_correctly ... ok +test lora::loader::tests::conv1d_checkpoint_rejects_every_non_square_projection_without_aborting ... ok +test lora::loader::tests::conv1d_checkpoint_rejects_fusion_into_the_square_attention_c_proj ... ok +test lora::loader::tests::conv1d_checkpoint_reports_every_affected_projection_at_once ... ok +test lora::loader::tests::conv1d_checkpoint_still_fuses_an_adapter_that_targets_nothing_transposed ... ok +test lora::loader::tests::conv1d_layout_detection_reads_the_fused_qkv_projection ... ok +test lora::loader::tests::conv1d_projection_suffix_matches_only_transformer_block_projections ... ok +test lora::loader::tests::dora_adapter_is_refused ... ok +test lora::loader::tests::full_fine_tune_adapter_is_refused ... ok +test lora::loader::tests::fused_count_reports_applied_pairs ... ok +test lora::loader::tests::incomplete_pair_is_an_error ... ok +test lora::loader::tests::test_compute_lora_delta_mlx_format ... ok +test lora::loader::tests::test_compute_lora_delta_peft_format ... ok +test lora::loader::tests::test_fuse_lora_weights_basic ... ok +test lora::multi::tests::bad_scales_are_startup_errors ... ok +test lora::multi::tests::combined_flags_keep_listed_order ... ok +test lora::multi::tests::init_without_apply_marks_every_adapter_unapplied ... ok +test lora::multi::tests::legacy_single_detection ... ok +test lora::multi::tests::lora_scaled_parses_fname_colon_scale_pairs ... ok +test lora::multi::tests::lora_splits_commas_at_scale_one ... ok +test lora::multi::tests::missing_adapter_config_fails_validation ... ok +test lora::runtime::tests::a_well_formed_runtime_adapter_still_stages ... ok +test lora::runtime::tests::runtime_set_refuses_a_dora_adapter ... ok +test lora::runtime::tests::runtime_staging_refuses_a_pair_with_no_base_weight ... ok +test lora::runtime::tests::runtime_staging_refuses_an_unknown_adapter_tensor ... ok +test model_metadata_tests::descriptor_backed_support_helpers_stay_in_sync ... ok +test model_metadata_tests::is_vlm_model_type_matches_control_plane_capabilities ... ok +test model_metadata_tests::model_metadata_distinguishes_text_and_vlm_routes ... ok +test model_metadata_tests::model_metadata_mistral4_standalone_is_config_backed ... ok +test model_metadata_tests::model_metadata_preserves_mistral3_mistral4_text_wrapper_rule ... ok +test model_metadata_tests::model_metadata_preserves_mistral3_nested_text_wrapper_rule ... ok +test model_metadata_tests::static_model_descriptor_centralizes_directory_and_weight_families ... ok +test models::afmoe::tests::a_dense_prefix_layer_is_validated_as_a_plain_mlp ... ok +test models::afmoe::tests::a_full_attention_layer_is_nope_and_a_sliding_one_is_not ... ok +test models::afmoe::tests::a_layer_types_list_shorter_than_the_stack_is_rejected ... ok +test models::afmoe::tests::a_missing_attention_gate_is_rejected ... ok +test models::afmoe::tests::a_non_default_rope_scaling_block_is_rejected ... ok +test models::afmoe::tests::a_short_expert_stack_is_rejected ... ok +test models::afmoe::tests::a_synthetic_model_builds_and_produces_finite_logits ... ok +test models::afmoe::tests::a_top_k_larger_than_the_expert_count_is_rejected ... ok +test models::afmoe::tests::a_well_formed_checkpoint_passes_validation ... ok +test models::afmoe::tests::a_zero_scalar_is_rejected_before_it_divides ... ok +test models::afmoe::tests::a_zero_sliding_window_is_rejected_when_a_layer_slides ... ok +test models::afmoe::tests::all_four_norms_are_required ... ok +test models::afmoe::tests::an_irregular_layer_types_list_is_honoured_over_global_attn_every_n_layers ... ok +test models::afmoe::tests::an_odd_head_dim_is_rejected ... ok +test models::afmoe::tests::an_unrecognized_layer_type_is_rejected ... ok +test models::afmoe::tests::an_unrecognized_score_func_is_rejected ... ok +test models::afmoe::tests::snapshot_prompt_cache::a_foreign_family_snapshot_is_refused ... ok +test models::afmoe::tests::snapshot_prompt_cache::a_quantized_cache_mode_declines_the_restore ... ok +test models::afmoe::tests::snapshot_prompt_cache::a_wrapped_sliding_ring_declines_a_truncating_restore ... ok +test models::afmoe::tests::snapshot_prompt_cache::afmoe_declares_snapshot_reuse ... ok +test models::afmoe::tests::snapshot_prompt_cache::snapshot_restore_matches_cold_decode ... ok +test models::afmoe::tests::the_grouped_routing_guards_fire_even_though_trinity_never_reaches_them ... ok +test models::afmoe::tests::the_head_dim_is_read_and_not_derived ... ok +test models::afmoe::tests::the_mup_scale_actually_reaches_the_hidden_state ... ok +test models::afmoe::tests::the_mup_scale_is_the_square_root_of_hidden_size ... ok +test models::afmoe::tests::the_prefill_is_causal_without_being_handed_a_mask ... ok +test models::afmoe::tests::the_real_config_parses_and_validates ... ok +test models::afmoe::tests::the_schedule_comes_from_layer_types_not_the_modulus ... ok +test models::apertus::tests::fused_xielu_gate_defaults_on_with_opt_out ... ok +test models::apertus::tests::fused_xielu_matches_elementwise_bit_for_bit ... ok +test models::apertus_tests::apertus_config_parses_core_fields ... ok +test models::apertus_tests::apertus_delta_flags_parse ... ok +test models::apertus_tests::apertus_head_dim_derives_from_hidden_and_heads ... ok +test models::apertus_tests::apertus_optional_flags_default_when_absent ... ok +test models::apertus_tests::apertus_quantization_is_read_from_config ... ok +test models::apertus_tests::apertus_rope_scaling_llama3_fields_parse ... ok +test models::apertus_tests::fused_xielu_kernel_matches_graph_every_dtype ... ok +test models::apertus_tests::softplus_matches_reference ... ok +test models::apertus_tests::xielu_factored_beta_x_matches_branch_local ... ok +test models::apertus_tests::xielu_formula_matches_hand_values ... ok +test models::bailing_moe::tests::a_dense_prefix_layer_is_a_plain_mlp_and_the_rest_are_sparse ... ok +test models::bailing_moe::tests::a_tiny_model_prefills_then_decodes ... ok +test models::bailing_moe::tests::an_absurd_topk_group_saturates_rather_than_truncating_when_grouping_is_off ... ok +test models::bailing_moe::tests::an_unknown_score_function_is_rejected_rather_than_silently_defaulted ... ok +test models::bailing_moe::tests::config_defaults_reproduce_the_upstream_routing_defaults ... ok +test models::bailing_moe::tests::config_validation_rejects_a_quantization_block_that_would_abort_an_mlx_kernel ... ok +test models::bailing_moe::tests::config_validation_rejects_a_rope_scaling_block_this_loader_does_not_implement ... ok +test models::bailing_moe::tests::config_validation_rejects_an_rms_norm_eps_that_would_nan_every_hidden_state ... ok +test models::bailing_moe::tests::config_validation_rejects_grouped_routing_that_would_index_out_of_range ... ok +test models::bailing_moe::tests::config_validation_rejects_impossible_architecture_scalars ... ok +test models::bailing_moe::tests::config_validation_rejects_rope_parameters_mlx_would_throw_on ... ok +test models::bailing_moe::tests::group_mask_scores_keeps_the_groups_with_the_largest_top_two_sum ... ok +test models::bailing_moe::tests::grouped_routing_restricts_the_selection_to_the_surviving_groups ... ok +test models::bailing_moe::tests::norm_head_is_applied_only_when_the_flag_is_set ... ok +test models::bailing_moe::tests::norm_head_refuses_a_quantized_output_head ... ok +test models::bailing_moe::tests::norm_softmax_true_is_rejected_rather_than_silently_ignored ... ok +test models::bailing_moe::tests::norm_topk_prob_divides_by_the_sum_plus_a_1e_20_epsilon ... ok +test models::bailing_moe::tests::norm_topk_prob_is_skipped_when_top_k_is_one ... ok +test models::bailing_moe::tests::normalize_lm_head_weight_divides_each_column_by_its_l2_norm_plus_1e_7 ... ok +test models::bailing_moe::tests::parses_the_real_ling_lite_config ... ok +test models::bailing_moe::tests::routed_scaling_is_applied_even_when_the_flag_is_false ... ok +test models::bailing_moe::tests::router_lookup_is_anchored_against_the_expert_gate_proj ... ok +test models::bailing_moe::tests::router_prefix_resolves_both_checkpoint_spellings_and_names_both_when_neither_exists ... ok +test models::bailing_moe::tests::selection_uses_the_biased_scores_while_the_weights_come_from_the_unbiased_ones ... ok +test models::bailing_moe::tests::the_dense_prefix_is_the_layers_below_first_k_dense_replace ... ok +test models::bailing_moe::tests::the_expert_bias_is_loaded_when_the_checkpoint_ships_one_and_ignored_when_the_flag_is_clear ... ok +test models::bailing_moe::tests::the_expert_bias_is_zero_filled_when_the_flag_is_set_but_no_tensor_ships ... ok +test models::bailing_moe::tests::the_fused_qkv_split_is_uneven_under_grouped_query_attention ... ok +test models::bailing_moe::tests::the_gate_casts_its_weights_back_to_the_router_logit_dtype ... ok +test models::bailing_moe::tests::the_rotary_width_is_the_whole_head_unless_the_config_narrows_it ... ok +test models::bailing_moe::tests::the_shared_expert_is_added_at_a_fixed_weight_of_one ... ok +test models::bailing_moe::tests::the_shared_expert_is_one_wide_mlp_of_num_shared_experts_times_the_expert_width ... ok +test models::bailing_moe::tests::the_sigmoid_score_function_is_not_the_softmax_one ... ok +test models::bailing_moe::tests::the_zero_checks_run_before_the_divisibility_checks ... ok +test models::bailing_moe::tests::token_id_fields_accept_a_scalar_or_a_list ... ok +test models::bailing_moe::tests::validate_weights_accepts_the_real_ling_lite_shape_signature ... ok +test models::bailing_moe::tests::validate_weights_accepts_the_stacked_layout_and_rejects_a_short_one ... ok +test models::bailing_moe::tests::validate_weights_checks_every_expert_index_not_only_the_first ... ok +test models::bailing_moe::tests::validate_weights_rejects_a_quantized_projection_packed_for_a_different_input_width ... ok +test models::bailing_moe::tests::validate_weights_rejects_an_expert_bias_of_the_wrong_width ... ok +test models::bailing_moe::tests::validate_weights_rejects_an_output_head_that_disagrees_with_the_config ... ok +test models::bailing_moe::tests::validate_weights_rejects_projections_and_norms_that_disagree_with_the_config ... ok +test models::bailing_moe_linear::tests::a_dense_prefix_layer_is_validated_as_a_plain_mlp ... ok +test models::bailing_moe_linear::tests::a_fresh_linear_cache_holds_no_state ... ok +test models::bailing_moe_linear::tests::a_group_norm_size_that_does_not_divide_the_width_is_rejected ... ok +test models::bailing_moe_linear::tests::a_linear_layer_carrying_a_global_layers_qkv_width_is_rejected ... ok +test models::bailing_moe_linear::tests::a_list_valued_eos_token_id_parses ... ok +test models::bailing_moe_linear::tests::a_missing_linear_gate_is_rejected ... ok +test models::bailing_moe_linear::tests::a_non_default_rope_scaling_block_is_rejected ... ok +test models::bailing_moe_linear::tests::a_rope_width_that_mlx_would_throw_on_is_rejected_on_either_head ... ok +test models::bailing_moe_linear::tests::a_short_expert_stack_is_rejected ... ok +test models::bailing_moe_linear::tests::a_stack_shorter_than_one_group_still_finds_a_global_layer ... ok +test models::bailing_moe_linear::tests::a_synthetic_model_builds_and_produces_finite_logits ... ok +test models::bailing_moe_linear::tests::a_well_formed_checkpoint_passes_validation ... ok +test models::bailing_moe_linear::tests::a_zero_layer_group_size_is_rejected ... ok +test models::bailing_moe_linear::tests::a_zero_scalar_is_rejected_before_it_divides ... ok +test models::bailing_moe_linear::tests::an_explicit_head_dim_does_not_reach_the_linear_layers ... ok +test models::bailing_moe_linear::tests::an_indivisible_hidden_size_is_rejected_even_with_an_explicit_head_dim ... ok +test models::bailing_moe_linear::tests::chunked_gla_carries_an_incoming_state ... ok +test models::bailing_moe_linear::tests::chunked_gla_matches_the_sequential_recurrence ... ok +test models::bailing_moe_linear::tests::chunked_prefill_is_on_unless_explicitly_switched_off ... ok +test models::bailing_moe_linear::tests::group_rms_norm_applies_the_weight_after_flattening ... ok +test models::bailing_moe_linear::tests::group_rms_norm_normalizes_within_groups_not_across_them ... ok +test models::bailing_moe_linear::tests::group_rms_norm_rejects_an_indivisible_width ... ok +test models::bailing_moe_linear::tests::the_alibi_slopes_fall_back_for_a_non_power_of_two_head_count ... ok +test models::bailing_moe_linear::tests::the_alibi_slopes_match_the_upstream_formula_for_a_power_of_two ... ok +test models::bailing_moe_linear::tests::the_cache_flavour_follows_the_layer_schedule ... ok +test models::bailing_moe_linear::tests::the_dead_vendor_flags_are_rejected_rather_than_ignored ... ok +test models::bailing_moe_linear::tests::the_decode_step_agrees_with_a_one_token_chunk ... ok +test models::bailing_moe_linear::tests::the_first_token_of_a_fresh_state_is_not_decayed ... ok +test models::bailing_moe_linear::tests::the_grouped_routing_guards_fire_on_a_config_this_family_actually_reaches ... ok +test models::bailing_moe_linear::tests::the_layer_decay_is_negative_and_shrinks_with_depth ... ok +test models::bailing_moe_linear::tests::the_layer_schedule_makes_every_fifth_layer_global ... ok +test models::bailing_moe_linear::tests::the_linear_and_global_layers_have_different_qkv_widths ... ok +test models::bailing_moe_linear::tests::the_real_config_parses_and_validates ... ok +test models::bailing_moe_linear::tests::the_sequential_prefill_is_the_recurrence_it_claims_to_be ... ok +test models::bailing_moe_linear::tests::the_tail_clause_makes_the_leftover_layers_global ... ok +test models::bert::bert_tests::bert_args_fill_the_variant_defaults ... ok +test models::bert::bert_tests::bert_args_read_num_labels_from_id2label_when_absent ... ok +test models::bert::bert_tests::bert_args_reject_a_head_count_that_does_not_divide_the_width ... ok +test models::bert::bert_tests::bert_variant_maps_from_model_type_and_config ... ok +test models::bert::bert_tests::encoder_forward_produces_finite_hidden_states_of_the_right_shape ... ok +test models::bert::bert_tests::encoder_rejects_a_rank_one_input ... ok +test models::bert::bert_tests::encoder_rejects_more_tokens_than_the_position_table_addresses ... ok +test models::bert::bert_tests::sanitize_is_idempotent ... ok +test models::bert::bert_tests::sanitize_keeps_pooler_only_for_the_classifier_head ... ok +test models::bert::bert_tests::sanitize_strips_prefix_and_drops_mlm_and_buffers ... ok +test models::bert::bert_tests::token_type_ids_change_the_bert_hidden_states ... ok +test models::bert::bert_tests::xlm_roberta_position_ids_handle_a_batch_and_a_zero_pad_id ... ok +test models::bert::bert_tests::xlm_roberta_position_ids_start_after_padding_idx ... ok +test models::bert_heads::bert_heads_tests::classifier_head_produces_one_logit_row_per_input ... ok +test models::bert_heads::bert_heads_tests::classifier_head_scores_multi_label_configs ... ok +test models::bert_heads::bert_heads_tests::different_token_sequences_give_different_vectors ... ok +test models::bert_heads::bert_heads_tests::embedding_model_rejects_image_inputs ... ok +test models::bert_heads::bert_heads_tests::embedding_model_reports_its_width_pooling_and_segment_needs ... ok +test models::bert_heads::bert_heads_tests::identical_inputs_embed_identically ... ok +test models::bert_heads::bert_heads_tests::num_labels_comes_from_the_projection_tensor_not_the_config ... ok +test models::bert_heads::bert_heads_tests::padding_row_does_not_change_the_real_row_embedding ... ok +test models::bert_heads::bert_real_checkpoint_tests::bge_m3_matches_the_model_card_similarity_matrix ... ok +test models::bert_heads::bert_real_checkpoint_tests::bge_m3_passes_the_self_consistency_gate_and_embeds_a_long_input ... ok +test models::bert_heads::bert_real_checkpoint_tests::bge_reranker_v2_m3_scores_a_relevant_pair_above_an_irrelevant_one ... ok +test models::bert_heads::bert_real_checkpoint_tests::minilm_matches_the_sentence_transformers_quickstart_similarities ... ok +test models::bert_heads::bert_real_checkpoint_tests::minilm_passes_the_self_consistency_gate ... ok +test models::bert_heads::bert_real_checkpoint_tests::multilingual_e5_small_passes_the_self_consistency_gate ... ok +test models::bert_heads::bert_real_checkpoint_tests::multilingual_e5_small_ranks_the_matching_passage_first ... ok +test models::bitnet::tests::bitlinear_matmul_folds_every_lane ... Compiling CUDA kernels (first run on this host; cached for later runs)... +ok +test models::bitnet::tests::bitlinear_matmul_known_ternary_case ... ok +test models::cohere2::tests::last_logits_match_the_sliced_full_forward ... ok +test models::cohere2::tests::prefill_matches_token_by_token_decode_inside_and_beyond_the_window ... ok +test models::cohere2_moe::tests::alias_keys_override_canonical_keys ... ok +test models::cohere2_moe::tests::config_defaults_apply_for_absent_keys ... ok +test models::cohere2_moe::tests::eos_token_parses_single_list_and_falls_back ... ok +test models::cohere2_moe::tests::first_k_dense_replace_prefix_is_always_global ... ok +test models::cohere2_moe::tests::layer_classification_default_pattern ... ok +test models::cohere2_moe::tests::layer_classification_layer_types_override_pattern ... ok +test models::cohere2_moe::tests::norm_topk_prob_clamp_avoids_nan_when_all_scores_underflow ... ignored, requires serial MLX execution +test models::cohere2_moe::tests::norm_topk_prob_renormalizes_gathered_scores ... ignored, requires serial MLX execution +test models::cohere2_moe::tests::prefix_dense_intermediate_falls_back_to_intermediate_size ... ok +test models::cohere2_moe::tests::prefix_dense_without_forced_rope_uses_no_positional_encoding ... ok +test models::cohere2_moe::tests::quantization_block_parses_and_resolves ... ok +test models::cohere2_moe::tests::rope_gating_forces_rope_on_prefix_dense_and_follows_sliding ... ok +test models::cohere2_moe::tests::shared_combine_strategy_resolves ... ok +test models::cohere2_moe::tests::shared_expert_average_halves_the_sum_but_sum_does_not ... ignored, requires serial MLX execution +test models::cohere2_moe::tests::sigmoid_gate_gathers_activated_scores_not_a_fresh_softmax ... ignored, requires serial MLX execution +test models::cohere2_moe::tests::softmax_gate_gathers_full_softmax_probs ... ignored, requires serial MLX execution +test models::cohere2_moe::tests::tiny_model_builds_with_expected_layer_topology ... ignored, requires serial MLX execution +test models::cohere2_moe::tests::tiny_model_forward_is_finite_and_prefill_matches_decode ... ignored, requires serial MLX execution +test models::cohere_compass::cohere_compass_tests::deepstack_injects_first_three_layers_only ... ok +test models::cohere_compass::cohere_compass_tests::logit_scale_applied ... ok +test models::cohere_compass::cohere_compass_tests::parallel_block_has_no_post_norm ... ok +test models::cohere_compass::cohere_compass_tests::rope_on_all_layers_applies_without_per_layer_entries ... ok +test models::cohere_compass::cohere_compass_tests::rope_on_all_layers_false_disables_every_layer ... ok +test models::cohere_compass::cohere_compass_tests::rope_parameters_null_means_no_rope ... ok +test models::cohere_compass::cohere_compass_tests::sequential_block_type_is_rejected ... ok +test models::cohere_compass::cohere_compass_tests::sliding_layers_carry_the_window_and_full_layers_do_not ... ok +test models::cohere_compass::cohere_compass_tests::sliding_window_bounds_the_receptive_field ... ok +test models::cohere_compass::cohere_compass_tests::split_rope_layout ... ok +test models::cohere_compass::cohere_compass_tests::text_prefill_is_causal ... ok +test models::cohere_compass_rope::cohere_compass_rope_tests::a_section_that_does_not_cover_head_dim_is_rejected ... ok +test models::cohere_compass_rope::cohere_compass_rope_tests::cos_sin_match_the_reference_table ... ok +test models::cohere_compass_rope::cohere_compass_rope_tests::frequencies_are_pre_permuted_over_the_hw_block ... ok +test models::cohere_compass_rope::cohere_compass_rope_tests::sections_are_contiguous_h_then_w_then_t ... ok +test models::col_late_interaction::col_late_interaction_tests::an_all_zero_projection_row_stays_finite ... ok +test models::col_late_interaction::col_late_interaction_tests::embedding_dim_defaults_to_128_and_reads_the_config ... ok +test models::col_late_interaction::col_late_interaction_tests::format_query_appends_ten_augmentation_tokens ... ok +test models::col_late_interaction::col_late_interaction_tests::lora_only_checkpoint_is_rejected_with_the_merge_instruction ... ok +test models::col_late_interaction::col_late_interaction_tests::padding_rows_are_zero_and_real_rows_unit_norm ... ok +test models::col_late_interaction::col_late_interaction_tests::sanitize_prefers_1_dense_projection ... ok +test models::colidefics3::colidefics3_tests::causal_prefill_is_causal ... ok +test models::colidefics3::colidefics3_tests::image_placeholder_expands_to_one_run_per_tile ... ok +test models::colidefics3::colidefics3_tests::padding_rows_are_zero_and_real_rows_unit_norm ... ok +test models::colidefics3::colidefics3_tests::query_format_appends_ten_augmentation_tokens ... ok +test models::colidefics3::colidefics3_tests::real_colsmolvlm_base_loads_and_projects_to_128 ... ok +test models::colidefics3::colidefics3_tests::rejects_mask_non_image_embeddings_true ... ok +test models::colidefics3::colidefics3_tests::sanitize_prefers_1_dense_projection ... ok +test models::colidefics3::colidefics3_tests::text_only_embedding_ignores_the_absent_image_list ... ok +test models::colqwen2_5::colqwen2_5_tests::batched_text_rows_match_single_rows ... ok +test models::colqwen2_5::colqwen2_5_tests::forward_hidden_then_head_matches_forward ... ok +test models::colqwen2_5::colqwen2_5_tests::native_layout_keys_remap_to_base_layout ... ok +test models::colqwen2_5::colqwen2_5_tests::real_colqwen25_base_loads_and_projects_to_128 ... ok +test models::colqwen2_5::colqwen2_5_tests::sanitize_rewrites_every_key_of_a_native_map ... ok +test models::colqwen2_5::colqwen2_5_tests::stale_image_positions_do_not_leak_into_a_text_batch ... ok +test models::config::tests::get_mode_bounds_the_declared_string ... ok +test models::config::tests::test_defaults ... ok +test models::config::tests::test_quantization_args ... ok +test models::conv_decode_tests::conv_decode_matches_conv1d_kernel3_bf16 ... ok +test models::conv_decode_tests::conv_decode_matches_conv1d_kernel3_f32 ... ok +test models::conv_decode_tests::conv_decode_matches_conv1d_kernel4_bf16 ... ok +test models::conv_decode_tests::conv_decode_matches_conv1d_kernel4_f32 ... ok +test models::conv_decode_tests::conv_decode_with_bias_and_silu_matches_conv1d_bf16 ... ok +test models::dbrx::dbrx_tests::a_missing_expert_projection_is_an_error_not_a_silent_skip ... ok +test models::dbrx::dbrx_tests::a_null_eos_token_id_falls_back_to_the_tokenizer_id ... ok +test models::dbrx::dbrx_tests::an_absent_clip_qkv_is_none_rather_than_zero ... ok +test models::dbrx::dbrx_tests::clip_qkv_actually_clamps_the_projection ... ok +test models::dbrx::dbrx_tests::clip_qkv_parses_from_a_json_integer ... ok +test models::dbrx::dbrx_tests::eos_ids_reach_the_built_model ... ok +test models::dbrx::dbrx_tests::forward_produces_vocab_sized_logits_and_advances_the_cache ... ok +test models::dbrx::dbrx_tests::from_weights_builds_the_full_stack_from_checkpoint_key_names ... ok +test models::dbrx::dbrx_tests::the_real_config_parses_including_the_nested_blocks ... ok +test models::dbrx::dbrx_tests::the_second_norm_feeds_the_ffn_but_the_unnormalized_residual_is_added_back ... ok +test models::deepseek::tests::deepseek_switch_linear_reads_the_nested_quantization_block ... ok +test models::deepseek::tests::deepseek_switch_linear_rejects_a_pair_that_does_not_describe_the_expert_plane ... ok +test models::deepseek::tests::deepseek_switch_linear_rejects_quantization_params_that_would_abort_gather_qmm ... ok +test models::deepseek::tests::model_args_bounds_the_declared_quantization_mode ... ok +test models::deepseek::tests::model_args_defaults_without_any_quantization_declaration ... ok +test models::deepseek::tests::model_args_falls_back_per_key_across_the_two_spellings ... ok +test models::deepseek::tests::model_args_prefers_the_nested_block_over_the_flat_keys ... ok +test models::deepseek::tests::model_args_reads_a_nested_quantization_block ... ok +test models::deepseek::tests::model_args_still_reads_the_flat_quantization_keys ... ok +test models::deepseek::tests::switch_linear_accepts_full_expert_count ... ok +test models::deepseek::tests::switch_linear_errors_when_stacked_experts_fall_short_of_config_count ... ok +test models::deepseek_v2::tests::absorbed_attention_leaves_a_much_smaller_cache_behind ... ok +test models::deepseek_v2::tests::absorbed_mla_attention_matches_the_decompressed_block_step_for_step ... ok +test models::deepseek_v2::tests::deepseek_v2_switch_linear_rejects_quantization_params_that_would_abort_gather_qmm ... ok +test models::deepseek_v32::deepseek_v32_tests::decode_step_stays_maskless_after_prefill ... ok +test models::deepseek_v32::deepseek_v32_tests::deepseek_v32_indexer_config_defaults ... ok +test models::deepseek_v32::deepseek_v32_tests::deepseek_v32_indexer_rope_defaults_to_non_interleaved ... ok +test models::deepseek_v32::deepseek_v32_tests::deepseek_v32_switch_linear_rejects_quantization_params_that_would_abort_gather_qmm ... ok +test models::deepseek_v32::deepseek_v32_tests::indexer_load_absent_weights_is_dense_fallback ... ok +test models::deepseek_v32::deepseek_v32_tests::indexer_load_threads_rope_flag_per_model ... ok +test models::deepseek_v32::deepseek_v32_tests::indexer_top_indices_none_at_short_context ... ok +test models::deepseek_v32::deepseek_v32_tests::indexer_top_indices_respects_causal_mask ... ok +test models::deepseek_v32::deepseek_v32_tests::indexer_top_indices_selects_highest_scoring_keys ... ok +test models::deepseek_v32::deepseek_v32_tests::prefill_is_causal_without_caller_mask_dense ... ok +test models::deepseek_v32::deepseek_v32_tests::prefill_is_causal_without_caller_mask_sparse ... ok +test models::deepseek_v32::deepseek_v32_tests::quantized_kv_b_proj_rejects_a_kv_lora_rank_no_packing_can_describe ... ok +test models::deepseek_v32::deepseek_v32_tests::quantized_kv_b_proj_rejects_scales_with_no_biases ... ok +test models::deepseek_v32::deepseek_v32_tests::sanitize_strips_only_the_mtp_trailer_layer ... ok +test models::deepseek_v3::tests::clipped_swiglu_prevents_f16_overflow ... ok +test models::deepseek_v3::tests::deepseek_v3_switch_glu_rejects_quantization_params_that_would_abort_gather_qmm ... ok +test models::deepseek_v3::tests::from_weights_builds_all_num_hidden_layers ... ok +test models::deepseek_v3::tests::moe_block_3d_forward_matches_reference_shape ... ok +test models::deepseek_v3::tests::moe_gate_routes_in_f32_for_f16_activations ... ok +test models::deepseek_v3::tests::parses_null_q_lora_rank_config ... ok +test models::deepseek_v3::tests::parses_numeric_and_absent_q_lora_rank ... ok +test models::deepseek_v3::tests::prefill_is_causal_without_caller_mask ... ok +test models::deepseek_v3::tests::quantized_kv_b_proj_rejects_a_kv_lora_rank_no_packing_can_describe ... ok +test models::deepseek_v3::tests::quantized_kv_b_proj_rejects_scales_with_no_biases ... ok +test models::deepseek_v3::tests::sanitize_keeps_last_decoder_layer_and_strips_mtp_trailer ... ok +test models::deepseek_v3::tests::sanitize_weights_does_not_overwrite_existing_canonical_keys ... ok +test models::deepseek_v3::tests::sanitize_weights_remaps_switch_mlp_without_mlp_segment ... ok +test models::deepseek_v3::tests::switch_glu_forward_preserves_rank_for_2d_and_3d ... ok +test models::deepseek_v4::deepseek_v4_tests::attention_rejects_wrong_shaped_attn_sink ... ok +test models::deepseek_v4::deepseek_v4_tests::attn_kind_for_ratio_maps_known_ratios_and_rejects_unknown ... ok +test models::deepseek_v4::deepseek_v4_tests::biased_routing_rejects_wrong_length_score_correction_bias ... ok +test models::deepseek_v4::deepseek_v4_tests::compressor_rejects_wrong_shaped_ape ... ok +test models::deepseek_v4::deepseek_v4_tests::deepseek_v4_config_rejects_hostile_quantization_overrides ... ok +test models::deepseek_v4::deepseek_v4_tests::deepseek_v4_config_rejects_hostile_values ... ok +test models::deepseek_v4::deepseek_v4_tests::deepseek_v4_default_compress_ratios_match_reference_post_init ... ok +test models::deepseek_v4::deepseek_v4_tests::deepseek_v4_expert_quantization_override_is_per_path ... ok +test models::deepseek_v4::deepseek_v4_tests::eos_token_id_parses_from_config ... ok +test models::deepseek_v4::deepseek_v4_tests::eos_token_ids_falls_back_to_default_when_absent_or_empty ... ok +test models::deepseek_v4::deepseek_v4_tests::hash_routing_rejects_out_of_range_tid2eid_entries ... ok +test models::deepseek_v4::deepseek_v4_tests::hc_expand_folds_output_back_into_widened_residual ... ok +test models::deepseek_v4::deepseek_v4_tests::hisa_selection_agrees_with_flat_fallback ... ok +test models::deepseek_v4::deepseek_v4_tests::hisa_selection_never_returns_a_tail_row ... ok +test models::deepseek_v4::deepseek_v4_tests::hyper_connection_matches_reference_sinkhorn_math ... ok +test models::deepseek_v4::deepseek_v4_tests::hyper_head_collapse_is_sigmoid_gated_sum ... ok +test models::deepseek_v4::deepseek_v4_tests::indexer_forward_dispatches_and_respects_visibility ... ok +test models::deepseek_v4::deepseek_v4_tests::limited_swiglu_clamps_match_reference ... ok +test models::deepseek_v4::deepseek_v4_tests::moe_gate_bias_selects_but_unbiased_scores_weight ... ok +test models::deepseek_v4::deepseek_v4_tests::moe_gate_hash_routing_takes_indices_from_tid2eid ... ok +test models::deepseek_v4::deepseek_v4_tests::moe_gate_rejects_wrong_shaped_router_weight ... ok +test models::deepseek_v4::deepseek_v4_tests::moe_gate_rejects_wrong_shaped_tid2eid_table ... ok +test models::deepseek_v4::deepseek_v4_tests::overlap_compress_matches_reference_math ... ok +test models::deepseek_v4::deepseek_v4_tests::pool_visibility_counts_match_reference_make_mask ... ok +test models::deepseek_v4::deepseek_v4_tests::pooling_cache_eval_state_is_safe_and_neutral_in_every_state ... ok +test models::deepseek_v4::deepseek_v4_tests::pooling_cache_prompt_then_decode_emits_full_windows_only ... ok +test models::deepseek_v4::deepseek_v4_tests::pooling_cache_remainder_survives_an_overlapping_tail_write ... ok +test models::deepseek_v4::deepseek_v4_tests::real_checkpoint_config_shape_parses_with_both_quantization_keys ... ok +test models::deepseek_v4::deepseek_v4_tests::routed_and_shared_experts_clamp_swiglu_identically ... ok +test models::deepseek_v4::deepseek_v4_tests::sanitize_maps_legacy_plane_onto_canonical_names ... ok +test models::deepseek_v4::deepseek_v4_tests::sanitize_rejects_incomplete_legacy_expert_plane ... ok +test models::deepseek_v4::deepseek_v4_tests::sanitize_rejects_wo_a_plane_that_does_not_divide_into_groups ... ok +test models::deepseek_v4::deepseek_v4_tests::sanitize_reshapes_wo_a_and_casts_tid2eid ... ok +test models::deepseek_v4::deepseek_v4_tests::simple_compress_matches_reference_math ... ok +test models::deepseek_v4::deepseek_v4_tests::tiny_model_cache_barrier_is_observationally_neutral ... ok +test models::deepseek_v4::deepseek_v4_tests::tiny_model_chunked_prefill_matches_single_pass ... ok +test models::deepseek_v4::deepseek_v4_tests::tiny_model_chunked_prefill_with_pool_remainder_matches_cpu ... ok +test models::deepseek_v4::deepseek_v4_tests::tiny_model_prefill_and_decode_produce_finite_logits ... ok +test models::deepseek_v4::deepseek_v4_tests::use_hierarchy_gates_on_size_and_honours_the_flat_override ... ok +test models::deepseek_v4::deepseek_v4_tests::v4_rope_base_freqs_rejects_bad_dims_base_and_incomplete_yarn_scaling ... ok +test models::deepseek_v4::deepseek_v4_tests::v4_rope_forward_then_inverse_is_identity ... ok +test models::deepseek_v4::deepseek_v4_tests::v4_rope_padded_freqs_prefix_negate_and_scale ... ok +test models::deepseek_v4::deepseek_v4_tests::v4_rope_yarn_freqs_match_reference ... ok +test models::deepseek_v4::deepseek_v4_tests::weight_coverage_rejects_missing_and_unknown_tensors ... ok +test models::detection_tests::a_classifier_on_an_unported_family_keeps_its_generator_routing ... ok +test models::detection_tests::a_sliding_window_written_as_a_float_or_a_string_is_still_refused ... ok +test models::detection_tests::a_truthy_non_boolean_use_sliding_window_is_still_refused ... ok +test models::detection_tests::an_iquestcoder_checkpoint_relabelled_llama_still_routes_to_iquest_coder ... ok +test models::detection_tests::an_unreadable_layer_count_does_not_open_the_sliding_window_guard ... ok +test models::detection_tests::cohere2_moe_model_type_is_detected ... ok +test models::detection_tests::cohere_compass_model_type_is_detected ... ok +test models::detection_tests::cross_encoder_checkpoints_detect_as_the_reranker_family ... ok +test models::detection_tests::deepseek_v2_label_keeps_the_deepseek_v2_route ... ok +test models::detection_tests::deepseek_v4_model_type_is_detected ... ok +test models::detection_tests::deepseek_vl2_model_type_is_detected ... ok +test models::detection_tests::detect_hunyuan_model_type_uses_num_experts ... ok +test models::detection_tests::detect_text_or_vlm_prefers_vlm_when_vision_config_exists ... ok +test models::detection_tests::dflash_drafter_is_rejected_as_a_standalone_model ... ok +test models::detection_tests::dflash_drafter_is_rejected_on_either_marker_alone ... ok +test models::detection_tests::embedding_architectures_route_generator_model_types_to_embedding_variants ... ok +test models::detection_tests::embedding_layout_with_unknown_family_is_reported_not_misrouted ... ok +test models::detection_tests::encoder_only_model_types_detect_as_embedding_without_pooling_files ... ok +test models::detection_tests::ernie4_5_moe_vl_model_type_is_detected ... ok +test models::detection_tests::fastvlm_model_type_is_detected ... ok +test models::detection_tests::florence2_model_type_is_detected ... ok +test models::detection_tests::gemma3_text_model_is_embedding_only_with_bidirectional_attention ... ok +test models::detection_tests::gemma4_detection_stays_on_text_route_without_vision_weights ... ok +test models::detection_tests::gemma4_detection_uses_vlm_route_for_nvfp4_prefixed_vision_weights ... ok +test models::detection_tests::gemma4_detection_uses_vlm_route_when_vision_weights_exist ... ok +test models::detection_tests::got_model_type_is_detected_for_both_released_layouts ... ok +test models::detection_tests::gpt2_model_type_is_detected ... ok +test models::detection_tests::gpt_bigcode_model_type_is_detected ... ok +test models::detection_tests::gpt_neox_model_type_is_detected ... ok +test models::detection_tests::granite_vision_model_type_is_detected ... ok +test models::detection_tests::has_vision_config_detects_vlm_configs ... ok +test models::detection_tests::helium_model_type_is_detected ... ok +test models::detection_tests::hunyuan_vl_model_type_is_detected ... ok +test models::detection_tests::idefics3_smolvlm_instruct_model_type_is_detected ... ok +test models::detection_tests::inkling_model_type_aliases_are_detected ... ok +test models::detection_tests::iquestcoder_architecture_is_untouched_by_the_loop_guard ... ok +test models::detection_tests::iquestcoder_model_type_is_detected ... ok +test models::detection_tests::iquestcoder_with_a_qkv_clamp_is_refused_at_load ... ok +test models::detection_tests::iquestcoder_with_a_window_size_but_the_switch_off_still_routes ... ok +test models::detection_tests::iquestcoder_with_no_layer_reaching_the_window_still_routes ... ok +test models::detection_tests::iquestcoder_with_the_sliding_window_enabled_is_refused_at_load ... ok +test models::detection_tests::iquestloopcoder_architecture_beats_an_iquestcoder_model_type ... ok +test models::detection_tests::iquestloopcoder_architecture_beats_any_model_type_spelling ... ok +test models::detection_tests::iquestloopcoder_is_not_confused_with_iquestcoder ... ok +test models::detection_tests::iquestloopcoder_model_type_is_detected ... ok +test models::detection_tests::iquestloopcoder_relabelled_llama_still_routes_to_the_loop_decoder ... ok +test models::detection_tests::iquestloopcoder_with_an_unreadable_loop_num_is_refused_at_load ... ok +test models::detection_tests::iquestloopcoder_with_an_unsupported_loop_num_is_refused_at_load ... ok +test models::detection_tests::iquestloopcoder_without_loop_num_takes_the_vendor_default ... ok +test models::detection_tests::isolated_inkling_mtp_download_is_not_a_standalone_model ... ok +test models::detection_tests::kimi_k3_with_vision_config_and_vision_tower_weights_is_the_vlm ... ok +test models::detection_tests::kimi_k3_with_vision_config_but_no_vision_weights_is_the_text_backbone ... ok +test models::detection_tests::kimi_k3_without_vision_config_is_the_text_backbone_even_with_tower_weights ... ok +test models::detection_tests::laguna_dflash_drafter_is_rejected_as_a_standalone_model ... ok +test models::detection_tests::laguna_model_type_is_detected ... ok +test models::detection_tests::lfm2_vl_model_type_is_detected_both_spellings ... ok +test models::detection_tests::llava_next_with_granite_text_routes_to_granite_vision ... ok +test models::detection_tests::llava_next_without_granite_stays_llava ... ok +test models::detection_tests::llava_qwen2_hyphen_stays_bunny ... ok +test models::detection_tests::llmjpvl_model_type_is_detected_for_both_released_backbones ... ok +test models::detection_tests::mage_vl_model_type_is_detected_with_and_without_vision ... ok +test models::detection_tests::mellum_model_type_is_detected ... ok +test models::detection_tests::ministral3_model_is_embedding_only_when_not_causal ... ok +test models::detection_tests::mllama_model_type_is_detected ... ok +test models::detection_tests::modules_json_pooling_entry_routes_qwen3_to_qwen3_embedding ... ok +test models::detection_tests::modules_json_with_only_logit_score_does_not_trigger_embedding ... ok +test models::detection_tests::muse_glimmer_model_type_is_detected ... ok +test models::detection_tests::nanochat_model_type_is_detected ... ok +test models::detection_tests::nemotron_parse_model_type_is_detected ... ok +test models::detection_tests::nemotron_voicechat_model_type_is_detected ... ok +test models::detection_tests::one_pooling_config_routes_qwen3_and_qwen3_vl_to_embedding_variants ... ok +test models::detection_tests::ordinary_qwen3_full_model_still_detects_as_qwen3 ... ok +test models::detection_tests::qwen3_for_causal_lm_without_pooling_layout_stays_qwen3 ... ok +test models::detection_tests::qwen3_omni_moe_model_type_is_detected ... ok +test models::detection_tests::relabelling_to_llama_does_not_escape_the_config_guards ... ok +test models::detection_tests::sequence_classification_checkpoints_are_never_embedding ... ok +test models::detection_tests::the_llama_and_mistral_labels_keep_the_plain_llama_route ... ok +test models::detection_tests::whisper_model_type_is_detected ... ok +test models::detection_tests::youtu_llm_model_type_is_detected_for_both_vendor_labels ... ok +test models::diffusion_gemma::tests::canvas_length_rule_matches_reference ... ok +test models::diffusion_gemma::tests::computes_contiguous_vision_block_ids ... ok +test models::diffusion_gemma::tests::confidence_transfer_mask_accepts_above_threshold ... ok +test models::diffusion_gemma::tests::confidence_transfer_mask_force_all_returns_unrevealed ... ok +test models::diffusion_gemma::tests::confidence_transfer_mask_force_ignores_revealed_positions ... ok +test models::diffusion_gemma::tests::confidence_transfer_mask_forces_best_unrevealed_when_none_clear ... ok +test models::diffusion_gemma::tests::confidence_transfer_mask_no_unrevealed_yields_empty_mask ... ok +test models::diffusion_gemma::tests::debug_canvas_pattern_matches_formula ... ok +test models::diffusion_gemma::tests::dense_windowed_mask_is_correct_for_multi_token_offset_forward ... ok +test models::diffusion_gemma::tests::derives_mm_token_type_ids_for_image_block ... ok +test models::diffusion_gemma::tests::entropy_bound_accept_count_all_below_bound ... ok +test models::diffusion_gemma::tests::entropy_bound_accept_count_empty_is_zero ... ok +test models::diffusion_gemma::tests::entropy_bound_accept_count_negative_bound_forces_one ... ok +test models::diffusion_gemma::tests::entropy_bound_accept_count_none_below_except_forced_first ... ok +test models::diffusion_gemma::tests::entropy_bound_accept_count_partial_prefix ... ok +test models::diffusion_gemma::tests::entropy_bound_acceptance_mask_picks_lowest_entropy_positions ... ok +test models::diffusion_gemma::tests::entropy_bound_acceptance_mask_ties_prefer_lower_index ... ok +test models::diffusion_gemma::tests::expands_single_image_placeholder ... ok +test models::diffusion_gemma::tests::expands_two_image_placeholders_into_separate_blocks ... ok +test models::diffusion_gemma::tests::linear_schedule_first_and_last_step ... ok +test models::diffusion_gemma::tests::overlay_aligns_block_ids_to_windowed_key_axis ... ok +test models::diffusion_gemma::tests::overlay_makes_image_block_bidirectional_keeps_text_causal ... ok +test models::diffusion_gemma::tests::parses_real_config_snippet ... ok +test models::diffusion_gemma::tests::parses_vision_config_fields ... ok +test models::diffusion_gemma::tests::real_model_forward_determinism ... ignored, real-model regression test; needs the DiffusionGemma checkpoint on disk +test models::diffusion_gemma::tests::real_model_loads_vision_front_end ... ignored, real-model regression test; needs the DiffusionGemma checkpoint on disk +test models::diffusion_gemma::tests::rejects_unknown_sampler_class ... ok +test models::diffusion_gemma::tests::sanitize_drops_clip_calibration_when_unclipped ... ok +test models::diffusion_gemma::tests::sanitize_keeps_text_and_vision_weights ... ok +test models::diffusion_gemma::tests::split_gate_up_tensor_rejects_bad_shapes ... ok +test models::diffusion_gemma::tests::split_gate_up_tensor_splits_output_axis ... ok +test models::diffusion_gemma::tests::stability_tracker_checks_history_before_pushing ... ok +test models::diffusion_gemma::tests::stability_tracker_threshold_two_needs_two_prior_matches ... ok +test models::diffusion_gemma::tests::text_args_forces_structural_flags ... ok +test models::diffusion_gemma::tests::vision_config_absent_for_text_only_export ... ok +test models::dots1_tests::dense_prefix_then_moe_layers ... ok +test models::dots1_tests::eos_array_form_parses ... ok +test models::dots1_tests::eos_single_id_merges_known_stop_tokens ... ok +test models::dots1_tests::grouped_routing_defaults_to_one_when_absent ... ok +test models::dots1_tests::grouped_routing_parses_when_present ... ok +test models::dots1_tests::head_dim_falls_back_to_hidden_over_heads ... ok +test models::dots1_tests::parses_moe_topology_fields ... ok +test models::dots1_tests::quantization_defaults_resolve ... ok +test models::dots1_tests::shared_mlp_intermediate_derivation ... ok +test models::drafter_loader::tests::glm_drafter_routes_to_the_binary_loader_not_the_core_refusal ... ok +test models::drafter_loader::tests::other_model_types_delegate_to_core ... ok +test models::dynamic_ntk_rope::tests::a_default_block_is_the_unscaled_schedule ... ok +test models::dynamic_ntk_rope::tests::a_dynamic_block_leaves_positions_unscaled ... ok +test models::dynamic_ntk_rope::tests::a_dynamic_block_with_a_zero_max_position_is_a_load_error ... ok +test models::dynamic_ntk_rope::tests::a_linear_block_divides_positions_by_the_factor ... ok +test models::dynamic_ntk_rope::tests::a_scaled_scheme_without_a_usable_factor_is_a_load_error ... ok +test models::dynamic_ntk_rope::tests::an_absent_block_leaves_positions_unscaled ... ok +test models::dynamic_ntk_rope::tests::an_unimplemented_scheme_is_a_load_error ... ok +test models::dynamic_ntk_rope::tests::apply_divides_positions_for_a_linear_block ... ok +test models::dynamic_ntk_rope::tests::apply_honors_the_traditional_flag ... ok +test models::dynamic_ntk_rope::tests::apply_uses_the_rescaled_base_past_max_position ... ok +test models::dynamic_ntk_rope::tests::apply_uses_unit_scale_and_the_plain_base_inside_max_position ... ok +test models::dynamic_ntk_rope::tests::both_spellings_of_the_scheme_key_resolve ... ok +test models::dynamic_ntk_rope::tests::the_dynamic_base_does_not_move_at_or_below_max_position ... ok +test models::dynamic_ntk_rope::tests::the_dynamic_base_grows_past_max_position ... ok +test models::dynamic_ntk_rope::tests::the_dynamic_base_grows_past_max_position_for_internlm2_geometry ... ok +test models::dynamic_ntk_rope::tests::the_dynamic_base_is_monotonic_in_sequence_length ... ok +test models::dynamic_ntk_rope::tests::the_rescale_log_fires_once_per_schedule_not_once_per_process ... ok +test models::embedding_sanitize::embedding_sanitize_tests::both_layouts_produce_the_same_dense_shapes ... ok +test models::embedding_sanitize::embedding_sanitize_tests::dense_folder_keys_map_by_index ... ok +test models::embedding_sanitize::embedding_sanitize_tests::mlx_conversion_layout_is_left_alone ... ok +test models::embedding_sanitize::embedding_sanitize_tests::prefixing_is_idempotent_and_skips_non_backbone_roots ... ok +test models::embedding_sanitize::embedding_sanitize_tests::unknown_dense_submodule_is_not_renamed ... ok +test models::ernie4_5_moe::tests::ernie4_5_moe_switch_linear_rejects_quantization_params_that_would_abort_gather_qmm ... ok +test models::ernie4_5_moe_vl::tests::correction_bias_is_selection_only ... ok +test models::ernie4_5_moe_vl::tests::ernie4_5_moe_vl_switch_linear_rejects_params_that_would_abort_gather_qmm ... ok +test models::ernie4_5_moe_vl::tests::int_or_pair_parses_both_forms ... ok +test models::ernie4_5_moe_vl::tests::moe_layer_rule_matches_checkpoint_geometry ... ok +test models::ernie4_5_moe_vl::tests::text_only_mrope_degenerates_to_traditional_rope ... ok +test models::exaone_moe::exaone_moe_mask_tests::global_mask_sizes_from_live_len_not_offset_after_trim ... ok +test models::exaone_moe::exaone_moe_mask_tests::sliding_cache_live_len_matches_returned_keys ... ok +test models::exaone_moe::tests::exaone_moe_switch_linear_rejects_quantization_params_that_would_abort_gather_qmm ... ok +test models::falcon_h1_tests::falcon_h1_config_parses ... ok +test models::falcon_h1_tests::falcon_h1_conv_and_projection_geometry ... ok +test models::falcon_h1_tests::falcon_h1_conv_state_keep_length ... ok +test models::falcon_h1_tests::falcon_h1_eos_token_id_handles_array_scalar_and_missing ... ok +test models::falcon_h1_tests::falcon_h1_mamba_dims_parse ... ok +test models::falcon_h1_tests::falcon_h1_mamba_head_dim_falls_back_to_dssm_over_heads ... ok +test models::falcon_h1_tests::falcon_h1_mamba_rms_norm_defaults_false_and_parses_true ... ok +test models::falcon_h1_tests::falcon_h1_multipliers_default_to_one_when_absent ... ok +test models::falcon_h1_tests::falcon_h1_tied_head_factor_is_lm_over_embedding ... ok +test models::falcon_h1_tests::falcon_h1_unquantized_config_uses_quantization_defaults ... ok +test models::falcon_ocr::tests::a_matching_prefill_gets_the_stashed_positions ... ok +test models::falcon_ocr::tests::a_mismatched_prefill_evicts_the_previous_requests_state ... ok +test models::falcon_ocr::tests::a_mismatched_prefill_evicts_the_sequence_entry_too ... ok +test models::falcon_ocr::tests::an_evicted_entry_stays_gone_for_the_next_prefill_and_decode ... ok +test models::falcon_ocr::tests::binding_drains_the_fallback_slot ... ok +test models::falcon_ocr::tests::reading_the_decode_delta_leaves_the_entry_in_place ... ok +test models::falcon_ocr::tests::releasing_a_sequence_drops_only_that_entry ... ok +test models::falcon_ocr::tests::the_decode_delta_resolves_from_the_fallback_slot_and_from_a_sequence ... ok +test models::falcon_ocr::tests::the_hf_key_scheme_parses_to_the_same_shape ... ok +test models::falcon_ocr::tests::the_raw_key_scheme_parses ... ok +test models::falcon_ocr::tests::the_sequence_map_wins_over_the_fallback_slot ... ok +test models::falcon_ocr::tests::token_ids_carry_the_four_register_tokens_in_order ... ok +test models::falcon_ocr_rope::tests::a_non_square_grid_scales_the_two_axes_apart ... ok +test models::falcon_ocr_rope::tests::a_text_only_prompt_gets_contiguous_positions ... ok +test models::falcon_ocr_rope::tests::a_text_only_prompt_has_a_zero_rope_delta ... ok +test models::falcon_ocr_rope::tests::a_zero_spatial_position_makes_the_golden_rotary_the_identity ... ok +test models::falcon_ocr_rope::tests::an_image_block_collapses_onto_one_temporal_position ... ok +test models::falcon_ocr_rope::tests::spatial_coordinates_are_row_major_and_centred ... ok +test models::falcon_ocr_rope::tests::text_tokens_get_the_identity_spatial_position ... ok +test models::falcon_ocr_rope::tests::the_blocked_mask_value_is_finite ... ok +test models::falcon_ocr_rope::tests::the_hybrid_mask_is_bidirectional_inside_the_image_and_causal_outside ... ok +test models::falcon_ocr_rope::tests::the_hybrid_mask_is_plain_causal_without_images ... ok +test models::falcon_ocr_rope::tests::the_rope_delta_reconciles_cache_offset_with_temporal_position ... ok +test models::falcon_ocr_rope::tests::the_rotary_rotates_interleaved_pairs ... ok +test models::falcon_ocr_rope::tests::the_temporal_frequencies_match_the_reference_formula ... ok +test models::florence2::checkpoint::florence2_quantized_tests::both_half_configs_inherit_the_top_level_quantization_block ... ok +test models::florence2::checkpoint::florence2_quantized_tests::dense_checkpoints_pass_the_refusal_untouched ... ok +test models::florence2::checkpoint::florence2_quantized_tests::quantization_defaults_only_absent_parameters ... ok +test models::florence2::checkpoint::florence2_quantized_tests::quantization_defaults_to_dense_without_a_block ... ok +test models::florence2::checkpoint::florence2_quantized_tests::quantization_is_read_from_every_location_the_predicate_accepts ... ok +test models::florence2::checkpoint::florence2_quantized_tests::quantization_presence_is_not_inferable_from_the_parsed_values ... ok +test models::florence2::checkpoint::florence2_quantized_tests::quantization_reads_the_top_level_block ... ok +test models::florence2::checkpoint::florence2_quantized_tests::quantization_rejects_malformed_parameters ... ok +test models::florence2::checkpoint::florence2_quantized_tests::quantization_rejects_out_of_range_parameters ... ok +test models::florence2::checkpoint::florence2_quantized_tests::quantized_dense_only_tensors_are_refused_by_name ... ok +test models::florence2::checkpoint::florence2_quantized_tests::quantized_layer_norms_are_refused_by_name ... ok +test models::florence2::checkpoint::florence2_quantized_tests::quantized_projections_and_tables_are_accepted ... ok +test models::florence2::checkpoint::florence2_quantized_tests::sanitize_fills_shared_from_a_dense_embed_tokens ... ok +test models::florence2::checkpoint::florence2_quantized_tests::sanitize_fills_shared_with_every_quantized_plane ... ok +test models::florence2::checkpoint::florence2_quantized_tests::sanitize_leaves_an_existing_shared_table_alone ... ok +test models::florence2::coords::florence2_coords_tests::dequantize_box_scales_axes_independently ... ok +test models::florence2::coords::florence2_coords_tests::dequantize_box_uses_bin_centers ... ok +test models::florence2::coords::florence2_coords_tests::dequantize_coordinates_alternates_x_and_y ... ok +test models::florence2::coords::florence2_coords_tests::dequantize_coordinates_drops_unpaired_tail ... ok +test models::florence2::coords::florence2_coords_tests::florence2_loc_tokens_are_contiguous ... ok +test models::florence2::coords::florence2_coords_tests::quantize_clamps_out_of_range_pixels ... ok +test models::florence2::coords::florence2_coords_tests::quantize_is_the_inverse_of_dequantize ... ok +test models::florence2::coords::florence2_coords_tests::quantize_survives_a_zero_size ... ok +test models::florence2::coords::florence2_coords_tests::region_prompt_is_four_location_tokens ... ok +test models::florence2::florence2_tests::cross_cache_is_one_shot_and_self_cache_grows ... ok +test models::florence2::florence2_tests::encode_embeds_matches_encode_tokens ... ok +test models::florence2::florence2_tests::encoder_is_bidirectional ... ok +test models::florence2::florence2_tests::generate_greedy_rejects_empty_and_overlong_prompts ... ok +test models::florence2::florence2_tests::generate_greedy_round_trip_produces_valid_tokens ... ok +test models::florence2::florence2_tests::incremental_decode_matches_full_sequence ... ok +test models::florence2::florence2_tests::prefill_then_steps_matches_full_sequence ... ok +test models::florence2::florence2_tests::sequential_requests_reuse_no_encoder_state ... ok +test models::florence2::florence2_tests::shift_tokens_right_handles_empty_and_single ... ok +test models::florence2::florence2_tests::shift_tokens_right_prepends_decoder_start ... ok +test models::florence2::florence2_tests::shift_tokens_right_replaces_label_padding ... ok +test models::florence2::florence2_tests::text_config_missing_required_field_errors ... ok +test models::florence2::florence2_tests::text_config_parses_bare_text_object ... ok +test models::florence2::florence2_tests::text_config_parses_nested_real_shape ... ok +test models::florence2::florence2_tests::text_config_rejects_indivisible_heads ... ok +test models::florence2::model::florence2_fusion_tests::additive_mask_maps_one_to_zero_and_zero_to_neg_inf ... ok +test models::florence2::model::florence2_fusion_tests::additive_mask_rejects_non_2d_mask ... ok +test models::florence2::model::florence2_fusion_tests::config_defaults_image_token_id_to_vocab_size ... ok +test models::florence2::model::florence2_fusion_tests::cosine_temporal_embedding_prefers_checkpoint_table ... ok +test models::florence2::model::florence2_fusion_tests::cosine_temporal_embedding_rejects_oversized_max_temporal ... ok +test models::florence2::model::florence2_fusion_tests::cosine_temporal_embedding_rejects_wrong_shape_and_range ... ok +test models::florence2::model::florence2_fusion_tests::cosine_temporal_embedding_row_zero_is_interleaved_zero_one ... ok +test models::florence2::model::florence2_fusion_tests::encode_fused_rejects_wrong_rank_input ... ok +test models::florence2::model::florence2_fusion_tests::encode_image_pools_and_projects_to_text_width ... ok +test models::florence2::model::florence2_fusion_tests::encode_image_rejects_feature_width_mismatch ... ok +test models::florence2::model::florence2_fusion_tests::encode_image_rejects_non_square_feature_maps ... ok +test models::florence2::model::florence2_fusion_tests::encode_image_rejects_unsupported_feature_source ... ok +test models::florence2::model::florence2_fusion_tests::encode_matches_manual_fusion_then_text_encoder ... ok +test models::florence2::model::florence2_fusion_tests::encode_rejects_sequences_past_max_position_embeddings ... ok +test models::florence2::model::florence2_fusion_tests::encoder_mask_is_identity_when_all_ones_and_load_bearing_otherwise ... ok +test models::florence2::model::florence2_fusion_tests::from_weights_rejects_empty_image_feature_source ... ok +test models::florence2::model::florence2_fusion_tests::from_weights_rejects_mismatched_image_projection ... ok +test models::florence2::model::florence2_fusion_tests::from_weights_rejects_missing_image_projection ... ok +test models::florence2::model::florence2_fusion_tests::from_weights_rejects_missing_position_embedding_configs ... ok +test models::florence2::model::florence2_fusion_tests::from_weights_rejects_position_table_width_mismatch ... ok +test models::florence2::model::florence2_fusion_tests::from_weights_rejects_short_position_table ... ok +test models::florence2::model::florence2_fusion_tests::from_weights_rejects_unsupported_embedding_types ... ok +test models::florence2::model::florence2_fusion_tests::fused_prompt_len_counts_image_features_and_filtered_text_tokens ... ok +test models::florence2::model::florence2_fusion_tests::generate_greedy_runs_the_whole_fused_path ... ok +test models::florence2::model::florence2_fusion_tests::image_feature_source_order_controls_layout ... ok +test models::florence2::model::florence2_fusion_tests::learned_position_embedding_puts_column_first_then_row ... ok +test models::florence2::model::florence2_fusion_tests::learned_position_embedding_rejects_oversized_grid ... ok +test models::florence2::model::florence2_fusion_tests::learned_position_embedding_rejects_width_mismatch ... ok +test models::florence2::model::florence2_fusion_tests::load_no_longer_rejects_a_checkpoint_for_declaring_quantization ... ok +test models::florence2::model::florence2_fusion_tests::merge_concatenates_image_then_prompt ... ok +test models::florence2::model::florence2_fusion_tests::merge_rejects_incompatible_prompt_shape ... ok +test models::florence2::model::florence2_fusion_tests::merge_rejects_non_3d_image_features ... ok +test models::florence2::model::florence2_fusion_tests::merge_without_prompt_returns_image_features_alone ... ok +test models::florence2::model::florence2_fusion_tests::sanitize_conv_remap_is_idempotent_and_fixes_pytorch_layout ... ok +test models::florence2::model::florence2_fusion_tests::sanitize_drops_final_logits_bias ... ok +test models::florence2::model::florence2_fusion_tests::sanitize_fills_shared_from_embed_tokens ... ok +test models::florence2::model::florence2_fusion_tests::text_config_rejects_degenerate_shape_fields ... ok +test models::florence2::model::florence2_fusion_tests::text_config_rejects_out_of_vocabulary_token_ids ... ok +test models::florence2::parse::florence2_parse_tests::adversarial_answers_do_not_panic ... ok +test models::florence2::parse::florence2_parse_tests::empty_and_marker_only_answers_produce_nothing ... ok +test models::florence2::parse::florence2_parse_tests::florence2_post_processing_patterns_compile ... ok +test models::florence2::parse::florence2_parse_tests::multibyte_phrases_do_not_split_a_character ... ok +test models::florence2::parse::florence2_parse_tests::parse_boxes_allows_empty_phrases_for_region_proposal ... ok +test models::florence2::parse::florence2_parse_tests::parse_boxes_drops_non_ascii_characters ... ok +test models::florence2::parse::florence2_parse_tests::parse_boxes_ignores_short_runs ... ok +test models::florence2::parse::florence2_parse_tests::parse_boxes_misreads_a_bare_run_without_the_flag ... ok +test models::florence2::parse::florence2_parse_tests::parse_boxes_reads_labelled_detections ... ok +test models::florence2::parse::florence2_parse_tests::parse_boxes_repeats_the_label_across_boxes ... ok +test models::florence2::parse::florence2_parse_tests::parse_boxes_trims_surrounding_whitespace ... ok +test models::florence2::parse::florence2_parse_tests::parse_ocr_reads_quadrilaterals ... ok +test models::florence2::parse::florence2_parse_tests::parse_ocr_requires_eight_locations ... ok +test models::florence2::parse::florence2_parse_tests::parse_ocr_scales_x_and_y_separately ... ok +test models::florence2::parse::florence2_parse_tests::parse_phrase_grounding_drops_blacklisted_phrases ... ok +test models::florence2::parse::florence2_parse_tests::parse_phrase_grounding_groups_boxes_per_phrase ... ok +test models::florence2::parse::florence2_parse_tests::parse_polygons_drops_an_unpaired_trailing_bin ... ok +test models::florence2::parse::florence2_parse_tests::parse_polygons_reads_a_single_outline ... ok +test models::florence2::parse::florence2_parse_tests::parse_polygons_splits_instances_on_poly_markers ... ok +test models::florence2::parse::florence2_parse_tests::parse_polygons_splits_outlines_on_sep ... ok +test models::florence2::parse::florence2_parse_tests::parse_polygons_stops_the_phrase_at_the_poly_marker ... ok +test models::florence2::postprocess::florence2_postprocess_tests::coordinates_scale_with_the_declared_image_size ... ok +test models::florence2::postprocess::florence2_postprocess_tests::every_task_routes_to_its_declared_variant ... ok +test models::florence2::postprocess::florence2_postprocess_tests::object_detection_returns_aligned_boxes_and_labels ... ok +test models::florence2::postprocess::florence2_postprocess_tests::ocr_with_region_returns_quad_boxes ... ok +test models::florence2::postprocess::florence2_postprocess_tests::open_vocabulary_detection_switches_on_the_poly_marker ... ok +test models::florence2::postprocess::florence2_postprocess_tests::phrase_grounding_flattens_one_label_per_box ... ok +test models::florence2::postprocess::florence2_postprocess_tests::plain_ocr_and_ocr_with_region_diverge ... ok +test models::florence2::postprocess::florence2_postprocess_tests::pure_text_strips_only_the_sequence_markers ... ok +test models::florence2::postprocess::florence2_postprocess_tests::region_proposal_returns_unlabelled_boxes ... ok +test models::florence2::postprocess::florence2_postprocess_tests::region_questions_return_text ... ok +test models::florence2::postprocess::florence2_postprocess_tests::segmentation_returns_polygons_grouped_per_instance ... ok +test models::florence2::processor::florence2_processor_tests::caption_prompt_tokenizes_to_the_pinned_ids ... ok +test models::florence2::processor::florence2_processor_tests::decoding_keeps_location_tokens ... ok +test models::florence2::processor::florence2_processor_tests::every_task_prompt_round_trips_through_the_tokenizer ... ok +test models::florence2::processor::florence2_processor_tests::missing_checkpoint_directory_is_an_error ... ok +test models::florence2::processor::florence2_processor_tests::post_process_reaches_the_parsers ... ok +test models::florence2::processor::florence2_processor_tests::region_inputs_tokenize_as_single_location_tokens ... ok +test models::florence2::render::florence2_render_tests::empty_result_falls_back_to_raw_text ... ok +test models::florence2::render::florence2_render_tests::json_boxes_or_polygons_carries_all_four_arrays ... ok +test models::florence2::render::florence2_render_tests::json_boxes_use_upstream_bboxes_labels_keys ... ok +test models::florence2::render::florence2_render_tests::json_polygons_keep_per_instance_outline_nesting ... ok +test models::florence2::render::florence2_render_tests::json_quad_boxes_flatten_eight_points ... ok +test models::florence2::render::florence2_render_tests::json_text_result_carries_trimmed_text ... ok +test models::florence2::render::florence2_render_tests::renders_boxes_one_instance_per_line ... ok +test models::florence2::render::florence2_render_tests::renders_boxes_or_polygons_box_branch ... ok +test models::florence2::render::florence2_render_tests::renders_quad_boxes_and_polygons ... ok +test models::florence2::render::florence2_render_tests::renders_text_result ... ok +test models::florence2::runtime::florence2_runtime_tests::input_split_defers_validation_to_expand ... ok +test models::florence2::runtime::florence2_runtime_tests::parses_bare_marker_forms ... ok +test models::florence2::runtime::florence2_runtime_tests::parses_every_task_marker_round_trip ... ok +test models::florence2::runtime::florence2_runtime_tests::parses_marker_with_input_text ... ok +test models::florence2::runtime::florence2_runtime_tests::parses_region_input_without_separating_space ... ok +test models::florence2::runtime::florence2_runtime_tests::rejects_unknown_and_malformed_prompts ... ok +test models::florence2::scan::florence2_scan_tests::bare_loc_prefix_is_stripped ... ok +test models::florence2::scan::florence2_scan_tests::blacklist_is_sorted_for_binary_search ... ok +test models::florence2::scan::florence2_scan_tests::leading_phrase_fails_across_a_newline ... ok +test models::florence2::scan::florence2_scan_tests::leading_phrase_runs_past_a_sep_marker ... ok +test models::florence2::scan::florence2_scan_tests::leading_phrase_stops_at_the_first_stop_marker ... ok +test models::florence2::scan::florence2_scan_tests::location_bins_reads_every_token ... ok +test models::florence2::scan::florence2_scan_tests::location_bins_saturates_instead_of_dropping_a_wide_run ... ok +test models::florence2::tasks::florence2_tasks_tests::every_task_is_covered_exactly_once ... ok +test models::florence2::tasks::florence2_tasks_tests::input_arity_mismatches_are_rejected ... ok +test models::florence2::tasks::florence2_tasks_tests::prompt_expansion_matches_the_checkpoint ... ok +test models::florence2::tasks::florence2_tasks_tests::region_inputs_pass_through_verbatim ... ok +test models::florence2::tasks::florence2_tasks_tests::seven_tasks_take_an_input ... ok +test models::florence2::tasks::florence2_tasks_tests::task_markers_parse_from_strings ... ok +test models::florence2::tasks::florence2_tasks_tests::tokens_and_post_processing_types_match_the_checkpoint ... ok +test models::fp8_block::fp8_block_tests::fp8_block_requantize_decodes_every_finite_e4m3_byte ... ok +test models::fp8_block::fp8_block_tests::fp8_block_requantize_is_identity_without_sidecars ... ok +test models::fp8_block::fp8_block_tests::fp8_block_requantize_leaves_unpaired_tensors_dense ... ok +test models::fp8_block::fp8_block_tests::fp8_block_requantize_matches_direct_path ... ok +test models::fp8_block::fp8_block_tests::fp8_block_requantize_matches_direct_path_when_block_aligned ... ok +test models::fp8_block::fp8_block_tests::fp8_block_requantize_rejects_broken_pairings ... ok +test models::fp8_block::fp8_block_tests::fp8_block_requantize_rejects_odd_width ... ok +test models::fp8_block::fp8_block_tests::fp8_block_requantize_rejects_predecoded_weights ... ok +test models::fp8_block::fp8_block_tests::fp8_block_requantize_round_trip_stays_within_half_an_e4m3_step ... ok +test models::fp8_block::fp8_block_tests::merge_fp8_block_quantization_respects_an_existing_block ... ok +test models::fp8_block::fp8_block_tests::qwen_fp8_config_detection ... ok +test models::g2p::lexicon::tests::all_entries_use_known_symbols ... ok +test models::g2p::lexicon::tests::lexicon_is_nontrivial ... ok +test models::g2p::lexicon::tests::loads_common_words ... ok +test models::g2p::normalize::tests::expands_integers ... ok +test models::g2p::normalize::tests::keeps_contractions ... ok +test models::g2p::normalize::tests::number_token_in_text ... ok +test models::g2p::normalize::tests::splits_words_and_punct ... ok +test models::g2p::rules::tests::empty_word_is_empty ... ok +test models::g2p::rules::tests::handles_sh_digraph ... ok +test models::g2p::rules::tests::places_single_primary_stress ... ok +test models::g2p::rules::tests::silent_final_e_lengthens ... ok +test models::g2p::rules::tests::soft_c_before_e ... ok +test models::g2p::tests::empty_input_is_empty ... ok +test models::g2p::tests::numbers_are_spoken ... ok +test models::g2p::tests::oov_word_uses_rules ... ok +test models::g2p::tests::passes_punctuation_through ... ok +test models::g2p::tests::phonemizes_known_words ... ok +test models::g2p::tests::possessive_clitic_strips_and_retries_lexicon ... ok +test models::g2p::tests::whitespace_only_input_is_empty ... ok +test models::gated_delta::tests::chain_parity_block_matches_single_steps_bit_exactly_on_ops_path ... ok +test models::gated_delta::tests::chain_parity_forfeited_by_shape_matches_the_cpp_dispatch_branches ... ok +test models::gated_delta::tests::chunked_prefill_matches_sequential_reference ... ignored, requires serial MLX execution +test models::gated_delta::tests::compute_g_output_is_float32 ... ignored, requires serial MLX execution +test models::gated_delta::tests::compute_g_values_are_in_unit_interval ... ignored, requires serial MLX execution +test models::gated_delta::tests::gated_delta_cache_advance_increments_offset ... ok +test models::gated_delta::tests::gated_delta_cache_default_is_empty ... ok +test models::gated_delta::tests::gated_delta_cache_snapshot_restore_round_trips_state_shapes ... ok +test models::gated_delta::tests::gated_delta_ops_multi_token_output_shape ... ignored, requires serial MLX execution +test models::gated_delta::tests::gated_delta_ops_passes_state_through_when_provided ... ignored, requires serial MLX execution +test models::gated_delta::tests::gated_delta_ops_single_token_output_shape ... ignored, requires serial MLX execution +test models::gated_delta::tests::gated_delta_step_output_shape_and_dtype ... ignored, requires serial MLX execution +test models::gated_delta::tests::gated_delta_step_with_mask_updates_state_selectively ... ignored, requires serial MLX execution +test models::gated_delta::tests::metal_gated_delta_shape_gate_accepts_supported_contract ... ok +test models::gated_delta::tests::metal_gated_delta_shape_gate_rejects_unsupported_contracts ... ok +test models::gated_delta::tests::precise_swiglu_gate_matches_float32_reference_and_restores_dtype ... ignored, requires serial MLX execution +test models::gated_delta::tests::restore_dtype_casts_promoted_values_back_to_input_dtype ... ignored, requires serial MLX execution +test models::gated_delta::tests::rms_norm_gated_forward_restores_hidden_state_dtype_without_gate ... ignored, requires serial MLX execution +test models::gemma2::tests::last_logits_match_the_sliced_full_forward ... ok +test models::gemma3::gemma3_mask_tests::global_prefill_mask_sizes_from_live_len_not_offset_after_trim ... ok +test models::gemma3::gemma3_mask_tests::sliding_cache_live_len_matches_returned_keys ... ok +test models::gemma3::gemma3_mask_tests::sliding_prefill_mask_fresh_over_window_spans_full_key_axis ... ok +test models::gemma3::gemma3_mask_tests::sliding_prefill_mask_nonfresh_over_window_matches_cache_return ... ok +test models::gemma3::gemma3_tests::a_config_without_a_block_leaves_every_layer_unscaled ... ok +test models::gemma3::gemma3_tests::an_unsupported_scheme_fails_every_layer_not_just_the_global_ones ... ok +test models::gemma3::gemma3_tests::batched_decode_entry::batched_decode_matches_single_row_decode_past_the_window ... ok +test models::gemma3::gemma3_tests::cache_attend_entry::global_fp16_layer_takes_the_route_the_block_ran ... ok +test models::gemma3::gemma3_tests::cache_attend_entry::global_int8_layer_takes_the_route_the_block_ran ... ok +test models::gemma3::gemma3_tests::cache_attend_entry::global_turbo4_delegated_layer_decodes_through_the_delegated_route ... ok +test models::gemma3::gemma3_tests::cache_attend_entry::sliding_fp16_layer_takes_the_route_the_block_ran_through_the_wrap ... ok +test models::gemma3::gemma3_tests::cache_attend_entry::sliding_turbo4_asym_layer_takes_the_route_the_block_ran ... ok +test models::gemma3::gemma3_tests::global_layer_rope_matches_scaled_positions ... ok +test models::gemma3::gemma3_tests::global_rope_scale_accepts_both_spellings_of_the_type_key ... ok +test models::gemma3::gemma3_tests::global_rope_scale_reads_linear_factor ... ok +test models::gemma3::gemma3_tests::rotating_live_len::live_len_matches_the_keys_a_multi_token_append_returns ... ok +test models::gemma3::gemma3_tests::sliding_layers_keep_unit_scale ... ok +test models::gemma3::gemma3_tests::snapshot_prompt_cache::a_foreign_family_snapshot_is_refused ... ignored, requires serial MLX execution +test models::gemma3::gemma3_tests::snapshot_prompt_cache::a_quantized_cache_mode_declines_the_restore ... ignored, requires serial MLX execution +test models::gemma3::gemma3_tests::snapshot_prompt_cache::a_wrapped_sliding_layer_declines_a_truncating_restore ... ignored, requires serial MLX execution +test models::gemma3::gemma3_tests::snapshot_prompt_cache::appended_prefill_after_a_restore_matches_a_cold_run ... ignored, requires serial MLX execution +test models::gemma3::gemma3_tests::snapshot_prompt_cache::gemma3_declares_snapshot_reuse ... ok +test models::gemma3::gemma3_tests::snapshot_prompt_cache::prefill_rows_match_token_by_token_decode ... ok +test models::gemma3::gemma3_tests::snapshot_prompt_cache::snapshot_restore_matches_cold_decode ... ignored, requires serial MLX execution +test models::gemma3::gemma3_tests::snapshot_prompt_cache::truncated_restore_matches_a_cold_prefill_of_the_same_prefix ... ignored, requires serial MLX execution +test models::gemma3::gemma3_tests::the_shipped_4b_text_config_resolves_to_one_eighth ... ok +test models::gemma3_backbone::gemma3_backbone_tests::caches_follow_the_sliding_global_pattern ... ok +test models::gemma3_backbone::gemma3_backbone_tests::gelu_approx_matches_mlx_nn_bit_for_bit ... ok +test models::gemma3_backbone::gemma3_backbone_tests::incremental_steps_match_one_shot_prefill ... ok +test models::gemma3_backbone::gemma3_backbone_tests::missing_layer_weight_is_an_error ... ok +test models::gemma3_backbone::gemma3_backbone_tests::widened_norms_hold_the_stored_one_plus_w_in_f32 ... ok +test models::gemma3_backbone::gemma3_backbone_tests::wrong_cache_count_is_rejected ... ok +test models::gemma3_embedding::gemma3_embedding_tests::bidirectional_prefill_is_not_causal ... ok +test models::gemma3_embedding::gemma3_embedding_tests::dense_stack_sets_the_embedding_width ... ok +test models::gemma3_embedding::gemma3_embedding_tests::embeddinggemma_checkpoint_loads_and_ranks_the_matching_document ... ok +test models::gemma3_embedding::gemma3_embedding_tests::embeddinggemma_long_document_past_the_sliding_window_is_batch_invariant ... ok +test models::gemma3_embedding::gemma3_embedding_tests::global_layers_use_padding_mask_and_sliding_layers_use_window ... ok +test models::gemma3_embedding::gemma3_embedding_tests::images_are_rejected ... ok +test models::gemma3_embedding::gemma3_embedding_tests::irregular_layer_types_are_a_load_error ... ok +test models::gemma3_embedding::gemma3_embedding_tests::layer_types_drives_the_sliding_pattern ... ok +test models::gemma3_embedding::gemma3_embedding_tests::padding_invariance ... ok +test models::gemma3_embedding::gemma3_embedding_tests::sentence_transformers_subfolder_layout_loads_from_disk_and_matches_the_mlx_layout ... ok +test models::gemma3_embedding::gemma3_embedding_tests::swapped_dense_projections_are_a_load_error ... ok +test models::gemma3n::audio_embedder_tests::hard_audio_vocabulary_replaces_only_tokens_at_or_above_offset ... ok +test models::gemma3n_helpers_tests::apply_softcap_limits_logit_magnitude ... ignored, requires serial MLX execution +test models::gemma3n_helpers_tests::slice_altup_plane_selects_stacked_prediction_plane ... ignored, requires serial MLX execution +test models::gemma3n_helpers_tests::slice_layer_input_selects_requested_layer_plane ... ignored, requires serial MLX execution +test models::gemma3n_helpers_tests::split_altup_after_per_layer_update_preserves_plane_zero_and_updates_tail ... ignored, requires serial MLX execution +test models::gemma3n_helpers_tests::stack_and_mean_helpers_keep_expected_shapes ... ignored, requires serial MLX execution +test models::gemma4::gemma4_unified_mask_tests::chunked_continuation_global_mask_matches_returned_keys ... ok +test models::gemma4::gemma4_unified_mask_tests::chunked_continuation_sliding_mask_matches_returned_keys ... ok +test models::gemma4::gemma4_unified_mask_tests::first_cache_live_len_sizes_global_mask_from_live_window_after_trim ... ok +test models::gemma4::gemma4_unified_mask_tests::first_cache_live_len_sliding_matches_returned_keys ... ok +test models::gemma4::gemma4_unified_mask_tests::overlay_opens_intra_block_bidirectionally ... ok +test models::gemma4::gemma4_unified_mask_tests::overlay_separate_blocks_do_not_cross_attend ... ok +test models::gemma4::gemma4_unified_mask_tests::pre_fix_sliding_mask_right_crop_is_the_visible_band ... ok +test models::gemma4::gemma4_unified_mask_tests::sliding_mask_from_caller_adds_the_band_past_the_window ... ok +test models::gemma4::gemma4_unified_mask_tests::sliding_mask_from_caller_is_identity_below_the_window ... ok +test models::gemma4::gemma4_unified_mask_tests::sliding_mask_from_caller_leaves_an_already_banded_mask_alone ... ok +test models::gemma4::gemma4_unified_mask_tests::trim_mask_to_keys_crops_when_mask_longer_than_keys ... ok +test models::gemma4::gemma4_unified_mask_tests::trim_mask_to_keys_discards_too_short_multi_token ... ok +test models::gemma4::gemma4_unified_mask_tests::trim_mask_to_keys_discards_too_short_single_token_decode ... ok +test models::gemma4::gemma4_unified_mask_tests::trimmed_verify_mask_matches_chain_over_buffered_keys ... ok +test models::gemma4::probe_trace::tests::capture_scope_resets_on_unwind ... ok +test models::gemma4::probe_trace::tests::localization_names_first_layer_kind_and_subop ... ok +test models::gemma4::probe_trace::tests::malformed_trace_cannot_report_equality ... ok +test models::gemma4::quant_override_diagnostics_tests::absent_override_returns_root_defaults_unchanged ... ok +test models::gemma4::quant_override_diagnostics_tests::float_typed_group_size_falls_back_to_root_default ... ok +test models::gemma4::quant_override_diagnostics_tests::negative_group_size_falls_back_to_root_default ... ok +test models::gemma4::quant_override_diagnostics_tests::non_object_override_value_falls_back_to_root_defaults ... ok +test models::gemma4::quant_override_diagnostics_tests::sibling_metadata_keys_are_not_mistaken_for_the_queried_module_override ... ok +test models::gemma4::quant_override_diagnostics_tests::string_typed_bits_falls_back_to_root_bits_but_sibling_group_size_still_applies ... ok +test models::gemma4::quant_override_diagnostics_tests::typo_prefix_never_matched_falls_back_to_root_defaults_for_the_real_prefix ... ok +test models::gemma4::quant_override_diagnostics_tests::unsupported_bit_width_falls_back_to_root_default ... ok +test models::gemma4::quant_override_diagnostics_tests::valid_override_applies_both_fields ... ok +test models::gemma4::quant_override_diagnostics_tests::valid_partial_override_keeps_root_default_for_the_omitted_field ... ok +test models::gemma4::quant_override_diagnostics_tests::zero_group_size_falls_back_to_root_default ... ok +test models::gemma4::quant_scheme_tests::accepts_absent_quantization ... ok +test models::gemma4::quant_scheme_tests::accepts_mlx_native_affine_quantization ... ok +test models::gemma4::quant_scheme_tests::accepts_modelopt_nvfp4_repack_source ... ok +test models::gemma4::quant_scheme_tests::accepts_supported_block_float_mode ... ok +test models::gemma4::quant_scheme_tests::dense_mlp_scaled_fused_path_eligible_native_nvfp4_prefill_enabled ... ok +test models::gemma4::quant_scheme_tests::dense_mlp_scaled_fused_path_eligible_no_sidecar_always_false ... ok +test models::gemma4::quant_scheme_tests::dense_mlp_scaled_fused_path_eligible_sidecar_rejects_when_fold_disabled ... ok +test models::gemma4::quant_scheme_tests::dense_mlp_scaled_fused_path_eligible_sidecar_single_token_enabled ... ok +test models::gemma4::quant_scheme_tests::dense_mlp_scaled_fused_path_eligible_unknown_prefill_layout_bypasses ... ok +test models::gemma4::quant_scheme_tests::dense_mlp_shared_quant_layout_accepts_uniform_frontier_variant ... ok +test models::gemma4::quant_scheme_tests::dense_mlp_shared_quant_layout_rejects_mixed_down8_frontier_variant ... ok +test models::gemma4::quant_scheme_tests::detects_hf_quantization_config_object ... ok +test models::gemma4::quant_scheme_tests::detects_scheme_nested_under_text_config ... ok +test models::gemma4::quant_scheme_tests::mode_check_delegates_to_the_core_allowlist ... ok +test models::gemma4::quant_scheme_tests::model_args_promotes_modelopt_nvfp4_quantization_config ... ok +test models::gemma4::quant_scheme_tests::per_layer_input_gate_accepts_fused_path_when_gate_has_global_scale ... ok +test models::gemma4::quant_scheme_tests::per_layer_input_gate_fused_path_eligible_without_global_scale ... ok +test models::gemma4::quant_scheme_tests::per_layer_input_gate_mixed_proj_only_sidecar_follows_fold_toggle ... ok +test models::gemma4::quant_scheme_tests::per_layer_input_gate_rejects_fused_path_for_multi_token_regardless_of_fold ... ok +test models::gemma4::quant_scheme_tests::per_layer_input_gate_rejects_fused_path_when_fold_disabled ... ok +test models::gemma4::quant_scheme_tests::rejects_awq_gptq_quant_method ... ok +test models::gemma4::quant_scheme_tests::rejects_modelopt_without_nvfp4_repack_metadata ... ok +test models::gemma4::quant_scheme_tests::rejects_optiq_quant_method_and_names_it ... ok +test models::gemma4::quant_scheme_tests::rejects_unknown_mode ... ok +test models::gemma4::verify_attention::tests::buffered_ring_attention_matches_decode_after_wrap_and_partial_accept ... ok +test models::gemma4::verify_attention::tests::exact_query_rows_are_limited_to_a_single_linear_unpadded_stream ... ok +test models::gemma4::verify_attention::tests::full_head_verify_rows_are_byte_equal_to_decode_queries ... ok +test models::gemma4::verify_attention::tests::gemma4_12b_sliding_verify_rows_match_decode_byte_for_byte ... ok +test models::gemma4::verify_attention::tests::query_rows_preserve_tree_sibling_and_batch_padding_masks ... ok +test models::gemma4::verify_attention::tests::single_full_attention_query_keeps_ordinary_dispatch ... ok +test models::gemma4::verify_rows::tests::equal_rows_stack_unchanged_even_past_the_window ... ok +test models::gemma4::verify_rows::tests::per_row_concatenates_row_results_in_order ... ok +test models::gemma4::verify_rows::tests::quantized_rows_are_refused ... ok +test models::gemma4::verify_rows::tests::ragged_rows_past_the_window_are_refused ... ok +test models::gemma4::verify_rows::tests::ragged_rows_stack_with_history_first_and_a_zero_tail ... ok +test models::gemma4_mtp_target::rows::tests::batched_adapter_marks_only_verify_forwards_as_mtp_verify ... ok +test models::gemma4_mtp_target::rows::tests::per_row_batched_verify_matches_b1_linear_verify ... ok +test models::gemma4_mtp_target::tests::argmax_per_position_returns_one_id_per_position ... ok +test models::gemma4_mtp_target::tests::batched_argmax_per_row_returns_b_by_width_ids ... ok +test models::gemma4_mtp_target::tests::batched_capture_layer_ids_is_last_layer_only ... ok +test models::gemma4_mtp_target::tests::batched_hidden_at_positions_slices_per_row ... ok +test models::gemma4_mtp_target::tests::batched_last_position_hidden_slices_to_b_by_one ... ok +test models::gemma4_mtp_target::tests::batched_rectangular_input_builds_b_by_width_tensor ... ok +test models::gemma4_mtp_target::tests::batched_rectangular_input_rejects_batch_size_mismatch ... ok +test models::gemma4_mtp_target::tests::batched_rectangular_input_rejects_variable_width_rows ... ok +test models::gemma4_mtp_target::tests::batched_scalar_tokens_per_row_extracts_one_per_row ... ok +test models::gemma4_mtp_target::tests::batched_slice_shared_kv_rejected_shrinks_kv_axis_keeping_batch ... ok +test models::gemma4_mtp_target::tests::batched_slice_shared_kv_zero_rejected_is_identity ... ok +test models::gemma4_mtp_target::tests::batched_verify_bias_suppresses_argmax_per_row ... ok +test models::gemma4_mtp_target::tests::compact_partial_accept_rows_handles_overlapping_move ... ok +test models::gemma4_mtp_target::tests::compact_partial_accept_rows_restores_contiguous_prefix ... ok +test models::gemma4_mtp_target::tests::compact_shared_kv_batched_compacts_and_crops ... ok +test models::gemma4_mtp_target::tests::divergent_round_hidden_matches_b1_replay ... ok +test models::gemma4_mtp_target::tests::divergent_verify_mask_full_family_blocks_padding_gap_and_future ... ok +test models::gemma4_mtp_target::tests::divergent_verify_mask_sliding_band_uses_logical_positions ... ok +test models::gemma4_mtp_target::tests::gemma31b_adapter_disables_tree_rounds ... ok +test models::gemma4_mtp_target::tests::gemma31b_adapter_rejects_branched_tree_before_forward ... ok +test models::gemma4_mtp_target::tests::mtp_hidden_at_position_slices_single_position ... ok +test models::gemma4_mtp_target::tests::mtp_multi_token_verify_at_window_does_not_panic ... ok +test models::gemma4_mtp_target::tests::mtp_prefill_chunks_match_classic_last_logits_and_capture_final_seed ... ok +test models::gemma4_mtp_target::tests::mtp_prefill_ranges_mirror_classic_history_boundary_split ... ok +test models::gemma4_mtp_target::tests::mtp_rotating_buffer_size_matches_upstream_clamp ... ok +test models::gemma4_mtp_target::tests::prefill_and_seed_with_offset_reuses_prefix_and_matches_cold_full_prompt ... ok +test models::gemma4_mtp_target::tests::ragged_end_to_end_greedy_parity_most_padded_row_hits_eos ... ok +test models::gemma4_mtp_target::tests::ragged_end_to_end_greedy_parity_most_padded_row_multiround ... ok +test models::gemma4_mtp_target::tests::ragged_left_padded_input_places_tokens_at_suffix ... ok +test models::gemma4_mtp_target::tests::ragged_left_padded_input_rejects_empty_row ... ok +test models::gemma4_mtp_target::tests::ragged_left_padded_input_right_aligns_rows ... ok +test models::gemma4_mtp_target::tests::ragged_most_padded_row_verify_hidden_has_no_padding_contamination ... ok +test models::gemma4_mtp_target::tests::ragged_seed_anchors_equal_length_reduces_to_legacy ... ok +test models::gemma4_mtp_target::tests::ragged_seed_anchors_track_per_row_round_advance ... ok +test models::gemma4_mtp_target::tests::ragged_seed_anchors_use_shifted_frame ... ok +test models::gemma4_mtp_target::tests::slice_shared_kv_with_rejected_one_shrinks_kv_axis ... ok +test models::gemma4_mtp_target::tests::slice_shared_kv_with_zero_rejected_is_identity ... ok +test models::gemma4_mtp_target::tests::unified_b1_adapter_implements_mtp_target ... ok +test models::gemma4_mtp_target::tests::unified_batched_adapter_implements_mtp_target ... ok +test models::gemma4_mtp_target::tests::verify_bias_suppresses_argmax_at_leaking_position_b1 ... ok +test models::gemma4_mtp_target::tests::verify_empty_bias_is_identity_b1 ... ok +test models::gemma4_tests::cache_isolation::gemma4_chunked_prefill_matches_single_pass ... ok +test models::gemma4_tests::cache_isolation::gemma4_chunked_prefill_with_server_caller_mask_matches_single_pass ... ok +test models::gemma4_tests::cache_isolation::gemma4_last_logits_match_the_sliced_full_forward ... ok +test models::gemma4_tests::cache_isolation::gemma4_mixed_length_batched_decode_matches_unbatched_baseline ... ignored, requires serial MLX execution +test models::gemma4_tests::cache_isolation::gemma4_per_sequence_cache_isolation_no_cross_contamination ... ignored, requires serial MLX execution +test models::gemma4_tests::cache_isolation::gemma4_release_sequence_state_drops_cached_state ... ignored, requires serial MLX execution +test models::gemma4_tests::cache_isolation::gemma4_wrapper_supports_batching ... ok +test models::gemma4_tests::cache_isolation::gemma4_wrapper_uses_model_owned_sequence_state_layout ... ok +test models::gemma4_tests::gemma4_config_parses_real_checkpoint_rope_parameters ... ok +test models::gemma4_tests::gemma4_proportional_rope_freqs_match_python_semantics ... ok +test models::gemma4_tests::gemma4_root_quantization_preserves_per_module_overrides ... ok +test models::gemma4_tests::gemma4_rope_parameters_rope_type_defaults_when_absent ... ok +test models::gemma4_tests::linear_singleton_geometry_is_31b_everywhere_and_12b_on_cuda ... ok +test models::gemma4_tests::mtp_hooks::cache_zero_partial_accept_tail_is_no_op_for_standard_kv ... ok +test models::gemma4_tests::mtp_hooks::cache_zero_partial_accept_tail_zeros_only_partial_rows_in_rotating ... ignored, requires serial MLX execution +test models::gemma4_tests::mtp_hooks::gemma4_speculative_sinks_populates_hidden_and_shared_kv ... ignored, requires serial MLX execution +test models::gemma4_tests::mtp_hooks::rotating_kv_cache_trim_rewinds_offset_and_idx ... ok +test models::gemma4_tests::snapshot_prompt_cache::gemma31b_buffered_mtp_cache_cannot_donate_prompt_snapshot ... ignored, requires serial MLX execution +test models::gemma4_tests::snapshot_prompt_cache::gemma4_full_attention_layers_truncate_past_the_sliding_window ... ignored, requires serial MLX execution +test models::gemma4_tests::snapshot_prompt_cache::gemma4_reports_truncatable_only_while_the_sliding_layer_is_unwrapped ... ignored, requires serial MLX execution +test models::gemma4_tests::snapshot_prompt_cache::gemma4_snapshot_restores_rotating_ring_metadata ... ignored, requires serial MLX execution +test models::gemma4_tests::snapshot_prompt_cache::gemma4_snapshot_restores_standard_kv_cache ... ignored, requires serial MLX execution +test models::gemma4_tests::snapshot_prompt_cache::gemma4_snapshot_reuse_restores_decode_logits ... ignored, requires serial MLX execution +test models::gemma4_tests::snapshot_prompt_cache::gemma4_truncated_restore_matches_a_cold_prefill_of_the_same_prefix ... ignored, requires serial MLX execution +test models::gemma4_tests::snapshot_prompt_cache::gemma4_truncation_tolerates_layers_that_stored_nothing ... ignored, requires serial MLX execution +test models::glm4_moe::tests::fuses_separate_switch_mlp_gate_up_experts ... ok +test models::glm4_moe::tests::glm4_moe_switch_linear_rejects_quantization_params_that_would_abort_gather_qmm ... ok +test models::glm4_moe::tests::loads_prefused_switch_mlp_gate_up_experts ... ok +test models::glm4_moe::tests::test_model_args ... ok +test models::glm4_moe::tests::test_solar_open_config_with_quantization_config ... ok +test models::glm4_moe::tests::test_top_level_quantization_takes_precedence ... ok +test models::glm4_moe_lite::glm4_moe_lite_sanitize::tests::sanitize_dequantizes_kv_b_proj_before_the_per_head_split ... ok +test models::glm4_moe_lite::glm4_moe_lite_sanitize::tests::sanitize_leaves_an_already_decomposed_checkpoint_alone ... ok +test models::glm4_moe_lite::glm4_moe_lite_sanitize::tests::sanitize_rejects_a_kv_b_proj_that_disagrees_with_the_config ... ok +test models::glm4_moe_lite::glm4_moe_lite_sanitize::tests::sanitize_rejects_scales_with_no_biases ... ok +test models::glm4_moe_lite::glm4_moe_lite_sanitize::tests::sanitize_splits_the_halves_in_the_order_the_reference_layout_stores_them ... ok +test models::glm4_moe_lite::glm4_moe_lite_sanitize::tests::sanitize_synthesizes_the_mla_pair_no_checkpoint_ships ... ok +test models::glm4_moe_lite::tests::glm4_moe_lite_switch_linear_rejects_quantization_params_that_would_abort_gather_qmm ... ok +test models::glm4_moe_lite_mtp_drafter::tests::accept_trims_rejected_tail_and_appends_accepted ... ok +test models::glm4_moe_lite_mtp_drafter::tests::accept_with_short_hidden_fails_closed ... ok +test models::glm4_moe_lite_mtp_drafter::tests::block_size_flags_report_the_trained_depth ... ok +test models::glm4_moe_lite_mtp_drafter::tests::config_defaults_block_size_to_nextn_plus_one_and_floors_at_two ... ok +test models::glm4_moe_lite_mtp_drafter::tests::config_quantization_block_feeds_the_block_loader ... ok +test models::glm4_moe_lite_mtp_drafter::tests::config_rejects_a_block_of_one_and_a_foreign_text_config ... ok +test models::glm4_moe_lite_mtp_drafter::tests::draft_block_requires_bind_then_hidden ... ok +test models::glm4_moe_lite_mtp_drafter::tests::draft_step_consumes_embedding_and_hidden ... ok +test models::glm4_moe_lite_mtp_drafter::tests::from_weights_accepts_the_split_mtp_inventory ... ok +test models::glm4_moe_lite_mtp_drafter::tests::from_weights_rejects_eh_proj_that_does_not_project_to_hidden ... ok +test models::glm4_moe_lite_mtp_drafter::tests::from_weights_rejects_missing_block_tensor ... ok +test models::glm4_moe_lite_mtp_drafter::tests::from_weights_rejects_unknown_extra_tensor ... ok +test models::glm4_moe_lite_mtp_drafter::tests::history_prefill_pairs_shifted_tokens_with_hidden ... ok +test models::glm4_moe_lite_mtp_drafter::tests::reset_clears_state_and_rebinds ... ok +test models::glm4_moe_lite_mtp_drafter::tests::sanitize_decomposes_a_kept_kv_b_proj_and_leaves_the_pair_alone ... ok +test models::glm4_moe_lite_mtp_drafter::tests::set_shared_kv_clears_stale_state_on_position_mismatch ... ok +test models::glm4_moe_lite_mtp_drafter::tests::validate_target_compat_accepts_matching_and_rejects_foreign_geometry ... ok +test models::glm4_moe_lite_mtp_target::tests::exactness_probe_runs_on_the_tiny_model ... ok +test models::glm4_moe_lite_mtp_target::tests::hidden_tap_applies_the_final_norm_by_default ... ok +test models::glm4_moe_lite_mtp_target::tests::hidden_tap_env_parses_pre_spellings_only ... ok +test models::glm4_moe_lite_mtp_target::tests::injected_kv_cache_modes_reach_the_mtp_slot ... ok +test models::glm4_moe_lite_mtp_target::tests::prefill_and_seed_reports_prompt_offset_and_full_hidden ... ok +test models::glm4_moe_lite_mtp_target::tests::real_checkpoint_verify_block_matches_decode_chain ... ok +test models::glm4_moe_lite_mtp_target::tests::verify_block_logits_match_single_token_decode ... ok +test models::glm4_moe_lite_mtp_target::tests::verify_finalize_trims_every_layer_to_accepted_prefix ... ok +test models::glm4_moe_lite_mtp_target::tests::verify_forward_target_tokens_are_the_classic_greedy_tokens ... ok +test models::glm4v::tests::mrope_axis_selector_is_chunked_by_section ... ok +test models::glm4v::tests::mrope_half_split_selector_matches_moe_section ... ok +test models::glm4v::tests::parses_text_config_defaults ... ok +test models::glm4v::tests::text_config_missing_rope_scaling_falls_back_to_default_section ... ok +test models::glm_moe_dsa::tests::glm_moe_dsa_falls_back_to_direct_rope_fields ... ok +test models::glm_moe_dsa::tests::glm_moe_dsa_indexer_config_defaults_thread_through ... ok +test models::glm_moe_dsa::tests::glm_moe_dsa_indexer_config_overrides_are_respected ... ok +test models::glm_moe_dsa::tests::glm_moe_dsa_indexer_rope_is_interleaved_by_default ... ok +test models::glm_moe_dsa::tests::glm_moe_dsa_prefers_rope_parameters_over_direct_fields ... ok +test models::gpt2::tests::causal_mask_stripping_matches_key_shape_not_the_config_layer_count ... ok +test models::gpt2::tests::config_defaults_cover_a_bare_gpt2_config ... ok +test models::gpt2::tests::config_validation_rejects_hostile_scalars ... ok +test models::gpt2::tests::conv1d_transpose_applies_to_weights_and_not_to_biases ... ok +test models::gpt2::tests::detection_rejects_a_weight_map_without_wte ... ok +test models::gpt2::tests::detection_rejects_an_unexpected_c_attn_shape ... ok +test models::gpt2::tests::detects_mlx_converted_layout ... ok +test models::gpt2::tests::detects_raw_huggingface_layout ... ok +test models::gpt2::tests::detects_transformer_prefixed_layout ... ok +test models::gpt2::tests::eos_token_id_accepts_a_list ... ok +test models::gpt2::tests::from_weights_rejects_a_config_that_overstates_the_position_table ... ok +test models::gpt2::tests::from_weights_rejects_a_degenerate_projection_shape ... ok +test models::gpt2::tests::from_weights_rejects_a_layer_that_disagrees_with_layer_zero_about_conv1d ... ok +test models::gpt2::tests::from_weights_rejects_a_position_table_of_the_wrong_width ... ok +test models::gpt2::tests::from_weights_rejects_a_quantization_block_that_would_abort_an_mlx_kernel ... ok +test models::gpt2::tests::from_weights_rejects_a_quantized_position_table_of_the_wrong_dequantized_width ... ok +test models::gpt2::tests::from_weights_rejects_an_indivisible_head_split ... ok +test models::gpt2::tests::model_builds_when_the_mask_buffer_is_still_present ... ok +test models::gpt2::tests::parses_the_real_gpt2_config ... ok +test models::gpt2::tests::position_ids_clamp_at_the_end_of_the_learned_table ... ok +test models::gpt2::tests::position_ids_continue_from_the_cache_offset_during_decode ... ok +test models::gpt2::tests::position_ids_of_an_empty_step_are_empty ... ok +test models::gpt2::tests::position_ids_saturate_instead_of_panicking_on_an_absurd_table_size ... ok +test models::gpt2::tests::position_ids_start_at_zero_during_prefill ... ok +test models::gpt2::tests::position_table_overflow_is_reported_exactly_at_the_boundary ... ok +test models::gpt2::tests::strips_causal_mask_buffers_without_touching_projection_biases ... ok +test models::gpt2::tests::tiny_model_forward_threads_the_cache_offset ... ok +test models::gpt_bigcode::tests::a_conv1d_oriented_weight_is_rejected_and_named ... ok +test models::gpt_bigcode::tests::a_quantized_projection_skips_the_packed_input_width_but_not_the_output_width ... ok +test models::gpt_bigcode::tests::an_untied_config_requires_a_real_lm_head ... ok +test models::gpt_bigcode::tests::config_defaults_cover_a_bare_gpt_bigcode_config ... ok +test models::gpt_bigcode::tests::config_validation_rejects_hostile_scalars ... ok +test models::gpt_bigcode::tests::detection_rejects_a_weight_map_without_the_transformer_prefix ... ok +test models::gpt_bigcode::tests::detects_the_transformer_prefix ... ok +test models::gpt_bigcode::tests::every_layer_is_checked_not_just_layer_zero ... ok +test models::gpt_bigcode::tests::from_weights_rejects_a_config_that_overstates_a_table ... ok +test models::gpt_bigcode::tests::from_weights_rejects_an_indivisible_head_split ... ok +test models::gpt_bigcode::tests::from_weights_rejects_tables_and_norms_of_the_wrong_width ... ok +test models::gpt_bigcode::tests::intermediate_size_comes_from_n_inner_not_four_times_n_embd ... ok +test models::gpt_bigcode::tests::load_linear_rejects_a_degenerate_shape_or_a_missized_bias ... ok +test models::gpt_bigcode::tests::multi_query_false_degenerates_to_multi_head_attention ... ok +test models::gpt_bigcode::tests::multi_query_gives_one_kv_head_and_an_uneven_qkv_split ... ok +test models::gpt_bigcode::tests::parses_the_real_santacoder_config ... ok +test models::gpt_bigcode::tests::projections_load_without_a_transpose ... ok +test models::gpt_bigcode::tests::tiny_model_forward_caches_a_single_kv_head ... ok +test models::gpt_bigcode::tests::tiny_multi_head_model_forward_caches_every_kv_head ... ok +test models::gpt_bigcode::tests::token_id_fields_accept_a_scalar_or_a_list ... ok +test models::gpt_neox::tests::a_flat_three_way_split_would_take_different_channels ... ok +test models::gpt_neox::tests::a_non_gelu_activation_is_reported_rather_than_applied_silently ... ok +test models::gpt_neox::tests::a_quantized_projection_skips_the_packed_input_width_but_not_the_output_width ... ok +test models::gpt_neox::tests::an_untied_config_requires_a_real_embed_out ... ok +test models::gpt_neox::tests::attention_forward_returns_the_interleaved_v_block ... ok +test models::gpt_neox::tests::both_layouts_build_the_same_model ... ok +test models::gpt_neox::tests::config_defaults_cover_a_bare_gpt_neox_config ... ok +test models::gpt_neox::tests::config_validation_rejects_a_layer_norm_eps_that_would_nan_every_hidden_state ... ok +test models::gpt_neox::tests::config_validation_rejects_a_quantization_block_that_would_abort_an_mlx_kernel ... ok +test models::gpt_neox::tests::config_validation_rejects_hostile_scalars ... ok +test models::gpt_neox::tests::config_validation_rejects_out_of_range_rope_parameters ... ok +test models::gpt_neox::tests::detection_rejects_a_weight_map_with_no_known_layout ... ok +test models::gpt_neox::tests::detects_both_the_raw_and_the_converted_layout ... ok +test models::gpt_neox::tests::every_accepted_rotary_pct_survives_a_real_rope_call ... ok +test models::gpt_neox::tests::every_layer_is_checked_not_just_layer_zero ... ok +test models::gpt_neox::tests::from_weights_rejects_a_config_that_overstates_the_token_table ... ok +test models::gpt_neox::tests::from_weights_rejects_an_indivisible_head_split ... ok +test models::gpt_neox::tests::from_weights_rejects_tables_and_norms_of_the_wrong_width ... ok +test models::gpt_neox::tests::interleaved_qkv_split_pins_the_head_major_layout ... ok +test models::gpt_neox::tests::intermediate_size_comes_from_the_config_or_four_times_hidden_size ... ok +test models::gpt_neox::tests::load_linear_rejects_a_transposed_degenerate_or_missized_projection ... ok +test models::gpt_neox::tests::parallel_residual_feeds_both_sub_layers_the_same_pre_norm_input ... ok +test models::gpt_neox::tests::parses_the_real_pythia_1b_config ... ok +test models::gpt_neox::tests::partial_rope_leaves_the_unrotated_channels_untouched ... ok +test models::gpt_neox::tests::partial_rope_rotates_only_the_rotary_pct_fraction_of_each_head ... ok +test models::gpt_neox::tests::projections_load_without_a_transpose ... ok +test models::gpt_neox::tests::sequential_residual_feeds_the_mlp_the_post_attention_residual ... ok +test models::gpt_neox::tests::strips_the_registered_buffers_but_keeps_the_real_projection_biases ... ok +test models::gpt_neox::tests::the_model_builds_whether_or_not_the_buffers_were_stripped ... ok +test models::gpt_neox::tests::the_two_residual_layouts_are_not_interchangeable ... ok +test models::gpt_neox::tests::tiny_model_prefills_then_decodes ... ok +test models::gpt_neox::tests::token_id_fields_accept_a_scalar_or_a_list ... ok +test models::gpt_oss::tests::gpt_oss_config_validation_walks_every_declared_mode ... ok +test models::gpt_oss::tests::gpt_oss_config_validation_walks_every_per_prefix_override ... ok +test models::gpt_oss::tests::gpt_oss_expert_linear_refuses_a_mode_the_backend_cannot_run ... ok +test models::gpt_oss::tests::gpt_oss_expert_linear_rejects_a_mode_that_would_abort_gather_qmm ... ok +test models::gpt_oss::tests::gpt_oss_expert_linear_rejects_params_that_would_abort_gather_qmm ... ok +test models::gpt_oss::tests::gpt_oss_swiglu_fallback_preserves_bf16_and_f16_dtype ... ok +test models::granite_tests::granite_config_parses_scalar_multipliers ... ok +test models::granite_tests::granite_head_dim_defaults_from_hidden_and_heads ... ok +test models::granite_tests::granite_quantization_is_read_from_config ... ok +test models::granite_tests::granite_tie_word_embeddings_defaults_true_when_absent ... ok +test models::granite_tests::granite_unquantized_config_uses_defaults ... ok +test models::granitemoehybrid_tests::granite_hybrid_config_parses_scalar_multipliers ... ok +test models::granitemoehybrid_tests::granite_hybrid_conv_and_projection_derivations ... ok +test models::granitemoehybrid_tests::granite_hybrid_eos_token_id_scalar_and_missing ... ok +test models::granitemoehybrid_tests::granite_hybrid_head_dim_and_mamba_dims ... ok +test models::granitemoehybrid_tests::granite_hybrid_layer_types_interleave ... ok +test models::granitemoehybrid_tests::granite_hybrid_nope_disables_rope ... ok +test models::granitemoehybrid_tests::granite_hybrid_quantization_read_from_config ... ok +test models::granitemoehybrid_tests::granite_hybrid_time_step_limit_defaults_to_ssm_update_default ... ok +test models::granitemoehybrid_tests::granite_hybrid_use_moe_follows_num_local_experts ... ok +test models::granitemoehybrid_tests::inject_at_positions_writes_features_into_hidden_state ... ok +test models::helium::tests::a_consistently_quantized_attention_block_is_accepted ... ok +test models::helium::tests::a_mixed_bit_width_attention_block_is_accepted ... ok +test models::helium::tests::a_well_formed_checkpoint_loads_and_generates ... ok +test models::helium::tests::attention_carries_the_traditional_flag_from_its_args ... ok +test models::helium::tests::config_validation_rejects_a_head_dim_that_disagrees_with_the_head_split ... ok +test models::helium::tests::config_validation_rejects_a_quantization_block_that_would_abort_an_mlx_kernel ... ok +test models::helium::tests::config_validation_rejects_a_rope_configuration_that_would_abort_an_mlx_kernel ... ok +test models::helium::tests::config_validation_rejects_an_rms_norm_eps_that_would_nan_every_hidden_state ... ok +test models::helium::tests::config_validation_rejects_impossible_architecture_scalars ... ok +test models::helium::tests::eos_token_ids_come_from_the_config_not_from_the_llama3_backbone ... ok +test models::helium::tests::every_rope_route_honors_the_flag_consistently ... ok +test models::helium::tests::head_dim_is_derived_from_hidden_size_and_head_count ... ok +test models::helium::tests::helium_logits_differ_from_the_same_weights_with_split_half_rope ... ok +test models::helium::tests::helium_still_needs_the_conversion_because_its_config_omits_the_key ... ok +test models::helium::tests::loading_rejects_a_missing_untied_head ... ok +test models::helium::tests::loading_rejects_a_partially_quantized_attention_block ... ok +test models::helium::tests::loading_rejects_a_projection_whose_shape_disagrees_with_the_config ... ok +test models::helium::tests::loading_rejects_a_quantized_output_head_packed_for_a_different_input_width ... ok +test models::helium::tests::loading_rejects_a_quantized_projection_packed_for_a_different_input_width ... ok +test models::helium::tests::loading_rejects_an_attention_block_with_a_partial_dense_bias ... ok +test models::helium::tests::loading_rejects_an_attention_block_with_partial_quantization_biases ... ok +test models::helium::tests::loading_rejects_an_embedding_table_the_config_overstates ... ok +test models::helium::tests::loading_rejects_quantization_biases_that_disagree_with_the_scales ... ok +test models::helium::tests::the_fused_qkv_rope_launcher_cannot_express_traditional_rope ... ok +test models::helium::tests::the_real_checkpoint_shape_signature_matches_what_loading_expects ... ok +test models::helium::tests::the_real_config_parses_and_validates ... ok +test models::helium::tests::to_llama3_args_asks_the_shared_decoder_for_traditional_rope ... ok +test models::helium::tests::traditional_and_split_half_rope_are_different_rotations ... ok +test models::hunyuan_moe::tests::hunyuan_moe_switch_linear_rejects_quantization_params_that_would_abort_gather_qmm ... ok +test models::hunyuan_vl::tests::alpha_scaling_adjusts_base ... ok +test models::hunyuan_vl::tests::text_only_xdrope_degenerates_to_standard_rope ... ok +test models::inkling::mlp::tests::concatenated_shared_experts_equal_explicit_expert_sum ... ok +test models::inkling::runtime::tests::trimmed_sliding_cache_snapshot_restores_absolute_window ... ok +test models::inkling::tests::banded_bias_matches_reference_formula ... ok +test models::inkling::tests::eos_defaults_and_scalar_override_are_preserved ... ok +test models::inkling::tests::inkling_config_accepts_both_text_width_spellings ... ok +test models::inkling::tests::layer_classification_layer_types_then_local_ids_then_modulo ... ok +test models::inkling::tests::log_scaling_tau_is_identity_below_floor ... ok +test models::inkling::tests::mlp_width_resolution_accepts_both_spellings ... ok +test models::inkling::tests::nested_hf_nvfp4_sidecar_promotes_null_quantization ... ok +test models::inkling::tests::router_normalizes_selected_and_shared_raw_logits_together ... ok +test models::inkling::tests::sanitize_native_nvfp4_preserves_packing_and_expert_scales ... ok +test models::inkling::tests::sanitize_original_layout_maps_audio_and_drops_visual_tower ... ok +test models::inkling::tests::sanitize_preconverted_affine_experts_keep_sidecars_and_merge_shared_rows ... ok +test models::inkling::tests::sanitize_rejects_incomplete_nvfp4_experts ... ok +test models::inkling::tests::sanitize_rejects_malformed_nvfp4_before_reinterpretation ... ok +test models::inkling::tests::sanitize_rejects_reverse_mixed_routed_weight_dtypes ... ok +test models::inkling::tests::sconv_prefill_continuation_matches_one_shot_and_state ... ok +test models::inkling::tests::validation_pins_inkling_audio_shape_and_text_width ... ok +test models::inkling::tests::validation_rejects_unknown_layer_schedule_entries ... ok +test models::inkling::tiny_tests::mtp_partial_accept_restores_then_replays_kv_and_conv_state_exactly ... ok +test models::inkling::tiny_tests::mtp_verify_argmax_matches_the_incremental_target_chain ... ok +test models::inkling::tiny_tests::tiny_hybrid_prefill_is_causal_and_matches_incremental_decode ... ok +test models::inkling_detection_tests::audio_weights_do_not_hide_or_fabricate_the_vlm_shell ... ok +test models::inkling_detection_tests::inkling_requires_both_vision_config_and_indexed_visual_weights ... ok +test models::inkling_detection_tests::unindexed_safetensors_header_detects_vision_without_reading_tensor_data ... ok +test models::inkling_detection_tests::vision_config_without_visual_weights_stays_text_only ... ok +test models::internlm2::tests::a_config_without_the_block_keeps_the_plain_schedule ... ok +test models::internlm2::tests::a_dynamic_block_without_a_factor_is_a_load_error_naming_the_family ... ok +test models::internlm2::tests::a_linear_block_reaches_the_helper_as_an_inverse_factor_scale ... ok +test models::internlm2::tests::an_unimplemented_scheme_fails_the_load ... ok +test models::internlm2::tests::rope_traditional_reaches_the_helper ... ok +test models::internlm2::tests::the_checkpoint_configs_dynamic_schedule_matches_the_issue_table ... ok +test models::internlm2::tests::the_checkpoints_dynamic_block_is_no_longer_dropped ... ok +test models::internlm2::tests::the_rope_type_spelling_resolves_identically_to_type_for_this_family ... ok +test models::internlm3::tests::a_config_spelling_the_scheme_key_as_type_still_resolves ... ok +test models::internlm3::tests::a_linear_block_still_divides_positions_by_the_factor ... ok +test models::internlm3::tests::an_absent_block_also_leaves_positions_unscaled ... ok +test models::internlm3::tests::an_unimplemented_scheme_fails_the_load_rather_than_decoding_wrongly ... ok +test models::internlm3::tests::the_validation_checkpoint_resolves_to_an_unscaled_dynamic_schedule ... ok +test models::iquestloopcoder_tests::both_caches_advance_together_and_the_local_one_stays_bounded ... ok +test models::iquestloopcoder_tests::eos_token_id_accepts_both_spellings ... ok +test models::iquestloopcoder_tests::forward_last_logits_matches_the_sliced_full_logits ... ok +test models::iquestloopcoder_tests::gate_is_per_head_sigmoid ... ok +test models::iquestloopcoder_tests::gate_reads_the_post_rope_query ... ok +test models::iquestloopcoder_tests::make_caches_pairs_a_dense_and_a_rotating_cache_per_layer ... ok +test models::iquestloopcoder_tests::parses_the_published_40b_loop_config ... ok +test models::iquestloopcoder_tests::pass2_matches_only_the_correct_reference ... ok +test models::iquestloopcoder_tests::pass2_uses_pass1_kv ... ok +test models::iquestloopcoder_tests::prefill_matches_incremental_decode ... ok +test models::iquestloopcoder_tests::rejects_loop_num_other_than_two ... ok +test models::iquestloopcoder_tests::rejects_zero_loop_window_size ... ok +test models::iquestloopcoder_tests::reset_runtime_state_clears_the_fallback_caches ... ok +test models::iquestloopcoder_tests::sanitize_weights_is_identity_and_idempotent ... ok +test models::iquestloopcoder_tests::window_limits_local_branch ... ok +test models::iquestloopcoder_tests::wrapper_declares_model_owned_state_and_no_dense_caches ... ok +test models::iquestloopcoder_tests::wrapper_isolates_concurrent_sequences ... ok +test models::jamba::tests::jamba_attention_layer_snapshot_restore_round_trips_kv_state ... ok +test models::jamba::tests::jamba_cache_default_has_no_state ... ok +test models::jamba::tests::jamba_cache_new_has_no_state ... ok +test models::jamba::tests::jamba_conv_state_shape_plateaus_after_50_steps ... ignored, requires serial MLX execution +test models::jamba::tests::jamba_dense_expert_planes_load_with_an_unset_quantization_pair ... ok +test models::jamba::tests::jamba_mamba_cache_snapshot_restore_round_trips_state_shapes ... ok +test models::jamba::tests::jamba_mamba_prefill_rows_match_token_by_token_decode ... ok +test models::jamba::tests::jamba_mamba_prefill_takes_the_fused_scan_where_a_port_exists ... ok +test models::jamba::tests::jamba_prefill_rows_match_token_by_token_decode ... ok +test models::jamba::tests::jamba_rejects_a_declared_quantization_mode_its_loaders_cannot_honor ... ok +test models::jamba::tests::jamba_rejects_expert_quantization_params_that_would_abort_gather_qmm ... ok +test models::jamba::tests::jamba_stacks_per_expert_scales_and_biases_rather_than_dropping_them ... ok +test models::jina_vlm::tests::a_flat_hf_text_config_parses_to_the_same_geometry_as_the_nested_one ... ok +test models::jina_vlm::tests::a_head_geometry_that_contradicts_the_fused_qkv_tensor_is_rejected ... ok +test models::jina_vlm::tests::an_empty_config_falls_back_to_the_released_defaults ... ok +test models::jina_vlm::tests::head_counts_come_from_the_attn_sub_block_not_the_top_level ... ok +test models::jina_vlm::tests::incremental_decode_matches_a_single_full_sequence_pass ... ok +test models::jina_vlm::tests::precomputed_embeddings_take_the_place_of_the_token_lookup ... ok +test models::jina_vlm::tests::quantization_defaults_to_the_released_four_bit_pair ... ok +test models::jina_vlm::tests::the_extension_table_is_addressable_past_the_base_vocabulary ... ok +test models::jina_vlm::tests::the_fused_qkv_row_check_reads_the_unpacked_axis_of_a_quantized_tensor ... ok +test models::jina_vlm::tests::the_nested_spelling_still_wins_over_the_hf_alias ... ok +test models::jina_vlm::tests::the_nested_text_config_flattens_to_the_released_shapes ... ok +test models::kimi_k3::tests::attention_gate_and_output_widths_are_cross_checked ... ok +test models::kimi_k3::tests::attn_res_block_size_two_over_four_layers_stores_two_blocks ... ok +test models::kimi_k3::tests::attn_res_mix_matches_reference ... ok +test models::kimi_k3::tests::attn_res_weights_are_cross_checked_against_hidden_size ... ok +test models::kimi_k3::tests::config_validation_bounds_the_router_top_k ... ok +test models::kimi_k3::tests::config_validation_names_the_offending_field ... ok +test models::kimi_k3::tests::decode_matches_prefill ... ok +test models::kimi_k3::tests::eos_token_ids_fall_back_to_the_text_config ... ok +test models::kimi_k3::tests::from_weights_names_a_config_checkpoint_shape_mismatch ... ok +test models::kimi_k3::tests::gated_delta_lower_bound_gate_range ... ok +test models::kimi_k3::tests::kda_fused_qkv_equals_separate_projections ... ok +test models::kimi_k3::tests::kimi_k3_opts_out_of_chunked_prefill ... ok +test models::kimi_k3::tests::kimi_k3_sequence_state_isolates_prepared_sequences ... ok +test models::kimi_k3::tests::latent_moe_forward_shapes_and_norm ... ok +test models::kimi_k3::tests::mla_q_lora_and_output_gate ... ok +test models::kimi_k3::tests::model_without_attention_residuals_takes_the_plain_residual_form ... ok +test models::kimi_k3::tests::mxfp4_repack_matches_scalar_dequant ... ok +test models::kimi_k3::tests::prefill_is_causal ... ok +test models::kimi_k3::tests::published_config_parses_and_derives_the_layer_schedule ... ok +test models::kimi_k3::tests::sanitize_mxfp4_experts_and_fused_conv ... ok +test models::kimi_k3::tests::sanitize_refuses_a_kv_b_proj_that_disagrees_with_the_config ... ok +test models::kimi_k3::tests::sanitize_refuses_a_truncated_expert_set ... ok +test models::kimi_k3::tests::sanitize_refuses_mismatched_expert_plane_shapes ... ok +test models::kimi_k3::tests::sanitize_refuses_mismatched_fused_qkv_plane_shapes ... ok +test models::kimi_k3::tests::situ_matches_formula ... ok +test models::kimi_linear::tests::kimi_linear_eos_token_ids_come_from_config_metadata ... ok +test models::kimi_linear::tests::kimi_linear_model_owned_sequence_state_preserves_greedy_decode_cache ... ok +test models::kimi_linear::tests::kimi_linear_model_owned_sequence_state_refuses_missing_sequence_id ... ok +test models::kimi_linear::tests::kimi_linear_multi_linear_infers_its_quantization_mode_from_the_biases_plane ... ok +test models::kimi_linear::tests::kimi_linear_multi_linear_rejects_quantization_params_that_would_abort_quantized_matmul ... ok +test models::kimi_linear::tests::kimi_linear_sanitize_rejects_a_kv_b_proj_with_scales_and_no_biases ... ok +test models::kimi_linear::tests::kimi_linear_sanitize_rejects_a_kv_lora_rank_no_packing_can_describe ... ok +test models::klear::tests::a_dense_layer_and_a_sparse_layer_build_from_the_same_config ... ok +test models::klear::tests::a_dense_layer_is_validated_as_a_plain_mlp ... ok +test models::klear::tests::a_list_valued_eos_token_id_parses ... ok +test models::klear::tests::a_missing_coefficient_head_is_rejected ... ok +test models::klear::tests::a_non_default_rope_scaling_block_is_rejected ... ok +test models::klear::tests::a_short_expert_stack_is_rejected ... ok +test models::klear::tests::a_synthetic_model_builds_and_produces_finite_logits ... ok +test models::klear::tests::a_top_k_larger_than_the_expert_count_is_rejected ... ok +test models::klear::tests::a_well_formed_checkpoint_passes_validation ... ok +test models::klear::tests::a_zero_decoder_sparse_step_is_rejected ... ok +test models::klear::tests::a_zero_scalar_is_rejected_before_it_divides ... ok +test models::klear::tests::an_mlp_only_layer_past_the_end_of_the_stack_is_rejected ... ok +test models::klear::tests::an_odd_head_width_is_rejected ... ok +test models::klear::tests::attention_bias_is_plumbed_into_every_projection ... ok +test models::klear::tests::every_layer_is_sparse_on_the_published_checkpoint ... ok +test models::klear::tests::the_blend_weights_come_from_the_coefficient_head_per_token ... ok +test models::klear::tests::the_capitalized_model_type_reaches_the_detection_arm ... ok +test models::klear::tests::the_prefill_is_causal_without_being_handed_a_mask ... ok +test models::klear::tests::the_real_config_parses_and_validates ... ok +test models::klear::tests::the_shared_expert_is_blended_not_added ... ok +test models::klear::tests::the_sparse_schedule_honours_both_knobs ... ok +test models::klear::tests::the_unused_routed_scaling_factor_is_detected_but_not_applied ... ok +test models::kokoro::stft::tests::stft_istft_round_trip_is_unit_scale ... ok +test models::kokoro::tests::alignment_matrix_places_ones_per_span ... ok +test models::kokoro::tests::detection_falls_back_to_weight_filename ... ok +test models::kokoro::tests::detection_keys_off_istftnet_block ... ok +test models::kokoro::tests::loads_checkpoint_and_synthesizes_audio ... ok +test models::kokoro::tests::speed_scales_duration ... ok +test models::kokoro::tests::voice_pack_loads_and_indexes ... ok +test models::kokoro::voices::tests::resolve_voice_falls_back_to_default_when_no_voices ... ok +test models::kokoro::voices::tests::resolve_voice_picks_known_voice_from_tmpdir ... ok +test models::kokoro::voices::tests::safe_name_rejects_traversal ... ok +test models::kv_snapshot::tests::an_empty_cache_snapshots_nothing_and_truncates_to_a_no_op ... ok +test models::kv_snapshot::tests::chunked_restore_refuses_a_window_past_its_buffer ... ok +test models::kv_snapshot::tests::chunked_restore_refuses_an_inverted_window ... ok +test models::kv_snapshot::tests::chunked_restore_rejects_a_chunk_size_mismatch ... ok +test models::kv_snapshot::tests::chunked_round_trip_after_front_trim ... ok +test models::kv_snapshot::tests::chunked_truncatable_only_before_front_trim ... ok +test models::kv_snapshot::tests::chunked_truncate_does_not_shorten_keys_when_the_value_slice_fails ... ok +test models::kv_snapshot::tests::chunked_truncate_refuses_a_front_trimmed_cache ... ok +test models::kv_snapshot::tests::chunked_truncated_restore_matches_a_cold_fill_of_the_same_prefix ... ok +test models::kv_snapshot::tests::error_messages_carry_the_family_label ... ok +test models::kv_snapshot::tests::family_names_select_the_stored_tensor_names ... ok +test models::kv_snapshot::tests::non_fp16_mode_is_rejected ... ok +test models::kv_snapshot::tests::rotating_restore_refuses_a_window_mismatch ... ok +test models::kv_snapshot::tests::rotating_round_trip_preserves_ring_state_after_wrap ... ok +test models::kv_snapshot::tests::rotating_round_trip_survives_an_over_window_prefill ... ok +test models::kv_snapshot::tests::rotating_truncatable_only_while_unwrapped ... ok +test models::kv_snapshot::tests::rotating_truncate_refuses_a_wrapped_ring ... ok +test models::kv_snapshot::tests::standard_restore_refuses_an_offset_past_its_buffer ... ok +test models::kv_snapshot::tests::standard_restore_refuses_keys_and_values_of_different_lengths ... ok +test models::kv_snapshot::tests::standard_round_trip_preserves_keys_values_offset ... ok +test models::kv_snapshot::tests::standard_truncate_rejects_a_target_past_the_cached_offset ... ok +test models::kv_snapshot::tests::standard_truncated_restore_matches_a_cold_fill_of_the_same_prefix ... ok +test models::kv_snapshot::tests::truncate_refuses_a_negative_target ... ok +test models::laguna_dflash_tests::greedy_invariant_with_forced_rejections ... ok +test models::laguna_dflash_tests::greedy_invariant_with_real_drafter ... ok +test models::laguna_dflash_tests::laguna_real_checkpoint_probe ... ignored, needs the real Laguna XS 2.1 checkpoints and the classic decode ids +test models::laguna_tests::a_router_wider_than_the_expert_planes_is_rejected ... ok +test models::laguna_tests::decode_matches_prefill_logits ... ok +test models::laguna_tests::gate_width_mismatch_is_rejected ... ok +test models::laguna_tests::laguna_config_parses_and_resolves_schedules ... ok +test models::laguna_tests::layer_rope_full_uses_yarn_partial_and_sliding_uses_default ... ok +test models::laguna_tests::legacy_router_use_sigmoid_flag_resolves_the_score_function ... ok +test models::laguna_tests::per_head_gate_applies_softplus_per_head ... ok +test models::laguna_tests::prefill_is_causal_on_both_layer_types ... ok +test models::laguna_tests::router_select_clamps_the_partition_pivot_into_the_score_row ... ok +test models::laguna_tests::router_sigmoid_selects_with_bias_but_weights_without_bias ... ok +test models::laguna_tests::router_sqrtsoftplus_matches_formula ... ok +test models::laguna_tests::router_weight_on_input_is_rejected ... ok +test models::laguna_tests::sanitize_compressed_tensors_nvfp4_stacks_experts_and_keeps_global_scale ... ok +test models::laguna_tests::sanitize_rejects_an_expert_past_the_declared_count ... ok +test models::laguna_tests::sanitize_rejects_mismatched_expert_planes ... ok +test models::laguna_tests::sanitize_splits_prestacked_gate_up ... ok +test models::laguna_tests::sanitize_stacks_bf16_experts_and_pops_tied_head ... ok +test models::laguna_tests::sanitize_transcodes_dense_shared_expert_triplet ... ok +test models::laguna_tests::sliding_attention_sink_joins_the_softmax_on_prefill_and_decode ... ok +test models::laguna_tests::sqrtsoftplus_router_routes_and_weights_a_forward_pass ... ok +test models::laguna_tests::switch_linear_applies_per_expert_global_scale_after_gather_qmm ... ok +test models::laguna_tests::tiny_model_builds_mixed_caches_and_eos ... ok +test models::laguna_tests::validate_rejects_routing_values_that_abort_inside_mlx ... ok +test models::lfm2_embedding::lfm2_embedding_tests::bidirectional_prefill_sees_future_tokens ... ok +test models::lfm2_embedding::lfm2_embedding_tests::cls_pooling_reads_bos_position ... ok +test models::lfm2_embedding::lfm2_embedding_tests::embedding_norm_root_is_prefixed ... ok +test models::lfm2_embedding::lfm2_embedding_tests::images_are_rejected ... ok +test models::lfm2_embedding::lfm2_embedding_tests::lfm2_embedding_checkpoint_ranks_the_related_passage_first ... ok +test models::lfm2_embedding::lfm2_embedding_tests::padding_content_cannot_reach_a_real_position ... ok +test models::lfm2_embedding::lfm2_embedding_tests::padding_invariance ... ok +test models::lfm2_embedding::lfm2_embedding_tests::rejects_late_interaction_layout ... ok +test models::lfm2_tests::causal_short_conv_unchanged_when_flag_true ... ok +test models::lfm2_tests::conv_capture_off_keeps_nothing_and_changes_no_logit ... ok +test models::lfm2_tests::conv_causal_defaults_true_in_args ... ok +test models::lfm2_tests::conv_rollback_from_fresh_caches_pads_with_zeros ... ok +test models::lfm2_tests::conv_rollback_matches_committed_prefix ... ok +test models::lfm2_tests::exactness_probe_runs_on_the_synthetic_model ... ok +test models::lfm2_tests::lfm2_conv_state_keep_length_invariant ... ok +test models::lfm2_tests::lfm2_dense_config_parses ... ok +test models::lfm2_tests::lfm2_dense_every_layer_is_dense_ffn ... ok +test models::lfm2_tests::lfm2_dense_full_attn_idxs_are_explicit ... ok +test models::lfm2_tests::lfm2_eos_token_id_handles_scalar_array_and_missing ... ok +test models::lfm2_tests::lfm2_moe_config_parses_sigmoid_gating_fields ... ok +test models::lfm2_tests::lfm2_moe_feed_forward_selection_follows_num_dense_layers ... ok +test models::lfm2_tests::lfm2_moe_full_attn_idxs_derive_from_layer_types ... ok +test models::lfm2_tests::lfm2_rope_theta_reads_the_nested_rope_parameters_layout ... ok +test models::lfm2_tests::lfm2_short_conv_decode_matches_conv1d ... ok +test models::lfm2_tests::lfm2_short_conv_decode_matches_conv1d_bf16 ... ok +test models::lfm2_tests::lfm2_unquantized_config_uses_quantization_defaults ... ok +test models::lfm2_tests::noncausal_short_conv_symmetric_pad_keeps_length ... ok +test models::lfm2_tests::sanitize_stacks_unstacked_per_expert_moe_weights ... ok +test models::lfm2_tests::speculative_block_logits_match_single_token_decode ... ok +test models::lfm2_tests::verify_forward_captures_requested_layers ... ok +test models::llada2_moe::tests::block_num_blocks_covers_prompt_and_generation ... ok +test models::llada2_moe::tests::block_progress_guarantee_unmasks_within_b_iterations ... ok +test models::llada2_moe::tests::block_threshold_endpoints ... ok +test models::llada2_moe::tests::block_threshold_midpoint_is_linear ... ok +test models::llada2_moe::tests::config_defaults_apply_for_omitted_keys ... ok +test models::llada2_moe::tests::config_derives_head_dim_and_rotary_dim ... ok +test models::llada2_moe::tests::config_explicit_eos_list_overrides_pad_fallback ... ok +test models::llada2_moe::tests::config_pad_token_default_when_absent ... ok +test models::llada2_moe::tests::fixed_logits_unmasking_reproduces_reveal_order ... ok +test models::llada2_moe::tests::gate_group_mask_fills_non_kept_groups_below_all_biased ... ok +test models::llada2_moe::tests::gate_selects_grouped_experts_bias_only_affects_selection ... ok +test models::llada2_moe::tests::moe_block_matches_naive_per_expert_loop ... ok +test models::llada2_moe::tests::parse_eos_ids_accepts_scalar_array_and_null ... ok +test models::llada2_moe::tests::prompt_tail_positions_are_never_revealed ... ok +test models::llada2_moe::tests::synthetic_checkpoint_detects_loads_and_generates ... ok +test models::llada2_moe::tests::synthetic_checkpoint_forward_logits_are_finite ... ok +test models::llada2_moe::tests::transfer_mask_all_above_threshold_reveals_all_active ... ok +test models::llada2_moe::tests::transfer_mask_empty_when_no_active ... ok +test models::llada2_moe::tests::transfer_mask_none_above_forces_single_argmax ... ok +test models::llada2_moe::tests::transfer_mask_tie_prefers_lower_index ... ok +test models::llada2_moe::tests::truncate_at_eos_cuts_at_first_stop ... ok +test models::llama3::tests::a_config_that_declares_the_key_is_honored_in_both_directions ... ok +test models::llama3::tests::a_config_without_the_key_keeps_the_split_half_rotation ... ok +test models::llama3::tests::a_declared_flag_selects_exactly_the_interleaved_rotation ... ok +test models::llama3::tests::a_frequency_table_that_does_not_match_head_dim_is_a_load_error ... ok +test models::llama3::tests::a_linear_scaling_block_divides_positions_instead_of_building_a_table ... ok +test models::llama3::tests::a_llama3_scaling_block_actually_changes_the_logits ... ok +test models::llama3::tests::a_llama3_scaling_block_reaches_the_attention_block ... ok +test models::llama3::tests::a_nested_text_config_carrying_a_scaling_block_parses_and_resolves ... ok +test models::llama3::tests::a_nested_text_config_is_honored_and_does_not_leak_from_the_top_level ... ok +test models::llama3::tests::a_non_boolean_key_is_rejected_rather_than_guessed_at ... ok +test models::llama3::tests::a_scaled_block_is_routed_around_the_fused_prefill_launcher ... ok +test models::llama3::tests::a_traditional_rope_block_is_routed_around_the_fused_prefill_launcher ... ok +test models::llama3::tests::a_yarn_scaling_block_actually_changes_the_logits ... ok +test models::llama3::tests::a_yarn_scaling_block_reaches_the_attention_block_with_its_mscale ... ok +test models::llama3::tests::an_explicitly_nulled_key_parses_as_false_rather_than_failing_to_load ... ok +test models::llama3::tests::an_unimplemented_scheme_loads_the_model_on_the_unscaled_table ... ok +test models::llama3::tests::diagnostics_name_the_checkpoint_when_the_loader_knows_it ... ok +test models::llama3::tests::every_layer_of_a_scaled_model_gets_the_table ... ok +test models::llama3::tests::greedy_decode_is_token_identical_to_the_unfused_baseline ... ok +test models::llama3::tests::last_logits_match_the_sliced_full_forward ... ok +test models::llama3::tests::the_batched_route_honors_the_parsed_flag_too ... ok +test models::llama3::tests::the_batched_route_uses_the_same_frequency_table ... ok +test models::llama3::tests::the_config_sanitizer_preserves_the_key ... ok +test models::llama3::tests::the_config_sanitizer_preserves_the_scaling_block ... ok +test models::llama3::tests::the_fused_rope_env_vars_are_the_ones_the_code_actually_reads ... ok +test models::llama3::tests::the_parsed_flag_reaches_the_attention_block ... ok +test models::llama3::tests::the_rope_append_bypass_notice_needs_an_explicit_truthy_value ... ok +test models::llama4::tests::batched_decode_entry::batched_decode_matches_single_row_decode_past_the_chunk ... ok +test models::llama4::tests::cache_attend_entry::chunked_fp16_layer_takes_the_route_the_block_ran_past_a_front_trim ... ok +test models::llama4::tests::cache_attend_entry::dense_fp16_layer_takes_the_route_the_block_ran ... ok +test models::llama4::tests::cache_attend_entry::dense_int8_layer_takes_the_route_the_block_ran ... ok +test models::llama4::tests::llama4_switch_linear_rejects_quantization_params_that_would_abort_gather_qmm ... ok +test models::llama4::tests::snapshot_prompt_cache::a_foreign_family_snapshot_is_refused ... ignored, requires serial MLX execution +test models::llama4::tests::snapshot_prompt_cache::a_quantized_dense_layer_declines_the_restore ... ignored, requires serial MLX execution +test models::llama4::tests::snapshot_prompt_cache::llama4_chunked_cache_round_trips_through_a_snapshot ... ok +test models::llama4::tests::snapshot_prompt_cache::llama4_declares_snapshot_reuse ... ok +test models::llama4::tests::snapshot_prompt_cache::llama4_regular_cache_round_trips_through_a_snapshot ... ok +test models::llama4::tests::snapshot_prompt_cache::llama4_truncation_declines_once_the_chunked_front_is_trimmed ... ok +test models::llama4::tests::snapshot_prompt_cache::snapshot_restore_matches_cold_decode ... ignored, requires serial MLX execution +test models::llama4_helpers_tests::chunked_attention_mask_blocks_other_chunks_and_future_tokens ... ignored, requires serial MLX execution +test models::llama4_helpers_tests::get_weight_copy_returns_new_buffer_and_reports_missing_keys ... ignored, requires serial MLX execution +test models::llama4_helpers_tests::text_args_quantization_defaults_are_available_to_helpers ... ignored, requires serial MLX execution +test models::llama_bidirec::llama_bidirec_tests::bidirectional_prefill_sees_future_tokens ... ok +test models::llama_bidirec::llama_bidirec_tests::images_are_rejected ... ok +test models::llama_bidirec::llama_bidirec_tests::llama_nemotron_embed_checkpoint_ranks_the_related_passage_first ... ok +test models::llama_bidirec::llama_bidirec_tests::padding_content_cannot_reach_a_real_position ... ok +test models::llama_bidirec::llama_bidirec_tests::padding_invariance ... ok +test models::llama_bidirec::llama_bidirec_tests::rejects_adapter_only_directory ... ok +test models::llama_bidirec::llama_bidirec_tests::sanitize_adds_model_prefix_and_drops_head_and_inv_freq ... ok +test models::llama_nemotron_vl_embedding::llama_nemotron_vl_embedding_tests::a_square_image_uses_one_tile_and_a_wide_image_uses_the_budget ... ok +test models::llama_nemotron_vl_embedding::llama_nemotron_vl_embedding_tests::bidirectional_prefill_lets_an_early_token_see_a_later_one ... ok +test models::llama_nemotron_vl_embedding::llama_nemotron_vl_embedding_tests::format_text_is_identity_for_text_and_the_document_form_for_an_image ... ok +test models::llama_nemotron_vl_embedding::llama_nemotron_vl_embedding_tests::image_block_expands_to_num_image_token_per_tile ... ok +test models::llama_nemotron_vl_embedding::llama_nemotron_vl_embedding_tests::llama_nemotron_vl_image_gates_hold_on_the_real_checkpoint ... ok +test models::llama_nemotron_vl_embedding::llama_nemotron_vl_embedding_tests::llama_nemotron_vl_text_gates_hold_on_the_real_checkpoint ... ok +test models::llama_nemotron_vl_embedding::llama_nemotron_vl_embedding_tests::pixel_shuffle_then_mlp1_maps_one_tile_to_256_language_tokens ... ok +test models::llama_nemotron_vl_embedding::llama_nemotron_vl_embedding_tests::preprocess_emits_channels_last_tiles_in_the_siglip_range ... ok +test models::llama_nemotron_vl_embedding::llama_nemotron_vl_embedding_tests::sanitize_drops_the_vision_head_and_maps_the_language_model_prefix ... ok +test models::llama_nemotron_vl_embedding::llama_nemotron_vl_embedding_tests::the_document_prompt_expands_to_256_tokens_per_tile ... ok +test models::longcat_flash_ngram::tests::sanitize_rejects_a_kv_lora_rank_no_packing_can_describe ... ok +test models::longcat_flash_ngram::tests::sanitize_rejects_scales_with_no_biases ... ok +test models::mamba2::tests::mamba2_cache_default_has_no_state ... ok +test models::mamba2::tests::mamba2_cache_new_has_no_state ... ok +test models::mamba2::tests::mamba2_cache_snapshot_restore_round_trips_state_shapes ... ok +test models::mamba2::tests::mamba2_conv_state_shape_plateaus_after_50_steps ... ignored, requires serial MLX execution +test models::mamba2::tests::mamba2_loads_a_block_float_embedding_as_quantized ... ok +test models::mamba2::tests::mamba2_rejects_a_config_that_overstates_vocab_size ... ok +test models::mamba2::tests::mamba2_rejects_an_embedding_table_narrower_than_hidden_size ... ok +test models::mamba2::tests::mamba2_rejects_quantization_params_that_would_abort_the_embedding_lookup ... ok +test models::mamba2::tests::mamba2_resolves_both_embedding_prefix_spellings ... ok +test models::mamba::tests::mamba_block_prefill_rows_match_token_by_token_forward ... ok +test models::mamba::tests::mamba_cache_default_has_no_state ... ok +test models::mamba::tests::mamba_cache_new_has_no_state ... ok +test models::mamba::tests::mamba_cache_snapshot_restore_round_trips_state_shapes ... ok +test models::mamba::tests::mamba_conv_state_shape_plateaus_after_50_steps ... ignored, requires serial MLX execution +test models::mamba::tests::mamba_loads_a_block_float_embedding_as_quantized ... ok +test models::mamba::tests::mamba_mixer_norm_applies_the_bridge_norm_exactly_once ... ok +test models::mamba::tests::mamba_mixer_norm_is_identity_when_bcdt_rms_disabled ... ok +test models::mamba::tests::mamba_rejects_a_config_that_overstates_vocab_size ... ok +test models::mamba::tests::mamba_rejects_an_embedding_table_narrower_than_hidden_size ... ok +test models::mamba::tests::mamba_rejects_quantization_params_that_would_abort_the_embedding_lookup ... ok +test models::mamba::tests::mamba_resolves_both_embedding_prefix_spellings ... ok +test models::mellum_tests::mellum_config_parses_core_fields ... ok +test models::mellum_tests::mellum_full_layer_yarn_attention_factor_matches_config ... ok +test models::mellum_tests::mellum_layer_types_select_full_and_sliding ... ok +test models::mellum_tests::mellum_make_caches_selects_rotating_for_sliding_and_standard_for_full ... ok +test models::mellum_tests::mellum_sanitize_stacks_experts_and_pops_tied_head ... ok +test models::mellum_tests::mellum_tied_model_has_no_lm_head ... ok +test models::metadata_tests::all_model_types_covers_every_variant ... ok +test models::metadata_tests::all_model_types_has_no_duplicates ... ok +test models::metadata_tests::every_variant_is_registered_for_arch ... ok +test models::metadata_tests::metadata_round_trip_is_consistent ... ok +test models::minimax_m3::minimax_m3_tests::a_partial_final_block_contributes_only_its_live_tokens ... ok +test models::minimax_m3::minimax_m3_tests::block_sparse_indexer_degenerates_to_dense_when_topk_covers_all_blocks ... ok +test models::minimax_m3::minimax_m3_tests::config_parses_real_text_config_and_derives_layer_plan ... ok +test models::minimax_m3::minimax_m3_tests::indexer_absent_on_dense_layer_returns_none ... ok +test models::minimax_m3::minimax_m3_tests::indexer_load_rejects_zero_sparse_block_size_or_topk_blocks ... ok +test models::minimax_m3::minimax_m3_tests::indexer_uses_mqa_shapes_four_query_heads_one_key_head ... ok +test models::minimax_m3::minimax_m3_tests::moe_loads_block_sparse_moe_mixtral_layout_with_separate_shared_expert ... ok +test models::minimax_m3::minimax_m3_tests::partial_rope_leaves_the_non_rotary_tail_untouched ... ok +test models::minimax_m3::minimax_m3_tests::per_head_qk_norm_normalizes_each_head_independently ... ok +test models::minimax_m3::minimax_m3_tests::router_bias_changes_selection_not_mixture_weights ... ok +test models::minimax_m3::minimax_m3_tests::sanitizer_rewrites_prefixes_and_drops_vision_and_mtp ... ok +test models::minimax_m3::minimax_m3_tests::the_decode_selection_honours_the_forced_initial_and_local_blocks ... ok +test models::minimax_m3::minimax_m3_tests::the_decode_selection_names_exactly_the_blocks_the_mask_path_keeps ... ok +test models::minimax_m3::minimax_m3_tests::the_decode_selection_shape_declines_the_regimes_that_are_not_sparse ... ok +test models::minimax_tests::fused_dispatch_gate_conditions_for_minimax ... ok +test models::minimax_tests::parses_moe_topology_fields ... ok +test models::minimax_tests::quantization_accessors_resolve_correctly ... ok +test models::minimax_tests::rope_and_head_dim_parse ... ok +test models::minimax_tests::unquantized_config_gate_bits_equals_bits ... ok +test models::ministral3_embedding::ministral3_embedding_tests::attn_scale_at_offset_zero_matches_backbone ... ok +test models::ministral3_embedding::ministral3_embedding_tests::bidirectional_prefill_sees_future_tokens ... ok +test models::ministral3_embedding::ministral3_embedding_tests::images_are_rejected ... ok +test models::ministral3_embedding::ministral3_embedding_tests::nemotron_3_embed_8bit_agrees_with_the_bf16_original ... ok +test models::ministral3_embedding::ministral3_embedding_tests::nemotron_3_embed_bf16_ranks_the_related_passage_first ... ok +test models::ministral3_embedding::ministral3_embedding_tests::padding_content_cannot_reach_a_real_position ... ok +test models::ministral3_embedding::ministral3_embedding_tests::padding_invariance ... ok +test models::mllama::config::tests::parses_nested_mllama_config ... ok +test models::mllama::config::tests::text_config_defaults_match_reference ... ok +test models::mllama::config::tests::to_llama3_args_forwards_rope_scaling ... ok +test models::mllama::config::tests::to_llama3_args_forwards_the_rope_convention ... ok +test models::mllama::config::tests::vision_config_reads_inherited_quantization ... ok +test models::mllama::text::tests::cached_cross_kv_equals_fresh_recompute ... ok +test models::mllama::text::tests::cross_states_change_invalidates_cache ... ok +test models::mllama::text::tests::full_tile_mask_is_the_unmasked_computation ... ok +test models::mllama::text::tests::ragged_real_tile_rows_match_reference_masked_full_rows ... ok +test models::mllama::text::tests::real_tile_rows_match_reference_masked_full_rows ... ok +test models::model_owned::tests::model_owned_sequence_state_isolates_prepared_sequences ... ok +test models::model_owned::tests::model_owned_sequence_state_preserves_fallback_between_steps ... ok +test models::model_owned::tests::model_owned_sequence_state_refuses_missing_sequence_ids ... ok +test models::model_owned::tests::model_owned_sequence_state_release_drops_prepared_slot ... ok +test models::modernbert_real_checkpoint_tests::gte_reranker_modernbert_produces_finite_logits ... ok +test models::modernbert_real_checkpoint_tests::modernbert_embed_base_detects_and_reports_its_limits ... ok +test models::modernbert_real_checkpoint_tests::modernbert_embed_base_handles_a_document_beyond_4096_tokens ... ok +test models::modernbert_real_checkpoint_tests::modernbert_embed_base_is_padding_invariant_across_batches ... ok +test models::modernbert_real_checkpoint_tests::modernbert_embed_base_passes_the_self_consistency_gate ... ok +test models::modernbert_tests::classifier_cls_pooling_reads_the_first_real_token ... ok +test models::modernbert_tests::classifier_mean_pooling_ignores_padding ... ok +test models::modernbert_tests::classifier_rejects_a_weight_that_does_not_match_the_hidden_size ... ok +test models::modernbert_tests::config_validation_rejects_unsafe_scalars ... ok +test models::modernbert_tests::encoder_rejects_a_mask_that_does_not_match_the_ids ... ok +test models::modernbert_tests::first_layer_has_no_attn_norm ... ok +test models::modernbert_tests::geglu_splits_input_then_gate ... ok +test models::modernbert_tests::layer_parity_selects_local_and_global_rope_base ... ok +test models::modernbert_tests::local_window_bound_attends_half_the_declared_window ... ok +test models::modernbert_tests::modernbert_config_detects_as_the_embedding_family ... ok +test models::modernbert_tests::norm_eps_accepts_either_spelling_and_both_together ... ok +test models::modernbert_tests::padding_invariance ... ok +test models::modernbert_tests::sanitize_strips_model_prefix_and_drops_the_right_heads ... ok +test models::modernbert_tests::sliding_mask_attends_within_64_and_blocks_beyond ... ok +test models::molmo::tests::explicit_interleave_stays_traditional ... ok +test models::molmo::tests::explicit_llama_stays_rotate_half ... ok +test models::molmo::tests::flat_molmo_7b_config_without_rope_impl_uses_effective_llama_layout ... ok +test models::moondream2::tests::moondream2_fused_qkv_width_matches_reference ... ok +test models::moondream2::tests::moondream2_model_args_accept_explicit_overrides ... ok +test models::moondream2::tests::moondream2_model_args_fill_phi_style_defaults ... ok +test models::moondream2::tests::moondream2_partial_rotary_covers_half_the_head ... ok +test models::moondream3::tests::moondream3_model_args_fill_default_moe_and_attention_dimensions ... ok +test models::multimodal_placeholders::tests::duplicate_ids_are_deduplicated ... ok +test models::multimodal_placeholders::tests::empty_struct_yields_no_suppressed_ids ... ok +test models::multimodal_placeholders::tests::gemma4_unified_12b_config_values_produce_all_seven_placeholders ... ok +test models::multimodal_placeholders::tests::negative_sentinel_ids_are_dropped ... ok +test models::multimodal_placeholders::tests::real_eos_ids_are_never_in_the_suppressed_set ... ok +test models::multimodal_placeholders::tests::unset_fields_are_skipped ... ok +test models::muse_glimmer::speculative_tests::exactness_probe_runs_on_the_synthetic_model ... ok +test models::muse_glimmer::speculative_tests::probed_widths_cover_the_warm_up_depth_and_the_ceiling ... ok +test models::muse_glimmer::speculative_tests::rollback_after_partial_accept_rewinds_every_cache ... ok +test models::muse_glimmer::speculative_tests::speculative_block_logits_match_single_token_decode ... ok +test models::muse_glimmer::speculative_tests::speculative_buffer_never_falls_below_the_block_it_buffers ... ok +test models::muse_glimmer::speculative_tests::speculative_buffer_size_follows_the_gemma_rule ... ok +test models::muse_glimmer::speculative_tests::verify_forward_captures_layers_before_final_norm ... ok +test models::muse_glimmer::speculative_tests::wrapper_hands_out_raw_embedding_and_untied_head ... ok +test models::muse_glimmer::tests::batch_tests::batched_decode_with_sequence_ids_matches_isolated_rows ... ok +test models::muse_glimmer::tests::batch_tests::concurrent_sequences_do_not_share_or_overwrite_state ... ok +test models::muse_glimmer::tests::batch_tests::embedding_prefill_populates_the_same_sequence_cache ... ok +test models::muse_glimmer::tests::batch_tests::mixed_cache_boundaries_keep_sliding_rotating_and_full_growing ... ok +test models::muse_glimmer::tests::batch_tests::muse_batching_advertises_model_owned_sequence_state ... ok +test models::muse_glimmer::tests::batch_tests::release_reset_and_snapshot_restore_make_reuse_equivalent ... ok +test models::muse_glimmer::tests::config_rejects_unknown_layer_type ... ok +test models::muse_glimmer::tests::config_validates_layer_pattern_and_rope_selection ... ok +test models::muse_glimmer::tests::full_config_parses_pinned_vision_and_projector_fields ... ok +test models::muse_glimmer::tests::reduced_decoder_forward_runs_and_softcaps_logits ... ok +test models::muse_glimmer::tests::text_model_builds_from_published_vlm_roots_and_uses_mixed_caches ... ok +test models::muse_glimmer::tests::token_embeddings_apply_the_reference_weightless_rms_norm ... ok +test models::muse_glimmer::tests::vision_config_rejects_non_pinned_schedule_or_missing_final_full_layer ... ok +test models::nanochat::tests::config_accepts_the_real_mlx_conversion ... ok +test models::nanochat::tests::config_defaults_match_d20 ... ok +test models::nanochat::tests::config_validation_rejects_hostile_scalars ... ok +test models::nanochat::tests::negative_freq_rope_rotates_backwards ... ok +test models::nanochat::tests::qk_norm_runs_after_rope ... ok +test models::nanochat::tests::sanitize_maps_transformers_layout_and_is_idempotent ... ok +test models::nanochat::tests::softcap_bounds_logits ... ok +test models::nanochat::tests::softcap_config_forms ... ok +test models::nanochat::tests::tiny_model_decode_matches_prefill_and_last_logits ... ok +test models::nanochat::tests::tiny_model_prefill_is_causal ... ok +test models::nanochat::tests::transformers_layout_loads_and_matches ... ok +test models::nemotron::tests::test_model_args_defaults ... ok +test models::nemotron::tests::test_rope_scale ... ok +test models::nemotron_h::tests::attention_cache_trim_on_empty_cache_is_safe ... ok +test models::nemotron_h::tests::attention_layer_snapshot_restore_round_trips_kv_state ... ok +test models::nemotron_h::tests::layer_cache_attention_offset_matches_kvcache ... ok +test models::nemotron_h::tests::layer_cache_mamba_offset_is_zero ... ok +test models::nemotron_h::tests::mamba_cache_default_matches_new ... ok +test models::nemotron_h::tests::mamba_cache_new_has_no_state ... ok +test models::nemotron_h::tests::mamba_cache_reset_clears_state ... ok +test models::nemotron_h::tests::mamba_cache_snapshot_restore_round_trips_state_shapes ... ok +test models::nemotron_h::tests::nemotron_h_conv_state_shape_plateaus_after_50_steps ... ignored, requires serial MLX execution +test models::nemotron_h::tests::nemotron_h_rejects_expert_quantization_params_that_would_abort_gather_qmm ... ok +test models::nemotron_h::tests::post_init_both_time_step_min_max_set_defaults_to_zero_inf ... ok +test models::nemotron_h::tests::post_init_explicit_time_step_limit_is_preserved ... ok +test models::nemotron_h::tests::post_init_no_time_step_fields_defaults_to_zero_inf ... ok +test models::nemotron_h::tests::post_init_only_time_step_max_defaults_to_zero_inf ... ok +test models::nemotron_h::tests::post_init_only_time_step_min_defaults_to_zero_inf ... ok +test models::nemotron_h::tests::state_contrib_broadcast_shape_is_rank4 ... ok +test models::nemotron_h::tests::state_contrib_old_shape_was_rank5 ... ok +test models::nemotron_h::tests::trim_guard_negative_excess_is_noop ... ok +test models::nemotron_h::tests::trim_guard_positive_excess_proceeds ... ok +test models::nemotron_h::tests::trim_guard_zero_excess_is_noop ... ok +test models::nemotron_nas::tests::linear_scaling_still_resolves_to_a_position_scale ... ok +test models::nemotron_nas::tests::llama3_scaling_resolves_to_a_frequency_table_not_a_position_scale ... ok +test models::nemotron_parse::nemotron_parse_model_tests::decoder_prenorm_layer_shape_and_cache_growth ... ok +test models::nemotron_parse::nemotron_parse_model_tests::encoder_output_is_compressed_grid_plus_summary_row ... ok +test models::nemotron_parse::nemotron_parse_model_tests::generate_respects_the_token_budget_and_seed_checks ... ok +test models::nemotron_parse::nemotron_parse_model_tests::untied_head_is_required_when_embeddings_are_not_tied ... ok +test models::nemotron_parse::nemotron_parse_tests::argmax_prefers_the_first_maximum ... ok +test models::nemotron_parse::nemotron_parse_tests::bilinear_align_corners_2x2_to_3x3 ... ok +test models::nemotron_parse::nemotron_parse_tests::config_parses_the_real_shape ... ok +test models::nemotron_parse::nemotron_parse_tests::config_rejects_a_non_gelu_decoder_and_unknown_vit ... ok +test models::nemotron_parse::nemotron_parse_tests::conv2_torch_kernel_is_transposed_to_out_kh_kw_in ... ok +test models::nemotron_parse::nemotron_parse_tests::conv_transpose_gates_are_idempotent ... ok +test models::nemotron_parse::nemotron_parse_tests::hub_keys_map_onto_the_converted_layout ... ok +test models::nemotron_parse::nemotron_parse_tests::neck_output_has_3329_rows_for_native_page ... ok +test models::nemotron_parse::nemotron_parse_tests::patchify_order_matches_row_major_grid ... ok +test models::nemotron_parse::nemotron_parse_tests::pos_embed_native_page_is_identity_crop ... ok +test models::nemotron_parse::nemotron_parse_tests::pos_embed_smaller_page_resamples_then_crops ... ok +test models::nemotron_parse::nemotron_parse_tests::preprocess_centre_pads_with_normalized_white ... ok +test models::nemotron_parse::nemotron_parse_tests::quantized_dense_only_tensors_are_refused ... ok +test models::nemotron_parse::nemotron_parse_tests::repetition_penalty_follows_transformers_semantics ... ok +test models::nemotron_parse::nemotron_parse_tests::resize_rule_clamps_height_then_width_with_truncation ... ok +test models::nemotron_parse::nemotron_parse_tests::row_window_conv_matches_a_direct_convolution ... ok +test models::nemotron_parse::nemotron_parse_tests::seed_ids_default_prompt_is_expected_sequence ... ok +test models::nemotron_parse::nemotron_parse_tests::seed_ids_prepend_decoder_start_like_transformers_generate ... ok +test models::nemotron_voicechat::streaming::tests::closed_session_rejects_push_and_close_is_idempotent ... ok +test models::nemotron_voicechat::streaming::tests::event_frame_index_accessor ... ok +test models::nemotron_voicechat::streaming::tests::failing_frame_keeps_later_frames_pending ... ok +test models::nemotron_voicechat::streaming::tests::flush_without_padding_drops_partial_frame ... ok +test models::nemotron_voicechat::streaming::tests::frames_keep_sample_order_across_pushes ... ok +test models::nemotron_voicechat::streaming::tests::profile_summary_percentiles ... ok +test models::nemotron_voicechat::streaming::tests::push_audio_buffers_arbitrary_chunk_boundaries ... ok +test models::nemotron_voicechat::streaming::tests::token_accumulator_delta_rule ... ok +test models::nemotron_voicechat::tests::config_defaults_and_validation ... ok +test models::nemotron_voicechat::tests::forward_embeds_to_hidden_matches_forward_on_embedded_ids ... ok +test models::nemotron_voicechat::tests::front_end_quantization_follows_checkpoint_config ... ok +test models::nemotron_voicechat::tests::fused_step_uses_both_heads_greedily ... ok +test models::nemotron_voicechat::tests::sub_config_mismatch_is_an_error ... ok +test models::nemotron_voicechat::tests::take_llm_weights_renames_onto_nemotron_h_layout ... ok +test models::nemotron_voicechat::tts::tts_dtype_tests::backbone_stream_is_f32_with_bf16_weights ... ok +test models::nemotron_voicechat::tts::tts_tests::char_encoder_scatters_only_masked_positions ... ok +test models::nemotron_voicechat::tts::tts_tests::control_codes_become_silence ... ok +test models::nemotron_voicechat::tts::tts_tests::depthsum_ignores_mask_index ... ok +test models::nemotron_voicechat::tts::tts_tests::f32_promotion_keeps_norms_and_the_subword_path_as_stored ... ok +test models::nemotron_voicechat::tts::tts_tests::flag_embeddings_follow_the_token_tables ... ok +test models::nemotron_voicechat::tts::tts_tests::mask_schedule_counts_sum_to_31_for_exponent_3 ... ok +test models::nemotron_voicechat::tts::tts_tests::mog_infer_shapes_are_finite_with_guidance ... ok +test models::nemotron_voicechat::tts::tts_tests::native_sum_reduces_the_requested_axis ... ok +test models::nemotron_voicechat::tts::tts_tests::offset_rms_norm_equals_rms_norm_with_weight_plus_one ... ok +test models::nemotron_voicechat::tts::tts_tests::prompt_masks_first_and_second_to_last_frames ... ok +test models::nemotron_voicechat::tts::tts_tests::rvq_encode_step_recovers_exact_codewords ... ok +test models::nemotron_voicechat::tts::tts_tests::set_vocabulary_rejects_a_wrong_char_table ... ok +test models::nemotron_voicechat::tts::tts_tests::top_p_keeps_at_least_the_largest_logit ... ok +test models::olmoe::tests::fused_dispatch_gate_is_callable ... ok +test models::olmoe::tests::router_scores_are_full_softmax_gathered_when_norm_topk_prob_false ... ignored, requires serial MLX execution +test models::olmoe::tests::router_scores_are_renormalized_when_norm_topk_prob_true ... ignored, requires serial MLX execution +test models::openelm::openelm_tests::a_missing_per_layer_tensor_is_an_error ... ok +test models::openelm::openelm_tests::a_non_grouping_head_ratio_is_rejected ... ok +test models::openelm::openelm_tests::a_per_layer_list_shorter_than_the_stack_is_rejected ... ok +test models::openelm::openelm_tests::eos_ids_reach_the_built_model ... ok +test models::openelm::openelm_tests::forward_produces_vocab_sized_logits_and_advances_the_cache ... ok +test models::openelm::openelm_tests::from_weights_builds_each_block_with_its_own_geometry ... ok +test models::openelm::openelm_tests::head_counts_and_ffn_widths_differ_across_layers ... ok +test models::openelm::openelm_tests::make_divisible_matches_the_upstream_helper ... ok +test models::openelm::openelm_tests::qk_norm_is_loaded_only_when_the_config_asks_for_it ... ok +test models::openelm::openelm_tests::the_real_config_parses_with_its_per_layer_lists ... ok +test models::paddleocr_vl::mrope_section_tests::apply_mrope_writes_h_and_w_sections ... ok +test models::phi3::tests::a_chunked_prefill_pins_one_table_for_the_whole_prompt ... ok +test models::phi3::tests::a_config_without_rope_scaling_builds_no_su_tables ... ok +test models::phi3::tests::a_long_factor_only_config_uses_it_for_both_tables ... ok +test models::phi3::tests::a_scale_of_one_allocates_no_scale_array ... ok +test models::phi3::tests::a_server_prefill_pins_one_table_across_the_boundary_segment_and_every_chunk ... ok +test models::phi3::tests::fused_and_graph_su_paths_agree_per_table ... ok +test models::phi3::tests::mscale_override_wins_over_the_default_scale ... ok +test models::phi3::tests::phi3_model_args_default_to_full_rotary_dims ... ok +test models::phi3::tests::phi3_model_args_support_partial_rotary_factor ... ok +test models::phi3::tests::su_rope_builds_short_and_long_tables ... ok +test models::phi3::tests::su_table_switches_at_original_max ... ok +test models::phi3::tests::the_cache_regime_agrees_with_the_table_the_same_length_selects ... ok +test models::phi3::tests::top_level_original_max_position_embeddings_is_honored ... ok +test models::phi3small::tests::block_sparse_flag_marks_every_nth_layer_dense ... ok +test models::phi3small::tests::blocksparse_mask_matches_reference_pattern ... ok +test models::phi3small::tests::blocksparse_selected_key_blocks_are_local_plus_vertical ... ok +test models::phi3small::tests::config_defaults_apply_when_blocksparse_fields_absent ... ok +test models::phi3small::tests::config_parses_blocksparse_fields ... ok +test models::phi3small::tests::decode_single_row_mask_follows_pattern ... ok +test models::phi3small::tests::long_context_mask_is_sparser_than_causal ... ok +test models::phi3small::tests::long_context_output_diverges_from_dense ... ok +test models::phi3small::tests::short_context_mask_equals_causal ... ok +test models::phi3small::tests::short_context_output_matches_dense_fallback ... ok +test models::phimoe::sanitize_tests::stacked_experts_outlive_the_weight_map_they_were_borrowed_from ... ok +test models::phimoe_tests::phimoe_4bit_config_parses ... ok +test models::phimoe_tests::phimoe_head_dim_derives_correctly ... ok +test models::phimoe_tests::phimoe_num_kv_heads_accessor ... ok +test models::phimoe_tests::phimoe_unquantized_config_uses_quantization_defaults ... ok +test models::phixtral::tests::a_missing_expert_bias_is_rejected ... ok +test models::phixtral::tests::a_missing_output_head_norm_is_rejected ... ok +test models::phixtral::tests::a_narrow_fused_qkv_is_rejected ... ok +test models::phixtral::tests::a_rotary_width_mlx_would_throw_on_is_rejected ... ok +test models::phixtral::tests::a_short_expert_stack_is_rejected ... ok +test models::phixtral::tests::a_synthetic_model_builds_and_produces_finite_logits ... ok +test models::phixtral::tests::a_top_k_larger_than_the_expert_count_is_rejected ... ok +test models::phixtral::tests::a_well_formed_checkpoint_passes_validation ... ok +test models::phixtral::tests::a_zero_scalar_is_rejected_before_it_divides ... ok +test models::phixtral::tests::an_explicit_n_inner_overrides_the_four_x_default ... ok +test models::phixtral::tests::an_indivisible_n_embd_is_rejected_before_it_divides ... ok +test models::phixtral::tests::the_dimensions_come_from_the_spellings_the_checkpoint_uses ... ok +test models::phixtral::tests::the_expert_bias_is_gathered_per_selected_expert ... ok +test models::phixtral::tests::the_phi_msft_arm_splits_on_num_local_experts ... ok +test models::phixtral::tests::the_prefill_is_causal_without_being_handed_a_mask ... ok +test models::phixtral::tests::the_real_config_parses_and_validates ... ok +test models::phixtral::tests::the_router_softmaxes_the_selected_logits_not_the_full_row ... ok +test models::phixtral::tests::upstreams_own_field_names_are_accepted_as_aliases ... ok +test models::plamo2_tests::plamo2_config_parses ... ok +test models::plamo2_tests::plamo2_dt_dim_is_max_64_hidden_over_16 ... ok +test models::plamo2_tests::plamo2_eos_token_id_handles_scalar_and_missing ... ok +test models::plamo2_tests::plamo2_is_mamba_disabled_uses_attention_everywhere ... ok +test models::plamo2_tests::plamo2_is_mamba_interleave_pattern ... ok +test models::plamo2_tests::plamo2_mamba_dims_parse ... ok +test models::plamo2_tests::plamo2_norm_offsets_match_reference ... ok +test models::plamo2_tests::plamo2_tie_word_embeddings_defaults_true ... ok +test models::qwen2_vl::mrope_section_tests::apply_mrope_writes_h_and_w_sections ... ok +test models::qwen3::tests::last_logits_match_the_sliced_full_forward ... ok +test models::qwen3::tests::qwen3_batched_rope_uses_linear_scale_and_frequency_tables ... ok +test models::qwen3::tests::qwen3_graph_rope_uses_linear_scale_and_frequency_tables ... ok +test models::qwen3::tests::qwen3_rope_scaling_kind_builds_the_yarn_table_since_1472 ... ok +test models::qwen3::tests::qwen3_rope_scaling_kind_reads_linear_spellings_and_type_precedence ... ok +test models::qwen3::tests::qwen3_rope_scaling_kind_warns_to_plain_table_for_unusable_blocks ... ok +test models::qwen3::tests::qwen3_rope_scaling_reaches_model_block_and_attention_constructors ... ok +test models::qwen3::tests::qwen3_rope_warnings_use_the_checkpoint_name_when_available ... ok +test models::qwen3_5::chain_parity_gate_tests::accepts_the_published_checkpoint_geometry ... ok +test models::qwen3_5::chain_parity_gate_tests::declines_a_key_head_dim_not_a_multiple_of_32 ... ok +test models::qwen3_5::chain_parity_gate_tests::declines_a_non_integral_value_to_key_head_ratio ... ok +test models::qwen3_5::qwen3_5_dflash_probe_tests::block_chain_exactness_verdicts_on_the_real_checkpoint ... ignored, needs the real Qwen 3.5 4B checkpoint and a GPU +test models::qwen3_5::qwen3_5_dflash_probe_tests::block_versus_chain_byte_bisect_on_the_real_transcript ... ignored, needs the real Qwen 3.5 4B checkpoint, a GPU and a recorded transcript +test models::qwen3_5::qwen3_5_dflash_probe_tests::classic_forward_versus_speculative_forward_at_one_row ... ignored, needs the real Qwen 3.5 4B checkpoint and a GPU +test models::qwen3_5::qwen3_5_dflash_probe_tests::per_layer_block_versus_chain_bisect ... ignored, needs the real Qwen 3.5 4B checkpoint and a GPU +test models::qwen3_5::qwen3_5_dflash_probe_tests::reference_replay_classic_versus_burst_shape ... ignored, needs the real Qwen 3.5 4B checkpoint, a GPU and a recorded transcript +test models::qwen3_5::qwen3_5_dflash_probe_tests::rollback_after_partial_accept_matches_the_decode_chain ... ignored, needs the real Qwen 3.5 4B checkpoint and a GPU +test models::qwen3_5::qwen3_5_dflash_probe_tests::round_loop_cache_dynamics_with_rollback_match_the_chain ... ignored, needs the real Qwen 3.5 4B checkpoint, a GPU and a recorded transcript +test models::qwen3_5::qwen3_5_dflash_probe_tests::served_burst_wrapper_with_real_drafter_matches_the_chain ... ignored, needs the real Qwen 3.5 4B checkpoint, the DFlash drafter, a GPU and a recorded transcript +test models::qwen3_5::qwen3_5_dflash_probe_tests::speculative_t1_forward_versus_classic_on_the_real_transcript ... ignored, needs the real Qwen 3.5 4B checkpoint, a GPU and a recorded transcript +test models::qwen3_5::qwen3_5_rope_attribution_tests::long_probe_draw_sees_the_verify_rope_hazard_and_passes_with_the_fix ... ignored, needs the real Qwen 3.5 4B checkpoint and a CUDA GPU +test models::qwen3_5::qwen3_5_rope_attribution_tests::op_level_compiled_silu_block_versus_rows ... ignored, needs a GPU; run on the CUDA host +test models::qwen3_5::qwen3_5_rope_attribution_tests::op_level_fast_rope_block_versus_decode_rows ... ignored, needs a GPU; run on the CUDA host +test models::qwen3_5::qwen3_5_rope_attribution_tests::post_rope_capture_bisect_on_the_real_transcript ... ignored, needs the real Qwen 3.5 4B checkpoint, a GPU and a recorded transcript +test models::qwen3_5::qwen3_5_rope_attribution_tests::verify_block_cost_with_and_without_row_rope ... ignored, needs the real Qwen 3.5 4B checkpoint and a CUDA GPU; timing diagnostic +test models::qwen3_5::sanitize_tests::sanitize_output_loads_through_switch_glu_for_all_naming_conventions ... ok +test models::qwen3_5::sanitize_tests::sanitize_weights_gate_up_down_proj_does_not_clobber_w1_w2_w3 ... ok +test models::qwen3_5::sanitize_tests::sanitize_weights_preserves_per_expert_gate_up_down_stack_order ... ok +test models::qwen3_5::sanitize_tests::sanitize_weights_stacks_per_expert_gate_up_down_proj_names ... ok +test models::qwen3_5::sanitize_tests::sanitize_weights_stacks_per_expert_gate_up_down_proj_with_scales_biases ... ok +test models::qwen3_5_mtp_target::tests::captured_round_trip_handles_zero_snapshots ... ok +test models::qwen3_5_mtp_target::tests::captured_round_trip_preserves_gdn_snapshots ... ok +test models::qwen3_5_tests::language_model_only_true_is_accepted ... ok +test models::qwen3_5_tests::language_model_only_wrong_type_is_a_named_error_not_absent ... ok +test models::qwen3_5_tests::minicpmv4_6_text_config_mrope_interleaved_false_is_a_named_error ... ok +test models::qwen3_5_tests::minicpmv4_6_text_config_output_gate_type_sigmoid_is_a_named_error ... ok +test models::qwen3_5_tests::minicpmv4_6_text_config_passes_validate_supported ... ok +test models::qwen3_5_tests::mrope_interleaved_accepts_true_and_absent ... ok +test models::qwen3_5_tests::mrope_interleaved_false_is_a_named_error ... ok +test models::qwen3_5_tests::mrope_interleaved_wrong_type_is_a_named_error_not_absent ... ok +test models::qwen3_5_tests::mrope_position_source_recomputes_when_nothing_is_stored ... ok +test models::qwen3_5_tests::mrope_position_source_recomputes_when_the_window_runs_past_the_stored_ids ... ok +test models::qwen3_5_tests::mrope_position_source_rejects_a_batch_mismatch_and_a_wrong_rank ... ok +test models::qwen3_5_tests::mrope_position_source_slices_each_chunk_of_a_chunked_prefill ... ok +test models::qwen3_5_tests::output_gate_type_accepts_silu_swish_and_absent ... ok +test models::qwen3_5_tests::output_gate_type_error_truncates_an_oversized_value ... ok +test models::qwen3_5_tests::output_gate_type_matching_is_case_insensitive ... ok +test models::qwen3_5_tests::output_gate_type_sigmoid_is_a_named_error ... ok +test models::qwen3_5_tests::qwen3_8_27b_text_config_parses_and_ignores_the_new_keys ... ok +test models::qwen3_5_tests::qwen3_8_27b_wrapper_config_is_accepted ... ok +test models::qwen3_5_tests::rebuild_with_zero_tail_handles_last_row ... ignored, requires serial MLX execution +test models::qwen3_5_tests::rebuild_with_zero_tail_no_op_when_start_equals_kv_len ... ignored, requires serial MLX execution +test models::qwen3_5_tests::rebuild_with_zero_tail_preserves_input_dtype ... ignored, requires serial MLX execution +test models::qwen3_5_tests::rebuild_with_zero_tail_zeroes_only_target_row_tail ... ignored, requires serial MLX execution +test models::qwen3_5_tests::sanitize_weights_does_not_shift_norms_on_a_degenerate_conv1d_shape ... ignored, requires serial MLX execution +test models::qwen3_5_tests::sanitize_weights_drops_lm_head_when_tied_embeddings ... ignored, requires serial MLX execution +test models::qwen3_5_tests::sanitize_weights_drops_mtp_keys ... ignored, requires serial MLX execution +test models::qwen3_5_tests::sanitize_weights_is_idempotent_on_already_converted_checkpoint_with_stray_mtp_key ... ignored, requires serial MLX execution +test models::qwen3_5_tests::sanitize_weights_shifts_norms_exactly_once_on_raw_layout ... ignored, requires serial MLX execution +test models::qwen3_5_tests::zero_per_row_kv_tail_no_op_on_empty_cache ... ignored, requires serial MLX execution +test models::qwen3_5_tests::zero_per_row_kv_tail_zeroes_both_k_and_v ... ignored, requires serial MLX execution +test models::qwen3_embedding::qwen3_embedding_tests::causal_prefill_is_causal ... ok +test models::qwen3_embedding::qwen3_embedding_tests::forward_hidden_then_head_matches_forward_impl ... ok +test models::qwen3_embedding::qwen3_embedding_tests::images_are_rejected ... ok +test models::qwen3_embedding::qwen3_embedding_tests::instruction_wraps_only_when_supplied ... ok +test models::qwen3_embedding::qwen3_embedding_tests::last_token_pool_uses_appended_eos ... ok +test models::qwen3_embedding::qwen3_embedding_tests::qwen3_embedding_checkpoint_matches_the_model_card_similarity_matrix ... ok +test models::qwen3_moe::tests::qwen3_moe_batched_decode_matches_each_sequence_decoded_alone ... ok +test models::qwen3_moe::tests::qwen3_moe_forward_batched_empty_batch_returns_empty_logits ... ok +test models::qwen3_moe::tests::qwen3_moe_forward_batched_single_row_is_the_single_sequence_forward ... ok +test models::qwen3_moe::tests::qwen3_moe_fused_kernel_declines_experts_wider_than_the_dff_bound ... ok +test models::qwen3_moe::tests::qwen3_moe_graph_rope_uses_linear_scale_and_frequency_tables ... ok +test models::qwen3_moe::tests::qwen3_moe_rope_scaling_kind_reads_linear_and_type_precedence ... ok +test models::qwen3_moe::tests::qwen3_moe_rope_scaling_kind_warns_to_plain_table_for_unusable_blocks ... ok +test models::qwen3_moe::tests::qwen3_moe_rope_scaling_reaches_model_layer_and_attention_constructors ... ok +test models::qwen3_moe::tests::qwen3_moe_rope_warnings_use_the_checkpoint_name_when_available ... ok +test models::qwen3_moe::tests::qwen3_moe_switch_linear_rejects_quantization_params_that_would_abort_gather_qmm ... ok +test models::qwen3_next::cache_tests::qwen3_next_attention_cache_snapshot_restore_round_trips_kv_state ... ok +test models::qwen3_next::cache_tests::qwen3_next_attention_restore_refuses_mode_mismatch ... ok +test models::qwen3_next::cache_tests::qwen3_next_attention_snapshot_refuses_non_fp16_modes ... ok +test models::qwen3_next::cache_tests::qwen3_next_linear_cache_snapshot_restore_round_trips_state ... ok +test models::qwen3_next::helper_tests::projection_layout_computes_expected_ranges_and_shapes ... ok +test models::qwen3_next::helper_tests::split_conv_output_ranges_partitions_q_k_v_segments ... ok +test models::qwen3_next::stage_tests::stage_attention_offset_defaults_to_zero_for_all_linear_stage ... ok +test models::qwen3_next::stage_tests::stage_attention_offset_uses_first_stage_local_attention_layer ... ok +test models::qwen3_next::stage_tests::stage_layer_typing_uses_global_layer_indices ... ok +test models::qwen3_next::tests::qwen3_next_switch_linear_rejects_quantization_params_that_would_abort_gather_qmm ... ok +test models::qwen3_vl::deepstack_injection_tests::deepstack_process_adds_visual_embeds_at_image_positions ... ok +test models::qwen3_vl::qwen3_vl_tests::forward_hidden_returns_the_text_hidden_width ... ok +test models::qwen3_vl::qwen3_vl_tests::forward_hidden_then_head_matches_forward_impl ... ok +test models::qwen3_vl_embedding::qwen3_vl_embedding_tests::expand_image_placeholders_keeps_padding_flags ... ok +test models::qwen3_vl_embedding::qwen3_vl_embedding_tests::expand_image_placeholders_rejects_a_count_mismatch ... ok +test models::qwen3_vl_embedding::qwen3_vl_embedding_tests::expand_image_placeholders_repeats_each_placeholder_in_order ... ok +test models::qwen3_vl_embedding::qwen3_vl_embedding_tests::format_text_inserts_one_image_pad_for_an_image_row ... ok +test models::qwen3_vl_embedding::qwen3_vl_embedding_tests::format_text_renders_system_instruction_and_generation_prompt ... ok +test models::qwen3_vl_embedding::qwen3_vl_embedding_tests::instruction_gets_trailing_period_only_when_it_ends_mid_sentence ... ok +test models::qwen3_vl_embedding::qwen3_vl_embedding_tests::qwen3_vl_embedding_image_gates_hold_on_the_real_checkpoint ... ok +test models::qwen3_vl_embedding::qwen3_vl_embedding_tests::qwen3_vl_embedding_text_gates_hold_on_the_real_checkpoint ... ok +test models::qwen3_vl_moe::deepstack_injection_tests::deepstack_process_adds_visual_embeds_at_image_positions ... ok +test models::qwen3_vl_moe::tests::qwen3_vl_moe_fused_kernel_declines_experts_wider_than_the_dff_bound ... ok +test models::qwen3_vl_moe::tests::qwen3_vl_moe_switch_linear_rejects_quantization_params_that_would_abort_gather_qmm ... ok +test models::qwen_mrope_state::tests::bind_fallback_to_sequence_registers_empty_entry_for_text_only ... ok +test models::qwen_mrope_state::tests::bind_fallback_to_sequence_transfers_state_and_clears_fallback ... ok +test models::qwen_mrope_state::tests::fallback_clear_resets_entry ... ok +test models::qwen_mrope_state::tests::fallback_set_then_read ... ok +test models::qwen_mrope_state::tests::fallback_starts_empty ... ok +test models::qwen_mrope_state::tests::missing_sequence_falls_back_to_legacy_slot ... ok +test models::qwen_mrope_state::tests::mixed_batch_per_row_delta_tensor_matches_expectation ... ok +test models::qwen_mrope_state::tests::per_sequence_state_isolates_text_only_row_from_vl_row ... ok +test models::qwen_mrope_state::tests::preemption_round_trip_carries_mrope_entry_to_new_id ... ok +test models::qwen_mrope_state::tests::release_drops_only_target_sequence ... ok +test models::qwen_mrope_state::tests::take_for_sequence_returns_none_for_unknown_id ... ok +test models::qwen_mrope_state::tests::text_only_request_does_not_inherit_vl_delta_after_bind ... ok +test models::qwen_vl_position_tests::batch_size_mismatch_rejects_cached_position_ids ... ignored, requires serial MLX execution +test models::qwen_vl_position_tests::batch_two_cache_accepted_for_matching_batch_two_request ... ignored, requires serial MLX execution +test models::qwen_vl_position_tests::chunked_prefill_slice_contains_correct_position_values ... ignored, requires serial MLX execution +test models::qwen_vl_position_tests::old_strict_equality_guard_would_reject_second_chunk ... ignored, requires serial MLX execution +test models::qwen_vl_position_tests::same_batch_size_still_accepted_with_sufficient_seq_len ... ignored, requires serial MLX execution +test models::qwen_vl_position_tests::sufficiency_check_accepts_chunked_prefill_with_nonzero_cache_offset ... ignored, requires serial MLX execution +test models::qwen_vl_position_tests::sufficiency_check_accepts_exact_boundary ... ignored, requires serial MLX execution +test models::qwen_vl_position_tests::sufficiency_check_rejects_when_cached_ids_exhausted ... ignored, requires serial MLX execution +test models::recurrent_gemma::tests::block_type_pattern_expands_to_one_entry_per_layer ... ok +test models::recurrent_gemma::tests::conv1d_takes_nlc_input_with_channelwise_groups ... ok +test models::recurrent_gemma::tests::missing_block_types_still_expands_to_the_layer_count ... ok +test models::recurrent_gemma::tests::recurrent_gemma_eos_token_ids_come_from_config_metadata ... ok +test models::recurrent_gemma::tests::recurrent_gemma_model_owned_sequence_state_preserves_greedy_decode_cache ... ok +test models::recurrent_gemma::tests::recurrent_gemma_model_owned_sequence_state_refuses_missing_sequence_id ... ok +test models::registry::tests::every_family_is_runnable_on_rocm ... ok +test models::registry::tests::key_acceptance_families_report_expected_capabilities ... ok +test models::registry::tests::kv_modes_do_not_advertise_runtime_fp16_downgrades ... ok +test models::registry::tests::mla_latent_cache_families_report_fp16_only_kv_modes ... ok +test models::registry::tests::pipeline_parallel_registry_covers_stage_executor_families ... ok +test models::registry::tests::registry_has_one_family_per_model_type_with_unique_ids ... ok +test models::registry::tests::registry_json_round_trips ... ok +test models::registry::tests::standalone_detection_family_reports_detect_only_capabilities ... ok +test models::registry::tests::standalone_registry_extensions_do_not_collide_with_model_registry ... ok +test models::registry::tests::tensor_parallel_registry_set_matches_dispatch_contract ... ok +test models::rope_overrides::tests::a_bare_scale_defaults_to_linear_when_the_model_names_no_scheme ... ok +test models::rope_overrides::tests::a_bare_scale_over_a_banded_scheme_is_refused_rather_than_composed ... ok +test models::rope_overrides::tests::a_bare_scale_over_a_declared_yarn_block_feeds_its_factor ... ok +test models::rope_overrides::tests::a_base_is_left_at_the_checkpoints_value_when_no_base_flag_was_given ... ok +test models::rope_overrides::tests::a_base_only_override_leaves_the_block_alone ... ok +test models::rope_overrides::tests::an_unknown_scheme_names_the_accepted_domain ... ok +test models::rope_overrides::tests::describe_names_every_flag_that_was_set ... ok +test models::rope_overrides::tests::forcing_yarn_over_a_declared_yarn_block_keeps_its_band_keys ... ok +test models::rope_overrides::tests::no_flags_means_no_override ... ok +test models::rope_overrides::tests::non_positive_and_non_finite_scalars_are_refused ... ok +test models::rope_overrides::tests::rope_scale_is_the_reciprocal_of_rope_freq_scale ... ok +test models::rope_overrides::tests::scaling_linear_on_a_checkpoint_with_no_block_is_a_no_op_factor ... ok +test models::rope_overrides::tests::scaling_linear_with_a_scale_sets_the_reciprocal_factor ... ok +test models::rope_overrides::tests::scaling_linear_without_a_scale_keeps_the_checkpoints_factor ... ok +test models::rope_overrides::tests::scaling_none_drops_the_checkpoints_own_block ... ok +test models::rope_overrides::tests::the_two_scale_spellings_may_agree_but_not_disagree ... ok +test models::rope_overrides::tests::yarn_resolves_at_the_edge_since_1472 ... ok +test models::rope_utils::tests::a_block_carrying_both_spellings_parses_instead_of_erroring ... ok +test models::rope_utils::tests::a_block_naming_no_scheme_is_default ... ok +test models::rope_utils::tests::a_larger_factor_moves_more_pairs_out_of_the_high_band ... ok +test models::rope_utils::tests::a_linear_block_with_a_missing_or_unusable_factor_falls_back_to_the_plain_table ... ok +test models::rope_utils::tests::a_llama3_block_with_a_negative_factor_falls_back_to_the_plain_table ... ok +test models::rope_utils::tests::a_llama3_block_with_a_zero_factor_falls_back_to_the_plain_table ... ok +test models::rope_utils::tests::a_llama3_block_with_an_out_of_range_factor_falls_back_to_the_plain_table ... ok +test models::rope_utils::tests::a_llama3_block_with_no_numeric_factor_falls_back_instead_of_doing_nothing ... ok +test models::rope_utils::tests::a_llama3_block_with_the_band_factors_equal_still_builds_a_table ... ok +test models::rope_utils::tests::a_null_type_key_falls_through_to_rope_type ... ok +test models::rope_utils::tests::a_yarn_block_builds_a_half_width_table_with_the_temperature_mscale ... ok +test models::rope_utils::tests::a_yarn_block_missing_its_factor_falls_back_to_the_plain_table ... ok +test models::rope_utils::tests::a_yarn_block_with_deepseek_mscale_keys_uses_the_ratio ... ok +test models::rope_utils::tests::an_unimplemented_scheme_keeps_the_model_loading_on_the_plain_table ... ok +test models::rope_utils::tests::an_unimplemented_scheme_warns_once_per_model_and_scheme ... ok +test models::rope_utils::tests::default_and_absent_blocks_select_the_plain_table ... ok +test models::rope_utils::tests::duplicate_hands_out_an_equal_table ... ok +test models::rope_utils::tests::linear_divides_positions_by_factor ... ok +test models::rope_utils::tests::llama3_builds_a_half_width_float32_table ... ok +test models::rope_utils::tests::llama3_freqs_match_reference_bands ... ok +test models::rope_utils::tests::llama3_leaves_the_high_band_alone_and_scales_the_low_band_by_factor ... ok +test models::rope_utils::tests::rope_scaling_reads_the_rope_type_key ... ok +test models::rope_utils::tests::rope_scaling_still_reads_the_legacy_type_key ... ok +test models::rope_utils::tests::the_defaults_match_upstreams_when_the_block_omits_the_band_factors ... ok +test models::rope_utils::tests::unknown_keys_are_ignored_rather_than_rejected ... ok +test models::rope_utils::tests::yarn_duplicate_hands_out_an_equal_table_and_mscale ... ok +test models::rope_utils::tests::yarn_interpolates_the_low_band_and_extrapolates_the_high_band ... ok +test models::rope_utils::tests::yarn_orig_ctx_falls_back_to_the_training_context_then_4096 ... ok +test models::rwkv7::tests::rwkv7_cache_snapshot_restore_round_trips_state_shapes ... ok +test models::rwkv7::tests::rwkv7_eos_token_ids_come_from_config_metadata ... ok +test models::rwkv7::tests::rwkv7_model_owned_sequence_state_preserves_greedy_decode_cache ... ok +test models::rwkv7::tests::rwkv7_model_owned_sequence_state_refuses_missing_sequence_id ... ok +test models::sanitize::tests::config_has_quantization_metadata_sees_nested_compressed_tensors_config ... ok +test models::sanitize::tests::f16_to_f32_nan ... ok +test models::sanitize::tests::f16_to_f32_negative_one ... ok +test models::sanitize::tests::f16_to_f32_negative_zero ... ok +test models::sanitize::tests::f16_to_f32_one ... ok +test models::sanitize::tests::f16_to_f32_positive_infinity ... ok +test models::sanitize::tests::f16_to_f32_positive_zero ... ok +test models::sanitize::tests::f16_to_f32_subnormal ... ok +test models::sanitize::tests::f16_to_f32_two ... ok +test models::sanitize::tests::f32_to_f8_e4m3_handles_specials_and_rounding ... ok +test models::sanitize::tests::f32_to_f8_e4m3_roundtrips_every_e4m3_value ... ok +test models::sanitize::tests::f8_e4m3_max_value ... ok +test models::sanitize::tests::f8_e4m3_nan ... ok +test models::sanitize::tests::f8_e4m3_negative_one ... ok +test models::sanitize::tests::f8_e4m3_negative_zero ... ok +test models::sanitize::tests::f8_e4m3_one ... ok +test models::sanitize::tests::f8_e4m3_positive_zero ... ok +test models::sanitize::tests::f8_e4m3_subnormal ... ok +test models::sanitize::tests::f8_e4m3_two ... ok +test models::sanitize::tests::f8_e5m2_1_25 ... ok +test models::sanitize::tests::f8_e5m2_nan ... ok +test models::sanitize::tests::f8_e5m2_negative_infinity ... ok +test models::sanitize::tests::f8_e5m2_negative_one ... ok +test models::sanitize::tests::f8_e5m2_negative_zero ... ok +test models::sanitize::tests::f8_e5m2_one ... ok +test models::sanitize::tests::f8_e5m2_positive_infinity ... ok +test models::sanitize::tests::f8_e5m2_positive_zero ... ok +test models::sanitize::tests::f8_e5m2_subnormal ... ok +test models::sanitize::tests::f8_e5m2_two ... ok +test models::sanitize::tests::fp4_e2m1_all_negative_values ... ok +test models::sanitize::tests::fp4_e2m1_all_positive_values ... ok +test models::sanitize::tests::gemma3n_bf16_key_keeps_every_tensor_not_just_the_language_mlp ... ok +test models::sanitize::tests::gemma4_bits_reads_modelopt_num_bits ... ok +test models::sanitize::tests::gemma4_group_size_prefers_text_quantization ... ok +test models::sanitize::tests::gemma4_group_size_reads_modelopt_config_groups ... ok +test models::sanitize::tests::is_f16_fragile_family_covers_model_type_and_softcap_cases ... ok +test models::sanitize::tests::normalize_nvfp4_keys_noop_when_no_nvfp4_keys ... ok +test models::sanitize::tests::normalize_nvfp4_keys_remaps_embed_vision_and_lm_head ... ok +test models::sanitize::tests::normalize_nvfp4_keys_remaps_language_model_prefix ... ok +test models::sanitize::tests::normalize_nvfp4_keys_remaps_vision_tower_and_embed_vision ... ok +test models::sanitize::tests::nvfp4_dense_repack_forced_matches_case_insensitively ... ok +test models::sanitize::tests::nvfp4_direct_transcode_is_exact_and_bounds_dense_drift ... ok +test models::sanitize::tests::nvfp4_layer_not_repacked_fails_only_when_conversion_is_required ... ok +test models::sanitize::tests::nvfp4_native_repack_forced_matches_case_insensitively ... ok +test models::sanitize::tests::nvfp4_repack_strategy_converts_to_affine_on_rocm ... ok +test models::sanitize::tests::nvfp4_repack_strategy_keeps_pre_1806_routes_where_native ... ok +test models::sanitize::tests::nvfp4_repack_strategy_matrix ... ok +test models::sanitize::tests::rocm_route_converts_a_modelopt_triplet_to_affine ... ok +test models::sanitize::tests::rocm_route_fails_the_load_for_an_unconvertible_layer ... ok +test models::sanitize::tests::strip_gemma4_kv_shared_does_not_strip_vision_tower_layers ... ok +test models::sanitize::tests::strip_gemma4_kv_shared_handles_top_level_text_config ... ok +test models::sanitize::tests::strip_gemma4_kv_shared_noop_when_num_kv_shared_layers_is_zero ... ok +test models::sanitize::tests::strip_gemma4_kv_shared_removes_kv_proj_for_shared_layers ... ok +test models::sanitize::tests::strip_gemma4_kv_shared_works_on_quantized_suffixes ... ok +test models::sanitize::tests::threaded_nvfp4_dequant_matches_the_serial_loop_bit_for_bit ... ok +test models::sanitize_tests::load_and_sanitize_weights_converts_nvfp4_to_affine_by_default_where_not_native ... ok +test models::sanitize_tests::load_and_sanitize_weights_dense_repack_env_keeps_non_cuda_affine_rollback ... ok +test models::sanitize_tests::load_and_sanitize_weights_repacks_nvfp4_gemma4_checkpoint ... ok +test models::sanitize_tests::load_and_sanitize_weights_selectively_keeps_gemma4_text_tensors ... ok +test models::sanitize_tests::load_and_sanitize_weights_skips_nvfp4_triplet_with_non_scalar_weight_scale_2 ... ok +test models::sanitize_tests::load_text_weights_invokes_transform_when_supplied ... ok +test models::sanitize_tests::load_text_weights_propagates_transform_error ... ok +test models::sanitize_tests::load_text_weights_with_none_transform_matches_legacy_path ... ok +test models::sanitize_tests::sanitize_config_json_replaces_non_standard_values ... ok +test models::sanitize_tests::sanitize_tied_embeddings_copies_prefixed_language_model_keys ... ok +test models::sanitize_tests::sanitize_tied_embeddings_copies_standard_embed_tokens_when_missing ... ok +test models::sanitize_tests::sanitize_tied_embeddings_respects_explicit_untied_config ... ok +test models::sanitize_tests::selective_loader_materializes_only_retained_names_across_mixed_shards ... ok +test models::sanitize_tests::surgery_integration::active_pipeline_slot_is_consulted_when_transform_arg_is_none ... ok +test models::sanitize_tests::surgery_integration::empty_surgery_pipeline_is_bit_exact_with_none ... ok +test models::sanitize_tests::surgery_integration::empty_yaml_config_pipeline_is_bit_exact_with_none ... ok +test models::sanitize_tests::surgery_integration::explicit_transform_arg_wins_over_active_pipeline_slot ... ok +test models::sanitize_tests::surgery_integration::nonmatching_pattern_surfaces_zero_match_error_through_loader ... ok +test models::sanitize_tests::surgery_integration::prune_op_runs_through_load_text_weights ... ok +test models::sanitize_tests::surgery_integration::prune_op_via_yaml_runs_through_load_text_weights ... ok +test models::sanitize_tests::surgery_integration::replace_yaml_swaps_targeted_tensor_through_load_text_weights ... ok +test models::sanitize_tests::surgery_integration::scale_op_mutates_weights_through_loader_end_to_end ... ok +test models::sanitize_tests::surgery_integration::scale_op_zero_match_surfaces_through_loader ... ok +test models::sanitize_tests::surgery_integration::surgery_error_propagates_through_load_path ... ok +test models::sanitize_tests::surgery_integration::surgery_pipeline_runs_registered_ops_during_load ... ok +test models::seed_oss_tests::seed_oss_config_parses_core_fields ... ok +test models::seed_oss_tests::seed_oss_embeddings_are_untied ... ok +test models::seed_oss_tests::seed_oss_head_dim_is_explicit_not_derived ... ok +test models::seed_oss_tests::seed_oss_optional_flags_default_when_absent ... ok +test models::seed_oss_tests::seed_oss_quantization_is_read_from_config ... ok +test models::seed_oss_tests::seed_oss_rope_scaling_is_default_no_scaling ... ok +test models::seed_oss_tests::seed_oss_split_attention_bias_flags_parse ... ok +test models::siglip_text::siglip_text_tests::embed_rejects_image_inputs ... ok +test models::siglip_text::siglip_text_tests::encode_rejects_more_tokens_than_learned_positions ... ok +test models::siglip_text::siglip_text_tests::every_position_reaches_the_pooled_slot ... ok +test models::siglip_text::siglip_text_tests::pooling_takes_the_last_position_and_not_cls_or_mean ... ok +test models::siglip_text::siglip_text_tests::sanitize_drops_vision_and_logit_keys ... ok +test models::siglip_text::siglip_text_tests::siglip_base_detects_pads_to_64_and_keeps_trailing_eos ... ok +test models::siglip_text::siglip_text_tests::siglip_base_text_tower_passes_the_embedding_gate ... ok +test models::siglip_text::siglip_text_tests::text_config_defaults_match_the_reference_config ... ok +test models::siglip_text::siglip_text_tests::text_config_overrides_are_read_including_projection_and_activation ... ok +test models::siglip_text::siglip_text_tests::trait_surface_reports_fixed_width_padding_and_last_token_pooling ... ok +test models::single_row_batch_parity_tests::llama3_single_row_matches_one_row_batched_bitwise ... ignored, needs a real Llama 3 checkpoint and the GPU +test models::single_row_batch_parity_tests::qwen3_single_row_matches_one_row_batched_bitwise ... ignored, needs a real Qwen3 checkpoint and the GPU +test models::solar_open::tests::gptq_biases_match_the_scales_dtype_in_both_branches ... ok +test models::solar_open::tests::solar_open_skips_per_layer_eval_for_decode_step ... ok +test models::solar_open::tests::test_solar_open_config_parsing ... ok +test models::speculative_exactness::speculative_exactness_tests::a_backend_without_qmv_wide_skips_the_retry ... ok +test models::speculative_exactness::speculative_exactness_tests::a_decline_records_its_reason_and_a_pass_does_not ... ok +test models::speculative_exactness::speculative_exactness_tests::a_diverging_probe_declines_unless_the_override_is_set ... ok +test models::speculative_exactness::speculative_exactness_tests::a_pinned_qmv_wide_skips_the_retry ... ok +test models::speculative_exactness::speculative_exactness_tests::a_probe_that_only_diverges_under_qmv_wide_engages_after_the_retry ... ok +test models::speculative_exactness::speculative_exactness_tests::a_single_differing_byte_is_a_divergence_with_the_first_position ... ok +test models::speculative_exactness::speculative_exactness_tests::an_empty_or_ragged_comparison_is_not_a_pass ... ok +test models::speculative_exactness::speculative_exactness_tests::an_unrunnable_retry_keeps_its_reason_and_restores_wide ... ok +test models::speculative_exactness::speculative_exactness_tests::different_block_widths_are_measured_separately ... ok +test models::speculative_exactness::speculative_exactness_tests::failed_retry_preserves_both_locations_and_restores_the_switch ... ok +test models::speculative_exactness::speculative_exactness_tests::identical_arms_compare_equal ... ok +test models::speculative_exactness::speculative_exactness_tests::localized_divergence_is_preserved_in_decline_reason ... ok +test models::speculative_exactness::speculative_exactness_tests::not_run_is_a_decline ... ok +test models::speculative_exactness::speculative_exactness_tests::reason_strings_name_the_position_and_the_byte_counts ... ok +test models::speculative_exactness::speculative_exactness_tests::skipped_retry_diagnostics_do_not_invent_a_narrow_measurement ... ok +test models::speculative_exactness::speculative_exactness_tests::the_gate_runs_the_probe_once_per_key_and_caches_the_decision ... ok +test models::step3p5::tests::build_layer_caches_uses_fallback_even_odd_pattern_without_layer_types ... ok +test models::step3p5::tests::build_layer_caches_uses_rotating_for_explicit_sliding_layers ... ok +test models::step3p5::tests::flat_config_keeps_step3p5_defaults ... ok +test models::step3p5::tests::moe_layers_enum_absent_uses_flat_all_except_zero_fallback ... ok +test models::step3p5::tests::moe_layers_enum_accepts_comma_separated_string ... ok +test models::step3p5::tests::moe_layers_enum_accepts_json_int_array ... ok +test models::step3p5::tests::nested_text_config_explicit_values_win_over_flips ... ok +test models::step3p5::tests::nested_text_config_flips_defaults_when_keys_absent ... ok +test models::step3p5::tests::nested_text_config_uses_step3p7_moe_layer_fallback ... ok +test models::step3p5::tests::resolve_eos_prefers_top_level_int_then_list_then_text_config ... ok +test models::step3p5::tests::resolve_eos_treats_null_top_level_as_absent_and_uses_text_config ... ok +test models::step3p5::tests::step3p5_switch_glu_rejects_quantization_params_that_would_abort_gather_qmm ... ok +test models::switch_layers::gather_index_tests::broadcast_shape_follows_numpy_rules ... ok +test models::switch_layers::gather_index_tests::expert_scales_path_is_bit_identical_to_the_per_call_gather_form ... ok +test models::switch_layers::gather_index_tests::prepared_indices_match_what_gather_qmm_would_build ... ok +test models::switch_layers::gather_index_tests::sorted_prefill_keeps_right_sorted_on_every_projection ... ok +test models::switch_layers::gather_index_tests::switch_glu_is_bit_identical_to_the_per_call_gather_form ... ok +test models::switch_layers::mxfp_tests::mxfp4_gather_qmm_matches_host_reference ... ok +test models::switch_layers::mxfp_tests::mxfp8_gather_qmm_matches_host_reference ... ok +test models::switch_layers::mxfp_tests::mxfp8_quantized_matmul_matches_host_reference ... ok +test models::switch_layers::mxfp_tests::mxfp_host_decode_matches_mlx_dequantize ... ok +test models::switch_layers::mxfp_tests::mxfp_matmuls_match_host_reference_on_cpu_device ... ok +test models::switch_layers::tests::expert_scales_broadcast_over_multiple_tokens_and_experts ... ok +test models::switch_layers::tests::fused_kernel_declines_a_non_affine_expert_plane ... ok +test models::switch_layers::tests::fused_moe_dff_above_cap_declines_and_at_cap_dispatches ... ok +test models::switch_layers::tests::fused_moe_enabled_defaults_on_and_respects_disable_values ... ok +test models::switch_layers::tests::fused_moe_max_dff_default_is_backend_aware_and_env_overrides ... ok +test models::switch_layers::tests::group_mask_plan_classifies_every_out_of_range_triple ... ok +test models::switch_layers::tests::group_mask_scores_is_the_identity_when_topk_group_equals_n_group ... ok +test models::switch_layers::tests::group_mask_scores_leaves_scores_untouched_when_grouping_is_disabled ... ok +test models::switch_layers::tests::group_mask_scores_leaves_scores_untouched_when_topk_group_exceeds_n_group ... ok +test models::switch_layers::tests::group_mask_scores_leaves_scores_untouched_when_topk_group_is_well_past_n_group ... ok +test models::switch_layers::tests::group_mask_scores_leaves_scores_untouched_when_topk_group_is_zero ... ok +test models::switch_layers::tests::group_mask_scores_returns_instead_of_aborting_when_a_group_holds_one_expert ... ok +test models::switch_layers::tests::group_mask_scores_returns_instead_of_aborting_when_experts_do_not_divide_evenly ... ok +test models::switch_layers::tests::group_mask_scores_returns_instead_of_aborting_when_topk_group_is_far_out_of_range ... ok +test models::switch_layers::tests::group_mask_scores_returns_instead_of_aborting_when_topk_group_is_negative ... ok +test models::switch_layers::tests::group_mask_scores_zeroes_only_the_weakest_groups_in_range ... ok +test models::switch_layers::tests::moe_weighted_sum_preserves_bf16_output_dtype ... ok +test models::switch_layers::tests::moe_weighted_sum_preserves_f16_output_dtype ... ok +test models::switch_layers::tests::stacked_experts_outlive_the_weight_map_they_were_borrowed_from ... ok +test models::switch_layers::tests::switch_glu_loads_overridden_proj_leaf_names ... ok +test models::switch_layers::tests::switch_linear_missing_weight_errors_without_stacked_or_individual ... ok +test models::switch_layers::tests::switch_linear_refuses_a_mode_the_backend_cannot_run ... ok +test models::switch_layers::tests::switch_linear_rejects_a_mode_that_would_abort_gather_qmm ... ok +test models::switch_layers::tests::switch_linear_rejects_an_expert_plane_whose_packing_mlx_would_reject ... ok +test models::switch_layers::tests::switch_linear_rejects_one_bit_with_prefix ... ok +test models::switch_layers::tests::switch_linear_rejects_quantization_params_that_would_abort_gather_qmm ... ok +test models::switch_layers::tests::switch_linear_stacks_individual_quantized_experts ... ok +test models::telechat3::telechat3_tests::a_config_without_rope_scaling_uses_the_plain_rotation ... ok +test models::telechat3::telechat3_tests::a_missing_tensor_is_an_error ... ok +test models::telechat3::telechat3_tests::forward_produces_vocab_sized_logits_and_advances_the_cache ... ok +test models::telechat3::telechat3_tests::from_weights_builds_the_stack_and_threads_yarn_into_every_layer ... ok +test models::telechat3::telechat3_tests::the_published_checkpoint_sets_attention_bias_false ... ok +test models::telechat3::telechat3_tests::the_real_config_parses ... ok +test models::telechat3::telechat3_tests::the_rope_base_comes_from_the_config_not_the_readers_default ... ok +test models::telechat3::telechat3_tests::the_telechat3_yarn_rope_type_actually_builds_a_yarn_table ... ok +test models::telechat3::telechat3_tests::the_vendor_prefix_is_an_alias_and_not_a_different_algorithm ... ok +test models::telechat3::telechat3_tests::yarn_and_plain_rope_produce_different_logits ... ok +test models::vlm_text_only_detection_tests::empty_vision_config_routes_to_text ... ok +test models::vlm_text_only_detection_tests::every_vision_weight_prefix_keeps_the_vlm_route ... ok +test models::vlm_text_only_detection_tests::language_model_only_false_keeps_the_vlm_route ... ok +test models::vlm_text_only_detection_tests::language_model_only_routes_to_text ... ok +test models::vlm_text_only_detection_tests::no_vision_weights_in_index_routes_to_text ... ok +test models::vlm_text_only_detection_tests::null_vision_config_routes_to_text ... ok +test models::vlm_text_only_detection_tests::qwen_vl_families_keep_their_model_type ... ok +test models::vlm_text_only_detection_tests::single_file_checkpoint_header_is_scanned_when_there_is_no_index ... ok +test models::vlm_text_only_detection_tests::unreadable_weights_keep_the_config_decision ... ok +test models::whisper::decoding::tests::first_step_mask_blocks_blank_and_eot ... ok +test models::whisper::decoding::tests::language_mask_keeps_only_language_tokens ... ok +test models::whisper::decoding::tests::suppression_mask_blocks_specials_and_timestamps_but_not_eot ... ok +test models::whisper::tests::dims_missing_required_field_errors ... ok +test models::whisper::tests::dims_parse_huggingface_fields ... ok +test models::whisper::tests::dims_parse_native_fields ... ok +test models::whisper::tests::pad_audio_rounds_up_to_window_multiple ... ok +test models::whisper::tests::padded_audio_tail_sits_at_log_floor_not_zero ... ok +test models::whisper::tests::padded_window_zero_pads_short_tail ... ok +test models::whisper::tokenizer::tests::build_suppress_set_is_sorted_union ... ok +test models::whisper::tokenizer::tests::decode_text_drops_special_and_timestamp_tokens ... ok +test models::whisper::tokenizer::tests::initial_tokens_follow_the_sot_sequence ... ok +test models::whisper::tokenizer::tests::language_table_is_complete_and_ordered ... ok +test models::whisper::tokenizer::tests::resolves_special_tokens ... ok +test models::whisper::tokenizer::tests::suppress_set_includes_task_and_start_tokens ... ok +test models::youtu_vl_lm::tests::config_defaults_match_upstream ... ok +test models::youtu_vl_lm::tests::kv_b_proj_decompose_returns_error_when_biases_missing ... ok +test models::youtu_vl_lm::tests::null_q_lora_rank_parses_and_selects_the_direct_q_projection ... ok +test models::youtu_vl_lm::tests::prefill_and_decode_paths_agree_position_by_position ... ok +test models::youtu_vl_lm::tests::quantized_kv_b_proj_rejects_a_kv_lora_rank_no_packing_can_describe ... ok +test models::youtu_vl_lm::tests::rope_interleave_and_rope_traditional_are_the_same_switch ... ok +test models::youtu_vl_lm::tests::rope_interleave_reaches_the_rope_call ... ok +test models::youtu_vl_lm::tests::rope_scaling_that_interpolates_is_refused ... ok +test models::youtu_vl_lm::tests::sanitize_decomposes_kv_b_proj_per_head ... ok +test models::youtu_vl_lm::tests::text_only_config_with_identity_yarn_parses ... ok +test models::youtu_vl_lm::tests::tied_embeddings_produce_logits_without_an_lm_head ... ok +test multimodal::deepseek_vl2_prompt::tests::expands_single_placeholder_in_place ... ok +test multimodal::deepseek_vl2_prompt::tests::mismatched_placeholder_count_returns_none ... ok +test multimodal::deepseek_vl2_prompt::tests::splices_run_after_bos_when_no_placeholder ... ok +test multimodal::deepseekocr_prompt::tests::unlimited_empty_inputs_return_none ... ok +test multimodal::deepseekocr_prompt::tests::unlimited_no_placeholder_falls_back_to_splice ... ok +test multimodal::deepseekocr_prompt::tests::unlimited_single_image_expands_in_place ... ok +test multimodal::deepseekocr_prompt::tests::unlimited_single_placeholder_covers_all_pages ... ok +test multimodal::falcon_ocr_prompt::tests::a_mismatched_placeholder_count_is_left_untouched ... ok +test multimodal::falcon_ocr_prompt::tests::a_plain_prompt_gets_the_block_prepended_and_the_task_token_appended ... ok +test multimodal::falcon_ocr_prompt::tests::a_prompt_that_already_ends_with_the_task_token_is_not_extended ... ok +test multimodal::falcon_ocr_prompt::tests::a_tokenizer_without_the_task_token_still_expands_the_image ... ok +test multimodal::falcon_ocr_prompt::tests::an_existing_placeholder_is_expanded_in_place ... ok +test multimodal::falcon_ocr_prompt::tests::no_images_means_no_edit ... ok +test multimodal::falcon_ocr_prompt::tests::two_images_get_two_blocks_sized_independently ... ok +test multimodal::fastvlm_prompt::tests::count_mismatch_errors ... ok +test multimodal::fastvlm_prompt::tests::inserts_placeholder_after_user_tag ... ok +test multimodal::fastvlm_prompt::tests::splices_one_sentinel_per_image ... ok +test multimodal::gemma4_vl::tests::align_per_row_combines_slice_and_pad_for_inputs_embeds ... ignored, requires serial MLX execution +test multimodal::gemma4_vl::tests::forward_batched_with_seq_ids_dispatch_no_seq_ids_falls_through_to_batched ... ignored, requires serial MLX execution +test multimodal::gemma4_vl::tests::forward_batched_with_seq_ids_dispatch_routes_each_row_to_its_seq_id ... ignored, requires serial MLX execution +test multimodal::gemma4_vl::tests::forward_batched_with_seq_ids_dispatch_single_row_uses_forward_with_sequence_id ... ignored, requires serial MLX execution +test multimodal::gemma4_vl::tests::pad_sequence_aligned_is_noop_when_target_already_met ... ignored, requires serial MLX execution +test multimodal::gemma4_vl::tests::pad_sequence_aligned_left_pads_2d_attention_mask ... ignored, requires serial MLX execution +test multimodal::gemma4_vl::tests::pad_sequence_aligned_left_pads_4d_per_layer_inputs ... ignored, requires serial MLX execution +test multimodal::gemma4_vl::tests::pad_sequence_aligned_right_pads_2d_attention_mask ... ignored, requires serial MLX execution +test multimodal::gemma4_vl::tests::pad_sequence_aligned_right_pads_3d_inputs_embeds ... ignored, requires serial MLX execution +test multimodal::gemma4_vl::tests::prompt_kwarg_row_extracts_each_row_of_a_full_batch ... ignored, requires serial MLX execution +test multimodal::gemma4_vl::tests::prompt_kwarg_row_handles_4d_per_layer_inputs_shape ... ignored, requires serial MLX execution +test multimodal::gemma4_vl::tests::prompt_kwarg_row_returns_none_for_empty_leading_axis ... ignored, requires serial MLX execution +test multimodal::gemma4_vl::tests::prompt_kwarg_row_returns_single_row_for_broadcast_shape ... ignored, requires serial MLX execution +test multimodal::got_ocr_prompt::tests::block_has_256_imgpad_tokens ... ok +test multimodal::got_ocr_prompt::tests::extra_image_markers_are_dropped ... ok +test multimodal::got_ocr_prompt::tests::image_placeholder_is_replaced_in_place ... ok +test multimodal::got_ocr_prompt::tests::image_placeholder_wins_over_the_user_turn_splice ... ok +test multimodal::got_ocr_prompt::tests::multiple_images_are_rejected ... ok +test multimodal::got_ocr_prompt::tests::plain_instruction_is_wrapped_with_system_and_image_block ... ok +test multimodal::got_ocr_prompt::tests::pre_templated_instruction_passes_through ... ok +test multimodal::got_ocr_prompt::tests::prepare_tokens_encodes_without_special_prefix ... ok +test multimodal::got_ocr_prompt::tests::separator_only_framing_prepends_the_block ... ok +test multimodal::got_ocr_prompt::tests::system_turn_keeps_the_literal_indentation_and_has_no_trailing_newline ... ok +test multimodal::got_ocr_prompt::tests::templated_and_bare_paths_agree_byte_for_byte ... ok +test multimodal::got_ocr_prompt::tests::text_only_request_emits_no_block ... ok +test multimodal::granite_vision_prompt::tests::already_expanded_is_left_alone ... ok +test multimodal::granite_vision_prompt::tests::expands_single_placeholder_to_feature_count ... ok +test multimodal::granite_vision_prompt::tests::missing_placeholder_is_reported_as_spliced ... ok +test multimodal::granite_vision_prompt_parity_tests::one_image_prompts_are_token_exact_against_mlx_vlm ... ok +test multimodal::host_preprocessor::tests::a_checkpoint_without_a_derived_formula_has_no_floor ... ok +test multimodal::host_preprocessor::tests::a_graph_that_fits_the_worst_case_image_starts_without_pinning ... ok +test multimodal::host_preprocessor::tests::a_missing_preprocessor_config_reports_no_floor_instead_of_guessing ... ok +test multimodal::host_preprocessor::tests::a_real_checkpoint_never_exceeds_its_derived_floor ... ignored, requires a real LLaVA or Qwen2-VL checkpoint in MLXCEL_FLOOR_MODEL +test multimodal::host_preprocessor::tests::an_operator_pinned_capacity_is_never_second_guessed ... ok +test multimodal::host_preprocessor::tests::fake_preprocessor_handles_zero_one_and_multiple_placeholders ... ok +test multimodal::host_preprocessor::tests::fake_preprocessor_rejects_expanded_sequence_over_capacity ... ok +test multimodal::host_preprocessor::tests::fake_preprocessor_rejects_media_count_mismatch ... ok +test multimodal::host_preprocessor::tests::iree_vision_contract_policy_is_explicit_and_strict ... ok +test multimodal::host_preprocessor::tests::llava_export_rejects_hidden_size_mismatch ... ok +test multimodal::host_preprocessor::tests::llava_image_floor_matches_the_loader_expression ... ok +test multimodal::host_preprocessor::tests::mlx_export_supports_f16_bf16_and_f32_with_exact_byte_counts ... ok +test multimodal::host_preprocessor::tests::molmo2_image_floor_is_the_tallest_tiling_not_the_square_one ... ok +test multimodal::host_preprocessor::tests::owned_llava_export_matches_existing_mlx_merge_fixture ... ok +test multimodal::host_preprocessor::tests::processor_shape_validation_rejects_layout_and_size_drift ... ok +test multimodal::host_preprocessor::tests::qwen2_vl_export_builds_exact_mrope_positions_and_delta ... ok +test multimodal::host_preprocessor::tests::qwen2_vl_export_rejects_video_and_cross_image_run_drift ... ok +test multimodal::host_preprocessor::tests::qwen2_vl_image_floor_bounds_every_admissible_image ... ok +test multimodal::host_preprocessor::tests::the_capacity_guard_covers_the_new_families_at_the_boundary ... ok +test multimodal::host_preprocessor::tests::the_default_capacity_is_rejected_with_the_derived_requirement ... ok +test multimodal::host_preprocessor::tests::the_default_device_is_restored_after_the_export_tests ... ok +test multimodal::host_preprocessor::tests::the_new_families_report_no_floor_for_an_unreadable_config ... ok +test multimodal::host_preprocessor::tests::xla_loader_fails_startup_for_llava_missing_required_artifacts ... ok +test multimodal::host_preprocessor::tests::xla_loader_keeps_text_and_unqualified_vlm_image_capability_false ... ok +test multimodal::host_preprocessor::tests::xla_loader_rejects_qwen2_vl_without_the_iree_feature ... ok +test multimodal::inkling_audio::tests::compacts_only_valid_rows_in_clip_order ... ok +test multimodal::inkling_audio::tests::rejects_wrong_family_and_unresampled_clips ... ok +test multimodal::internvl_prompt::tests::expands_existing_placeholder_in_place ... ok +test multimodal::internvl_prompt::tests::per_image_tile_counts_drive_block_sizes ... ok +test multimodal::internvl_prompt::tests::returns_none_for_empty_inputs ... ok +test multimodal::internvl_prompt::tests::splices_single_image_block_after_first_token ... ok +test multimodal::kimi_k3_prompt::tests::media_ids_come_from_added_tokens_decoder ... ok +test multimodal::kimi_k3_prompt::tests::splices_one_block_per_image_in_front_of_a_raw_prompt ... ok +test multimodal::kimi_k3_prompt::tests::verifies_prerendered_runs_and_rejects_a_mismatch ... ok +test multimodal::kimi_vl_prompt::tests::expands_existing_placeholder_in_place ... ok +test multimodal::kimi_vl_prompt::tests::mixed_image_and_video_expand_in_media_order ... ok +test multimodal::kimi_vl_prompt::tests::per_image_grid_drives_run_sizes ... ok +test multimodal::kimi_vl_prompt::tests::returns_none_for_empty_inputs ... ok +test multimodal::kimi_vl_prompt::tests::splices_after_first_token_when_absent ... ok +test multimodal::kimi_vl_prompt::tests::video_grid_expands_independent_of_t ... ok +test multimodal::lfm2_vl_prompt::tests::expands_placeholder_with_framing ... ok +test multimodal::lfm2_vl_prompt::tests::multi_image_placeholder_expansion_preserves_per_image_layouts ... ok +test multimodal::lfm2_vl_prompt::tests::no_framing_when_disabled ... ok +test multimodal::lfm2_vl_prompt::tests::per_image_counts_and_odd_grid_ceil ... ok +test multimodal::lfm2_vl_prompt::tests::prompt_emits_row_col_markers ... ok +test multimodal::lfm2_vl_prompt::tests::prompt_emits_thumbnail_after_tiles ... ok +test multimodal::lfm2_vl_prompt::tests::rejects_malformed_layout_before_merge ... ok +test multimodal::lfm2_vl_prompt::tests::rejects_placeholder_image_count_mismatch ... ok +test multimodal::llmjp_vl_prompt::tests::a_raw_prompt_without_a_user_turn_gets_the_block_prepended ... ok +test multimodal::llmjp_vl_prompt::tests::a_tokenizer_that_disagrees_with_the_prompt_degrades_to_prepending ... ok +test multimodal::llmjp_vl_prompt::tests::an_existing_placeholder_is_expanded_in_place ... ok +test multimodal::llmjp_vl_prompt::tests::nothing_to_do_returns_none ... ok +test multimodal::llmjp_vl_prompt::tests::per_image_tile_counts_size_each_block ... ok +test multimodal::llmjp_vl_prompt::tests::text_token_count_excludes_the_placeholders ... ok +test multimodal::llmjp_vl_prompt::tests::the_block_lands_inside_the_user_turn_not_the_system_turn ... ok +test multimodal::llmjp_vl_prompt_parity_tests::one_image_prompts_are_token_exact_against_the_reference_processor ... ok +test multimodal::locateanything_prompt::tests::a_huge_patch_grid_does_not_overflow_the_patch_product ... ok +test multimodal::locateanything_prompt::tests::a_marker_like_string_that_is_not_a_marker_is_left_alone ... ok +test multimodal::locateanything_prompt::tests::a_merge_kernel_whose_product_overflows_i32_does_not_divide_by_zero ... ok +test multimodal::locateanything_prompt::tests::context_token_run_length_equals_the_feature_row_count ... ok +test multimodal::locateanything_prompt::tests::expands_an_existing_placeholder_in_place ... ok +test multimodal::locateanything_prompt::tests::merged_token_count_matches_the_processor_formula ... ok +test multimodal::locateanything_prompt::tests::per_image_counts_drive_independent_block_sizes ... ok +test multimodal::locateanything_prompt::tests::refuses_a_marker_count_that_disagrees_with_the_image_count ... ok +test multimodal::locateanything_prompt::tests::reports_no_marker_so_the_caller_can_splice_tokens ... ok +test multimodal::locateanything_prompt::tests::returns_none_for_empty_inputs ... ok +test multimodal::locateanything_prompt::tests::rewrites_multiple_markers_in_render_order ... ok +test multimodal::locateanything_prompt::tests::rewrites_the_chat_template_image_markers ... ok +test multimodal::locateanything_prompt::tests::splices_a_framed_block_after_the_first_token ... ok +test multimodal::minicpmo_prompt::tests::compute_minicpmo_image_bounds_finds_placeholder_spans ... ok +test multimodal::minicpmo_prompt::tests::ensure_minicpmo_placeholders_inserts_after_user_tag_when_missing ... ok +test multimodal::minicpmo_prompt::tests::ensure_minicpmo_placeholders_replaces_existing_markers ... ok +test multimodal::minicpmo_prompt::tests::ensure_minicpmo_placeholders_replaces_markers_with_per_image_sizes ... ok +test multimodal::minicpmo_prompt::tests::minicpmo_placeholder_has_wrapping_tokens_and_repeated_unk ... ok +test multimodal::minicpmo_prompt::tests::prepare_minicpmo_prompt_tokens_encodes_prompt_and_bounds ... ok +test multimodal::minicpmo_prompt::tests::prepare_minicpmo_prompt_tokens_uses_per_image_feature_sizes ... ok +test multimodal::moondream2_prompt::tests::detection_defaults_to_legacy_without_discriminating_files ... ok +test multimodal::moondream2_prompt::tests::detects_legacy_era_from_moondream_py_without_starmie ... ok +test multimodal::moondream2_prompt::tests::detects_starmie_era_from_shipped_moondream_py ... ok +test multimodal::moondream2_prompt::tests::detects_starmie_era_from_tokenizer_json_when_moondream_py_is_absent ... ok +test multimodal::moondream2_prompt::tests::legacy_bos_id_is_the_gpt2_endoftext_token ... ok +test multimodal::moondream2_prompt::tests::legacy_empty_image_prompt_falls_back_to_caption ... ok +test multimodal::moondream2_prompt::tests::legacy_image_prompt_omits_bos_for_wrapper_prefix ... ok +test multimodal::moondream2_prompt::tests::legacy_text_only_prompt_leads_with_bos_and_frames_question ... ok +test multimodal::moondream2_prompt::tests::multiple_images_are_rejected_in_both_styles ... ok +test multimodal::moondream2_prompt::tests::starmie_empty_image_prompt_uses_caption_template ... ok +test multimodal::moondream2_prompt::tests::starmie_image_query_wraps_question_in_template_ids ... ok +test multimodal::moondream2_prompt::tests::starmie_template_ids_match_the_shipped_reference_and_moondream3 ... ok +test multimodal::moondream2_prompt::tests::starmie_text_only_leads_with_bos_zero ... ok +test multimodal::moondream2_prompt::tests::text_only_empty_prompt_is_rejected_in_both_styles ... ok +test multimodal::moondream3_prompt_tests::prepare_moondream3_prompt_tokens_rejects_non_single_image_requests ... ok +test multimodal::moondream3_prompt_tests::prepare_moondream3_prompt_tokens_uses_caption_template_for_empty_prompt ... ok +test multimodal::moondream3_prompt_tests::prepare_moondream3_prompt_tokens_wraps_query_prompt_without_special_tokens ... ok +test multimodal::muse_glimmer_prompt::tests::expands_each_image_marker_in_order ... ok +test multimodal::muse_glimmer_prompt::tests::expands_pinned_template_patch_markers ... ok +test multimodal::muse_glimmer_prompt::tests::placeholder_arithmetic_uses_merged_grid_tokens ... ok +test multimodal::muse_glimmer_prompt::tests::rejects_mixed_image_marker_spellings ... ok +test multimodal::muse_glimmer_prompt::tests::rejects_placeholder_cardinality_mismatch ... ok +test multimodal::muse_glimmer_runtime::tests::muse_glimmer_differing_length_requests_do_not_share_scatter_state ... ok +test multimodal::muse_glimmer_runtime::tests::muse_glimmer_one_image_scatter_matches_patch_order ... ok +test multimodal::muse_glimmer_runtime::tests::muse_glimmer_scatter_rejects_feature_row_mismatch ... ok +test multimodal::muse_glimmer_runtime::tests::muse_glimmer_scatter_rejects_non_divisible_grid ... ok +test multimodal::muse_glimmer_runtime::tests::muse_glimmer_scatter_rejects_prompt_patch_count_mismatch ... ok +test multimodal::muse_glimmer_runtime::tests::muse_glimmer_two_image_scatter_preserves_image_order ... ok +test multimodal::phi3v_prompt::tests::collect_phi3v_image_tags_sorts_by_position ... ok +test multimodal::phi3v_prompt::tests::ensure_phi3v_image_tags_inserts_after_user_marker ... ok +test multimodal::phi3v_prompt::tests::prepare_phi3v_prompt_tokens_interleaves_negative_image_ids ... ok +test multimodal::phi4_siglip_prompt::tests::ensure_phi4_siglip_image_tokens_inserts_after_user_tag ... ok +test multimodal::phi4_siglip_prompt::tests::ensure_phi4_siglip_image_tokens_prefixes_missing_placeholders ... ok +test multimodal::phi4_siglip_prompt::tests::prepare_phi4_siglip_prompt_tokens_inserts_negative_placeholder_ids ... ok +test multimodal::phi4_siglip_prompt::tests::prepare_phi4_siglip_prompt_tokens_rejects_placeholder_image_mismatch ... ok +test multimodal::phi4mm_prompt::tests::adjacent_audio_tags_expand_as_distinct_clip_runs ... ok +test multimodal::phi4mm_prompt::tests::expands_mixed_placeholders_in_prompt_order_and_rejects_drift ... ok +test multimodal::phi4mm_prompt::tests::normalizes_mixed_numbered_tags_in_prompt_order ... ok +test multimodal::phi4mm_prompt::tests::rejects_audio_tag_without_audio_payload ... ok +test multimodal::phi4mm_prompt::tests::rejects_duplicate_out_of_order_missing_and_extra_audio_tags ... ok +test multimodal::phi4mm_prompt::tests::rejects_unnumbered_or_partially_malformed_audio_tags ... ok +test multimodal::phi4mm_prompt::tests::synthesized_image_sentinel_is_directly_followed_by_prompt_text ... ok +test multimodal::phi4mm_prompt::tests::synthesizes_one_ordered_tag_per_audio_clip ... ok +test multimodal::pixtral_prompt::tests::empty_inputs_return_none ... ok +test multimodal::pixtral_prompt::tests::feature_count_matches_across_aspect_ratios ... ok +test multimodal::pixtral_prompt::tests::multiple_images_each_get_own_grid ... ok +test multimodal::pixtral_prompt::tests::no_placeholder_splices_after_bos ... ok +test multimodal::pixtral_prompt::tests::placeholder_count_mismatch_returns_none ... ok +test multimodal::pixtral_prompt::tests::single_placeholder_expands_in_place ... ok +test multimodal::pixtral_prompt::tests::single_row_has_no_break ... ok +test multimodal::pixtral_prompt::tests::three_by_five_grid_layout_is_exact ... ok +test multimodal::qwen_vl::tests::forward_batched_with_seq_ids_dispatch_no_seq_ids_falls_through_to_batched ... ignored, requires serial MLX execution +test multimodal::qwen_vl::tests::forward_batched_with_seq_ids_dispatch_routes_each_row_to_its_seq_id ... ignored, requires serial MLX execution +test multimodal::qwen_vl::tests::forward_batched_with_seq_ids_dispatch_single_row_uses_forward_with_sequence_id ... ignored, requires serial MLX execution +test multimodal::qwen_vl::tests::insert_qwen_vl_image_tokens_expands_one_placeholder_per_image_multi ... ok +test multimodal::qwen_vl::tests::insert_qwen_vl_image_tokens_expands_single_placeholder_per_image ... ok +test multimodal::qwen_vl::tests::insert_qwen_vl_image_tokens_inserts_blocks_after_bos ... ok +test multimodal::qwen_vl::tests::insert_qwen_vl_image_tokens_noop_when_already_expanded ... ok +test multimodal::qwen_vl::tests::insert_qwen_vl_image_tokens_supports_multiple_images ... ok +test multimodal::qwen_vl::tests::insert_qwen_vl_media_tokens_expands_video_placeholder ... ok +test multimodal::qwen_vl::tests::insert_qwen_vl_media_tokens_preserves_mixed_prompt_order ... ok +test multimodal::qwen_vl::tests::insert_qwen_vl_media_tokens_rejects_adjacent_cross_kind_runs ... ok +test multimodal::qwen_vl::tests::insert_qwen_vl_media_tokens_rejects_wrong_expanded_cardinality ... ok +test multimodal::qwen_vl::tests::qwen_vl_mrope_positions_keep_video_temporal_axis ... ok +test multimodal::smolvlm_prompt::tests::idefics2_keeps_fake_only_single_tile_framing ... ok +test multimodal::smolvlm_prompt::tests::idefics2_mismatched_placeholder_count_returns_none ... ok +test multimodal::smolvlm_prompt::tests::image_token_count_equals_tiles_times_n ... ok +test multimodal::smolvlm_prompt::tests::returns_none_for_empty_inputs ... ok +test multimodal::smolvlm_prompt::tests::single_layout_keeps_global_block ... ok +test multimodal::smolvlm_prompt::tests::smolvlm_mismatched_placeholder_count_returns_none ... ok +test multimodal::smolvlm_prompt::tests::splices_block_after_first_token_when_no_placeholder ... ok +test multimodal::smolvlm_prompt::tests::split_layout_emits_row_col_markers_and_newlines ... ok +test multimodal::step3p7_prompt::tests::already_expanded_prompt_is_left_untouched ... ok +test multimodal::step3p7_prompt::tests::unwindowed_image_expands_to_base_block_only ... ok +test multimodal::step3p7_prompt::tests::windowed_image_places_newlines_at_row_ends_except_last ... ok +test multimodal::video::tests::bench_single_pass_768_frames ... ignored, wall-clock benchmark, not a gate; run by hand with --ignored --nocapture +test multimodal::video::tests::extract_frames_preserves_channel_order ... ignored, needs ffmpeg 5.0+ on PATH; run `make verify-test-video` +test multimodal::video::tests::extract_frames_preserves_color_increment_per_frame ... ignored, needs ffmpeg 5.0+ on PATH; run `make verify-test-video` +test multimodal::video::tests::extract_frames_preserves_moving_square_position ... ignored, needs ffmpeg 5.0+ on PATH; run `make verify-test-video` +test multimodal::video::tests::find_subsequence_handles_empty_needle ... ok +test multimodal::video::tests::find_subsequence_locates_needle ... ok +test multimodal::video::tests::find_subsequence_returns_none_when_absent ... ok +test multimodal::video::tests::frame_extraction_args_carry_the_png_pipe_contract ... ok +test multimodal::video::tests::frame_extraction_uses_fps_mode_not_the_removed_vsync ... ok +test multimodal::video::tests::frames_to_png_round_trips_every_frame_in_order ... ok +test multimodal::video::tests::inkling_decode_budget_caps_pixel_bytes_before_decode ... ok +test multimodal::video::tests::inkling_pair_budget_is_request_wide_but_clip_local ... ok +test multimodal::video::tests::inkling_timestamps_use_actual_source_indices_after_sampling_cap ... ok +test multimodal::video::tests::is_video_file_recognises_common_extensions ... ok +test multimodal::video::tests::is_video_file_rejects_images_and_other_files ... ok +test multimodal::video::tests::load_video_missing_file_errors ... ok +test multimodal::video::tests::load_video_rejects_overlong_duration ... ignored, needs ffmpeg 5.0+ on PATH; run `make verify-test-video` +test multimodal::video::tests::load_video_rejects_oversized_resolution ... ignored, needs ffmpeg 5.0+ on PATH; run `make verify-test-video` +test multimodal::video::tests::load_video_single_pass_produces_correct_frame_count ... ignored, needs ffmpeg 5.0+ on PATH; run `make verify-test-video` +test multimodal::video::tests::load_video_source_fd_variant_decodes_via_dev_fd_n ... ignored, needs ffmpeg 5.0+ on PATH; run `make verify-test-video` +test multimodal::video::tests::load_video_source_fd_variant_matches_path_variant_frame_count ... ignored, needs ffmpeg 5.0+ on PATH; run `make verify-test-video` +test multimodal::video::tests::load_video_without_ffmpeg_returns_clear_error ... ok +test multimodal::video::tests::pair_adjacent_frames_spacing_and_adjacency ... ok +test multimodal::video::tests::private_temp_dir_keeps_files_inside_and_refuses_overwrites ... ok +test multimodal::video::tests::private_temp_dir_refuses_a_prefix_that_is_not_a_plain_name ... ok +test multimodal::video::tests::probe_video_both_dimensions_missing_saturates_not_overflows ... ok +test multimodal::video::tests::probe_video_missing_duration_trips_duration_cap ... ok +test multimodal::video::tests::probe_video_missing_height_trips_resolution_cap ... ok +test multimodal::video::tests::probe_video_missing_width_trips_resolution_cap ... ok +test multimodal::video::tests::smart_nframes_clamps_to_max_frames ... ok +test multimodal::video::tests::smart_nframes_clamps_to_min_frames ... ok +test multimodal::video::tests::smart_nframes_clamps_to_total_frames ... ok +test multimodal::video::tests::smart_nframes_explicit_nframes_out_of_range_errors ... ok +test multimodal::video::tests::smart_nframes_explicit_nframes_rounds_to_factor ... ok +test multimodal::video::tests::smart_nframes_handles_zero_video_fps_gracefully ... ok +test multimodal::video::tests::smart_nframes_invalid_target_fps_errors ... ok +test multimodal::video::tests::smart_nframes_policy_rejects_instead_of_clamping_when_requested ... ok +test multimodal::video::tests::smart_nframes_policy_uses_caller_frame_factor_for_minimum ... ok +test multimodal::video::tests::smart_nframes_total_below_factor_errors ... ok +test multimodal::video::tests::smart_nframes_uniform_default_fps_two ... ok +test multimodal::video::tests::split_png_stream_rejects_oversized_frame ... ok +test multimodal::video::tests::subsample_evenly_identity_when_under_cap ... ok +test multimodal::video::tests::subsample_evenly_indices_are_strictly_increasing ... ok +test multimodal::video::tests::subsample_evenly_indices_match_formula ... ok +test multimodal::video::tests::subsample_evenly_keeps_first_and_last ... ok +test multimodal::video::tests::temp_file_drop_on_panic_cleanup ... ok +test multimodal::video::tests::temp_file_drop_removes_file ... ok +test multimodal::video::tests::temp_file_drop_survives_nonexistent_file ... ok +test multimodal::video::tests::timestamped_pair_messages_layout ... ok +test multimodal::video::tests::video_limits_from_raw_parses_overrides_and_falls_back ... ok +test multimodal::video::tests::video_source_fd_dev_fd_n_resolves_to_owned_file_description ... ok +test multimodal::vlm_prompt::tests::apply_image_token_blocks_expands_existing_tokens_with_boi_eoi ... ok +test multimodal::vlm_prompt::tests::apply_image_token_blocks_expands_with_block_prefix_and_suffix ... ok +test multimodal::vlm_prompt::tests::apply_image_token_blocks_inserts_blocks_after_bos ... ok +test multimodal::vlm_prompt::tests::apply_image_token_blocks_is_noop_without_prompt_or_images ... ok +test multimodal::vlm_prompt::tests::apply_image_token_blocks_paligemma_format ... ok +test multimodal::vlm_prompt::tests::apply_image_token_blocks_rejects_insert_capacity_overflow ... ok +test multimodal::vlm_prompt::tests::apply_image_token_blocks_rejects_media_cardinality_mismatch ... ok +test multimodal::vlm_prompt::tests::inkling_accepts_exactly_preexpanded_prompt_and_rejects_ambiguous_count ... ok +test multimodal::vlm_prompt::tests::inkling_expands_one_marker_per_image_to_tile_counts ... ok +test multimodal::vlm_prompt::tests::inkling_insertion_synthesizes_wrappers_at_validated_boundary ... ok +test multimodal::vlm_prompt::tests::inkling_inserts_plain_prompt_tokens_after_bos ... ok +test multimodal::vlm_prompt::tests::inkling_placeholder_expansion_rejects_cardinality_and_zero_frames ... ok +test multimodal::vlm_prompt::tests::inkling_placeholder_expansion_uses_valid_frames ... ok +test multimodal::vlm_runtime::tests::a_prompt_that_only_looks_templated_still_gets_the_generation_marker ... ok +test multimodal::vlm_runtime::tests::a_surplus_marker_with_no_image_behind_it_is_spliced_out ... ok +test multimodal::vlm_runtime::tests::a_system_led_conversation_is_preserved_without_a_second_generation_marker ... ok +test multimodal::vlm_runtime::tests::a_template_rendered_prompt_splits_exactly_where_the_marker_sits ... ok +test multimodal::vlm_runtime::tests::always_start_with_space_controls_only_the_leading_space ... ok +test multimodal::vlm_runtime::tests::an_already_templated_prompt_is_passed_through ... ok +test multimodal::vlm_runtime::tests::an_inline_image_placeholder_becomes_the_split_point ... ok +test multimodal::vlm_runtime::tests::expand_gemma4_unified_video_tokens_errors_on_count_mismatch ... ok +test multimodal::vlm_runtime::tests::expand_gemma4_unified_video_tokens_no_op_when_videos_empty ... ok +test multimodal::vlm_runtime::tests::expand_gemma4_unified_video_tokens_replaces_placeholder ... ok +test multimodal::vlm_runtime::tests::expand_gemma4_unified_video_tokens_splices_after_bos_when_no_placeholder ... ok +test multimodal::vlm_runtime::tests::expand_gemma4_video_tokens_errors_on_count_mismatch ... ok +test multimodal::vlm_runtime::tests::expand_gemma4_video_tokens_handles_multiple_videos ... ok +test multimodal::vlm_runtime::tests::expand_gemma4_video_tokens_inserts_after_bos_when_no_placeholder ... ok +test multimodal::vlm_runtime::tests::expand_gemma4_video_tokens_no_op_when_videos_empty ... ok +test multimodal::vlm_runtime::tests::expand_gemma4_video_tokens_replaces_explicit_placeholder ... ok +test multimodal::vlm_runtime::tests::gemma3n_audio_expands_multiple_placeholders_in_order ... ok +test multimodal::vlm_runtime::tests::gemma3n_audio_inserts_all_clips_inside_user_turn ... ok +test multimodal::vlm_runtime::tests::gemma3n_audio_rejects_placeholder_clip_mismatch ... ok +test multimodal::vlm_runtime::tests::gemma3n_mixed_media_preserves_image_then_audio_order ... ok +test multimodal::vlm_runtime::tests::image_block_summary_preserves_stats_shape ... ok +test multimodal::vlm_runtime::tests::inkling_audio_expands_template_placeholders_without_reordering_parts ... ok +test multimodal::vlm_runtime::tests::inkling_audio_wrappers_stay_in_current_user_turn_with_history ... ok +test multimodal::vlm_runtime::tests::inkling_ordered_audio_never_synthesizes_a_missing_placeholder ... ok +test multimodal::vlm_runtime::tests::inkling_plain_cli_video_prompt_orders_stills_timestamps_then_question ... ok +test multimodal::vlm_runtime::tests::inkling_server_video_parts_stay_inside_current_user_turn_with_history ... ok +test multimodal::vlm_runtime::tests::inkling_video_prompt_rejects_untrusted_placeholder_cardinality ... ok +test multimodal::vlm_runtime::tests::molmo_v1_image_input_idx_shifts_only_valid_positions_for_bos ... ok +test multimodal::vlm_runtime::tests::molmo_v1_prompt_does_not_double_wrap_chat_template_output ... ok +test multimodal::vlm_runtime::tests::molmo_v1_prompt_matches_model_processor_role_format ... ok +test multimodal::vlm_runtime::tests::molmo_v1_prompt_strips_image_placeholder ... ok +test multimodal::vlm_runtime::tests::nemotron_server_audio_emits_framing_tokens_when_nonzero ... ok +test multimodal::vlm_runtime::tests::nemotron_server_audio_falls_back_before_last_token_without_end_of_turn ... ok +test multimodal::vlm_runtime::tests::nemotron_server_audio_inserts_inside_last_user_turn ... ok +test multimodal::vlm_runtime::tests::nemotron_server_audio_targets_the_last_user_turn_in_multi_turn ... ok +test multimodal::vlm_runtime::tests::nemotron_server_audio_wraps_rendered_placeholder_in_place ... ok +test multimodal::vlm_runtime::tests::prepared_embedding_refs_rejects_null_attention_masks ... ok +test multimodal::vlm_runtime::tests::prepared_embedding_refs_requires_input_embeddings ... ok +test multimodal::vlm_runtime::tests::qwen_media_order_from_prompt_preserves_rendered_mixed_order ... ok +test multimodal::vlm_runtime::tests::qwen_media_order_from_prompt_rejects_missing_video_placeholder ... ok +test multimodal::vlm_runtime::tests::server_audio_falls_back_before_last_token_without_end_of_turn ... ok +test multimodal::vlm_runtime::tests::server_audio_falls_back_when_end_of_turn_absent_from_prompt ... ok +test multimodal::vlm_runtime::tests::server_audio_inserts_inside_last_user_turn ... ok +test multimodal::vlm_runtime::tests::server_audio_targets_the_last_user_turn_in_multi_turn ... ok +test multimodal::vlm_runtime::tests::server_audio_wraps_rendered_placeholder_in_place ... ok +test multimodal::vlm_runtime::tests::server_video_and_audio_placeholders_expand_independently ... ok +test multimodal::vlm_runtime::tests::server_video_expansion_does_not_disturb_an_already_placed_audio_run ... ok +test multimodal::vlm_runtime::tests::server_video_then_audio_expansion_keeps_both_runs_inside_the_user_turn ... ok +test multimodal::vlm_runtime::tests::should_prepare_vlm_embeddings_accepts_vlm_image_requests ... ok +test multimodal::vlm_runtime::tests::should_prepare_vlm_embeddings_rejects_non_vlm_image_requests ... ok +test multimodal::vlm_runtime::tests::text_placed_before_the_image_keeps_its_position ... ok +test multimodal::vlm_runtime::tests::the_jina_vlm_template_wraps_a_bare_prompt_in_one_user_turn ... ok +test multimodal::vlm_runtime::tests::two_images_split_the_prompt_into_three_segments_in_marker_order ... ok +test multimodal::youtu_vl_prompt::tests::expands_each_placeholder_with_its_own_image_run_in_order ... ok +test multimodal::youtu_vl_prompt::tests::expands_the_template_placeholder_to_one_token_per_merged_feature ... ok +test multimodal::youtu_vl_prompt::tests::handles_multiple_images_without_placeholders ... ok +test multimodal::youtu_vl_prompt::tests::leaves_an_already_expanded_prompt_unchanged ... ok +test multimodal::youtu_vl_prompt::tests::rejects_a_placeholder_count_that_matches_neither_images_nor_features ... ok +test multimodal::youtu_vl_prompt::tests::splices_image_tokens_after_bos_when_the_prompt_has_no_placeholder ... ok +test reasoning_display::tests::plain_text_passes_through ... ok +test reasoning_display::tests::primed_prompt_detection_tolerates_trailing_whitespace ... ok +test reasoning_display::tests::reasoning_only_needs_hidden_text_and_no_visible_output ... ok +test reasoning_display::tests::render_full_hides_reasoning_unless_asked ... ok +test reasoning_display::tests::render_full_starts_inside_a_primed_block ... ok +test rerank::mod_tests::detects_sequence_classifier_for_bert_modernbert_xlm_roberta ... ok +test rerank::mod_tests::detects_the_generative_kinds_by_model_type ... ok +test rerank::mod_tests::items_report_emptiness_and_text ... ok +test rerank::mod_tests::kinds_report_their_instruction_support_and_batch_defaults ... ok +test rerank::mod_tests::logit_score_modules_json_is_generative_vl_not_embedding ... ok +test rerank::mod_tests::num_labels_reads_num_labels_then_id2label_then_defaults_to_one ... ok +test rerank::mod_tests::rejects_embedding_checkpoint_as_reranker ... ok +test rerank::mod_tests::rejects_multi_label_classifier ... ok +test rerank::mod_tests::rejects_unsupported_family ... ok +test rerank::qwen3_generative::qwen3_generative_tests::content_truncation_keeps_prefix_and_suffix ... ok +test rerank::qwen3_generative::qwen3_generative_tests::left_padding_puts_last_token_at_l_minus_1 ... ok +test rerank::qwen3_generative::qwen3_generative_tests::prompt_bytes_match_reference_recipe ... ok +test rerank::qwen3_generative::qwen3_generative_tests::rejects_image_items ... ok +test rerank::qwen3_generative::qwen3_generative_tests::sigmoid_of_logit_difference ... ok +test rerank::qwen3_generative::qwen3_generative_tests::yes_no_ids_must_be_single_tokens ... ok +test rerank::qwen3_vl_generative::qwen3_vl_generative_tests::checkpoint_template_renders_image_placeholders ... ok +test rerank::qwen3_vl_generative::qwen3_vl_generative_tests::checkpoint_template_renders_the_reference_prompt ... ok +test rerank::qwen3_vl_generative::qwen3_vl_generative_tests::image_only_side_carries_no_text_item ... ok +test rerank::qwen3_vl_generative::qwen3_vl_generative_tests::logit_score_ids_come_from_the_checkpoint_module ... ok +test rerank::qwen3_vl_generative::qwen3_vl_generative_tests::messages_omit_the_system_turn_when_no_instruction_is_given ... ok +test rerank::qwen3_vl_generative::qwen3_vl_generative_tests::truncation_splits_the_pair_longest_first ... ok +test rerank::real_checkpoint_tests::bge_reranker_v2_m3_matches_the_model_card_scores ... ok +test rerank::real_checkpoint_tests::detection_table_matches_the_local_checkpoints ... ok +test rerank::real_checkpoint_tests::gte_reranker_modernbert_ranks_the_beijing_document_first ... ok +test rerank::real_checkpoint_tests::ms_marco_minilm_cross_encoder_ranks_the_beijing_document_first ... ok +test rerank::real_checkpoint_tests::qwen3_generative_reranker_ranks_the_beijing_document_first ... ok +test rerank::real_checkpoint_tests::qwen3_vl_reranker_scores_text_and_image_documents ... ok +test rerank::sequence_classifier::sequence_classifier_tests::longest_first_keep_matches_the_tokenizer_fixed_point ... ok +test rerank::sequence_classifier::sequence_classifier_tests::longest_first_truncation_splits_the_pair ... ok +test rerank::sequence_classifier::sequence_classifier_tests::pairs_are_encoded_with_type_ids_for_bert ... ok +test rerank::sequence_classifier::sequence_classifier_tests::truncation_is_installed_on_the_tokenizer ... ok +test sampling_observability_tests::byte_fragment_len_counts_only_tagged_entries ... ok +test sampling_observability_tests::byte_fragment_suppression_counter_tracks_opt_in_entries ... ok +test sampling_observability_tests::lang_bias_tracing_fields_emitted_on_construction ... ok +test sampling_observability_tests::metric_incremented_when_bias_applied ... ok +test sampling_observability_tests::metric_not_incremented_when_bias_empty ... ok +test sampling_observability_tests::tokens_suppressed_metric_increments_only_on_neg_inf_top1 ... ok +test server::anthropic_translator::tests::all_valid_function_tools_preserved_for_max_tools_guard ... ok +test server::anthropic_translator::tests::anthropic_tool_choice_any_maps_to_required ... ok +test server::anthropic_translator::tests::anthropic_tool_choice_tool_maps_to_named ... ok +test server::anthropic_translator::tests::apply_stop_sequences_no_match_returns_input ... ok +test server::anthropic_translator::tests::apply_stop_sequences_truncates_at_first_match ... ok +test server::anthropic_translator::tests::assistant_thinking_block_becomes_reasoning_field ... ok +test server::anthropic_translator::tests::assistant_tool_use_becomes_tool_calls ... ok +test server::anthropic_translator::tests::consecutive_mid_array_system_turns_all_fold ... ok +test server::anthropic_translator::tests::content_blocks_empty_yields_empty_text ... ok +test server::anthropic_translator::tests::content_blocks_text_only ... ok +test server::anthropic_translator::tests::content_blocks_thinking_suppressed_when_disabled ... ok +test server::anthropic_translator::tests::content_blocks_thinking_then_text ... ok +test server::anthropic_translator::tests::content_blocks_with_tool_calls ... ok +test server::anthropic_translator::tests::leading_array_system_merges_with_top_level_system ... ok +test server::anthropic_translator::tests::metadata_user_id_maps_to_chat_user ... ok +test server::anthropic_translator::tests::mid_array_system_folds_into_multimodal_user_turn ... ok +test server::anthropic_translator::tests::mid_conversation_system_turn_folds_into_following_user ... ok +test server::anthropic_translator::tests::missing_metadata_user_id_leaves_chat_user_none ... ok +test server::anthropic_translator::tests::parsed_call_invalid_args_become_empty_object ... ok +test server::anthropic_translator::tests::stop_reason_mapping ... ok +test server::anthropic_translator::tests::stop_sequences_propagate_to_sampling_params ... ok +test server::anthropic_translator::tests::system_role_turn_in_messages_deserializes_no_422 ... ok +test server::anthropic_translator::tests::system_string_becomes_leading_system_message ... ok +test server::anthropic_translator::tests::system_string_only_path_unchanged_by_fold ... ok +test server::anthropic_translator::tests::thinking_enabled_detection ... ok +test server::anthropic_translator::tests::tool_choice_any_maps_to_required ... ok +test server::anthropic_translator::tests::tool_choice_named_tool_maps_to_specific ... ok +test server::anthropic_translator::tests::tool_result_text_becomes_tool_message ... ok +test server::anthropic_translator::tests::tool_result_with_image_surfaces_image_url_part ... ok +test server::anthropic_translator::tests::tools_convert_and_drop_server_tools ... ok +test server::anthropic_translator::tests::top_level_system_and_mid_array_system_both_survive ... ok +test server::anthropic_translator::tests::trailing_system_turn_with_no_following_user_is_preserved ... ok +test server::anthropic_translator::tests::user_image_block_becomes_image_url_part ... ok +test server::app::api_prefix_tests::a_nested_prefix_is_served_verbatim ... ok +test server::app::api_prefix_tests::a_prefix_moves_every_route_under_it ... ok +test server::app::api_prefix_tests::a_prefix_removes_the_unprefixed_paths ... ok +test server::app::api_prefix_tests::an_authenticated_request_reaches_a_prefixed_route ... ok +test server::app::api_prefix_tests::the_prefixed_health_route_requires_authentication_like_b10621 ... ok +test server::app::api_prefix_tests::the_unprefixed_health_path_is_public_but_unmounted ... ok +test server::app::api_prefix_tests::without_a_prefix_the_routes_stay_at_the_root ... ok +test server::app::auth_route_tests::a_bare_authorization_value_without_bearer_authenticates ... ok +test server::app::auth_route_tests::a_malformed_authorization_header_is_rejected_without_leaking ... ok +test server::app::auth_route_tests::a_missing_credential_and_an_unknown_one_are_indistinguishable ... ok +test server::app::auth_route_tests::a_preflight_is_still_answered_without_a_credential ... ok +test server::app::auth_route_tests::a_single_key_deployment_keeps_working ... ok +test server::app::auth_route_tests::an_unconfigured_server_authenticates_nothing ... ok +test server::app::auth_route_tests::an_unknown_key_is_rejected ... ok +test server::app::auth_route_tests::both_the_v1_and_the_native_route_spellings_are_protected ... ok +test server::app::auth_route_tests::every_configured_key_authenticates_independently ... ok +test server::app::auth_route_tests::no_authenticated_endpoint_echoes_a_configured_key ... ok +test server::app::auth_route_tests::the_anthropic_header_authenticates_too ... ok +test server::app::auth_route_tests::the_observability_endpoints_are_protected ... ok +test server::app::auth_route_tests::the_public_endpoints_stay_open ... ok +test server::app::auth_route_tests::the_rejection_body_matches_b10621_and_leaks_no_key ... ok +test server::app::single_webui_control_tests::mounted_single_control_is_canonical_read_only ... ok +test server::app::single_webui_control_tests::mounted_single_controls_keep_auth_and_origin_envelopes ... ok +test server::app::single_webui_control_tests::mounted_single_controls_keep_declared_and_chunked_two_mib_limits ... ok +test server::app::tests::all_public_endpoints_are_unauthenticated ... ok +test server::app::tests::audio_alias_paths_are_reachable_without_v1_prefix ... ok +test server::app::tests::audio_speech_is_reachable_at_v1_path ... ok +test server::app::tests::audio_transcriptions_is_reachable_at_v1_path ... ok +test server::app::tests::audio_translations_is_reachable_at_v1_path ... ok +test server::app::tests::audio_upload_limit_is_25_mib ... ok +test server::app::tests::body_limit_accepts_exact_boundary_and_rejects_one_byte_over ... ok +test server::app::tests::body_limit_layer_enforces_upload_cap ... ok +test server::app::tests::get_to_audio_speech_returns_method_not_allowed ... ok +test server::app::tests::main_json_limit_accepts_base64_body_above_axum_default ... ok +test server::app::tests::main_json_limit_accounts_for_simultaneous_image_inputs ... ok +test server::app::tests::main_json_limit_derives_from_simultaneous_image_budget ... ok +test server::app::tests::main_json_limit_handles_zero_and_extreme_config ... ok +test server::app::tests::oversized_body_limit_errors_are_openai_shaped_for_audio_and_json ... ok +test server::app::tests::single_webui_events_use_shared_replay_cursor_and_fixtures ... ok +test server::assistant_prefill::tests::a_content_continuation_closes_a_primed_thinking_block_first ... ok +test server::assistant_prefill::tests::a_content_continuation_is_appended_with_no_closing_tag ... ok +test server::assistant_prefill::tests::a_reasoning_continuation_needs_a_primed_thinking_block ... ok +test server::assistant_prefill::tests::a_reasoning_only_trailing_message_is_a_reasoning_continuation ... ok +test server::assistant_prefill::tests::a_trailing_assistant_message_is_a_prefill_when_enabled ... ok +test server::assistant_prefill::tests::a_trailing_tool_call_message_is_a_completed_turn_not_a_prefix ... ok +test server::assistant_prefill::tests::a_trailing_user_message_is_never_a_prefill ... ok +test server::assistant_prefill::tests::an_empty_trailing_assistant_message_prefills_nothing_but_still_continues ... ok +test server::assistant_prefill::tests::the_flag_off_leaves_the_trailing_assistant_message_alone ... ok +test server::assistant_prefill::tests::two_trailing_assistant_messages_are_refused_with_upstreams_wording ... ok +test server::audio_model::tests::default_transcribe_reports_kind_not_loaded ... ok +test server::audio_model::tests::kind_not_loaded_error_names_the_kind ... ok +test server::audio_model::tests::kind_str_and_display_match ... ok +test server::audio_worker::tests::default_engine_reports_unsupported_direction ... ok +test server::audio_worker::tests::queue_full_returns_queuefull_error ... ok +test server::audio_worker::tests::request_timeout_returns_timeout_error ... ok +test server::audio_worker::tests::worker_round_trip_runs_mlx_op_and_replies ... ok +test server::audio_worker::tests::worker_surfaces_loader_failure ... ok +test server::audio_worker::tests::worker_survives_engine_panic_and_keeps_serving ... ok +test server::audio_worker::tests::zero_request_timeout_falls_back_to_default ... ok +test server::auth::auth_tests::a_bare_authorization_header_presents_itself ... ok +test server::auth::auth_tests::a_bearer_authorization_header_presents_the_token ... ok +test server::auth::auth_tests::a_comma_separated_list_yields_each_field ... ok +test server::auth::auth_tests::a_comment_marker_only_counts_in_column_one ... ok +test server::auth::auth_tests::a_crlf_key_file_keeps_the_carriage_return ... ok +test server::auth::auth_tests::a_doubled_quote_inside_a_quoted_field_is_a_literal_quote ... ok +test server::auth::auth_tests::a_file_without_a_trailing_newline_still_yields_its_last_key ... ok +test server::auth::auth_tests::a_key_file_line_is_not_trimmed ... ok +test server::auth::auth_tests::a_key_file_yields_one_key_per_line ... ok +test server::auth::auth_tests::a_key_source_that_contributes_nothing_is_a_startup_error ... ok +test server::auth::auth_tests::a_lowercase_bearer_prefix_is_not_stripped ... ok +test server::auth::auth_tests::a_quote_in_the_middle_of_an_unquoted_field_is_literal ... ok +test server::auth::auth_tests::a_quoted_field_may_contain_a_comma ... ok +test server::auth::auth_tests::a_single_key_parses_to_itself ... ok +test server::auth::auth_tests::an_empty_key_set_accepts_nothing ... ok +test server::auth::auth_tests::an_unreadable_key_file_is_a_startup_error_naming_the_path ... ok +test server::auth::auth_tests::blank_lines_and_comments_do_not_become_credentials ... ok +test server::auth::auth_tests::cli_and_file_keys_join_one_set ... ok +test server::auth::auth_tests::debug_never_prints_key_material ... ok +test server::auth::auth_tests::empty_fields_survive_parsing_and_are_dropped_by_resolution ... ok +test server::auth::auth_tests::no_credential_headers_present_nothing ... ok +test server::auth::auth_tests::no_sources_means_authentication_is_disabled ... ok +test server::auth::auth_tests::repeated_flag_occurrences_accumulate ... ok +test server::auth::auth_tests::several_key_files_accumulate ... ok +test server::auth::auth_tests::the_bearer_prefix_is_stripped_from_x_api_key_too ... ok +test server::auth::auth_tests::the_unauthorized_body_matches_b10621_and_echoes_no_key ... ok +test server::auth::auth_tests::whitespace_is_not_trimmed ... ok +test server::auth::auth_tests::x_api_key_is_used_when_authorization_is_absent ... ok +test server::auth::auth_tests::x_api_key_is_used_when_authorization_is_empty ... ok +test server::batch::active::tests::add_and_retrieve ... ok +test server::batch::active::tests::capacity_enforcement ... ok +test server::batch::active::tests::capacity_reopens_after_remove ... ok +test server::batch::active::tests::duplicate_id_rejected ... ok +test server::batch::active::tests::get_mut_nonexistent_returns_none ... ok +test server::batch::active::tests::get_rows_mut_returns_rows_in_id_order ... ok +test server::batch::active::tests::iter_mut_visits_all_sequences ... ok +test server::batch::active::tests::new_batch_is_empty ... ok +test server::batch::active::tests::remove_nonexistent_returns_none ... ok +test server::batch::active::tests::remove_returns_sequence ... ok +test server::batch::active::tests::sequence_ids_returns_all_ids ... ok +test server::batch::dflash_target::tests::a_restricted_target_declines_every_other_drafter_family ... ok +test server::batch::dflash_target::tests::first_hidden_for_slices_only_under_the_last_position_policy ... ok +test server::batch::dflash_target::tests::first_hidden_rows_defaults_to_the_qwen_policy ... ok +test server::batch::dflash_target::tests::supports_batched_is_a_qwen_only_policy ... ok +test server::batch::finish_step_tests::a_burst_finishing_on_max_tokens_at_the_batch_end_donates ... ok +test server::batch::finish_step_tests::a_burst_loop_on_the_last_batch_token_donates ... ok +test server::batch::finish_step_tests::a_mid_batch_burst_stop_string_does_not_donate ... ok +test server::batch::finish_step_tests::a_repeating_burst_stream_finishes_on_the_repetition_loop ... ok +test server::batch::finish_step_tests::a_structured_stop_reports_stop_below_a_stop_string ... ok +test server::batch::finish_step_tests::batched_per_row_decode_finishes_every_scenario_by_the_shared_step ... ok +test server::batch::finish_step_tests::burst_stream_finishes_every_scenario_by_the_shared_step ... ok +test server::batch::finish_step_tests::fused_batched_decode_finishes_every_scenario_by_the_shared_step ... ok +test server::batch::finish_step_tests::prefill_completion_finishes_every_scenario_by_the_shared_step ... ok +test server::batch::finish_step_tests::prefill_eos_on_the_first_token_is_not_pushed ... ok +test server::batch::finish_step_tests::prefill_with_max_tokens_one_finishes_length_on_the_first_token ... ok +test server::batch::finish_step_tests::single_step_decode_finishes_every_scenario_by_the_shared_step ... ok +test server::batch::finish_step_tests::the_cause_maps_onto_the_reference_finish_reasons ... ok +test server::batch::generation_bounds::tests::a_fired_bound_is_sticky_and_ignores_later_pieces ... ok +test server::batch::generation_bounds::tests::inert_bounds_never_fire_and_accumulate_nothing ... ok +test server::batch::generation_bounds::tests::n_indent_accepts_a_line_that_meets_the_requested_indentation ... ok +test server::batch::generation_bounds::tests::n_indent_ignores_the_first_line_because_upstream_has_no_cursor_for_it ... ok +test server::batch::generation_bounds::tests::n_indent_stops_on_a_line_that_falls_below_the_requested_indentation ... ok +test server::batch::generation_bounds::tests::n_indent_treats_an_empty_line_as_zero_indentation ... ok +test server::batch::generation_bounds::tests::t_max_predict_ms_does_not_fire_before_its_deadline ... ok +test server::batch::generation_bounds::tests::t_max_predict_ms_fires_only_on_a_newline_after_the_deadline ... ok +test server::batch::generation_bounds::tests::the_deadline_arms_on_the_emitted_text_not_the_decoded_text ... ok +test server::batch::mtp_policy::tests::accumulator_aggregates_round_weighted ... ok +test server::batch::mtp_policy::tests::accumulator_folds_probe_only_samples_without_counting_them ... ok +test server::batch::mtp_policy::tests::accumulator_ignores_zero_round_samples ... ok +test server::batch::mtp_policy::tests::accumulator_records_batch_and_prompt_shape ... ok +test server::batch::mtp_policy::tests::adaptive_enabled_defaults_on ... ok +test server::batch::mtp_policy::tests::ambiguous_profile_follows_static_default ... ok +test server::batch::mtp_policy::tests::apple_hardware_label_keeps_generation_core_spelling ... ok +test server::batch::mtp_policy::tests::apple_unknown_generation_keeps_existing_hint ... ok +test server::batch::mtp_policy::tests::block_size_change_produces_different_key_and_re_profiles ... ok +test server::batch::mtp_policy::tests::classic_step_median_discards_first_burst_jit_pollution ... ok +test server::batch::mtp_policy::tests::classify_speedup_zones ... ok +test server::batch::mtp_policy::tests::compute_bound_derating_declines_a_borderline_pairing ... ok +test server::batch::mtp_policy::tests::compute_bound_derating_keeps_a_favorable_pairing_enabled ... ok +test server::batch::mtp_policy::tests::cuda_and_rocm_hosts_produce_distinct_policy_keys ... ok +test server::batch::mtp_policy::tests::env_force_off_pins_decline_and_never_profiles ... ok +test server::batch::mtp_policy::tests::env_force_on_pins_enable_and_never_profiles ... ok +test server::batch::mtp_policy::tests::estimate_speedup_matches_closed_form ... ok +test server::batch::mtp_policy::tests::estimate_speedup_measured_matches_closed_form ... ok +test server::batch::mtp_policy::tests::estimate_speedup_rejects_degenerate_inputs ... ok +test server::batch::mtp_policy::tests::estimate_speedup_scaled_de_rates_compute_bound ... ok +test server::batch::mtp_policy::tests::estimate_speedup_zero_acceptance_is_below_one ... ok +test server::batch::mtp_policy::tests::favorable_profile_enables_overriding_static_decline ... ok +test server::batch::mtp_policy::tests::heuristic_fallback_engages_without_probe_data ... ok +test server::batch::mtp_policy::tests::hint_roundtrips_through_serde ... ok +test server::batch::mtp_policy::tests::load_returns_none_on_garbage_json ... ok +test server::batch::mtp_policy::tests::load_returns_none_on_version_mismatch ... ok +test server::batch::mtp_policy::tests::loaded_hint_is_rejected_on_key_mismatch ... ok +test server::batch::mtp_policy::tests::measured_estimator_apple_verdicts_stay_correct ... ok +test server::batch::mtp_policy::tests::measured_estimator_declines_pre_725_shape_with_margin ... ok +test server::batch::mtp_policy::tests::measured_estimator_enables_post_725_gb10_pairing ... ok +test server::batch::mtp_policy::tests::non_apple_architecture_separates_hints_and_empty_matches_absent ... ok +test server::batch::mtp_policy::tests::old_unknown_hardware_hint_is_not_reused_across_vendors ... ok +test server::batch::mtp_policy::tests::parse_force_override_directions ... ok +test server::batch::mtp_policy::tests::persisted_acceptance_rate_is_coarse_rounded ... ok +test server::batch::mtp_policy::tests::persisted_hint_holds_only_coarse_fields ... ok +test server::batch::mtp_policy::tests::policy_key_hash_is_stable_and_distinct ... ok +test server::batch::mtp_policy::tests::probe_rounds_requested_only_while_profiling ... ok +test server::batch::mtp_policy::tests::profile_sample_carries_no_token_level_data ... ok +test server::batch::mtp_policy::tests::resolve_verdict_overrides_and_defers ... ok +test server::batch::mtp_policy::tests::settles_only_after_enough_samples ... ok +test server::batch::mtp_policy::tests::settling_persists_a_loadable_verdict ... ok +test server::batch::mtp_policy::tests::snapshot_acceptance_rate_matches_the_persisted_hint_exactly ... ok +test server::batch::mtp_policy::tests::snapshot_after_declining_reports_decline_and_a_closed_gate ... ok +test server::batch::mtp_policy::tests::snapshot_after_settling_reports_the_verdict_and_the_measurement ... ok +test server::batch::mtp_policy::tests::snapshot_of_a_forced_policy_is_not_reported_as_settled ... ok +test server::batch::mtp_policy::tests::snapshot_of_a_verdict_restored_from_disk_carries_the_hints_measurement ... ok +test server::batch::mtp_policy::tests::snapshot_while_profiling_reports_no_verdict_and_the_running_sample_count ... ok +test server::batch::mtp_policy::tests::store_with_no_dir_is_a_silent_noop ... ok +test server::batch::mtp_policy::tests::unavailable_snapshot_reports_its_reason_and_no_pairing ... ok +test server::batch::mtp_policy::tests::unfavorable_profile_declines_overriding_static_enable ... ok +test server::batch::mtp_policy::tests::vendor_qualified_hints_round_trip_without_cross_vendor_reuse ... ok +test server::batch::mtp_policy::tests::verify_cost_multiple_is_backend_conditional ... ok +test server::batch::mtp_policy::tests::wire_labels_are_stable ... ok +test server::batch::mtp_policy::tests::zero_round_samples_do_not_advance_profiling ... ok +test server::batch::observability::tests::histogram_counts_plus_inf_observations ... ok +test server::batch::observability::tests::mtp_policy_publishes_and_reads_back ... ok +test server::batch::observability::tests::new_observability_starts_zeroed ... ok +test server::batch::observability::tests::record_completion_increments_counter ... ok +test server::batch::observability::tests::record_decode_step_increments_counters ... ok +test server::batch::observability::tests::record_prefill_increments_counters ... ok +test server::batch::observability::tests::record_prompt_cache_reject_increments_only_its_own_reason ... ok +test server::batch::observability::tests::record_prompt_cache_reject_updates_last_reject_snapshot ... ok +test server::batch::observability::tests::record_request_completion_populates_histograms ... ok +test server::batch::observability::tests::record_request_completion_skips_zero_token_requests ... ok +test server::batch::observability::tests::reject_reasons_start_zeroed_with_no_last_reject ... ok +test server::batch::observability::tests::rejects_without_a_stored_entry_leave_entry_len_unset ... ok +test server::batch::observability::tests::snapshot_divergence_reject_carries_both_lengths ... ok +test server::batch::observability::tests::snapshot_is_serializable ... ok +test server::batch::observability::tests::snapshot_serializes_reject_reason_fields ... ok +test server::batch::observability::tests::update_gauges_sets_values ... ok +test server::batch::prefill_cohort::tests::adopted_prefix_before_cold_keeps_priority_order ... ok +test server::batch::prefill_cohort::tests::all_cold_window_forms_one_batched_cohort ... ok +test server::batch::prefill_cohort::tests::all_incompatible_window_is_one_sequential_cohort ... ok +test server::batch::prefill_cohort::tests::default_budget_scales_with_batch_and_chunk ... ok +test server::batch::prefill_cohort::tests::empty_window_yields_no_cohorts ... ok +test server::batch::prefill_cohort::tests::equal_length_only_model_batches_only_equal_lengths ... ok +test server::batch::prefill_cohort::tests::isolated_cold_row_between_incompatible_stays_sequential ... ok +test server::batch::prefill_cohort::tests::mixed_cold_and_adopted_splits_into_cohorts ... ok +test server::batch::prefill_cohort::tests::model_without_batched_prefill_is_all_sequential ... ok +test server::batch::prefill_cohort::tests::padded_model_batches_mixed_lengths ... ok +test server::batch::prefill_cohort::tests::partitioned_window_admits_only_an_equal_snapshot ... ok +test server::batch::prefill_cohort::tests::partitioned_window_compares_snapshots_by_value_not_identity ... ok +test server::batch::prefill_cohort::tests::partitioned_window_separates_a_missing_snapshot_from_a_present_one ... ok +test server::batch::prefill_cohort::tests::single_cold_row_is_sequential_not_batched ... ok +test server::batch::prefill_cohort::tests::two_separated_cold_runs_form_two_batches ... ok +test server::batch::prefill_cohort::tests::unpartitioned_window_admits_every_snapshot ... ok +test server::batch::prefill_cohort::tests::window_admits_predicate_edges ... ok +test server::batch::prefill_cohort::tests::window_boundary_is_inclusive ... ok +test server::batch::prefill_cohort::tests::window_fits_within_budget ... ok +test server::batch::prefill_cohort::tests::window_growing_max_len_recomputes_cost ... ok +test server::batch::prefill_cohort::tests::window_long_head_always_makes_progress ... ok +test server::batch::prefill_cohort::tests::window_spills_rows_past_budget ... ok +test server::batch::prefill_cohort::tests::window_uncapped_takes_up_to_row_cap ... ok +test server::batch::queue::tests::capacity_enforcement_across_lanes ... ok +test server::batch::queue::tests::capacity_reopens_after_dequeue ... ok +test server::batch::queue::tests::default_creates_empty_queue ... ok +test server::batch::queue::tests::dequeue_returns_none_when_empty ... ok +test server::batch::queue::tests::drain_cancelled_removes_across_all_priority_lanes ... ok +test server::batch::queue::tests::drain_cancelled_removes_only_cancelled_sequences ... ok +test server::batch::queue::tests::drain_cancelled_returns_empty_when_none_cancelled ... ok +test server::batch::queue::tests::drain_matching_window_collects_leading_matches ... ok +test server::batch::queue::tests::drain_matching_window_empty_lane_returns_empty ... ok +test server::batch::queue::tests::drain_matching_window_only_scans_named_lane ... ok +test server::batch::queue::tests::drain_matching_window_respects_max_extra_cap ... ok +test server::batch::queue::tests::drain_matching_window_stops_at_first_non_match ... ok +test server::batch::queue::tests::drain_matching_window_zero_max_extra_collects_nothing ... ok +test server::batch::queue::tests::enqueue_front_preserves_requeued_window_order ... ok +test server::batch::queue::tests::enqueue_increases_len ... ok +test server::batch::queue::tests::fifo_ordering_within_same_priority ... ok +test server::batch::queue::tests::interleaved_enqueue_dequeue ... ok +test server::batch::queue::tests::new_queue_is_empty ... ok +test server::batch::queue::tests::peek_priority_reflects_head ... ok +test server::batch::queue::tests::priority_ordering_high_before_normal_before_low ... ok +test server::batch::queue::tests::priority_with_fifo_within_lanes ... ok +test server::batch::queue::tests::ragged_disabled_window_excludes_different_length_prompts ... ok +test server::batch::queue::tests::ragged_enabled_window_groups_different_length_prompts ... ok +test server::batch::queue::tests::ragged_enabled_window_still_honors_other_matching_checks ... ok +test server::batch::scheduler::block_reclaim::block_reclaim_tests::a_row_short_only_by_the_chunked_prefill_reservation_waits_instead_of_failing ... ok +test server::batch::scheduler::block_reclaim::block_reclaim_tests::admission_defers_when_free_blocks_minus_the_watermark_cannot_cover_it ... ok +test server::batch::scheduler::block_reclaim::block_reclaim_tests::admission_floor_zero_may_preempt_every_lower_priority_row ... ok +test server::batch::scheduler::block_reclaim::block_reclaim_tests::admission_never_drops_another_requests_adoption ... ok +test server::batch::scheduler::block_reclaim::block_reclaim_tests::admission_never_preempts_rows_of_equal_priority ... ok +test server::batch::scheduler::block_reclaim::block_reclaim_tests::admission_watermark_applies_only_while_rows_decode ... ok +test server::batch::scheduler::block_reclaim::block_reclaim_tests::admission_watermark_evicts_cold_prefixes_to_restore_headroom ... ok +test server::batch::scheduler::block_reclaim::block_reclaim_tests::batched_prefill_window_stops_at_the_first_row_over_the_paged_budget ... ok +test server::batch::scheduler::block_reclaim::block_reclaim_tests::chunk_reservation_evicts_cold_prefixes_before_preempting ... ok +test server::batch::scheduler::block_reclaim::block_reclaim_tests::decode_does_not_take_blocks_a_parked_chunked_prefill_still_needs ... ok +test server::batch::scheduler::block_reclaim::block_reclaim_tests::decode_drops_a_queued_adoption_before_shedding_the_last_row ... ok +test server::batch::scheduler::block_reclaim::block_reclaim_tests::decode_past_block_boundary_without_reclaim_exhausts_the_budget ... ok +test server::batch::scheduler::block_reclaim::block_reclaim_tests::decode_reclaim_evicts_lru_prefix_so_the_row_crosses_the_boundary ... ok +test server::batch::scheduler::block_reclaim::block_reclaim_tests::decode_that_cannot_reclaim_sheds_the_row_instead_of_failing_the_forward ... ok +test server::batch::scheduler::block_reclaim::block_reclaim_tests::decode_with_free_budget_evicts_and_preempts_nothing ... ok +test server::batch::scheduler::block_reclaim::block_reclaim_tests::decode_without_evictable_prefixes_falls_back_to_preemption ... ok +test server::batch::scheduler::block_reclaim::block_reclaim_tests::mixed_step_chunk_reclaims_when_decode_left_the_pool_below_its_reservation ... ok +test server::batch::scheduler::block_reclaim::block_reclaim_tests::mixed_step_decode_then_chunk_share_the_last_blocks ... ok +test server::batch::scheduler::block_reclaim::block_reclaim_tests::queued_adoptions_go_after_cold_prefixes_and_before_running_rows ... ok +test server::batch::scheduler::block_reclaim::block_reclaim_tests::shedding_keeps_rows_that_need_no_new_block ... ok +test server::batch::scheduler::config::sleep_idle_tests::a_negative_window_is_upstreams_disabled_sentinel ... ok +test server::batch::scheduler::config::sleep_idle_tests::a_positive_window_is_taken_in_seconds ... ok +test server::batch::scheduler::config::sleep_idle_tests::zero_arms_the_sleep_rather_than_disabling_it ... ok +test server::batch::scheduler::prefill_span_coverage_tests::every_prefill_forward_announces_the_sequence_span ... ok +test server::batch::scheduler::prefill_span_coverage_tests::every_scheduler_model_forward_is_classified ... ok +test server::batch::scheduler::prefill_span_coverage_tests::the_prompt_cache_prefill_forwards_are_covered ... ok +test server::batch::scheduler::scheduler_cohort_parity_tests::mixed_window_cold_cohort_matches_all_cold_batched_qwen3 ... ignored, loads qwen3-0.6b-4bit and runs real GPU forwards; run with --ignored +test server::batch::scheduler::scheduler_completion_snapshot_tests::eos_stop_snapshot_keeps_every_pushed_token ... ok +test server::batch::scheduler::scheduler_completion_snapshot_tests::length_finish_snapshot_claims_only_forwarded_tokens ... ok +test server::batch::scheduler::scheduler_completion_snapshot_tests::model_owned_sequence_primes_the_decode_lookahead_only_with_a_rewind ... ok +test server::batch::scheduler::scheduler_completion_snapshot_tests::one_decoded_token_snapshot_is_the_prompt_alone ... ok +test server::batch::scheduler::scheduler_model_owned_cache_tests::model_owned_paged_family_never_donates_or_adopts_kv ... ok +test server::batch::scheduler::scheduler_model_owned_cache_tests::paged_override_does_not_change_the_model_owned_natural_backend ... ok +test server::batch::scheduler::scheduler_model_owned_cache_tests::snapshot_partial_match_declines_under_require_whole_entry ... ok +test server::batch::scheduler::scheduler_model_owned_lookahead_tests::a_batch_eval_failure_counts_once_for_every_row ... ok +test server::batch::scheduler::scheduler_model_owned_lookahead_tests::a_row_eval_failure_carries_the_backend_error_wording ... ok +test server::batch::scheduler::scheduler_model_owned_lookahead_tests::batched_lookahead_matches_force_sync_past_the_window ... ok +test server::batch::scheduler::scheduler_model_owned_lookahead_tests::failed_rewind_fails_the_request ... ok +test server::batch::scheduler::scheduler_model_owned_lookahead_tests::lookahead_is_gated_on_the_rewind_capability ... ok +test server::batch::scheduler::scheduler_model_owned_lookahead_tests::model_owned_default_declines_the_lookahead_rewind ... ok +test server::batch::scheduler::scheduler_model_owned_lookahead_tests::single_sequence_lookahead_matches_force_sync_past_the_window ... ok +test server::batch::scheduler::scheduler_model_owned_pad_trim_tests::chunked_padded_prefill_matches_unpadded ... ok +test server::batch::scheduler::scheduler_model_owned_pad_trim_tests::full_padded_prefill_past_the_window_matches_unpadded ... ok +test server::batch::scheduler::scheduler_model_owned_pad_trim_tests::full_padded_prefill_within_the_window_matches_unpadded ... ok +test server::batch::scheduler::scheduler_model_owned_pad_trim_tests::padded_prefill_keeps_snapshot_reuse ... ok +test server::batch::scheduler::scheduler_muse_glimmer_parallel_tests::b1_terminal_length_matches_the_unchanged_b2_path ... ok +test server::batch::scheduler::scheduler_muse_glimmer_parallel_tests::muse_scheduler_streaming_and_result_only_collection_are_equivalent ... ok +test server::batch::scheduler::scheduler_muse_glimmer_parallel_tests::muse_scheduler_two_image_requests_parallelism_one_match_isolated_runs ... ok +test server::batch::scheduler::scheduler_muse_glimmer_parallel_tests::muse_scheduler_two_image_requests_parallelism_two_match_isolated_runs ... ok +test server::batch::scheduler::scheduler_muse_glimmer_tests::muse_scheduler_admits_single_image_with_expanded_usage_and_embeddings ... ok +test server::batch::scheduler::scheduler_muse_glimmer_tests::muse_scheduler_admits_text_only_with_model_owned_sequence_state ... ok +test server::batch::scheduler::scheduler_muse_glimmer_tests::muse_scheduler_rejects_media_cardinality_mismatch_before_generation ... ok +test server::batch::scheduler::scheduler_prompt_cache_plan_tests::adaptive_chunk_policy_executes_and_resumes_real_prefill_forwards ... ok +test server::batch::scheduler::scheduler_prompt_cache_plan_tests::cache_hit_from_inside_a_piece_is_reported_by_the_plan ... ok +test server::batch::scheduler::scheduler_prompt_cache_plan_tests::cache_hit_reproduces_miss_exactly_from_a_plan_split_point ... ok +test server::batch::scheduler::scheduler_prompt_cache_plan_tests::only_real_chunks_count_and_emit_prompt_progress ... ok +test server::batch::scheduler::scheduler_prompt_lookup_tests::a_cancel_during_a_round_finalizes_after_the_round ... ok +test server::batch::scheduler::scheduler_prompt_lookup_tests::a_concurrent_plain_row_gets_a_token_every_tick ... ok +test server::batch::scheduler::scheduler_prompt_lookup_tests::a_drafter_ahead_of_its_row_decodes_plainly ... ok +test server::batch::scheduler::scheduler_prompt_lookup_tests::a_prompt_lookup_row_emits_the_plain_tokens_and_counts_acceptance ... ok +test server::batch::scheduler::scheduler_prompt_lookup_tests::a_proposal_makes_the_next_tick_synchronous_without_a_prime ... ok +test server::batch::scheduler::scheduler_prompt_lookup_tests::admission_during_an_in_flight_lookahead_tears_it_down_first ... ok +test server::batch::scheduler::scheduler_prompt_lookup_tests::an_eos_inside_an_accepted_block_ends_the_row_there ... ok +test server::batch::scheduler::scheduler_prompt_lookup_tests::b1_length_boundary_submits_one_decode_forward_per_post_prefill_token ... ok +test server::batch::scheduler::scheduler_prompt_lookup_tests::b1_stochastic_terminal_length_commits_the_pending_draw ... ok +test server::batch::scheduler::scheduler_prompt_lookup_tests::b1_terminal_length_skips_two_forwards_and_leaves_b2_unchanged ... ok +test server::batch::scheduler::scheduler_prompt_lookup_tests::b1_terminal_token_eos_precedes_the_length_boundary ... ok +test server::batch::scheduler::scheduler_prompt_lookup_tests::proposal_free_ticks_stay_pipelined ... ok +test server::batch::scheduler::scheduler_prompt_lookup_tests::proposals_stop_at_the_context_bound ... ok +test server::batch::scheduler::scheduler_prompt_lookup_tests::rows_above_the_max_batch_run_no_verify_round ... ok +test server::batch::scheduler::scheduler_prompt_lookup_tests::the_first_prefill_warms_the_verify_widths_once ... ok +test server::batch::scheduler::scheduler_real_batch_parity_tests::gemma3_two_requests_match_each_alone_on_the_dense_backend ... ignored, needs a real Gemma 3 checkpoint and the GPU +test server::batch::scheduler::scheduler_real_batch_parity_tests::gemma3_two_requests_match_each_alone_on_the_paged_backend ... ignored, needs a real Gemma 3 checkpoint and the GPU +test server::batch::scheduler::scheduler_seed_determinism_tests::batched_prefill_seed_determinism_qwen3 ... ignored, loads qwen3-0.6b-4bit and runs real GPU forwards; run with --ignored +test server::batch::scheduler::scheduler_whole_prompt_hit_tests::identical_prompt_replay_restores_all_but_the_last_token ... ok +test server::batch::scheduler::scheduler_whole_prompt_hit_tests::untruncatable_whole_entry_hit_falls_back_to_cold_prefill ... ok +test server::batch::scheduler::scheduler_whole_prompt_hit_tests::whole_entry_hit_restores_len_minus_one_and_prefills_one_token ... ok +test server::batch::scheduler::serving_handoff_parity_tests::serve_decode_role_blocking_binds_then_returns_on_closed_intake ... ignored, loads qwen3-0.6b-4bit to build a scheduler; run with --ignored +test server::batch::scheduler::serving_handoff_parity_tests::serve_prefill_role_blocking_binds_then_returns_on_closed_intake ... ignored, loads qwen3-0.6b-4bit to build a scheduler; run with --ignored +test server::batch::scheduler::serving_handoff_parity_tests::serving_handoff_parity_chunked_prefill_matches_single_node_qwen3 ... ignored, loads qwen3-0.6b-4bit and runs real GPU forwards; run with --ignored +test server::batch::scheduler::serving_handoff_parity_tests::serving_handoff_parity_matches_single_node_qwen3 ... ignored, loads qwen3-0.6b-4bit and runs real GPU forwards; run with --ignored +test server::batch::scheduler::serving_handoff_parity_tests::serving_role_loop_parity_matches_single_node_qwen3 ... ignored, loads qwen3-0.6b-4bit (3x) and runs real GPU forwards; run with --ignored +test server::batch::scheduler::shared_budget::tests::shared_budget_admits_up_to_the_logical_token_limit ... ok +test server::batch::scheduler::shared_budget::tests::shared_budget_counts_active_and_chunked_sequences ... ok +test server::batch::scheduler::shared_budget::tests::shared_budget_growth_rejects_when_active_rows_would_cross_limit ... ok +test server::batch::scheduler::shared_budget::tests::shared_budget_rejects_overflowing_totals ... ok +test server::batch::scheduler::structure_tests::scheduler_modules_stay_below_documented_anti_pattern_threshold ... ok +test server::batch::scheduler::structure_tests::shared_budget_enforcement_stays_wired_into_scheduler_paths ... ok +test server::batch::scheduler::tests::a_context_bound_stop_is_reported_as_truncated_with_stop_type_limit ... ok +test server::batch::scheduler::tests::a_single_success_prevents_the_guard_from_tripping ... ok +test server::batch::scheduler::tests::a_string_stop_outranks_a_fired_generation_bound ... ok +test server::batch::scheduler::tests::active_batch_iter_min_priority_empty_returns_none ... ok +test server::batch::scheduler::tests::active_batch_iter_min_priority_finds_lowest ... ok +test server::batch::scheduler::tests::advance_eval_failure_count_increments_on_failure ... ok +test server::batch::scheduler::tests::advance_eval_failure_count_resets_on_success ... ok +test server::batch::scheduler::tests::advance_eval_failure_count_saturates_at_max ... ok +test server::batch::scheduler::tests::auto_decode_storage_prefers_paged_only_for_supported_workers ... ok +test server::batch::scheduler::tests::batch_kv_quant_per_layer_table_disabled_skip_keeps_uniform_modes ... ok +test server::batch::scheduler::tests::batch_kv_quant_per_layer_table_skips_last_layer_only ... ok +test server::batch::scheduler::tests::batched_prefill_admits_head_boundary_is_inclusive ... ok +test server::batch::scheduler::tests::batched_prefill_admits_head_empty_queue_never_admits ... ok +test server::batch::scheduler::tests::batched_prefill_admits_head_uncapped_budget_always_admits ... ok +test server::batch::scheduler::tests::block_reclaim_victim_is_lowest_priority_then_least_progressed ... ok +test server::batch::scheduler::tests::block_reclaim_victim_respects_the_admission_priority_limit ... ok +test server::batch::scheduler::tests::block_reclaim_victim_tie_breaks_to_newest_id ... ok +test server::batch::scheduler::tests::boundary_capture_applies_respects_adopted_prefix ... ok +test server::batch::scheduler::tests::chunked_prefill_continues_when_no_active_sequences ... ok +test server::batch::scheduler::tests::chunked_prefill_first_chunk_not_terminal_on_cold_long_prompt ... ok +test server::batch::scheduler::tests::chunked_prefill_first_chunk_terminal_on_long_cache_hit ... ok +test server::batch::scheduler::tests::chunked_prefill_interleaves_decode_when_active_sequences_exist ... ok +test server::batch::scheduler::tests::chunked_prefill_interleaving_pattern ... ok +test server::batch::scheduler::tests::chunked_prefill_plan_has_no_piece_for_an_empty_continuation ... ok +test server::batch::scheduler::tests::cli_resolver_disabled_returns_default_disabled_config ... ok +test server::batch::scheduler::tests::cli_resolver_falls_back_to_default_group_size_when_zero ... ok +test server::batch::scheduler::tests::cli_resolver_rejects_invalid_bits ... ok +test server::batch::scheduler::tests::cli_resolver_rejects_uniform_4bit_combination ... ok +test server::batch::scheduler::tests::cli_resolver_rejects_unknown_scheme_string ... ok +test server::batch::scheduler::tests::cli_resolver_turboquant_4bit_explicit_scheme ... ok +test server::batch::scheduler::tests::cli_resolver_uniform_8bit_default_scheme ... ok +test server::batch::scheduler::tests::common_prefix_len_reports_the_shared_head ... ok +test server::batch::scheduler::tests::compose_prompt_cache_key_folds_request_multimodal_digest ... ok +test server::batch::scheduler::tests::consecutive_failures_reach_limit_then_trip_guard ... ok +test server::batch::scheduler::tests::context_bound_stop_fires_only_with_shifting_disabled_and_a_bound ... ok +test server::batch::scheduler::tests::context_shift_trim_depth_matches_the_b10621_shift_arithmetic ... ok +test server::batch::scheduler::tests::decide_action_decode_returns_all_active_ids ... ok +test server::batch::scheduler::tests::decide_action_decode_when_batch_full_and_queue_non_empty ... ok +test server::batch::scheduler::tests::decide_action_decode_when_batch_has_active_even_if_queue_nonempty ... ok +test server::batch::scheduler::tests::decide_action_decode_when_batch_has_entries_and_queue_empty ... ok +test server::batch::scheduler::tests::decide_action_idle_when_both_empty ... ok +test server::batch::scheduler::tests::decide_action_is_o1_regardless_of_queue_size ... ok +test server::batch::scheduler::tests::decide_action_prefill_when_queue_has_entry_and_batch_not_full ... ok +test server::batch::scheduler::tests::dense_detached_kv_mode_validation_accepts_the_resolved_table ... ok +test server::batch::scheduler::tests::dense_detached_kv_mode_validation_declines_named_mismatch ... ok +test server::batch::scheduler::tests::eval_failures_reached_limit_is_inclusive_at_threshold ... ok +test server::batch::scheduler::tests::eviction_longest_first_tie_resolves_to_smallest_seq_id ... ok +test server::batch::scheduler::tests::eviction_lowest_priority_tie_resolves_to_smallest_seq_id ... ok +test server::batch::scheduler::tests::eviction_returns_none_for_an_empty_batch ... ok +test server::batch::scheduler::tests::eviction_selects_longest_first_by_default ... ok +test server::batch::scheduler::tests::eviction_selects_lowest_priority_then_longest ... ok +test server::batch::scheduler::tests::generation_deadline_stops_single_sequence_decode_as_length ... ok +test server::batch::scheduler::tests::handoff_thinking_state_replays_generated_tokens_before_decode ... ok +test server::batch::scheduler::tests::handoff_thinking_state_replays_primed_first_token_and_validates_raw_budget ... ok +test server::batch::scheduler::tests::history_boundary_len_clips_and_declines ... ok +test server::batch::scheduler::tests::hybrid_ssm_workers_never_use_paged_decode_backend ... ok +test server::batch::scheduler::tests::is_turbo_mode_classifies_turbo4_variants ... ok +test server::batch::scheduler::tests::is_turbo_mode_excludes_fp16_int8_and_turbo3_today ... ok +test server::batch::scheduler::tests::lookahead_engages_when_batch_stable_and_queue_empty ... ok +test server::batch::scheduler::tests::lookahead_falls_back_on_cancellation_mid_lookahead ... ok +test server::batch::scheduler::tests::lookahead_falls_back_on_eos_stop_mid_lookahead ... ok +test server::batch::scheduler::tests::lookahead_falls_back_on_length_limit_mid_lookahead ... ok +test server::batch::scheduler::tests::lookahead_invalidated_by_admission_mid_lookahead ... ok +test server::batch::scheduler::tests::lookahead_invalidated_by_chunked_prefill_interleave ... ok +test server::batch::scheduler::tests::lookahead_invalidated_by_preemption ... ok +test server::batch::scheduler::tests::lookahead_teardown_unwinds_one_position_without_prime ... ok +test server::batch::scheduler::tests::lookahead_teardown_unwinds_two_positions_after_prime ... ok +test server::batch::scheduler::tests::merged_eos_contains_both_model_and_request_stop_tokens ... ok +test server::batch::scheduler::tests::merged_eos_deduplicates_overlapping_tokens ... ok +test server::batch::scheduler::tests::paged_decode_storage_falls_back_when_batching_is_unavailable ... ok +test server::batch::scheduler::tests::preemption_disabled_by_default_never_triggers ... ok +test server::batch::scheduler::tests::priority_ordering_is_high_gt_normal_gt_low ... ok +test server::batch::scheduler::tests::priority_queue_dequeues_high_before_normal ... ok +test server::batch::scheduler::tests::priority_queue_dequeues_normal_before_low ... ok +test server::batch::scheduler::tests::priority_queue_fifo_within_same_priority_level ... ok +test server::batch::scheduler::tests::request_priority_default_is_normal ... ok +test server::batch::scheduler::tests::request_priority_from_header_parses_valid_values ... ok +test server::batch::scheduler::tests::request_priority_from_header_returns_none_for_invalid ... ok +test server::batch::scheduler::tests::resolve_max_batch_prefill_tokens_configured_wins_without_reading_env ... ok +test server::batch::scheduler::tests::retention_resolves_minus_one_to_the_whole_prompt_and_counts_bos ... ok +test server::batch::scheduler::tests::retention_resolves_the_request_over_the_server_default ... ok +test server::batch::scheduler::tests::scheduler_paged_turbo_layout_arguments_are_valid ... ok +test server::batch::scheduler::tests::sequence_info_initializes_token_history_and_merged_eos_empty ... ok +test server::batch::scheduler::tests::sequence_info_token_history_can_be_populated_incrementally ... ok +test server::batch::scheduler::tests::sequence_info_token_history_empty_when_no_penalties ... ok +test server::batch::scheduler::tests::sequence_info_token_history_grows_when_penalties_enabled ... ok +test server::batch::scheduler::tests::skip_last_layer_default_is_true_in_resolver ... ok +test server::batch::scheduler::tests::test_extend_both_empty ... ok +test server::batch::scheduler::tests::test_extend_empty_and_populated ... ok +test server::batch::scheduler::tests::test_filter_to_empty ... ok +test server::batch::scheduler::tests::test_merge_all_empty ... ok +test server::batch::scheduler::tests::vlm_embedding_sequence_bypasses_chunked_prefill_route ... ok +test server::batch::scheduler::tests::vlm_embedding_sequence_bypasses_na_tile_alignment ... ok +test server::batch::scheduler::tests::vlm_prefix_sharing_gate_pins_safety_conditions ... ok +test server::batch::scheduler_prompt_cache_tests::a_long_regime_prefix_is_not_reused_by_a_short_regime_request ... ok +test server::batch::scheduler_prompt_cache_tests::a_model_without_a_position_selected_table_shares_as_before ... ok +test server::batch::scheduler_prompt_cache_tests::a_short_regime_prefix_is_not_reused_by_a_long_regime_request ... ok +test server::batch::scheduler_prompt_cache_tests::adopt_path_declines_record_reasons_with_no_seq_id ... ok +test server::batch::scheduler_prompt_cache_tests::adopted_prefix_is_charged_only_for_its_suffix ... ok +test server::batch::scheduler_prompt_cache_tests::apc_block_aligned_partial_match_drops_below_min_prefix_returns_miss ... ok +test server::batch::scheduler_prompt_cache_tests::apc_block_aligned_partial_match_truncates_to_block_boundary ... ok +test server::batch::scheduler_prompt_cache_tests::apc_disabled_lookup_ignores_block_divergence_returns_full_prefix ... ok +test server::batch::scheduler_prompt_cache_tests::apc_full_match_yields_entry_length_matched_len_no_truncate_path ... ok +test server::batch::scheduler_prompt_cache_tests::batched_prefill_path_detects_adopted_sequences ... ok +test server::batch::scheduler_prompt_cache_tests::clear_queues_paged_entries_then_pool_reclaims ... ok +test server::batch::scheduler_prompt_cache_tests::dense_eviction_does_not_queue_paged_releases ... ok +test server::batch::scheduler_prompt_cache_tests::disabled_and_prefix_too_short_insert_errors_record_distinct_reasons ... ok +test server::batch::scheduler_prompt_cache_tests::donate_back_on_healthy_finish_inserts_prompt_plus_generated ... ok +test server::batch::scheduler_prompt_cache_tests::empty_paged_detached_set_reports_empty ... ok +test server::batch::scheduler_prompt_cache_tests::evict_one_lru_drops_oldest_and_queues_paged_pins ... ok +test server::batch::scheduler_prompt_cache_tests::evicted_paged_entry_queues_pins_then_pool_reclaims ... ok +test server::batch::scheduler_prompt_cache_tests::evicting_cold_prefix_restores_paged_block_budget ... ok +test server::batch::scheduler_prompt_cache_tests::hit_then_decode_reports_matched_len_and_consumes_entry ... ok +test server::batch::scheduler_prompt_cache_tests::miss_then_decode_leaves_scheduler_state_unchanged ... ok +test server::batch::scheduler_prompt_cache_tests::no_donate_back_on_error_outcome ... ok +test server::batch::scheduler_prompt_cache_tests::oversized_entry_records_reject_counter ... ok +test server::batch::scheduler_prompt_cache_tests::oversized_insert_error_records_oversized_reject_reason ... ok +test server::batch::scheduler_prompt_cache_tests::oversized_paged_entry_decline_queues_pins_then_pool_reclaims ... ok +test server::batch::scheduler_prompt_cache_tests::paged_detached_set_round_trips_through_cache_entry ... ok +test server::batch::scheduler_prompt_cache_tests::release_detached_paged_reclaims_blocks_to_pool ... ok +test server::batch::scheduler_prompt_cache_tests::scheduler_partial_adoption_invariant_matched_len_is_block_aligned ... ok +test server::batch::scheduler_prompt_cache_tests::scheduler_partial_adoption_synthetic_savings_match_expected_fraction ... ok +test server::batch::scheduler_prompt_cache_tests::sequence_info_fields_transport_cache_hit_metadata ... ok +test server::batch::scheduler_prompt_cache_tests::the_regime_changes_the_bucket_digest ... ok +test server::batch::scheduler_prompt_cache_tests::two_long_regime_requests_still_share_the_prefix ... ok +test server::batch::sequence::tests::batch_scheduler_action_debug ... ok +test server::batch::sequence::tests::below_threshold_stream_keeps_decoding ... ok +test server::batch::sequence::tests::degenerate_stream_finishes_with_repetition_loop ... ok +test server::batch::sequence::tests::disabled_loop_detection_keeps_decoding_on_obvious_loop ... ok +test server::batch::sequence::tests::eviction_allows_full_re_lifecycle ... ok +test server::batch::sequence::tests::finish_reason_equality ... ok +test server::batch::sequence::tests::full_lifecycle_queued_through_finished ... ok +test server::batch::sequence::tests::invalid_transition_decoding_to_prefilling ... ok +test server::batch::sequence::tests::invalid_transition_finished_to_anything ... ok +test server::batch::sequence::tests::invalid_transition_prefilling_to_queued ... ok +test server::batch::sequence::tests::invalid_transition_queued_to_decoding ... ok +test server::batch::sequence::tests::invalid_transition_queued_to_finished_length ... ok +test server::batch::sequence::tests::invalid_transition_queued_to_finished_stop ... ok +test server::batch::sequence::tests::is_finished_returns_correct_values ... ok +test server::batch::sequence::tests::loop_guard_does_not_override_already_finished_length ... ok +test server::batch::sequence::tests::valid_transition_decoding_to_finished_cancelled ... ok +test server::batch::sequence::tests::valid_transition_decoding_to_finished_error ... ok +test server::batch::sequence::tests::valid_transition_decoding_to_finished_length ... ok +test server::batch::sequence::tests::valid_transition_decoding_to_finished_repetition_loop ... ok +test server::batch::sequence::tests::valid_transition_decoding_to_finished_stop ... ok +test server::batch::sequence::tests::valid_transition_decoding_to_queued_for_eviction ... ok +test server::batch::sequence::tests::valid_transition_prefilling_to_decoding ... ok +test server::batch::sequence::tests::valid_transition_prefilling_to_finished_cancelled ... ok +test server::batch::sequence::tests::valid_transition_prefilling_to_finished_error ... ok +test server::batch::sequence::tests::valid_transition_prefilling_to_finished_length ... ok +test server::batch::sequence::tests::valid_transition_prefilling_to_finished_repetition_loop ... ok +test server::batch::sequence::tests::valid_transition_prefilling_to_finished_stop ... ok +test server::batch::sequence::tests::valid_transition_queued_to_finished_cancelled ... ok +test server::batch::sequence::tests::valid_transition_queued_to_finished_error ... ok +test server::batch::sequence::tests::valid_transition_queued_to_prefilling ... ok +test server::batch::speculative_burst::tests::drafter_slot_carries_path_for_dflash_dispatch ... ok +test server::batch::speculative_burst::tests::drafter_slot_carries_path_for_mtp_dispatch ... ok +test server::batch::speculative_burst::tests::drafter_slot_ensure_loaded_errors_on_missing_path ... ok +test server::batch::speculative_burst::tests::drafter_slot_ensure_loaded_errors_when_disabled ... ok +test server::batch::speculative_burst::tests::drafter_slot_starts_empty_for_disabled_dispatch ... ok +test server::batch::speculative_burst::tests::mtp_b1_default_batch_capable_follows_gpu_generation ... ok +test server::batch::speculative_burst::tests::mtp_b1_default_never_revokes_a_previously_enabled_host ... ok +test server::batch::speculative_burst::tests::mtp_b1_default_policy_table ... ok +test server::batch::speculative_burst::tests::mtp_batched_ragged_window_flag_defaults_off ... ok +test server::batch::speculative_burst::tests::ragged_target_sliding_window_reads_gemma4_window ... ok +test server::batch::speculative_burst::tests::should_burst_for_sequence_rejects_disabled_dispatch ... ok +test server::batch::speculative_burst_tests::apply_burst_thinking_budget_injects_close_at_budget_boundary ... ok +test server::batch::speculative_burst_tests::apply_burst_thinking_budget_passes_through_when_disabled ... ok +test server::batch::speculative_burst_tests::apply_burst_thinking_budget_respects_natural_close_before_budget ... ok +test server::batch::speculative_burst_tests::batched_burst_finalized_rows_preserve_per_row_donate_payloads ... ok +test server::batch::speculative_burst_tests::batched_burst_module_exports_required_for_scheduler_integration_compile ... ok +test server::batch::speculative_burst_tests::batched_burst_row_carries_prompt_cache_donate_fields ... ok +test server::batch::speculative_burst_tests::batched_burst_row_error_outcome_has_empty_donate_payload ... ok +test server::batch::speculative_burst_tests::batched_window_declines_adopted_prompt_cache_prefix ... ok +test server::batch::speculative_burst_tests::batched_window_rejects_logprobs_enabled_sequences ... ok +test server::batch::speculative_burst_tests::burst_allowed_for_adopted_prompt_cache_prefix ... ok +test server::batch::speculative_burst_tests::burst_allowed_for_default_sequence_under_mtp_dispatch ... ok +test server::batch::speculative_burst_tests::burst_allowed_for_dry_penalty ... ok +test server::batch::speculative_burst_tests::burst_allowed_for_frequency_penalty ... ok +test server::batch::speculative_burst_tests::burst_allowed_for_presence_penalty ... ok +test server::batch::speculative_burst_tests::burst_allowed_for_repetition_penalty ... ok +test server::batch::speculative_burst_tests::burst_allowed_when_logprobs_enabled ... ok +test server::batch::speculative_burst_tests::burst_allowed_when_thinking_state_active ... ok +test server::batch::speculative_burst_tests::burst_declined_for_vlm_embeddings ... ok +test server::batch::speculative_burst_tests::burst_declined_when_dispatch_is_disabled ... ok +test server::batch::speculative_burst_tests::burst_finalized_carries_prompt_cache_donate_fields ... ok +test server::batch::speculative_burst_tests::burst_finalized_error_outcome_has_empty_donate_payload ... ok +test server::batch::speculative_burst_tests::burst_module_exports_required_for_scheduler_integration_compile ... ok +test server::batch::speculative_burst_tests::classic_mark_first_token_stamps_the_decode_state_and_on_token_does_not_restamp ... ok +test server::batch::speculative_burst_tests::dflash_burst_allowed_for_vlm_wrapped_text_only_sequence_shape ... ok +test server::batch::speculative_burst_tests::dflash_burst_declined_for_audio_payload_without_embeddings ... ok +test server::batch::speculative_burst_tests::dflash_burst_declined_for_raw_multimodal_payload_without_embeddings ... ok +test server::batch::speculative_burst_tests::drive_mtp_generator_round_loop_produces_more_than_one_token_when_drafter_is_bound ... ok +test server::batch::speculative_burst_tests::drive_mtp_generator_round_loop_returns_empty_logprobs_when_disabled ... ok +test server::batch::speculative_burst_tests::drive_mtp_generator_round_loop_returns_only_seed_when_cancelled_before_first_round ... ok +test server::batch::speculative_burst_tests::drive_mtp_generator_round_loop_returns_only_seed_when_drafter_is_unbound ... ok +test server::batch::speculative_burst_tests::drive_mtp_generator_round_loop_threads_logprobs_through_to_emitted_tokens ... ok +test server::batch::speculative_burst_tests::drive_mtp_generator_round_loop_threads_token_history_into_prefill_and_seed ... ok +test server::batch::speculative_burst_tests::ensure_loaded_on_a_resident_drafter_reports_no_load ... ok +test server::batch::speculative_burst_tests::every_mtp_dispatch_site_covers_every_capable_variant ... ok +test server::batch::speculative_burst_tests::gemma31b_batched_mtp_declines_before_drafter_io_and_preserves_requests ... ok +test server::batch::speculative_burst_tests::mark_first_token_at_clamps_an_instant_before_created_at ... ok +test server::batch::speculative_burst_tests::mark_first_token_at_splits_prompt_time_from_generation_time ... ok +test server::batch::speculative_burst_tests::mtp_burst_declines_prepared_inkling_audio_after_raw_payload_is_consumed ... ok +test server::batch::speculative_burst_tests::mtp_burst_declines_raw_audio_before_inkling_vlm_adapter_dispatch ... ok +test server::batch::speculative_burst_tests::mtp_burst_declines_raw_images_before_inkling_vlm_adapter_dispatch ... ok +test server::batch::speculative_burst_tests::mtp_capable_target_names_both_inkling_variants ... ok +test server::batch::speculative_burst_tests::mtp_capable_target_names_the_qwen35_family ... ok +test server::batch::speculative_burst_tests::mtp_prefill_suffix_start_resolves_cold_reuse_and_degenerate_offsets ... ok +test server::batch::speculative_burst_tests::row_wise_batched_window_declines_outside_its_exact_limits ... ok +test server::batch::speculative_burst_tests::row_wise_batched_window_serves_the_measured_configuration ... ok +test server::batch::speculative_burst_tests::sampling_config_eq_distinguishes_p_less ... ok +test server::batch::speculative_burst_tests::sampling_config_eq_distinguishes_seed ... ok +test server::batch::speculative_burst_tests::sampling_config_eq_distinguishes_stop_token_ids ... ok +test server::batch::speculative_burst_tests::sampling_config_eq_distinguishes_temperature ... ok +test server::batch::speculative_burst_tests::sampling_config_eq_distinguishes_top_k_top_p_min_p ... ok +test server::batch::speculative_burst_tests::sampling_config_eq_distinguishes_top_n_sigma ... ok +test server::batch::speculative_burst_tests::sampling_config_eq_distinguishes_typical_p ... ok +test server::batch::speculative_burst_tests::sampling_config_eq_excludes_history_dependent_penalty_configs ... ok +test server::batch::speculative_burst_tests::sampling_config_eq_identical_default_configs_are_equal ... ok +test server::batch::speculative_burst_tests::sampling_config_eq_ignores_inert_greedy_top_n_sigma ... ok +test server::batch::speculative_burst_tests::sampling_config_eq_ignores_inert_greedy_typical_p ... ok +test server::batch::speculative_burst_tests::sampling_config_eq_requires_empty_token_bias_on_both_sides ... ok +test server::batch::speculative_burst_tests::shifting_created_at_by_a_cold_load_leaves_generation_time_alone ... ok +test server::batch::speculative_burst_tests::worker_drafter_slot_carries_mtp_path ... ok +test server::batch::speculative_burst_tests::worker_drafter_slot_disabled_dispatch_has_no_path ... ok +test server::batch::speculative_slice::tests::backlog_admission_cap_and_legacy_escape_hatch ... ok +test server::batch::speculative_slice::tests::backlog_grant_ticks_obey_the_same_alternation ... ok +test server::batch::speculative_slice::tests::grant_expiry_binds_only_under_contention ... ok +test server::batch::speculative_slice::tests::grant_order_escalates_overdue_entries_over_lanes ... ok +test server::batch::speculative_slice::tests::grant_order_is_priority_lane_first_then_fifo ... ok +test server::batch::speculative_slice::tests::grant_order_skip_cap_bounds_starvation_under_high_lane_stream ... ok +test server::batch::speculative_slice::tests::grant_rounds_env_default_custom_zero_and_garbage ... ok +test server::batch::speculative_slice::tests::slice_alternates_strictly_with_classic_work ... ok +test server::batch::speculative_slice::tests::slice_takes_every_tick_without_classic_work ... ok +test server::batch::speculative_slice::tests::slice_takes_tick_after_classic_action ... ok +test server::batch::speculative_slice::tests::tick_slice_env_gate_default_on_and_off_values ... ok +test server::batch::speculative_slice_tests::rotation_budget_one_interleaves_strictly_per_slice ... ok +test server::batch::speculative_slice_tests::rotation_cancelled_parked_job_resolves_without_wedging ... ok +test server::batch::speculative_slice_tests::rotation_cancelled_waiter_is_skipped_without_wedging ... ok +test server::batch::speculative_slice_tests::rotation_declined_waiter_at_promotion_routes_to_classic ... ok +test server::batch::speculative_slice_tests::rotation_shares_the_slot_and_preserves_stream_parity ... ok +test server::batch::speculative_slice_tests::rotation_skip_cap_prevents_high_lane_starvation ... ok +test server::batch::speculative_slice_tests::rotation_uncontended_single_request_never_parks ... ok +test server::batch::speculative_slice_tests::slice_driver_cancel_between_slices_finishes_without_another_round ... ok +test server::batch::speculative_slice_tests::slice_driver_commits_identical_stream_to_run_to_completion ... ok +test server::batch::speculative_slice_tests::slice_driver_probe_rounds_run_in_first_slices ... ok +test server::batch::speculative_slice_tests::slice_driver_rearms_drafter_once_per_round ... ok +test server::batch::speculative_slice_tests::slice_driver_streams_tokens_per_round_not_in_a_lump ... ok +test server::batch::speculative_slice_tests::the_done_result_carries_the_acceptance_counters_of_a_drafted_request ... ok +test server::batch::speculative_slice_tests::the_done_result_reports_no_acceptance_for_an_undrafted_finish ... ok +test server::batch::stop_matcher::tests::earliest_of_multiple_stops_wins ... ok +test server::batch::stop_matcher::tests::empty_stop_strings_are_dropped ... ok +test server::batch::stop_matcher::tests::held_tail_flushed_on_natural_end ... ok +test server::batch::stop_matcher::tests::matches_apply_stop_sequences_for_all_chunkings ... ok +test server::batch::stop_matcher::tests::no_stops_is_passthrough ... ok +test server::batch::stop_matcher::tests::overlapping_repeats_match_first_occurrence ... ok +test server::batch::stop_matcher::tests::partial_false_alarm_is_flushed ... ok +test server::batch::stop_matcher::tests::push_after_match_is_inert ... ok +test server::batch::stop_matcher::tests::stop_at_very_start_emits_nothing ... ok +test server::batch::stop_matcher::tests::stop_split_across_pieces ... ok +test server::batch::stop_matcher::tests::stop_within_single_piece ... ok +test server::batch::stop_matcher::tests::streamed_concatenation_never_leaks_a_partial_match ... ok +test server::batch::stop_matcher::tests::unicode_partial_does_not_split_codepoint ... ok +test server::batch::stop_matcher::tests::unicode_stop_string ... ok +test server::batch::stop_sequence_tests::a_match_on_the_last_budgeted_token_reports_stop_not_length ... ok +test server::batch::stop_sequence_tests::a_multibyte_stream_is_truncated_on_character_boundaries ... ok +test server::batch::stop_sequence_tests::a_stop_string_truncates_the_text_and_excludes_the_match ... ok +test server::batch::stop_sequence_tests::eviction_reset_keeps_the_stop_strings_and_drops_the_progress ... ok +test server::batch::stop_sequence_tests::streamed_chunks_equal_the_non_streaming_text_at_every_boundary ... ok +test server::batch::stop_sequence_tests::the_finish_reason_separates_word_eos_and_limit ... ok +test server::batch::stop_sequence_tests::the_matched_stop_string_reaches_the_result ... ok +test server::batch::stop_sequence_tests::without_stop_strings_nothing_is_held_or_truncated ... ok +test server::batch::tick_policy::tick_policy_tests::a_freshly_parked_prefill_starts_its_wait_at_zero ... ok +test server::batch::tick_policy::tick_policy_tests::a_parked_chunked_prefill_is_never_starved_by_a_live_decode_batch ... ok +test server::batch::tick_policy::tick_policy_tests::a_speculative_slice_cannot_starve_the_parked_prefill ... ok +test server::batch::tick_policy::tick_policy_tests::default_policy_differs_from_pre_908_only_where_the_grant_fires ... ok +test server::batch::tick_policy::tick_policy_tests::grant_counter_transitions_are_exhaustively_accounted ... ok +test server::batch::tick_policy::tick_policy_tests::grant_disabled_is_identical_to_the_pre_908_policy ... ok +test server::batch::tick_policy::tick_policy_tests::grant_interval_zero_restores_the_pre_1011_fixed_point ... ok +test server::batch::tick_policy::tick_policy_tests::mixed_step_advances_both_workloads_every_tick ... ok +test server::batch::tick_policy::tick_policy_tests::mixed_step_defaults_off ... ok +test server::batch::tick_policy::tick_policy_tests::mixed_step_falls_back_to_prefill_when_batch_is_empty ... ok +test server::batch::tick_policy::tick_policy_tests::mixed_step_off_never_selects_mixed_step ... ok +test server::batch::tick_policy::tick_policy_tests::mixed_step_on_differs_only_on_the_chunked_interleave_branch ... ok +test server::batch::tick_policy::tick_policy_tests::mixed_step_opt_in_values ... ok +test server::batch::tick_policy::tick_policy_tests::prefill_grant_interval_cli_overrides_env ... ok +test server::batch::tick_policy::tick_policy_tests::prefill_grant_interval_env_parsing ... ok +test server::batch::tick_policy::tick_policy_tests::speculative_round_outranks_a_due_grant ... ok +test server::batch::tick_policy::tick_policy_tests::speculative_round_outranks_mixed_step ... ok +test server::batch::tick_policy::tick_policy_tests::tick_policy_counters_reach_the_snapshot ... ok +test server::batch::tick_policy::tick_policy_tests::yielded_speculative_slice_falls_through_to_mixed_step ... ok +test server::batch::xla_audio_preprocess::tests::bounded_result_handoff_backpressures_worker_and_retains_reservations ... ok +test server::batch::xla_audio_preprocess::tests::host_and_prepared_result_limits_reject_without_leaking_reservations ... ok +test server::batch::xla_audio_preprocess::tests::panic_and_oversize_reject_only_the_affected_request ... ok +test server::batch::xla_audio_preprocess::tests::queue_and_feature_completion_are_cancellable_without_leaks ... ok +test server::batch::xla_audio_preprocess::tests::queue_depth_and_queued_memory_are_bounded_and_released_on_full ... ok +test server::batch::xla_audio_preprocess::tests::single_worker_preserves_fifo_and_records_separate_audio_metrics ... ok +test server::batch::xla_audio_preprocess::tests::source_and_normalized_samples_and_effective_prefill_are_distinct ... ok +test server::chat_request::reasoning_content_tests::echoed_reasoning_content_is_forwarded_under_both_spellings ... ok +test server::chat_request::reasoning_content_tests::jamba_content_only_echo_rewrites_the_earlier_user_turn ... ok +test server::chat_request::reasoning_content_tests::jamba_history_boundary_prefixes_the_next_turn_when_reasoning_is_echoed ... ok +test server::chat_request::reasoning_content_tests::jamba_primed_think_splits_on_close_and_stays_reasoning_when_truncated ... ok +test server::chat_request::reasoning_content_tests::template_reading_either_spelling_renders_the_trace_once ... ok +test server::chat_request::tests::a_non_boolean_cache_prompt_in_extra_body_is_ignored ... ok +test server::chat_request::tests::a_request_with_no_trailing_assistant_message_is_unaffected_by_the_flag ... ok +test server::chat_request::tests::a_top_level_cache_prompt_wins_over_extra_body ... ok +test server::chat_request::tests::a_trailing_assistant_message_is_continued_when_prefill_is_on ... ok +test server::chat_request::tests::an_absent_cache_prompt_is_not_the_same_as_true ... ok +test server::chat_request::tests::app_state_refuses_the_kimi_k3_native_chat_format_when_control_ids_are_incomplete ... ok +test server::chat_request::tests::app_state_renders_the_kimi_k3_native_chat_format_when_control_ids_are_complete ... ok +test server::chat_request::tests::assistant_reasoning_reaches_prompt_when_preserve_thinking_true ... ok +test server::chat_request::tests::assistant_reasoning_stripped_when_preserve_thinking_false_default ... ok +test server::chat_request::tests::build_chat_messages_flattens_text_parts ... ok +test server::chat_request::tests::build_raw_json_messages_emits_empty_content_for_missing_field ... ok +test server::chat_request::tests::build_raw_json_messages_includes_tool_fields ... ok +test server::chat_request::tests::build_raw_json_messages_leaves_json_scalar_or_array_arguments_as_string ... ok +test server::chat_request::tests::build_raw_json_messages_leaves_malformed_arguments_as_string ... ok +test server::chat_request::tests::build_raw_json_messages_leaves_non_object_tool_call_arguments_as_string ... ok +test server::chat_request::tests::build_raw_json_messages_normalizes_empty_or_whitespace_arguments_to_empty_object ... ok +test server::chat_request::tests::build_raw_json_messages_normalizes_null_arguments_to_empty_object ... ok +test server::chat_request::tests::build_raw_json_messages_parses_tool_call_arguments_into_object ... ok +test server::chat_request::tests::cache_prompt_resolves_from_all_three_carriers ... ok +test server::chat_request::tests::chat_request_drops_temp_files_on_completion ... ok +test server::chat_request::tests::clip_warmup_target_keeps_only_what_any_next_turn_reproduces ... ok +test server::chat_request::tests::deserialize_message_with_tool_calls ... ok +test server::chat_request::tests::deserialize_request_tool_choice_specific_function ... ok +test server::chat_request::tests::deserialize_request_tool_choice_string ... ok +test server::chat_request::tests::deserialize_request_with_both_prompt_cache_key_and_user ... ok +test server::chat_request::tests::deserialize_request_with_extra_body ... ok +test server::chat_request::tests::deserialize_request_with_flattened_openai_extra_body_field ... ok +test server::chat_request::tests::deserialize_request_with_flattened_openai_extra_body_prompt_cache_key ... ok +test server::chat_request::tests::deserialize_request_with_nested_extra_body_prompt_cache_key ... ok +test server::chat_request::tests::deserialize_request_with_tools ... ok +test server::chat_request::tests::deserialize_request_with_top_level_chat_template_kwargs ... ok +test server::chat_request::tests::deserialize_request_with_top_level_prompt_cache_key ... ok +test server::chat_request::tests::deserialize_request_with_top_level_user ... ok +test server::chat_request::tests::deserialize_request_without_tools ... ok +test server::chat_request::tests::deserialize_tool_call_request_without_assistant_content ... ok +test server::chat_request::tests::effective_input_accepts_audio_only_request ... ok +test server::chat_request::tests::effective_input_accepts_content_list_with_one_non_whitespace_text_among_whitespace_ones ... ok +test server::chat_request::tests::effective_input_accepts_history_with_real_content_even_when_last_message_is_empty ... ok +test server::chat_request::tests::effective_input_accepts_image_only_request ... ok +test server::chat_request::tests::effective_input_accepts_message_with_only_non_empty_reasoning ... ok +test server::chat_request::tests::effective_input_accepts_message_with_only_tool_calls ... ok +test server::chat_request::tests::effective_input_accepts_normal_multi_turn_text_conversation ... ok +test server::chat_request::tests::effective_input_accepts_video_only_request ... ok +test server::chat_request::tests::effective_input_rejects_content_list_with_only_an_empty_text_item ... ok +test server::chat_request::tests::effective_input_rejects_content_list_with_several_whitespace_only_text_items ... ok +test server::chat_request::tests::effective_input_rejects_empty_content_parts_list ... ok +test server::chat_request::tests::effective_input_rejects_empty_messages_array ... ok +test server::chat_request::tests::effective_input_rejects_image_url_that_is_itself_empty ... ok +test server::chat_request::tests::effective_input_rejects_input_audio_with_empty_data ... ok +test server::chat_request::tests::effective_input_rejects_message_with_empty_tool_calls_array ... ok +test server::chat_request::tests::effective_input_rejects_message_with_whitespace_only_reasoning ... ok +test server::chat_request::tests::effective_input_rejects_single_empty_string_content ... ok +test server::chat_request::tests::effective_input_rejects_whitespace_only_content ... ok +test server::chat_request::tests::effective_tools_narrows_to_named_function ... ok +test server::chat_request::tests::empty_prompt_cache_key_falls_back_to_user ... ok +test server::chat_request::tests::flattened_openai_extra_body_preserve_thinking_reaches_request_kwargs ... ok +test server::chat_request::tests::h1_fallback_preserves_think_blocks_when_preserve_thinking_true ... ok +test server::chat_request::tests::h1_fallback_strips_think_blocks_when_preserve_thinking_false ... ok +test server::chat_request::tests::has_video_urls_agrees_with_video_urls ... ok +test server::chat_request::tests::history_render_is_a_prefix_of_the_next_turns_prompt ... ok +test server::chat_request::tests::history_render_is_absent_for_multimodal_requests ... ok +test server::chat_request::tests::history_render_is_absent_when_the_model_cannot_reuse_snapshots ... ok +test server::chat_request::tests::history_render_is_absent_when_the_prompt_cache_is_off ... ok +test server::chat_request::tests::history_render_is_absent_when_the_template_render_falls_back ... ok +test server::chat_request::tests::kimi_k3_declares_tools_under_tool_choice_none ... ok +test server::chat_request::tests::llava_server_render_preserves_image_marker_and_exact_prompt ... ok +test server::chat_request::tests::mixed_audio_messages_preserve_global_media_order_across_turns ... ok +test server::chat_request::tests::named_tool_choice_changes_rendered_prompt_and_template_sig ... ok +test server::chat_request::tests::next_turn_history_declines_for_multimodal_requests ... ok +test server::chat_request::tests::next_turn_history_declines_without_a_usable_reply ... ok +test server::chat_request::tests::next_turn_history_extends_this_turns_history_with_the_reply ... ok +test server::chat_request::tests::no_prefill_assistant_answers_the_trailing_message_instead ... ok +test server::chat_request::tests::per_request_overrides_server_default_for_single_key ... ok +test server::chat_request::tests::prefix_stability_across_turns_when_preserve_thinking_true ... ok +test server::chat_request::tests::prepare_chat_request_falls_back_to_simple_prompt_on_template_error ... ok +test server::chat_request::tests::prepare_chat_request_no_longer_owns_the_combined_audio_video_refusal ... ok +test server::chat_request::tests::prepare_chat_request_rejects_image_cardinality_mismatch_and_recovers ... ok +test server::chat_request::tests::prepare_chat_request_renders_tool_call_arguments_as_mapping ... ok +test server::chat_request::tests::prepare_chat_request_tojson_templates_render_normalized_arguments ... ok +test server::chat_request::tests::prepare_chat_request_uses_template_output_and_extracts_images ... ok +test server::chat_request::tests::preserve_thinking_defaulting_logs_once_per_session ... ok +test server::chat_request::tests::preserve_thinking_defaulting_logs_per_distinct_session ... ok +test server::chat_request::tests::preserve_thinking_false_strips_all_prior_think_blocks ... ok +test server::chat_request::tests::preserve_thinking_true_retains_all_think_blocks ... ok +test server::chat_request::tests::preserve_thinking_via_extra_body_flat_dashscope_works ... ok +test server::chat_request::tests::preserve_thinking_via_extra_body_nested_works ... ok +test server::chat_request::tests::prompt_cache_key_top_level_wins_over_extra_body ... ok +test server::chat_request::tests::prompt_cache_off_preserves_pre_422_behavior ... ok +test server::chat_request::tests::prompt_cache_on_defaults_preserve_thinking_to_true ... ok +test server::chat_request::tests::prompt_cache_on_respects_explicit_false_override ... ok +test server::chat_request::tests::prompt_cache_on_respects_explicit_false_via_extra_body ... ok +test server::chat_request::tests::prompt_cache_on_respects_server_default_false ... ok +test server::chat_request::tests::queued_video_decode_returns_without_decoding_once_cancelled ... ok +test server::chat_request::tests::raw_template_content_normalizes_openai_media_types_without_payloads ... ok +test server::chat_request::tests::reasoning_field_routes_request_through_raw_json_path ... ok +test server::chat_request::tests::reasoning_not_double_injected_when_content_has_inline_think ... ok +test server::chat_request::tests::rolling_checkpoint_ignores_pseudo_user_tool_response_anchor ... ok +test server::chat_request::tests::rolling_checkpoint_tolerates_tool_turn_in_middle ... ok +test server::chat_request::tests::server_default_preserve_thinking_applies_when_request_empty ... ok +test server::chat_request::tests::session_key_collapses_to_anonymous_sentinel_without_hints ... ok +test server::chat_request::tests::the_two_renderings_differ_and_are_not_reachable_from_each_other ... ok +test server::chat_request::tests::tool_call_message_history_round_trips_and_digests ... ok +test server::chat_request::tests::tool_choice_instruction_appends_to_last_text_user_message ... ok +test server::chat_request::tests::tool_choice_instruction_appends_to_system_message ... ok +test server::chat_request::tests::tool_choice_instruction_inserts_system_when_no_system_and_no_text_user ... ok +test server::chat_request::tests::tool_choice_instruction_wording_is_fixed ... ok +test server::chat_request::tests::top_level_wins_over_extra_body_when_both_present ... ok +test server::chat_request::tests::two_trailing_assistant_messages_are_refused_with_upstreams_wording ... ok +test server::chat_request::tests::video_expansion_cancelled_after_the_first_clip_skips_the_second ... ok +test server::chat_request::tests::video_expansion_cancelled_before_the_call_touches_no_clip ... ok +test server::chat_request::tests::video_expansion_changes_mm_digest_when_frames_change ... ok +test server::chat_request::tests::video_expansion_decodes_every_clip_when_not_cancelled ... ok +test server::chat_request::tests::video_expansion_is_a_no_op_without_video_parts ... ok +test server::chat_request::tests::video_expansion_preserves_surrounding_images ... ok +test server::chat_request::tests::video_expansion_refuses_more_clips_than_the_image_budget_before_decoding ... ok +test server::chat_request::tests::video_expansion_skipped_for_native_video_model ... ok +test server::chat_request::tests::video_frame_budget_refusal_names_the_frames ... ok +test server::chat_request::tests::video_frames_lead_text_names_the_frame_count ... ok +test server::chat_request::tests::video_frames_render_for_an_imageless_template_is_the_flattened_turn ... ok +test server::chat_request::tests::video_part_expands_through_a_real_clip ... ignored, needs ffmpeg 5.0+ on PATH +test server::chat_request::tests::video_part_expands_to_ordered_image_parts_with_lead_text ... ok +test server::chat_request::tests::with_tool_choice_instruction_leaves_unforced_requests_untouched ... ok +test server::chat_template::tests::a_declared_template_is_never_shadowed_by_the_built_in ... ok +test server::chat_template::tests::a_florence2_checkpoint_renders_the_task_prompt_verbatim ... ok +test server::chat_template::tests::a_florence2_typed_content_list_renders_only_the_text_part ... ok +test server::chat_template::tests::a_nemotron_parse_checkpoint_template_is_replaced_by_the_text_only_builtin ... ok +test server::chat_template::tests::a_system_turn_is_rendered_before_the_user_turn_without_doubling_the_marker ... ok +test server::chat_template::tests::a_template_less_jina_vlm_checkpoint_falls_back_to_its_own_template ... ok +test server::chat_template::tests::a_typed_image_content_list_renders_the_image_marker_in_place ... ok +test server::chat_template::tests::an_unknown_template_less_model_still_reports_no_template ... ok +test server::chat_template::tests::apply_raw_with_kwargs_honours_default_enable_thinking ... ok +test server::chat_template::tests::bare_thinking_alias_honours_default_enable_thinking_when_kwarg_absent ... ok +test server::chat_template::tests::bare_thinking_alias_is_noop_for_other_model_families ... ok +test server::chat_template::tests::bare_thinking_alias_mirrors_enable_thinking_false ... ok +test server::chat_template::tests::bare_thinking_alias_mirrors_enable_thinking_true ... ok +test server::chat_template::tests::bare_thinking_alias_reaches_apply_raw_with_kwargs_too ... ok +test server::chat_template::tests::builtin_template_selection_follows_model_type_normalization ... ok +test server::chat_template::tests::cached_template_is_shared_by_typed_and_raw_render_paths ... ok +test server::chat_template::tests::cached_template_is_thread_safe_and_compiles_once_under_concurrent_renders ... ok +test server::chat_template::tests::cached_template_parse_failure_is_not_retried_or_misclassified ... ok +test server::chat_template::tests::cached_template_performance_smoke_reports_delta ... ignored, micro-benchmark; run explicitly with --ignored --nocapture +test server::chat_template::tests::cached_template_preserves_rejection_sentinel_and_engine_failure_split ... ok +test server::chat_template::tests::cached_template_render_is_byte_identical_to_fresh_environment_render ... ok +test server::chat_template::tests::cloned_processor_reuses_the_same_cached_template ... ok +test server::chat_template::tests::deepseek_style_tools_guard_stays_false_without_tools ... ok +test server::chat_template::tests::default_enable_thinking_defaults_to_false_for_back_compat ... ok +test server::chat_template::tests::derived_sentinel_keeps_811_precedence ... ok +test server::chat_template::tests::explicit_thinking_kwarg_overrides_derived_alias ... ok +test server::chat_template::tests::explicit_thinking_mode_kwarg_overrides_derived_alias ... ok +test server::chat_template::tests::forced_tool_call_format_detects_hermes_marker ... ok +test server::chat_template::tests::forced_tool_call_format_detects_mistral_nemo_and_llama3_markers ... ok +test server::chat_template::tests::forced_tool_call_format_is_none_for_atem_template ... ok +test server::chat_template::tests::forced_tool_call_format_is_none_for_xml_body_dialects_and_plain_templates ... ok +test server::chat_template::tests::gemma4_default_enable_thinking_true_still_renders_bare_no_patch ... ok +test server::chat_template::tests::gemma4_default_renders_closed_thinking_channel ... ok +test server::chat_template::tests::gemma4_generation_prompt_matches_transformers_for_all_thinking_values ... ok +test server::chat_template::tests::generic_default_is_true_only_for_the_fallback_template ... ok +test server::chat_template::tests::history_render_leaves_tools_undefined_without_tools ... ok +test server::chat_template::tests::inkling_template_renders_tool_declarations ... ok +test server::chat_template::tests::is_gemma4_thinking_channel_template_detects_gemma4_shape ... ok +test server::chat_template::tests::issue_819_deepseek_v4_gate_opens_from_a_derived_sentinel ... ok +test server::chat_template::tests::issue_819_real_checkpoint_template_opens_the_thinking_branch ... ok +test server::chat_template::tests::kwargs_enable_thinking_false_overrides_default_true ... ok +test server::chat_template::tests::laguna_template_renders_tool_call_history ... ok +test server::chat_template::tests::llama_style_tools_guard_stays_false_without_tools ... ok +test server::chat_template::tests::local_checkpoint_templates_render_the_transformers_prompt_without_tools ... ignored, requires local models/ directory; run with --ignored +test server::chat_template::tests::m1_multiple_reserved_key_overrides_all_filtered_correctly ... ok +test server::chat_template::tests::malformed_or_untyped_standalone_template_falls_back_to_legacy_config ... ok +test server::chat_template::tests::nemotron_style_tools_guard_renders_without_error_when_undefined ... ok +test server::chat_template::tests::non_gemma_thinking_templates_are_unaffected ... ok +test server::chat_template::tests::set_default_enable_thinking_flips_default_for_thinking_models ... ok +test server::chat_template::tests::standalone_typed_template_overrides_legacy_string_template ... ok +test server::chat_template::tests::supports_audio_content_detects_audio_branch ... ok +test server::chat_template::tests::template_rejection_message_caps_at_512_chars ... ok +test server::chat_template::tests::template_rejection_message_filters_control_characters ... ok +test server::chat_template::tests::template_rejection_message_multibyte_boundary_does_not_panic ... ok +test server::chat_template::tests::test_all_local_model_templates_render ... ignored, requires local models/ directory; run with --ignored +test server::chat_template::tests::test_apply_raw_with_kwargs_exposes_preserve_thinking ... ok +test server::chat_template::tests::test_apply_raw_with_tools ... ok +test server::chat_template::tests::test_apply_with_kwargs_allows_overriding_enable_thinking ... ok +test server::chat_template::tests::test_apply_with_kwargs_exposes_preserve_thinking ... ok +test server::chat_template::tests::test_apply_with_kwargs_passes_through_arbitrary_keys ... ok +test server::chat_template::tests::test_apply_with_tools_none_still_works ... ok +test server::chat_template::tests::test_apply_with_tools_passes_to_template ... ok +test server::chat_template::tests::test_chatml_template ... ok +test server::chat_template::tests::test_default_template ... ok +test server::chat_template::tests::test_dict_get_method_missing_key_is_falsy ... ok +test server::chat_template::tests::test_dict_get_method_missing_key_is_none_and_defined ... ok +test server::chat_template::tests::test_dict_get_method_or_chain ... ok +test server::chat_template::tests::test_dict_get_method_present_key ... ok +test server::chat_template::tests::test_dict_get_method_preserves_present_null_and_falsy_values ... ok +test server::chat_template::tests::test_dict_get_method_with_default ... ok +test server::chat_template::tests::test_gemma4_template_renders ... ok +test server::chat_template::tests::test_kwargs_cannot_flip_reserved_add_generation_prompt ... ok +test server::chat_template::tests::test_kwargs_cannot_override_reserved_messages_key ... ok +test server::chat_template::tests::test_kwargs_cannot_override_reserved_tools_key ... ok +test server::chat_template::tests::test_map_items_iteration ... ok +test server::chat_template::tests::test_pathological_template_is_bounded_by_fuel ... ok +test server::chat_template::tests::test_qwen3_template_thinking_chain_renders ... ok +test server::chat_template::tests::test_string_lstrip_rstrip ... ok +test server::chat_template::tests::test_string_replace ... ok +test server::chat_template::tests::test_string_startswith_endswith ... ok +test server::chat_template::tests::test_string_strip_default_whitespace ... ok +test server::chat_template::tests::test_string_strip_with_chars ... ok +test server::chat_template::tests::test_supports_tools_caching ... ok +test server::chat_template::tests::test_supports_tools_detection ... ok +test server::chat_template::tests::test_tojson_filter_serializes_tools_into_prompt ... ok +test server::chat_template::tests::test_tool_parameter_key_order_preserved_through_render ... ok +test server::chat_template::tests::thinking_mode_alias_honours_default_enable_thinking_when_kwarg_absent ... ok +test server::chat_template::tests::thinking_mode_alias_injects_enabled_when_thinking_enabled ... ok +test server::chat_template::tests::thinking_mode_alias_injects_nothing_when_thinking_disabled ... ok +test server::chat_template::tests::thinking_mode_alias_is_noop_for_other_model_families ... ok +test server::chat_template::tests::thinking_mode_alias_reaches_apply_raw_with_kwargs_too ... ok +test server::chat_template::tests::thinking_mode_sentinel_falls_back_when_the_gate_is_not_readable ... ok +test server::chat_template::tests::tojson_default_matches_python_json_dumps ... ok +test server::chat_template::tests::tojson_does_not_html_escape_tool_schemas ... ok +test server::chat_template::tests::tojson_ensure_ascii_defaults_to_false_like_transformers ... ok +test server::chat_template::tests::tojson_ensure_ascii_escapes_non_ascii ... ok +test server::chat_template::tests::tojson_indent_uses_python_item_separators ... ok +test server::chat_template::tests::tojson_rejects_unknown_keyword_arguments ... ok +test server::chat_template::tests::tojson_sort_keys_and_compact_separators ... ok +test server::chat_template::tests::tokenizer_config_only_legacy_template_keeps_existing_precedence ... ok +test server::chat_template::tests::truncate_chars_filters_control_characters ... ok +test server::chat_template::tests::truncate_key_for_log_exactly_64_chars_unchanged ... ok +test server::chat_template::tests::truncate_key_for_log_long_key_gets_ellipsis ... ok +test server::chat_template::tests::truncate_key_for_log_multibyte_chars_counted_by_char ... ok +test server::chat_template::tests::truncate_key_for_log_short_key_unchanged ... ok +test server::chat_template::tests::wants_bare_thinking_alias_detects_deepseek_v32_shape ... ok +test server::chat_template::tests::wants_thinking_mode_alias_detects_identifier ... ok +test server::chat_template_json::tests::compact_separators_and_sort_keys_apply_recursively ... ok +test server::chat_template_json::tests::control_characters_use_the_python_escape_table ... ok +test server::chat_template_json::tests::deeply_nested_values_are_refused_rather_than_overflowing_the_stack ... ok +test server::chat_template_json::tests::default_separators_have_the_python_spaces ... ok +test server::chat_template_json::tests::depth_limit_leaves_headroom_over_the_request_parsers_own_ceiling ... ok +test server::chat_template_json::tests::empty_containers_stay_on_one_line_under_indent ... ok +test server::chat_template_json::tests::ensure_ascii_escapes_non_ascii_and_surrogate_pairs ... ok +test server::chat_template_json::tests::every_finite_float_round_trips_through_the_repr ... ok +test server::chat_template_json::tests::explicit_separators_win_over_the_indent_default ... ok +test server::chat_template_json::tests::html_characters_are_not_escaped ... ok +test server::chat_template_json::tests::indent_switches_to_python_item_separators ... ok +test server::chat_template_json::tests::indent_true_means_two_spaces ... ok +test server::chat_template_json::tests::indent_width_is_clamped_instead_of_emitting_unbounded_padding ... ok +test server::chat_template_json::tests::integers_and_floats_are_kept_apart ... ok +test server::chat_template_json::tests::malformed_separators_are_rejected ... ok +test server::chat_template_json::tests::map_insertion_order_is_preserved_by_default ... ok +test server::chat_template_json::tests::non_string_object_keys_are_coerced_like_python ... ok +test server::chat_template_json::tests::null_and_bool_scalars_match_python ... ok +test server::chat_template_json::tests::python_float_repr_matches_cpython_for_the_threshold_cases ... ok +test server::chat_template_json::tests::separators_arity_is_checked_before_the_sequence_is_materialized ... ok +test server::chat_template_json::tests::unknown_keyword_arguments_are_still_rejected ... ok +test server::chat_template_kwargs::tests::env_fallback_cli_none_takes_env ... ok +test server::chat_template_kwargs::tests::env_fallback_parses_identically_to_cli ... ok +test server::chat_template_kwargs::tests::extract_empty_inputs_yield_empty_kwargs ... ok +test server::chat_template_kwargs::tests::extract_extra_body_flat_is_last_resort ... ok +test server::chat_template_kwargs::tests::extract_extra_body_flat_only_recognizes_preserve_thinking ... ok +test server::chat_template_kwargs::tests::extract_extra_body_flat_requires_bool ... ok +test server::chat_template_kwargs::tests::extract_extra_body_nested_wins_over_flat ... ok +test server::chat_template_kwargs::tests::extract_top_level_wins_over_extra_body_flat ... ok +test server::chat_template_kwargs::tests::extract_top_level_wins_over_extra_body_nested ... ok +test server::chat_template_kwargs::tests::from_json_str_empty_is_empty ... ok +test server::chat_template_kwargs::tests::from_json_str_multi_key ... ok +test server::chat_template_kwargs::tests::from_json_str_parses_object ... ok +test server::chat_template_kwargs::tests::from_json_str_rejects_invalid_json ... ok +test server::chat_template_kwargs::tests::from_json_str_rejects_non_object ... ok +test server::chat_template_kwargs::tests::merge_empty_request_keeps_server_defaults ... ok +test server::chat_template_kwargs::tests::merge_no_server_and_empty_request_is_empty ... ok +test server::chat_template_kwargs::tests::merge_no_server_default_uses_request ... ok +test server::chat_template_kwargs::tests::merge_per_request_overrides_per_key ... ok +test server::chat_template_kwargs::tests::preserve_thinking_accessor_ignores_non_bool_values ... ok +test server::chat_template_kwargs::tests::resolve_server_default_empty_string_is_none ... ok +test server::chat_template_kwargs::tests::resolve_server_default_valid_object_returns_some ... ok +test server::chat_template_kwargs::tests::rolling_checkpoint_no_user_turns_strips_nothing ... ok +test server::chat_template_kwargs::tests::rolling_checkpoint_pseudo_user_tool_response_does_not_anchor ... ok +test server::chat_template_kwargs::tests::rolling_checkpoint_single_turn_strips_nothing ... ok +test server::chat_template_kwargs::tests::rolling_checkpoint_three_turn_conversation ... ok +test server::chat_template_kwargs::tests::rolling_checkpoint_tool_call_turn_does_not_anchor ... ok +test server::chat_template_kwargs::tests::strip_think_block_malformed_open_without_close_preserves_content ... ok +test server::chat_template_kwargs::tests::strip_think_block_multiline_block ... ok +test server::chat_template_kwargs::tests::strip_think_block_preserves_content_before_block ... ok +test server::chat_template_kwargs::tests::strip_think_block_removes_block_and_surrounding_newlines ... ok +test server::chat_template_kwargs::tests::strip_think_block_without_block_returns_borrowed ... ok +test server::cli_input::tests::a_scaled_adapter_under_tensor_parallelism_is_refused ... ok +test server::cli_input::tests::a_single_adapter_under_tensor_parallelism_is_still_accepted ... ok +test server::cli_input::tests::adaptive_decay_flag_clamps_to_upstreams_domain ... ok +test server::cli_input::tests::b10621_cache_prompt_cannot_reenable_over_the_native_disable ... ok +test server::cli_input::tests::b10621_cache_ram_sets_the_prompt_cache_budget_in_bytes ... ok +test server::cli_input::tests::b10621_cache_ram_zero_disables_the_store ... ok +test server::cli_input::tests::b10621_lora_spellings_select_the_runtime_channel ... ok +test server::cli_input::tests::b10621_no_cache_prompt_disables_the_store ... ok +test server::cli_input::tests::b10621_no_cont_batching_pins_the_decode_width_without_removing_the_scheduler ... ok +test server::cli_input::tests::b10621_positive_cache_reuse_fails_startup_configuration ... ok +test server::cli_input::tests::byte_fragments_cli_overrides_env ... ok +test server::cli_input::tests::byte_fragments_env_var_accepts_numeric_forms ... ok +test server::cli_input::tests::byte_fragments_env_var_feeds_flag_true ... ok +test server::cli_input::tests::byte_fragments_env_var_unparseable_is_ignored ... ok +test server::cli_input::tests::cache_type_k_cli_wins_over_env ... ok +test server::cli_input::tests::cache_type_k_empty_env_var_is_ignored ... ok +test server::cli_input::tests::cache_type_k_env_var_applied_when_cli_absent ... ok +test server::cli_input::tests::cache_type_v_cli_wins_over_env ... ok +test server::cli_input::tests::cache_type_v_env_var_applied_when_cli_absent ... ok +test server::cli_input::tests::cli_overrides_env ... ok +test server::cli_input::tests::cors_credentials_env_can_disable_the_enabled_by_default_flag ... ok +test server::cli_input::tests::cors_credentials_env_can_enable_the_flag ... ok +test server::cli_input::tests::cors_credentials_env_is_overridden_by_an_explicit_flag ... ok +test server::cli_input::tests::env_var_feeds_parser ... ok +test server::cli_input::tests::env_without_cli_parses ... ok +test server::cli_input::tests::grammar_flags::a_malformed_json_schema_flag_fails_startup ... ok +test server::cli_input::tests::grammar_flags::no_flag_leaves_the_server_default_unset ... ok +test server::cli_input::tests::grammar_flags::the_grammar_flag_becomes_the_server_default_grammar ... ok +test server::cli_input::tests::grammar_flags::the_json_schema_flag_becomes_the_server_default_grammar ... ok +test server::cli_input::tests::init_without_apply_loads_at_zero_on_the_runtime_channel ... ok +test server::cli_input::tests::into_startup_config_accepts_valid_chat_template_kwargs_json ... ok +test server::cli_input::tests::into_startup_config_accepts_zero_and_typical_max_kv_size ... ok +test server::cli_input::tests::into_startup_config_builds_the_b10621_cors_policy ... ok +test server::cli_input::tests::into_startup_config_carries_every_api_key_source ... ok +test server::cli_input::tests::into_startup_config_detects_batch_size_conflict ... ok +test server::cli_input::tests::into_startup_config_empty_chat_template_kwargs_collapses_to_none ... ok +test server::cli_input::tests::into_startup_config_kv_cache_mode_default_is_fp16 ... ok +test server::cli_input::tests::into_startup_config_kv_cache_mode_from_legacy_flag ... ok +test server::cli_input::tests::into_startup_config_kv_cache_mode_from_split_flags ... ok +test server::cli_input::tests::into_startup_config_kv_cache_mode_unsupported_pair_errors ... ok +test server::cli_input::tests::into_startup_config_normalizes_edge_only_flags ... ok +test server::cli_input::tests::into_startup_config_pp_layers_none_by_default ... ok +test server::cli_input::tests::into_startup_config_prefers_the_mlxcel_allow_list_when_it_is_set ... ok +test server::cli_input::tests::into_startup_config_propagates_decode_storage_backend ... ok +test server::cli_input::tests::into_startup_config_propagates_image_limits ... ok +test server::cli_input::tests::into_startup_config_propagates_no_batch_flag ... ok +test server::cli_input::tests::into_startup_config_propagates_pp_layers ... ok +test server::cli_input::tests::into_startup_config_propagates_pp_micro_batch_size ... ok +test server::cli_input::tests::into_startup_config_propagates_reasoning_alias_field ... ok +test server::cli_input::tests::into_startup_config_rejects_an_unusable_api_prefix ... ok +test server::cli_input::tests::into_startup_config_rejects_below_min_max_kv_size ... ok +test server::cli_input::tests::into_startup_config_rejects_half_a_tls_configuration ... ok +test server::cli_input::tests::into_startup_config_rejects_malformed_chat_template_kwargs_json ... ok +test server::cli_input::tests::into_startup_config_rejects_non_object_chat_template_kwargs_json ... ok +test server::cli_input::tests::into_startup_config_rejects_overflowing_max_kv_size ... ok +test server::cli_input::tests::into_startup_config_resolves_batch_size_alias ... ok +test server::cli_input::tests::into_startup_config_splits_the_socket_and_decode_timeouts ... ok +test server::cli_input::tests::into_startup_config_uses_adaptive_defaults_without_an_override ... ok +test server::cli_input::tests::into_startup_config_uses_env_prefill_override_in_a_fresh_process ... ok +test server::cli_input::tests::kv_bits_cli_wins_when_env_differs ... ok +test server::cli_input::tests::kv_bits_env_applied_when_cli_absent ... ok +test server::cli_input::tests::kv_bits_no_conflict_when_env_and_cli_agree ... ok +test server::cli_input::tests::kv_cache_mode_default_is_fp16 ... ok +test server::cli_input::tests::kv_cache_mode_fp16_fp16_maps_to_fp16 ... ok +test server::cli_input::tests::kv_cache_mode_fp16_turbo4_asym_maps_to_turbo4asym ... ok +test server::cli_input::tests::kv_cache_mode_fp16_turbo4_delegated_maps_to_delegated ... ok +test server::cli_input::tests::kv_cache_mode_fp16_turbo4_maps_to_turbo4asym ... ok +test server::cli_input::tests::kv_cache_mode_int8_int8_maps_to_int8 ... ok +test server::cli_input::tests::kv_cache_mode_int8_turbo4_is_unsupported ... ok +test server::cli_input::tests::kv_cache_mode_k_defaults_to_fp16_when_unset ... ok +test server::cli_input::tests::kv_cache_mode_legacy_flag_sets_mode ... ok +test server::cli_input::tests::kv_cache_mode_legacy_int8_sets_int8 ... ok +test server::cli_input::tests::kv_cache_mode_legacy_unknown_value_errors ... ok +test server::cli_input::tests::kv_cache_mode_split_flags_take_precedence_over_legacy ... ok +test server::cli_input::tests::kv_cache_mode_turbo4_fp16_is_unsupported ... ok +test server::cli_input::tests::kv_cache_mode_turbo4_turbo4_maps_to_turbo4 ... ok +test server::cli_input::tests::kv_cache_mode_unknown_k_string_errors ... ok +test server::cli_input::tests::kv_cache_mode_unknown_v_string_errors ... ok +test server::cli_input::tests::kv_cache_mode_v_defaults_to_fp16_when_unset ... ok +test server::cli_input::tests::kv_group_size_no_conflict_when_env_and_cli_agree ... ok +test server::cli_input::tests::kv_quant_scheme_no_conflict_when_env_and_cli_agree ... ok +test server::cli_input::tests::kv_skip_last_layer_both_unparseable_keeps_cli_default ... ok +test server::cli_input::tests::kv_skip_last_layer_no_conflict_when_env_and_cli_agree ... ok +test server::cli_input::tests::kv_skip_last_layer_parseable_llama_applies ... ok +test server::cli_input::tests::kv_skip_last_layer_unparseable_llama_falls_through_to_mlxcel ... ok +test server::cli_input::tests::kv_unified_defaults_on_only_for_auto_parallel_without_explicit_batch_size ... ok +test server::cli_input::tests::kv_unified_startup_flags_override_the_auto_default ... ok +test server::cli_input::tests::llama_api_key_env_adds_to_the_cli_keys_rather_than_shadowing_them ... ok +test server::cli_input::tests::llama_api_key_env_alone_configures_a_key ... ok +test server::cli_input::tests::llama_arg_api_key_file_env_adds_to_the_cli_files ... ok +test server::cli_input::tests::llama_arg_cache_prompt_disables_the_prompt_cache ... ok +test server::cli_input::tests::llama_arg_cache_ram_is_read_in_mebibytes ... ok +test server::cli_input::tests::llama_arg_cont_batching_zero_pins_the_decode_width ... ok +test server::cli_input::tests::logit_bias_flag_parses_the_token_sign_bias_form ... ok +test server::cli_input::tests::lora_fuse_keeps_the_legacy_load_and_still_reports_the_adapter ... ok +test server::cli_input::tests::mirostat_flag_is_validated_to_the_declared_domain ... ok +test server::cli_input::tests::models_dir_with_a_model_argument_fails_startup_with_the_migration_map ... ok +test server::cli_input::tests::prompt_cache_capacity_cli_overrides_default ... ok +test server::cli_input::tests::prompt_cache_capacity_cli_wins_over_env ... ok +test server::cli_input::tests::prompt_cache_capacity_env_var_applied_when_cli_absent ... ok +test server::cli_input::tests::prompt_cache_cli_wins_over_env_for_enabled ... ok +test server::cli_input::tests::prompt_cache_defaults_round_trip_through_into_startup_config ... ok +test server::cli_input::tests::prompt_cache_disabled_cli_propagates_through ... ok +test server::cli_input::tests::prompt_cache_e2e_cli_capacity_bytes_flows_to_startup_config ... ok +test server::cli_input::tests::prompt_cache_enabled_env_var_accepts_numeric_one ... ok +test server::cli_input::tests::prompt_cache_enabled_env_var_sets_false ... ok +test server::cli_input::tests::prompt_cache_enabled_unparseable_env_var_ignored ... ok +test server::cli_input::tests::prompt_cache_llama_arg_cache_reuse_boolean_is_rejected ... ok +test server::cli_input::tests::prompt_cache_llama_arg_cache_reuse_positive_is_rejected ... ok +test server::cli_input::tests::prompt_cache_llama_arg_cache_reuse_zero_leaves_cache_enabled ... ok +test server::cli_input::tests::prompt_cache_max_entries_cli_overrides_default ... ok +test server::cli_input::tests::prompt_cache_max_entries_env_var_applied ... ok +test server::cli_input::tests::prompt_cache_min_prefix_cli_overrides_default ... ok +test server::cli_input::tests::prompt_cache_min_prefix_env_var_applied ... ok +test server::cli_input::tests::prompt_cache_mlxcel_env_does_not_hide_invalid_cache_reuse ... ok +test server::cli_input::tests::prompt_cache_snapshot_capacity_bytes_env_var_applied ... ok +test server::cli_input::tests::prompt_cache_snapshot_limits_cli_override_defaults ... ok +test server::cli_input::tests::prompt_cache_snapshot_limits_default_when_unset ... ok +test server::cli_input::tests::prompt_cache_snapshot_max_entries_env_var_applied ... ok +test server::cli_input::tests::prompt_cache_snapshot_ttl_env_var_applied ... ok +test server::cli_input::tests::prompt_cache_ttl_cli_overrides_default ... ok +test server::cli_input::tests::prompt_cache_ttl_env_var_applied ... ok +test server::cli_input::tests::reasoning_template_kwargs::a_flag_wins_over_the_same_key_from_chat_template_kwargs ... ok +test server::cli_input::tests::reasoning_template_kwargs::a_flag_writes_its_key_onto_an_absent_base ... ok +test server::cli_input::tests::reasoning_template_kwargs::a_per_request_kwarg_still_wins_over_both ... ok +test server::cli_input::tests::reasoning_template_kwargs::an_erase_removes_the_key_rather_than_setting_a_sentinel ... ok +test server::cli_input::tests::reasoning_template_kwargs::erasing_a_key_that_was_never_set_is_a_no_op ... ok +test server::cli_input::tests::reasoning_template_kwargs::no_flags_leaves_the_base_untouched ... ok +test server::cli_input::tests::resolve_compat_toggle_honors_disable_override ... ok +test server::cli_input::tests::resolve_max_kv_size_accepts_default_min ... ok +test server::cli_input::tests::resolve_max_kv_size_accepts_i32_max ... ok +test server::cli_input::tests::resolve_max_kv_size_accepts_typical_value ... ok +test server::cli_input::tests::resolve_max_kv_size_rejects_above_i32_max ... ok +test server::cli_input::tests::resolve_max_kv_size_rejects_below_min ... ok +test server::cli_input::tests::resolve_max_kv_size_zero_is_disabled ... ok +test server::cli_input::tests::resolve_prefill_chunk_size_batch_size_alias_takes_effect ... ok +test server::cli_input::tests::resolve_prefill_chunk_size_both_same_value_no_conflict ... ok +test server::cli_input::tests::resolve_prefill_chunk_size_explicit_prefill_wins_with_conflict ... ok +test server::cli_input::tests::resolve_prefill_chunk_size_no_batch_size_returns_prefill ... ok +test server::cli_input::tests::resolve_prefill_chunk_size_ubatch_sets_provided_flag ... ok +test server::cli_input::tests::resolve_seed_folds_into_b10621s_uint32_seed_space ... ok +test server::cli_input::tests::settings_cli_env_fallback_accepts_numeric_one ... ok +test server::cli_input::tests::settings_cli_explicit_cli_value_wins_over_env ... ok +test server::cli_input::tests::settings_cli_startup_config_defaults_off_and_propagates_enablement ... ok +test server::cli_input::tests::startup_config_prompt_cache_default_is_enabled ... ok +test server::cli_input::tests::startup_config_prompt_cache_disabled_produces_false_is_enabled ... ok +test server::cli_input::tests::store_byte_budgets_round_trip_through_into_startup_config ... ok +test server::cli_input::tests::the_native_capacity_flag_wins_over_cache_ram ... ok +test server::completion_control::tests::armed_entry_forces_and_sets_the_shared_flag ... ok +test server::completion_control::tests::cross_owner_control_is_indistinguishable_from_unknown ... ok +test server::completion_control::tests::guard_drop_unregisters ... ok +test server::completion_control::tests::unarmed_entry_reports_not_armed ... ok +test server::completion_control::tests::unknown_id_is_no_active_completion ... ok +test server::config::tests::kv_admission_watermark_parser_accepts_fractions_up_to_half ... ok +test server::config::tests::reasoning_alias_field_defaults_to_reasoning_and_parses_both_values ... ok +test server::config::tests::server_config_default_matches_llama_server_compatibility_defaults ... ok +test server::conversation_store::tests::append_creates_new_transcript ... ok +test server::conversation_store::tests::append_extends_existing_transcript ... ok +test server::conversation_store::tests::appending_existing_transcript_updates_running_total_and_lru_index ... ok +test server::conversation_store::tests::byte_only_eviction_runs_under_entry_cap ... ok +test server::conversation_store::tests::empty_append_is_noop ... ok +test server::conversation_store::tests::exact_byte_boundary_is_retained ... ok +test server::conversation_store::tests::extreme_budgets_do_not_overflow_or_preallocate_unbounded_capacity ... ok +test server::conversation_store::tests::lru_eviction_picks_least_recent ... ok +test server::conversation_store::tests::oversized_single_conversation_is_not_retained ... ok +test server::conversation_store::tests::running_total_stays_consistent_across_remove_and_ttl_sweep ... ok +test server::conversation_store::tests::simultaneous_count_and_byte_pressure_evicts_to_both_limits ... ok +test server::conversation_store::tests::ttl_sweep_drops_expired_conversation ... ok +test server::conversation_store::tests::zero_byte_budget_keeps_store_enabled_but_retains_nothing ... ok +test server::cors::cors_tests::a_disallowed_allow_list_origin_gets_no_header_on_a_real_route ... ok +test server::cors::cors_tests::a_header_value_with_a_newline_is_rejected_at_startup ... ok +test server::cors::cors_tests::a_normal_response_carries_allow_origin_but_not_the_preflight_headers ... ok +test server::cors::cors_tests::a_preflight_is_answered_by_the_middleware_without_authentication ... ok +test server::cors::cors_tests::a_preflight_to_an_unrouted_path_is_still_answered ... ok +test server::cors::cors_tests::an_explicit_origin_string_is_emitted_verbatim ... ok +test server::cors::cors_tests::empty_input_is_unset_not_error ... ok +test server::cors::cors_tests::localhost_does_not_reflect_a_lookalike_host ... ok +test server::cors::cors_tests::localhost_reflects_only_localhost_origins ... ok +test server::cors::cors_tests::parses_multiple_valid_origins ... ok +test server::cors::cors_tests::parses_single_valid_origin ... ok +test server::cors::cors_tests::preflight_headers_carry_the_configured_methods_and_credentials ... ok +test server::cors::cors_tests::rejects_control_characters ... ok +test server::cors::cors_tests::rejects_non_http_scheme ... ok +test server::cors::cors_tests::rejects_origin_with_path ... ok +test server::cors::cors_tests::rejects_origin_with_query ... ok +test server::cors::cors_tests::rejects_origin_with_trailing_slash ... ok +test server::cors::cors_tests::rejects_origin_with_userinfo ... ok +test server::cors::cors_tests::rejects_origin_without_scheme ... ok +test server::cors::cors_tests::rejects_value_that_is_only_blank ... ok +test server::cors::cors_tests::star_with_credentials_and_no_origin_header_echoes_an_empty_value ... ok +test server::cors::cors_tests::star_with_credentials_echoes_the_request_origin ... ok +test server::cors::cors_tests::star_without_credentials_emits_the_literal_star ... ok +test server::cors::cors_tests::the_default_policy_is_the_b10621_default ... ok +test server::cors::cors_tests::the_mlxcel_allow_list_reflects_only_a_matching_origin ... ok +test server::cors::cors_tests::trims_whitespace_and_skips_blank_inner_entries ... ok +test server::cors::cors_tests::websocket_origin_matrix ... ok +test server::diffusion_worker::tests::build_diffusion_options_defaults_apply_with_empty_eos ... ok +test server::diffusion_worker::tests::build_diffusion_options_maps_core_fields_and_serve_defaults ... ok +test server::diffusion_worker::tests::build_diffusion_options_unions_stop_tokens_and_config_eos_dedup ... ok +test server::diffusion_worker::tests::build_llada2_options_maps_core_fields_and_step_override ... ok +test server::diffusion_worker::tests::build_llada2_options_unions_stop_tokens_and_config_eos_dedup ... ok +test server::diffusion_worker::tests::diffusion_serve_defaults_default_is_entropy_bound ... ok +test server::diffusion_worker::tests::diffusion_usage_counts_the_engine_prompt_slice_after_image_expansion ... ok +test server::diffusion_worker::tests::finish_reason_maps_to_server_strings ... ok +test server::diffusion_worker::tests::llada2_finish_reason_maps_to_server_strings ... ok +test server::diffusion_worker::tests::llada2_usage_count_is_text_prompt_only_because_media_is_rejected ... ok +test server::diffusion_worker::tests::parse_diffusion_sampler_accepts_known_samplers ... ok +test server::diffusion_worker::tests::reject_audio_video_flags_unsupported_modalities ... ok +test server::diffusion_worker::tests::reject_llada2_media_rejects_any_modality ... ok +test server::dry_breakers::dry_breakers_tests::derive_breaker_heads_builds_tails_for_straddled_breakers ... ok +test server::dry_breakers::dry_breakers_tests::derive_breaker_heads_caps_the_breaker_and_the_tail_at_upstream_limits ... ok +test server::dry_breakers::dry_breakers_tests::derive_breaker_heads_marks_containing_tokens_as_empty_tail_heads ... ok +test server::dry_breakers::dry_breakers_tests::derive_breaker_heads_over_a_normalizing_tokenizer_uses_decoded_text ... ok +test server::dry_breakers::dry_breakers_tests::fixture_tokenizer_behaves_as_the_tests_assume ... ok +test server::dry_breakers::dry_breakers_tests::resolve_breaker_strings_defaults_to_the_b10621_set_when_absent ... ok +test server::dry_breakers::dry_breakers_tests::resolve_breaker_strings_interprets_shell_escapes_and_skips_empties ... ok +test server::dry_breakers::dry_breakers_tests::resolve_breaker_strings_replaces_defaults_and_honors_the_none_sentinel ... ok +test server::dry_breakers::dry_breakers_tests::unescape_breaker_interprets_the_four_supported_escapes ... ok +test server::dry_breakers::dry_breakers_tests::unescape_breaker_leaves_everything_else_exactly_as_typed ... ok +test server::embedding_worker::tests::queue_full_returns_queuefull_error ... ok +test server::embedding_worker::tests::request_timeout_returns_timeout_error ... ok +test server::embedding_worker::tests::worker_loads_stub_and_reports_info ... ok +test server::embedding_worker::tests::worker_maps_engine_invalid_input ... ok +test server::embedding_worker::tests::worker_round_trips_texts_and_tokens_on_its_own_thread ... ok +test server::embedding_worker::tests::worker_surfaces_loader_failure ... ok +test server::embedding_worker::tests::worker_survives_a_panicking_request_and_keeps_serving ... ok +test server::engine_probe::cases::tests::cache_prime_len_prefers_the_history_prefix ... ok +test server::engine_probe::cases::tests::greedy_case_is_greedy_without_penalties ... ok +test server::engine_probe::cases::tests::partition_adopted_prefix_skips_covered_boundary ... ok +test server::engine_probe::cases::tests::partition_cold_history_split ... ok +test server::engine_probe::cases::tests::partition_cold_unsplit ... ok +test server::engine_probe::cases::tests::partition_reports_chunking ... ok +test server::engine_probe::cases::tests::seeded_case_activates_history_dependent_sampling ... ok +test server::engine_probe::divergence::tests::divergence_at_token_zero_is_labelled ... ok +test server::engine_probe::divergence::tests::divergence_reports_index_and_both_ids ... ok +test server::engine_probe::divergence::tests::early_stop_on_one_side_diverges_at_its_length ... ok +test server::engine_probe::divergence::tests::identical_streams_report_identical ... ok +test server::engine_probe::prompt::tests::cap_prompt_len_reserves_generation_room ... ok +test server::engine_probe::server_engine::tests::decode_rate_is_tokens_over_post_first_token_time ... ok +test server::engine_probe::server_engine::tests::default_options_are_the_server_defaults ... ok +test server::florence2_worker::tests::absent_input_is_left_to_expand ... ok +test server::florence2_worker::tests::control_characters_are_rejected ... ok +test server::florence2_worker::tests::finish_reason_reports_length_only_on_an_exhausted_budget ... ok +test server::florence2_worker::tests::free_text_tasks_accept_plain_text ... ok +test server::florence2_worker::tests::free_text_tasks_reject_angle_brackets ... ok +test server::florence2_worker::tests::image_count_guard_requires_exactly_one_image ... ok +test server::florence2_worker::tests::input_on_inputless_task_is_rejected ... ok +test server::florence2_worker::tests::input_taking_task_set_matches_takes_input ... ok +test server::florence2_worker::tests::max_input_bound_admits_a_long_grounding_caption ... ok +test server::florence2_worker::tests::media_guard_rejects_audio_and_video ... ok +test server::florence2_worker::tests::oversized_input_is_rejected_for_every_input_taking_task ... ok +test server::florence2_worker::tests::region_bins_accepts_exactly_four_loc_tokens ... ok +test server::florence2_worker::tests::region_bins_rejects_malformed_forms ... ok +test server::florence2_worker::tests::region_tasks_accept_well_formed_region ... ok +test server::florence2_worker::tests::region_tasks_reject_free_text_and_malformed_regions ... ok +test server::gbnf::tests::a_char_class_keeps_its_ranges_and_alternates_in_one_terminal ... ok +test server::gbnf::tests::a_grammar_larger_than_the_source_cap_is_refused_with_the_limit ... ok +test server::gbnf::tests::a_literal_string_lowers_to_one_single_code_point_class_per_character ... ok +test server::gbnf::tests::a_missing_root_or_an_undefined_reference_is_rejected ... ok +test server::gbnf::tests::a_negated_class_lowers_to_a_negated_regex_class ... ok +test server::gbnf::tests::a_realistic_json_grammar_compiles ... ok +test server::gbnf::tests::a_token_terminal_without_a_vocab_or_without_a_single_token_is_refused ... ok +test server::gbnf::tests::a_trailing_dash_is_a_literal_not_a_range ... ok +test server::gbnf::tests::an_empty_alternative_is_legal_and_survives_lowering ... ok +test server::gbnf::tests::an_oversized_maximum_is_silently_widened_but_an_oversized_minimum_throws ... ok +test server::gbnf::tests::comments_are_whitespace_but_a_newline_before_the_arrow_is_not ... ok +test server::gbnf::tests::dot_matches_every_code_point_including_newline ... ok +test server::gbnf::tests::identifiers_admit_dashes_and_leading_digits_but_not_underscores ... ok +test server::gbnf::tests::left_recursion_is_rejected_in_direct_indirect_and_hidden_forms ... ok +test server::gbnf::tests::repetition_forms_all_parse_and_brace_zero_erases_the_item ... ok +test server::gbnf::tests::repetition_operators_chain ... ok +test server::gbnf::tests::the_full_escape_table_decodes_and_unknown_escapes_are_rejected ... ok +test server::gbnf::tests::the_repetition_budget_is_multiplicative_across_nesting ... ok +test server::gbnf::tests::token_terminals_lower_to_llguidance_token_ranges ... ok +test server::gcp_compat::tests::alias_collisions_resolve_deterministically_to_the_v1_routes ... ok +test server::gcp_compat::tests::alias_format_matches_upstream_examples ... ok +test server::gcp_compat::tests::health_alias_mounts_at_a_custom_path_and_skips_collisions ... ok +test server::gcp_compat::tests::observability_routes_are_always_aliased ... ok +test server::gcp_compat::tests::predict_accepts_direct_paths_and_forces_stream_off ... ok +test server::gcp_compat::tests::predict_and_health_alias_require_the_api_key_like_every_route ... ok +test server::gcp_compat::tests::predict_collision_is_refused_and_free_paths_pass ... ok +test server::gcp_compat::tests::predict_envelope_validation_matches_upstream ... ok +test server::gcp_compat::tests::predict_fans_out_and_returns_predictions_in_request_order ... ok +test server::gcp_compat::tests::predict_is_not_mounted_without_the_gcp_config ... ok +test server::gcp_compat::tests::prediction_mode_resolves_defaults_and_leading_slashes ... ok +test server::gcp_compat::tests::without_prediction_mode_every_aip_variable_is_ignored ... ok +test server::got_chat_template_tests::a_shipped_template_still_wins_over_the_builtin ... ok +test server::got_chat_template_tests::got_builtin_template_renders_multi_turn_history ... ok +test server::got_chat_template_tests::got_builtin_template_renders_the_reference_conversation ... ok +test server::got_chat_template_tests::got_builtin_template_replaces_a_client_system_message ... ok +test server::got_chat_template_tests::the_builtin_is_scoped_to_the_got_family ... ok +test server::grammar::tests::a_gate_with_only_patterns_stays_awaiting_until_one_matches ... ok +test server::grammar::tests::a_multi_byte_character_split_across_tokens_does_not_break_matching ... ok +test server::grammar::tests::a_pattern_full_trigger_must_match_the_whole_buffer ... ok +test server::grammar::tests::a_pattern_trigger_starts_at_the_first_non_empty_capture_group ... ok +test server::grammar::tests::a_token_trigger_activates_on_its_own_id_and_replays_only_that_token ... ok +test server::grammar::tests::a_word_trigger_replays_from_the_start_of_the_match_not_the_buffer ... ok +test server::grammar::tests::an_uncompilable_trigger_pattern_is_refused_rather_than_never_firing ... ok +test server::http_timeout::http_timeout_tests::a_read_does_not_time_out_before_the_deadline ... ok +test server::http_timeout::http_timeout_tests::a_stalled_read_fails_with_timed_out_after_the_configured_timeout ... ok +test server::http_timeout::http_timeout_tests::a_stalled_write_fails_with_timed_out_after_the_configured_timeout ... ok +test server::http_timeout::http_timeout_tests::a_stood_down_read_budget_never_times_out ... ok +test server::http_timeout::http_timeout_tests::a_zero_timeout_closes_the_connection_on_the_first_blocking_read ... ok +test server::http_timeout::http_timeout_tests::progress_resets_the_per_operation_deadline ... ok +test server::http_timeout::http_timeout_tests::shutdown_is_not_bounded_by_the_write_timeout ... ok +test server::in_process::chat::tests::a_cancelled_or_tool_calling_turn_leaves_no_next_turn_state ... ok +test server::in_process::chat::tests::a_chat_body_without_messages_is_an_invalid_chat_request ... ok +test server::in_process::chat::tests::a_completion_body_without_a_prompt_is_an_invalid_completion_request ... ok +test server::in_process::chat::tests::a_specific_tool_choice_keeps_only_that_function ... ok +test server::in_process::chat::tests::completion_options_follow_the_completions_route ... ok +test server::in_process::chat::tests::completion_options_keep_server_defaults_for_absent_fields ... ok +test server::in_process::chat::tests::delivered_text_reaches_the_caller_reasoning_first_and_skips_empty_parts ... ok +test server::in_process::chat::tests::passthrough_consumes_one_position_as_content ... ok +test server::in_process::chat::tests::reasoning_is_echoed_only_when_the_format_emits_reasoning_content ... ok +test server::in_process::chat::tests::the_cli_chat_body_parses_as_a_streaming_chat_request ... ok +test server::in_process::chat::tests::the_cli_completion_body_carries_the_prompt_verbatim ... ok +test server::in_process::chat::tests::tool_calls_are_all_reported_without_a_specific_choice ... ok +test server::infill::infill_tests::a_marker_in_an_extra_chunk_filename_is_refused_too ... ok +test server::infill::infill_tests::a_marker_inside_user_supplied_text_is_refused_rather_than_carried ... ok +test server::infill::infill_tests::a_missing_prefix_or_suffix_is_refused_with_the_upstream_wording ... ok +test server::infill::infill_tests::a_non_string_prompt_is_refused ... ok +test server::infill::infill_tests::a_repo_and_file_separator_vocabulary_emits_the_extra_context_header ... ok +test server::infill::infill_tests::a_vocabulary_without_a_separator_uses_the_snippet_delimiter ... ok +test server::infill::infill_tests::an_absent_prompt_and_extra_default_to_empty ... ok +test server::infill::infill_tests::an_extra_chunk_without_a_filename_gets_the_upstream_default ... ok +test server::infill::infill_tests::infill_prompt_tokenizes_to_the_expected_ids ... ok +test server::infill::infill_tests::input_extra_must_be_an_array_of_text_objects ... ok +test server::infill::infill_tests::ordinary_code_passes_the_marker_guard ... ok +test server::infill::infill_tests::spm_infill_swaps_the_two_blocks ... ok +test server::infill::infill_tests::the_default_ordering_is_prefix_suffix_middle ... ok +test server::infill::infill_tests::the_guard_only_names_markers_this_vocabulary_declares ... ok +test server::infill::infill_tests::the_middle_marker_is_always_last ... ok +test server::infill::infill_tests::the_prompt_field_is_appended_to_the_prefix_in_both_orderings ... ok +test server::kimi_k3_chat::tests::an_image_on_a_tool_message_is_refused ... ok +test server::kimi_k3_chat::tests::an_image_url_part_without_image_prompts_is_refused ... ok +test server::kimi_k3_chat::tests::compact_json_matches_python_ensure_ascii_false_escaping ... ok +test server::kimi_k3_chat::tests::deep_sort_orders_keys_at_every_depth_and_keeps_list_order ... ok +test server::kimi_k3_chat::tests::dynamic_tool_declare_body_is_the_lazy_loading_form ... ok +test server::kimi_k3_chat::tests::escape_attr_value_escapes_ampersand_before_quote ... ok +test server::kimi_k3_chat::tests::every_xtml_fixture_matches_the_reference_rendering ... ok +test server::kimi_k3_chat::tests::image_placeholder_is_literal_text_without_image_prompts ... ok +test server::kimi_k3_chat::tests::image_prompt_needs_the_media_control_ids ... ok +test server::kimi_k3_chat::tests::image_prompt_places_media_ids_around_the_pad_run ... ok +test server::kimi_k3_chat::tests::non_thinking_mode_has_no_think_block ... ok +test server::kimi_k3_chat::tests::normalize_keeps_the_first_of_a_duplicate_call_id_and_splits_runs_at_a_user_turn ... ok +test server::kimi_k3_chat::tests::normalize_leaves_a_run_with_any_unmatched_id_exactly_as_written ... ok +test server::kimi_k3_chat::tests::normalize_reorders_a_fully_matched_run_and_names_each_result ... ok +test server::kimi_k3_chat::tests::portable_reasoning_effort_clamps_onto_the_three_rendered_levels ... ok +test server::kimi_k3_chat::tests::pre_parsed_arguments_use_python_default_separators ... ok +test server::kimi_k3_chat::tests::render_assistant_with_reasoning_and_tool_calls ... ok +test server::kimi_k3_chat::tests::render_tool_choice_and_response_format ... ok +test server::kimi_k3_chat::tests::render_tool_results_reordered_by_call_id ... ok +test server::kimi_k3_chat::tests::render_tools_declaration_sorted_compact ... ok +test server::kimi_k3_chat::tests::render_user_turn_exact_ids ... ok +test server::kimi_k3_chat::tests::response_format_type_and_schema_follow_the_reference_fallbacks ... ok +test server::kimi_k3_chat::tests::synthetic_render_produces_the_xtml_grammar ... ok +test server::kimi_k3_chat::tests::thinking_effort_medium_is_rejected ... ok +test server::kimi_k3_chat::tests::tool_arguments_ignore_trailing_bytes_after_the_closing_brace ... ok +test server::kimi_k3_chat::tests::tool_arguments_keep_the_original_literal_for_non_string_values ... ok +test server::kimi_k3_chat::tests::tool_arguments_that_are_not_an_object_fall_back_to_a_raw_json_block ... ok +test server::kimi_k3_chat::tests::tools_serialize_without_absent_optional_fields ... ok +test server::kimi_k3_chat::tests::unresolvable_tool_name_is_an_error ... ok +test server::kimi_k3_chat::tests::user_text_cannot_inject_control_tokens ... ok +test server::kokoro_tts::tests::cap_input_passes_short_text_unchanged ... ok +test server::kokoro_tts::tests::cap_input_passes_text_at_cap_unchanged ... ok +test server::kokoro_tts::tests::cap_input_truncates_multibyte_on_char_boundary ... ok +test server::kokoro_tts::tests::cap_input_truncates_overlong_text_to_cap ... ok +test server::listen::listen_tests::a_bound_server_answers_an_ordinary_request ... ok +test server::listen::listen_tests::a_client_that_never_finishes_its_request_is_closed_on_the_timeout_budget ... ok +test server::listen::listen_tests::a_keep_alive_connection_is_bounded_again_after_a_response ... ok +test server::listen::listen_tests::a_second_bind_without_reuse_port_fails ... ok +test server::listen::listen_tests::a_silent_sse_stream_is_not_cut_off_by_the_socket_timeout ... ok +test server::listen::listen_tests::a_slow_response_is_not_cut_off_by_the_socket_timeout ... ok +test server::listen::listen_tests::a_tls_listener_completes_a_handshake_and_answers ... ok +test server::listen::listen_tests::a_unix_socket_listener_answers_requests ... ok +test server::listen::listen_tests::an_unresolvable_host_is_a_named_startup_error ... ok +test server::listen::listen_tests::binding_port_zero_reports_the_ephemeral_port ... ok +test server::listen::listen_tests::reuse_port_lets_two_listeners_share_one_port ... ok +test server::listen::listen_tests::tls_is_refused_on_a_unix_domain_socket ... ok +test server::llama_compat_tests::manifest_native_field_claims_match_native_completion_request ... ok +test server::llama_compat_tests::manifest_route_claims_match_the_mounted_router ... ok +test server::llama_compat_tests::supported_entries_record_no_divergence_from_b10621 ... ok +test server::llmjp_chat_template_tests::a_generation_render_is_completed_with_the_final_channel ... ok +test server::llmjp_chat_template_tests::a_history_render_is_left_alone ... ok +test server::llmjp_chat_template_tests::a_template_without_the_rule_is_untouched ... ok +test server::llmjp_chat_template_tests::both_released_checkpoints_render_a_completed_generation_prompt ... ok +test server::llmjp_chat_template_tests::the_server_image_request_renders_the_same_prompt_as_the_cli ... ok +test server::local_media::tests::a_missing_file_is_an_error_naming_its_kind_and_path ... ok +test server::local_media::tests::a_raw_prompt_keeps_inkling_on_the_plain_layouts ... ok +test server::local_media::tests::a_templated_prompt_reports_unresolvable_part_markers ... ok +test server::local_media::tests::a_templated_prompt_uses_the_structured_layouts_never_ordered ... ok +test server::local_media::tests::files_are_read_in_order ... ok +test server::local_media::tests::only_single_modality_inkling_requests_take_the_cli_path ... ok +test server::local_media::tests::videos_are_opened_by_path_at_the_requested_rate ... ok +test server::logging::tests::a_command_line_verbosity_beats_rust_log ... ok +test server::logging::tests::a_directory_destination_fails_instead_of_falling_back ... ok +test server::logging::tests::a_line_with_no_secret_is_returned_borrowed ... ok +test server::logging::tests::a_missing_parent_directory_fails_with_the_directory_named ... ok +test server::logging::tests::a_negative_or_zero_threshold_still_reports_errors ... ok +test server::logging::tests::a_new_log_file_is_created_with_owner_only_permissions ... ok +test server::logging::tests::a_registered_secret_never_survives_a_line ... ok +test server::logging::tests::a_secret_split_across_two_writes_is_still_redacted ... ok +test server::logging::tests::a_symlink_destination_is_refused ... ok +test server::logging::tests::a_trailing_partial_line_is_flushed_rather_than_dropped ... ok +test server::logging::tests::an_empty_rust_log_is_not_a_directive ... ok +test server::logging::tests::an_existing_world_readable_log_file_is_tightened ... ok +test server::logging::tests::an_unwritable_directory_fails_at_open_time ... ok +test server::logging::tests::appending_never_truncates_an_existing_log ... ok +test server::logging::tests::auto_colors_never_write_escapes_into_a_log_file ... ok +test server::logging::tests::explicit_colors_ignore_the_sink ... ok +test server::logging::tests::nothing_set_resolves_to_the_compiled_default ... ok +test server::logging::tests::registering_the_same_secret_twice_is_idempotent ... ok +test server::logging::tests::rust_log_beats_the_llama_environment_binding ... ok +test server::logging::tests::several_lines_in_one_write_are_each_emitted ... ok +test server::logging::tests::short_values_are_never_registered_as_secrets ... ok +test server::logging::tests::the_default_threshold_is_info ... ok +test server::logging::tests::the_llama_environment_binding_beats_the_compiled_default ... ok +test server::logging::tests::the_top_tier_raises_only_mlxcels_own_targets_to_trace ... ok +test server::logging::tests::the_verbose_flag_and_the_top_verbosity_tier_agree ... ok +test server::logging::tests::the_verbose_flag_beats_rust_log ... ok +test server::logging::tests::the_verbosity_scale_is_monotone_in_b10621s_direction ... ok +test server::max_tokens_route_tests::absent_native_n_predict_uses_resolved_server_default ... ok +test server::max_tokens_route_tests::below_cap_budget_is_unchanged_on_all_generation_routes ... ok +test server::max_tokens_route_tests::explicit_over_cap_budget_is_clamped_on_all_generation_routes ... ok +test server::max_tokens_route_tests::non_stream_generation_routes_queue_full_after_snapshot_return_http_503 ... ok +test server::max_tokens_route_tests::reasoning_budget_is_validated_against_clamped_route_budget ... ok +test server::max_tokens_route_tests::route_image_cardinality_rejection_does_not_poison_same_worker ... ok +test server::max_tokens_route_tests::streaming_generation_routes_queue_full_after_snapshot_return_http_503 ... ok +test server::media::tests::aborting_audio_acquisition_task_drops_slow_http_stream ... ok +test server::media::tests::aggregate_audio_bytes_are_bounded_across_individually_valid_clips ... ok +test server::media::tests::audio_acquisition_preserves_order_and_rejects_any_invalid_item ... ok +test server::media::tests::collect_image_data_rejects_too_many_images ... ok +test server::media::tests::collect_image_data_skips_invalid_entries ... ok +test server::media::tests::extract_chat_image_data_collects_images_across_messages ... ok +test server::media::tests::extract_chat_image_data_reads_file_urls_inside_the_media_root ... ok +test server::media::tests::extract_chat_image_data_refuses_a_file_url_outside_the_media_root ... ok +test server::media::tests::extract_chat_video_paths_accepts_path_inside_allowlist ... ok +test server::media::tests::extract_chat_video_paths_async_canonicalize_works ... ok +test server::media::tests::extract_chat_video_paths_canonicalises_parent_dir_inside_allowlist ... ok +test server::media::tests::extract_chat_video_paths_drops_missing_file ... ok +test server::media::tests::extract_chat_video_paths_fd_survives_symlink_swap ... ok +test server::media::tests::extract_chat_video_paths_fd_survives_unlink_after_resolution ... ok +test server::media::tests::extract_chat_video_paths_rejects_non_regular_file ... ok +test server::media::tests::extract_chat_video_paths_rejects_non_video_local_file ... ok +test server::media::tests::extract_chat_video_paths_rejects_outside_allowlist ... ok +test server::media::tests::extract_chat_video_paths_rejects_symlink_to_outside_allowlist ... ok +test server::media::tests::extract_chat_video_paths_rejects_when_allowlist_empty ... ok +test server::media::tests::extract_chat_video_paths_resolves_local_path ... ok +test server::media::tests::extract_chat_video_paths_supports_file_url_scheme ... ok +test server::media::tests::fetch_remote_video_streaming_rejects_oversized ... ok +test server::media::tests::local_audio_acquisition_cancels_between_bounded_read_chunks ... ok +test server::media::tests::media_capability_rejection_admits_what_the_checkpoint_supports ... ok +test server::media::tests::media_capability_rejection_leaves_single_modality_requests_alone ... ok +test server::media::tests::media_capability_rejection_refuses_each_modality_a_checkpoint_cannot_consume ... ok +test server::media::tests::media_capability_rejection_refuses_video_plus_audio_unless_the_model_merges_both ... ok +test server::media::tests::media_capability_rejection_reports_the_missing_modality_before_the_combination ... ok +test server::media::tests::mp3_and_flac_are_accepted_at_the_format_gate ... ok +test server::media::tests::no_mmproj_refusal_names_the_flag_rather_than_the_checkpoint ... ok +test server::media::tests::read_image_url_decodes_base64_data_uri ... ok +test server::media::tests::read_image_url_fetches_http_urls ... ok +test server::media::tests::read_image_url_reads_bare_paths_inside_the_media_root ... ok +test server::media::tests::read_image_url_refuses_a_loopback_origin ... ok +test server::media::tests::read_image_url_rejects_malformed_data_uri ... ok +test server::media::tests::read_image_url_rejects_non_base64_data_uri ... ok +test server::media::tests::read_image_url_rejects_oversized_data_uri ... ok +test server::media::tests::scan_insecure_allowlist_dirs_flags_world_writable_directory ... ok +test server::media::tests::scan_insecure_allowlist_dirs_passes_strict_directory ... ok +test server::media::tests::shared_image_cardinality_validator_rejects_dropped_images ... ok +test server::media::tests::unsupported_audio_format_is_typed_instead_of_silently_dropped ... ok +test server::media::tests::xla_capability_remains_audio_false_and_video_rejection_is_unchanged ... ok +test server::media::tests::xla_rejects_all_invalid_images_instead_of_text_fallback ... ok +test server::media::tests::xla_rejects_oversized_image_dropped_by_tolerant_resolver ... ok +test server::media::tests::xla_rejects_partial_image_resolution_instead_of_partial_execution ... ok +test server::media_net::tests::a_blocked_peer_address_is_reported_with_the_host_and_the_escape_hatch ... ok +test server::media_net::tests::a_non_http_scheme_is_refused ... ok +test server::media_net::tests::a_public_hostname_passes_the_shape_check ... ok +test server::media_net::tests::a_public_peer_address_passes ... ok +test server::media_net::tests::an_ip_literal_host_is_checked_without_resolution ... ok +test server::media_net::tests::credentials_in_a_media_url_are_refused ... ok +test server::media_net::tests::loopback_and_unspecified_addresses_are_refused ... ok +test server::media_net::tests::ordinary_public_addresses_are_allowed ... ok +test server::media_net::tests::private_and_reserved_ranges_are_refused ... ok +test server::media_net::tests::the_cloud_metadata_addresses_are_refused ... ok +test server::media_root::tests::a_bare_relative_path_resolves_the_same_way ... ok +test server::media_root::tests::a_directory_is_not_a_media_file ... ok +test server::media_root::tests::a_fifo_inside_the_root_is_refused_before_it_can_block ... ok +test server::media_root::tests::a_missing_file_reports_upstreams_wording ... ok +test server::media_root::tests::a_relative_file_url_resolves_inside_the_root ... ok +test server::media_root::tests::a_relative_reference_never_falls_back_to_the_working_directory ... ok +test server::media_root::tests::a_symlink_pointing_outside_the_root_is_refused ... ok +test server::media_root::tests::a_symlink_that_stays_inside_the_root_still_resolves ... ok +test server::media_root::tests::a_symlinked_directory_component_cannot_escape_either ... ok +test server::media_root::tests::an_absolute_looking_path_is_concatenated_not_joined ... ok +test server::media_root::tests::an_absolute_path_inside_the_root_resolves_like_the_relative_form ... ok +test server::media_root::tests::an_absolute_path_outside_the_root_is_an_escape ... ok +test server::media_root::tests::an_absolute_path_over_255_bytes_is_refused_before_the_fallback ... ok +test server::media_root::tests::dot_dot_traversal_is_refused ... ok +test server::media_root::tests::filename_validation_matches_upstreams_rule_set ... ok +test server::media_root::tests::open_confined_refuses_a_symlink_swapped_in_after_resolution ... ok +test server::media_root::tests::percent_encoded_traversal_is_refused ... ok +test server::media_root::tests::the_installed_root_is_what_the_wrapper_resolves_against ... ok +test server::media_root::tests::the_three_short_forms_still_resolve_to_the_same_file ... ok +test server::media_root::tests::with_no_root_configured_local_files_report_upstreams_own_sentence ... ok +test server::model_meta::tests::f16_checkpoint_counts_elements_directly ... ok +test server::model_meta::tests::missing_checkpoint_yields_zeroed_facts ... ok +test server::model_meta::tests::quantized_checkpoint_unpacks_u32_by_bit_width ... ok +test server::model_provider::model_worker::tests::build_generation_result_computes_finish_reason_and_generation_split ... ok +test server::model_provider::model_worker::tests::byte_fallback_cjk_streams_only_complete_sequences ... ok +test server::model_provider::model_worker::tests::byte_fallback_emoji_streams_only_complete_sequences ... ok +test server::model_provider::model_worker::tests::byte_fallback_incomplete_sequence_flushed_at_end_of_stream ... ok +test server::model_provider::model_worker::tests::byte_fallback_incomplete_then_regular_token_does_not_lose_text ... ok +test server::model_provider::model_worker::tests::byte_fallback_mixed_regular_and_cjk_streams_correctly ... ok +test server::model_provider::model_worker::tests::byte_fallback_single_byte_ascii_emits_immediately ... ok +test server::model_provider::model_worker::tests::decode_request_images_keeps_valid_images_and_rejects_all_invalid_input ... ok +test server::model_provider::model_worker::tests::decode_request_images_rejects_decompression_bomb_header ... ok +test server::model_provider::model_worker::tests::finish_stopped_by_word_truncates_and_overrides_the_finish_reason ... ok +test server::model_provider::model_worker::tests::finish_truncated_floors_a_keep_length_inside_a_character ... ok +test server::model_provider::model_worker::tests::gemma3n_ordered_prompt_expands_media_in_place_without_clustering ... ok +test server::model_provider::model_worker::tests::incremental_detok_bytelevel_split_char_completes_mid_stream ... ok +test server::model_provider::model_worker::tests::incremental_detok_flush_returns_held_complete_text ... ok +test server::model_provider::model_worker::tests::incremental_detok_fuzz_matches_oneshot ... ok +test server::model_provider::model_worker::tests::incremental_detok_korean_matches_oneshot ... ok +test server::model_provider::model_worker::tests::incremental_detok_mixed_scripts_match_oneshot ... ok +test server::model_provider::model_worker::tests::incremental_detok_regular_piece_then_multibyte_matches_oneshot ... ok +test server::model_provider::model_worker::tests::incremental_detok_truncated_mid_multibyte_holds_partial ... ok +test server::model_provider::model_worker::tests::incremental_detok_with_prompt_context_matches_oneshot ... ok +test server::model_provider::model_worker::tests::inkling_ordered_prompt_preserves_history_and_mixed_part_order ... ok +test server::model_provider::model_worker::tests::inkling_ordered_prompt_rejects_raw_reserved_media_tokens ... ok +test server::model_provider::model_worker::tests::legacy_server_audio_paths_reject_multi_clip_instead_of_using_first ... ok +test server::model_provider::model_worker::tests::merge_config_stop_tokens_appends_only_missing_ids ... ok +test server::model_provider::model_worker::tests::mlx_server_audio_metrics_are_live_nonzero_and_counted_once ... ok +test server::model_provider::model_worker::tests::mlx_server_cancelled_audio_counts_once_without_rejection_or_work_metrics ... ok +test server::model_provider::model_worker::tests::non_batching_clamp_preserves_explicit_lower_max_kv_size ... ok +test server::model_provider::model_worker::tests::non_batching_clamp_restores_split_context_cap_to_total_window ... ok +test server::model_provider::model_worker::tests::phi4mm_ordered_prompt_keeps_exact_mixed_media_positions ... ok +test server::model_provider::model_worker::tests::resolve_end_of_turn_id_handles_chatml_im_end_marker ... ok +test server::model_provider::model_worker::tests::resolve_end_of_turn_id_handles_gemma23_end_of_turn_marker ... ok +test server::model_provider::model_worker::tests::resolve_end_of_turn_id_handles_gemma4_turn_marker ... ok +test server::model_provider::model_worker::tests::resolve_end_of_turn_id_prefers_gemma_over_chatml ... ok +test server::model_provider::model_worker::tests::resolve_end_of_turn_id_returns_none_when_no_marker_present ... ok +test server::model_provider::model_worker::tests::resolve_xtc_newline_token_ids_empty_when_newline_not_in_vocab ... ok +test server::model_provider::model_worker::tests::resolve_xtc_newline_token_ids_finds_single_token_newline ... ok +test server::model_provider::model_worker::tests::run_core_thread_or_abort_forwards_err_without_aborting ... ok +test server::model_provider::model_worker::tests::run_core_thread_or_abort_runs_body_to_completion ... ok +test server::model_provider::model_worker::tests::token_piece_identifies_byte_fallback_tokens ... ok +test server::model_provider::model_worker::tests::unified_context_keeps_startup_cap_after_worker_clamp ... ok +test server::model_provider::tests::drain_generation_events_accumulates_logprobs_from_token_with_logprobs ... ok +test server::model_provider::tests::drain_generation_events_forwards_tokens_before_done ... ok +test server::model_provider::tests::drain_generation_events_impl_detects_phase2_decode_hang ... ok +test server::model_provider::tests::drain_generation_events_impl_survives_long_prefill_before_first_token ... ok +test server::model_provider::tests::drain_generation_events_reports_closed_channel ... ok +test server::model_provider::tests::drain_generation_events_returns_worker_error ... ok +test server::model_provider::tests::generate_with_live_enqueues_the_captured_runtime_defaults ... ok +test server::model_provider::tests::live_runtime_defaults_preserve_the_startup_zero_timeout_fallback ... ok +test server::model_provider::tests::logprobs_drain_forwards_every_prefill_observation ... ok +test server::model_provider::tests::model_provider_relies_on_auto_traits_for_shared_state ... ok +test server::model_provider::tests::ordered_media_stripping_is_scoped_to_audio_requests ... ok +test server::model_provider::tests::pre_reserved_single_stream_enqueue_does_not_double_reserve ... ok +test server::model_provider::tests::provider_media_cardinality_rejection_does_not_poison_worker ... ok +test server::model_provider::tests::scheduler_paths_do_not_create_single_stream_reservations ... ok +test server::model_provider::tests::send_shutdown_signal_enqueues_shutdown_request ... ok +test server::model_provider::tests::send_shutdown_signal_reports_closed_channel ... ok +test server::model_provider::tests::single_stream_queue_reservation_enforces_max_and_releases_on_drop ... ok +test server::model_provider::tests::single_stream_queue_reservation_releases_after_failed_send ... ok +test server::model_provider::tests::single_stream_queue_reservation_releases_on_dequeue_before_processing ... ok +test server::model_provider::tests::validated_decode_hang_timeout_returns_configured_value_for_nonzero ... ok +test server::model_provider::tests::validated_decode_hang_timeout_uses_fallback_when_timeout_is_zero ... ok +test server::model_source::tests::a_model_url_credential_is_redacted_from_the_diagnostic ... ok +test server::model_source::tests::a_single_alias_is_unchanged ... ok +test server::model_source::tests::a_windows_path_is_reported_as_a_bad_identifier_not_a_quant_request ... ok +test server::model_source::tests::alias_list_is_split_stripped_and_deduplicated ... ok +test server::model_source::tests::an_alias_value_with_no_content_yields_no_aliases ... ok +test server::model_source::tests::an_explicit_offline_flag_survives_a_falsey_environment ... ok +test server::model_source::tests::an_hf_repo_credential_is_redacted_from_the_diagnostic ... ok +test server::model_source::tests::docker_repo_is_rejected_before_any_other_source_is_considered ... ok +test server::model_source::tests::empty_environment_values_are_treated_as_absent ... ok +test server::model_source::tests::every_other_offline_env_value_leaves_the_flag_alone ... ok +test server::model_source::tests::hf_file_is_rejected_and_explains_snapshot_loading ... ok +test server::model_source::tests::hf_repo_becomes_the_reference ... ok +test server::model_source::tests::hf_repo_is_trimmed ... ok +test server::model_source::tests::hf_repo_must_be_owner_slash_name ... ok +test server::model_source::tests::hf_repo_quant_suffix_is_rejected_with_the_mlx_naming_rule ... ok +test server::model_source::tests::hf_repo_supersedes_model_and_reports_it ... ok +test server::model_source::tests::model_alone_is_the_reference ... ok +test server::model_source::tests::model_url_elsewhere_is_rejected_generically ... ok +test server::model_source::tests::model_url_pointing_at_huggingface_offers_the_repo_id ... ok +test server::model_source::tests::no_diagnostic_carries_a_run_of_collapsed_indentation ... ok +test server::model_source::tests::no_source_flag_names_all_three_ways_to_supply_one ... ok +test server::model_source::tests::the_alias_list_is_sorted_like_b10621s_set ... ok +test server::model_source::tests::the_first_entry_is_the_served_id ... ok +test server::model_source::tests::the_offline_env_var_enables_exactly_b10621s_truthy_set ... ok +test server::muse_atem_roundtrip_tests::anthropic_api_atem_non_streaming_round_trip ... ok +test server::muse_atem_roundtrip_tests::atem_replay_with_empty_string_tool_call_arguments_does_not_raise ... ok +test server::muse_atem_roundtrip_tests::atem_unknown_tool_is_dropped_before_route_responses_are_built ... ok +test server::muse_atem_roundtrip_tests::chat_completions_atem_non_streaming_round_trip ... ok +test server::muse_atem_roundtrip_tests::responses_api_atem_non_streaming_round_trip ... ok +test server::muse_atem_stream_anthropic_tests::anthropic_streaming_atem_parallel_calls_match_non_streaming ... ok +test server::muse_atem_stream_anthropic_tests::anthropic_streaming_replay_final_answer_and_malformed_eof ... ok +test server::muse_atem_stream_chat_tests::chat_streaming_atem_allowlist_and_malformed_eof_do_not_leak ... ok +test server::muse_atem_stream_chat_tests::chat_streaming_atem_parallel_calls_match_non_streaming_and_replay ... ok +test server::muse_atem_stream_responses_tests::responses_streaming_atem_parallel_calls_match_non_streaming ... ok +test server::muse_atem_stream_responses_tests::responses_streaming_replay_final_answer_and_malformed_eof ... ok +test server::muse_glimmer_template_tests::muse_glimmer_kwargs_precedence_and_reserved_keys_are_enforced ... ok +test server::muse_glimmer_template_tests::muse_glimmer_reasoning_strength_defaults_to_high_and_accepts_all_levels ... ok +test server::muse_glimmer_template_tests::muse_glimmer_template_fixture_hash_matches_checkpoint ... ok +test server::muse_glimmer_template_tests::muse_glimmer_template_renders_default_system_text_image_and_turns ... ok +test server::muse_glimmer_template_tests::muse_glimmer_template_renders_tools_calls_and_results ... ok +test server::muse_glimmer_template_tests::muse_glimmer_template_selects_atem_without_overriding_explicit_format ... ok +test server::nemotron_parse_worker::tests::a_task_prompt_is_trimmed_and_kept ... ok +test server::nemotron_parse_worker::tests::an_oversized_task_prompt_is_rejected ... ok +test server::nemotron_parse_worker::tests::audio_or_video_is_refused ... ok +test server::nemotron_parse_worker::tests::control_characters_in_the_task_prompt_are_rejected ... ok +test server::nemotron_parse_worker::tests::empty_or_blank_text_selects_the_default_task_prompt ... ok +test server::nemotron_parse_worker::tests::exactly_one_page_image_is_required ... ok +test server::nemotron_parse_worker::tests::finish_reason_is_length_only_when_the_budget_ran_out_without_eos ... ok +test server::prompt_cache::apc_integration_tests::apc_audio_payloads_isolate_chain_like_images ... ok +test server::prompt_cache::apc_integration_tests::apc_chain_is_recomputable_from_entry_tokens_and_request_mm_digest ... ok +test server::prompt_cache::apc_integration_tests::apc_chain_shares_prefix_when_only_late_tokens_differ ... ok +test server::prompt_cache::apc_integration_tests::apc_chains_for_same_tokens_different_images_share_no_block ... ok +test server::prompt_cache::apc_integration_tests::apc_chains_match_for_same_tokens_same_image_across_runs ... ok +test server::prompt_cache::apc_integration_tests::apc_disabled_flow_still_works_but_apc_active_entries_is_zero ... ok +test server::prompt_cache::apc_integration_tests::apc_off_misses_when_request_is_strict_prefix_of_longer_entry ... ok +test server::prompt_cache::apc_integration_tests::apc_on_partial_hits_when_request_is_strict_prefix_of_longer_entry ... ok +test server::prompt_cache::apc_integration_tests::apc_stats_reflect_block_chain_after_inserts ... ok +test server::prompt_cache::apc_integration_tests::apc_stores_independent_entries_for_same_tokens_different_images ... ok +test server::prompt_cache::apc_integration_tests::hybrid_ssm_detection_composes_with_apc_gate ... ok +test server::prompt_cache::apc_lookup::tests::aligned_matching_chains_return_the_block_floored_len ... ok +test server::prompt_cache::apc_lookup::tests::block_size_zero_returns_zero_safely ... ok +test server::prompt_cache::apc_lookup::tests::divergence_at_block_two_truncates_to_block_boundary ... ok +test server::prompt_cache::apc_lookup::tests::divergent_extra_hash_truncates_at_first_block ... ok +test server::prompt_cache::apc_lookup::tests::empty_candidate_chain_returns_zero ... ok +test server::prompt_cache::apc_lookup::tests::empty_request_tokens_returns_zero ... ok +test server::prompt_cache::apc_lookup::tests::matched_len_below_block_size_returns_zero ... ok +test server::prompt_cache::apc_lookup::tests::matched_len_floors_to_block_boundary ... ok +test server::prompt_cache::apc_lookup::tests::matched_len_zero_with_nonempty_candidate_returns_zero ... ok +test server::prompt_cache::apc_lookup::tests::non_aligned_matched_len_floors_to_covered_blocks ... ok +test server::prompt_cache::block_hash::tests::apc_hash_algo_default_is_sha256 ... ok +test server::prompt_cache::block_hash::tests::apc_hash_algo_parses_common_spellings ... ok +test server::prompt_cache::block_hash::tests::apc_hash_algo_rejects_unknown_strings ... ok +test server::prompt_cache::block_hash::tests::block_hash_to_hex_round_trips_via_as_bytes ... ok +test server::prompt_cache::block_hash::tests::block_hash_zero_short_hex_is_all_zeros ... ok +test server::prompt_cache::block_hash::tests::block_size_one_is_supported ... ok +test server::prompt_cache::block_hash::tests::block_size_zero_falls_back_to_default_in_release ... ok +test server::prompt_cache::block_hash::tests::chain_changes_when_tokens_differ ... ok +test server::prompt_cache::block_hash::tests::chain_diverges_at_first_block_when_mm_digest_differs ... ok +test server::prompt_cache::block_hash::tests::chain_is_empty_for_empty_token_sequence ... ok +test server::prompt_cache::block_hash::tests::chain_is_stable_for_identical_inputs ... ok +test server::prompt_cache::block_hash::tests::chain_propagates_late_token_change_only_downstream ... ok +test server::prompt_cache::block_hash::tests::chain_text_only_matches_empty_mm_digest ... ok +test server::prompt_cache::block_hash::tests::partial_tail_block_is_recorded_and_distinct ... ok +test server::prompt_cache::block_hash::tests::sha256_and_blake3_produce_different_chains_for_same_input ... ok +test server::prompt_cache::hybrid_ssm::tests::all_hybrid_ssm_model_types_round_trip ... ok +test server::prompt_cache::hybrid_ssm::tests::case_and_whitespace_insensitive ... ok +test server::prompt_cache::hybrid_ssm::tests::detect_architectures_array_fallback ... ok +test server::prompt_cache::hybrid_ssm::tests::detect_architectures_nemotronh_normalisation ... ok +test server::prompt_cache::hybrid_ssm::tests::detect_nested_text_config_model_type ... ok +test server::prompt_cache::hybrid_ssm::tests::detect_returns_first_arch_match ... ok +test server::prompt_cache::hybrid_ssm::tests::detect_returns_none_for_non_hybrid ... ok +test server::prompt_cache::hybrid_ssm::tests::detect_returns_none_when_config_lacks_model_type ... ok +test server::prompt_cache::hybrid_ssm::tests::detect_top_level_model_type ... ok +test server::prompt_cache::hybrid_ssm::tests::detect_top_level_takes_precedence_over_text_config ... ok +test server::prompt_cache::hybrid_ssm::tests::known_hybrid_model_types_match ... ok +test server::prompt_cache::hybrid_ssm::tests::non_hybrid_model_types_do_not_match ... ok +test server::prompt_cache::key::tests::digest_changes_when_lora_differs ... ok +test server::prompt_cache::key::tests::digest_changes_when_model_id_differs ... ok +test server::prompt_cache::key::tests::digest_changes_when_session_key_differs ... ok +test server::prompt_cache::key::tests::digest_changes_when_template_sig_differs ... ok +test server::prompt_cache::key::tests::digest_changes_with_each_extra_token ... ok +test server::prompt_cache::key::tests::digest_is_stable_for_identical_inputs ... ok +test server::prompt_cache::key::tests::digest_treats_none_and_empty_string_identically ... ok +test server::prompt_cache::key::tests::hex_representation_of_multimodal_digest_is_64_chars ... ok +test server::prompt_cache::key::tests::hex_roundtrip_length ... ok +test server::prompt_cache::key::tests::image_order_sensitivity_swapping_changes_key ... ok +test server::prompt_cache::key::tests::length_prefix_prevents_boundary_collisions ... ok +test server::prompt_cache::key::tests::multimodal_digest_does_not_collide_with_empty ... ok +test server::prompt_cache::key::tests::multimodal_digest_empty_is_stable ... ok +test server::prompt_cache::key::tests::multimodal_digest_empty_matches_empty_helper ... ok +test server::prompt_cache::key::tests::multimodal_digest_from_vecs_matches_direct ... ok +test server::prompt_cache::key::tests::multimodal_multi_turn_prefix_stability ... ok +test server::prompt_cache::key::tests::prefix_len_saturates_at_token_length ... ok +test server::prompt_cache::key::tests::resolve_session_key_all_empty_returns_sentinel ... ok +test server::prompt_cache::key::tests::resolve_session_key_falls_back_to_user ... ok +test server::prompt_cache::key::tests::resolve_session_key_prefers_prompt_cache_key ... ok +test server::prompt_cache::key::tests::resolve_session_key_treats_empty_prompt_cache_key_as_absent ... ok +test server::prompt_cache::key::tests::resolve_session_key_treats_empty_user_as_absent ... ok +test server::prompt_cache::key::tests::resolve_session_key_uses_anonymous_sentinel_when_both_absent ... ok +test server::prompt_cache::key::tests::same_text_different_images_produce_different_cache_keys ... ok +test server::prompt_cache::key::tests::same_text_same_image_bytes_produce_same_cache_key ... ok +test server::prompt_cache::key::tests::same_text_same_image_different_audio_produces_different_key ... ok +test server::prompt_cache::key::tests::shorter_prefix_digest_matches_truncated_full_digest ... ok +test server::prompt_cache::key::tests::template_sig_canonicalizes_kwargs_key_order ... ok +test server::prompt_cache::key::tests::template_sig_changes_when_kwargs_change ... ok +test server::prompt_cache::key::tests::template_sig_changes_when_template_source_changes ... ok +test server::prompt_cache::key::tests::template_sig_changes_when_tool_choice_mode_changes ... ok +test server::prompt_cache::key::tests::template_sig_changes_when_tool_removed ... ok +test server::prompt_cache::key::tests::template_sig_changes_when_tools_added ... ok +test server::prompt_cache::key::tests::template_sig_changes_when_tools_reordered ... ok +test server::prompt_cache::key::tests::template_sig_changes_with_tool_name ... ok +test server::prompt_cache::key::tests::template_sig_distinguishes_absent_from_auto_tool_choice ... ok +test server::prompt_cache::key::tests::template_sig_fits_into_prompt_cache_key ... ok +test server::prompt_cache::key::tests::template_sig_is_stable_for_identical_inputs ... ok +test server::prompt_cache::key::tests::template_sig_treats_empty_tools_and_none_tools_identically ... ok +test server::prompt_cache::key::tests::text_only_key_uses_empty_multimodal_digest ... ok +test server::prompt_cache::key::tests::token_order_matters ... ok +test server::prompt_cache::key::tests::tools_digest_canonicalizes_parameter_key_order ... ok +test server::prompt_cache::key::tests::tools_digest_changes_with_parameters ... ok +test server::prompt_cache::prefix_matcher_tests::prefix_matcher_cross_session_fallback_returns_entry ... ok +test server::prompt_cache::prefix_matcher_tests::prefix_matcher_cross_session_wins_when_match_strictly_longer ... ok +test server::prompt_cache::prefix_matcher_tests::prefix_matcher_different_template_does_not_cross_contaminate ... ok +test server::prompt_cache::prefix_matcher_tests::prefix_matcher_mru_tie_break_when_session_matches ... ok +test server::prompt_cache::prefix_matcher_tests::prefix_matcher_prefers_same_session_on_tie ... ok +test server::prompt_cache::prefix_matcher_tests::prefix_matcher_respects_min_prefix_in_both_tiers ... ok +test server::prompt_cache::prefix_matcher_tests::prefix_matcher_scales_to_32k_tokens ... ok +test server::prompt_cache::snapshot_divergence_tests::a_common_prefix_below_min_prefix_tokens_is_not_adopted ... ok +test server::prompt_cache::snapshot_divergence_tests::a_declining_model_leaves_the_wrapped_case_as_a_classified_reject ... ok +test server::prompt_cache::snapshot_divergence_tests::a_disabled_store_reports_no_candidate ... ok +test server::prompt_cache::snapshot_divergence_tests::a_diverging_candidate_is_adopted_at_the_longest_common_prefix ... ok +test server::prompt_cache::snapshot_divergence_tests::a_hit_wins_over_a_sibling_divergence ... ok +test server::prompt_cache::snapshot_divergence_tests::a_request_shorter_than_the_stored_entry_is_a_divergence ... ok +test server::prompt_cache::snapshot_divergence_tests::an_exact_prefix_candidate_wins_over_a_truncating_one ... ok +test server::prompt_cache::snapshot_divergence_tests::cold_store_reports_no_candidate_not_a_divergence ... ok +test server::prompt_cache::snapshot_divergence_tests::divergence_does_not_inflate_the_snapshot_hit_counters ... ok +test server::prompt_cache::snapshot_divergence_tests::exact_prefix_still_hits_and_reports_no_divergence ... ok +test server::prompt_cache::snapshot_divergence_tests::foreign_model_bucket_reports_no_candidate_not_a_divergence ... ok +test server::prompt_cache::snapshot_divergence_tests::foreign_session_bucket_reports_no_candidate_not_a_divergence ... ok +test server::prompt_cache::snapshot_divergence_tests::generation_prompt_scaffold_divergence_is_classified_with_its_geometry ... ok +test server::prompt_cache::snapshot_divergence_tests::recurrent_families_keep_exact_prefix_semantics ... ok +test server::prompt_cache::snapshot_divergence_tests::retokenization_drift_divergence_is_classified ... ok +test server::prompt_cache::snapshot_divergence_tests::the_capability_is_asked_about_the_adopted_length_not_the_stored_length ... ok +test server::prompt_cache::snapshot_divergence_tests::the_longest_common_prefix_candidate_is_the_one_reported ... ok +test server::prompt_cache::snapshot_divergence_tests::thinking_stripped_from_history_divergence_is_classified ... ok +test server::prompt_cache::snapshot_sizing::tests::a_model_that_exhausts_memory_keeps_the_fallback ... ok +test server::prompt_cache::snapshot_sizing::tests::a_tight_ceiling_still_holds_one_entry_when_memory_allows ... ok +test server::prompt_cache::snapshot_sizing::tests::an_unset_context_size_sizes_for_the_representative_window ... ok +test server::prompt_cache::snapshot_sizing::tests::attention_cache_families_take_the_model_aware_path ... ok +test server::prompt_cache::snapshot_sizing::tests::available_memory_clamps_implicit_raise_but_not_below_fallback ... ok +test server::prompt_cache::snapshot_sizing::tests::dense_kv_store_default_holds_a_long_conversation ... ok +test server::prompt_cache::snapshot_sizing::tests::gemma4_vlm_checkpoint_gets_a_boundary_snapshot_sized_default ... ok +test server::prompt_cache::snapshot_sizing::tests::kv_store_default_skips_snapshot_only_families ... ok +test server::prompt_cache::snapshot_sizing::tests::llama4_scout_entry_matches_the_measured_per_token_footprint ... ok +test server::prompt_cache::snapshot_sizing::tests::per_token_estimates_match_real_checkpoint_boundary_snapshots ... ok +test server::prompt_cache::snapshot_sizing::tests::qwen35_vlm_checkpoint_counts_its_recurrent_state ... ok +test server::prompt_cache::snapshot_sizing::tests::qwen38_27b_default_holds_multiple_representative_snapshots ... ok +test server::prompt_cache::snapshot_sizing::tests::standard_attention_keeps_legacy_default ... ok +test server::prompt_cache::snapshot_sizing::tests::text_suffix_spellings_match_their_wrapper_spellings ... ok +test server::prompt_cache::store::tests::boundary_snapshots_still_chain_against_each_other ... ok +test server::prompt_cache::store::tests::clear_drops_everything ... ok +test server::prompt_cache::store::tests::completion_snapshot_does_not_supersede_the_boundary_snapshot_of_its_own_turn ... ok +test server::prompt_cache::store::tests::concurrent_access_many_threads ... ok +test server::prompt_cache::store::tests::consumed_entries_are_swept_from_accounting_on_next_store_touch ... ok +test server::prompt_cache::store::tests::different_buckets_do_not_cross_contaminate ... ok +test server::prompt_cache::store::tests::disabled_config_rejects_inserts_and_lookups ... ok +test server::prompt_cache::store::tests::evict_if_needed_returns_freed_bytes ... ok +test server::prompt_cache::store::tests::fuzz_stress_no_unbounded_growth ... ok +test server::prompt_cache::store::tests::history_boundary_snapshot_hits_where_the_end_of_generation_one_cannot ... ok +test server::prompt_cache::store::tests::idempotent_insert_replaces_existing_entry ... ok +test server::prompt_cache::store::tests::insert_rejects_when_single_entry_exceeds_capacity ... ok +test server::prompt_cache::store::tests::insert_then_lookup_returns_entry_and_matched_len ... ok +test server::prompt_cache::store::tests::longest_prefix_across_multiple_entries_same_bucket ... ok +test server::prompt_cache::store::tests::lookup_ignores_stored_prefix_longer_than_request_when_no_safe_entry_exists ... ok +test server::prompt_cache::store::tests::lookup_misses_when_prefix_is_shorter_than_min_prefix ... ok +test server::prompt_cache::store::tests::lru_evicts_oldest_under_entry_cap ... ok +test server::prompt_cache::store::tests::lru_evicts_under_byte_cap ... ok +test server::prompt_cache::store::tests::metrics_hooks_fire_on_insert_and_lookup ... ok +test server::prompt_cache::store::tests::metrics_hooks_fire_reject_reasons_for_each_insert_decline ... ok +test server::prompt_cache::store::tests::multimodal_digest_isolates_prefix_lookup_buckets ... ok +test server::prompt_cache::store::tests::paged_set_without_handles_is_empty ... ok +test server::prompt_cache::store::tests::session_chain_supersede_keeps_only_the_longest_snapshot ... ok +test server::prompt_cache::store::tests::snapshot_capacity_self_eviction_is_counted_and_warned_once_per_session ... ok +test server::prompt_cache::store::tests::snapshot_lookup_requires_whole_stored_prefix_and_same_session ... ok +test server::prompt_cache::store::tests::snapshot_lru_cap_is_independent_from_kv_entries ... ok +test server::prompt_cache::store::tests::snapshot_metrics_hooks_fire_on_insert_and_lookup ... ok +test server::prompt_cache::store::tests::stats_reflect_mutations ... ok +test server::prompt_cache::store::tests::supersede_does_not_fire_without_a_session_key ... ok +test server::prompt_cache::store::tests::supersede_does_not_reach_across_sessions ... ok +test server::prompt_cache::store::tests::supersede_frees_bytes_before_the_capacity_check ... ok +test server::prompt_cache::store::tests::supersede_requires_a_strict_token_extension ... ok +test server::prompt_cache::store::tests::ttl_expiry_drops_idle_entries_on_lookup ... ok +test server::prompt_cache::trie::tests::deep_insert_scales_linearly_in_prefix_len ... ok +test server::prompt_cache::trie::tests::divergence_past_common_prefix ... ok +test server::prompt_cache::trie::tests::empty_trie_returns_none ... ok +test server::prompt_cache::trie::tests::entries_at_various_depths ... ok +test server::prompt_cache::trie::tests::idempotent_insert_does_not_double_count ... ok +test server::prompt_cache::trie::tests::insert_and_exact_lookup ... ok +test server::prompt_cache::trie::tests::min_len_threshold_filters_short_matches ... ok +test server::prompt_cache::trie::tests::multiple_entries_under_common_prefix ... ok +test server::prompt_cache::trie::tests::pop_prefixes_deep_branching_chain_does_not_overflow ... ok +test server::prompt_cache::trie::tests::pop_prefixes_deeper_prefix_also_removed ... ok +test server::prompt_cache::trie::tests::pop_prefixes_empty_tokens_is_noop ... ok +test server::prompt_cache::trie::tests::pop_prefixes_exact_match_is_not_removed ... ok +test server::prompt_cache::trie::tests::pop_prefixes_immediate_prefix_is_removed ... ok +test server::prompt_cache::trie::tests::pop_prefixes_no_matching_prefix_entries ... ok +test server::prompt_cache::trie::tests::pop_prefixes_sibling_branch_untouched ... ok +test server::prompt_cache::trie::tests::pop_prefixes_subtree_count_consistent_after_drain ... ok +test server::prompt_cache::trie::tests::remove_absent_digest_is_noop ... ok +test server::prompt_cache::trie::tests::remove_deletes_digest_and_prunes ... ok +test server::prompt_cache::trie::tests::split_then_insert_adds_branch ... ok +test server::prompt_cache::trie::tests::stored_longer_than_requested ... ok +test server::prompt_cache::trie::tests::stored_shorter_than_requested ... ok +test server::read_budget::read_budget_tests::a_fresh_connection_is_armed ... ok +test server::read_budget::read_budget_tests::dropping_a_response_body_arms_the_budget_again ... ok +test server::read_budget::read_budget_tests::dropping_an_unread_request_body_still_stands_the_budget_down ... ok +test server::read_budget::read_budget_tests::finishing_a_request_body_stands_the_budget_down ... ok +test server::read_budget::read_budget_tests::finishing_a_response_body_arms_the_budget_again ... ok +test server::realtime_engine::tests::close_cancels_unflushed_session ... ok +test server::realtime_engine::tests::failed_load_is_reported ... ok +test server::realtime_engine::tests::panicking_session_is_dropped_and_engine_keeps_serving ... ok +test server::realtime_engine::tests::push_on_unopened_session_errors ... ok +test server::realtime_engine::tests::second_reserve_fails_until_release ... ok +test server::realtime_protocol::tests::client_messages_parse_like_upstream ... ok +test server::realtime_protocol::tests::event_mapping_names_and_fields ... ok +test server::realtime_protocol::tests::odd_byte_count_rejected ... ok +test server::realtime_protocol::tests::pcm16_round_trip ... ok +test server::realtime_protocol::tests::session_and_error_events_carry_the_documented_shape ... ok +test server::reasoning_echo::tests::another_session_template_or_model_never_sees_the_trace ... ok +test server::reasoning_echo::tests::byte_budget_bounds_the_store ... ok +test server::reasoning_echo::tests::echoed_reasoning_wins_over_the_stored_trace ... ok +test server::reasoning_echo::tests::edited_assistant_content_is_not_filled ... ok +test server::reasoning_echo::tests::edited_earlier_message_is_not_filled ... ok +test server::reasoning_echo::tests::endpoint::messages_content_only_follow_up_keeps_the_generated_rendering ... ok +test server::reasoning_echo::tests::endpoint::messages_without_thinking_records_nothing ... ok +test server::reasoning_echo::tests::endpoint::primed_stream::messages_primed_stream_records_thinking_for_a_three_turn_chat ... ok +test server::reasoning_echo::tests::endpoint::primed_stream::messages_stream_routes_primed_reasoning_to_a_thinking_block ... ok +test server::reasoning_echo::tests::endpoint::primed_stream::non_streaming_arms_arm_the_budget_for_a_primed_prompt ... ok +test server::reasoning_echo::tests::endpoint::primed_stream::responses_primed_stream_records_reasoning_for_a_three_turn_chat ... ok +test server::reasoning_echo::tests::endpoint::primed_stream::responses_stream_routes_primed_reasoning_to_reasoning_events ... ok +test server::reasoning_echo::tests::endpoint::primed_stream::unprimed_prompt_leaves_the_budget_flag_off ... ok +test server::reasoning_echo::tests::endpoint::responses_accepts_untyped_items_and_output_text_parts ... ok +test server::reasoning_echo::tests::endpoint::responses_content_only_follow_up_keeps_the_generated_rendering ... ok +test server::reasoning_echo::tests::endpoint::responses_previous_response_id_chain_keeps_the_generated_rendering ... ok +test server::reasoning_echo::tests::entry_cap_evicts_least_recently_used_and_hits_refresh ... ok +test server::reasoning_echo::tests::every_earlier_turn_is_filled_on_turn_three ... ok +test server::reasoning_echo::tests::oversized_trace_and_disabled_store_keep_nothing ... ok +test server::reasoning_echo::tests::prefill_continuations_and_blank_reasoning_are_not_recorded ... ok +test server::reasoning_echo::tests::reasoning_only_reply_is_filled_only_for_its_own_conversation ... ok +test server::reasoning_echo::tests::route::content_only_follow_up_keeps_the_generated_rendering_on_both_paths ... ok +test server::reasoning_echo::tests::route::prompt_cache_off_leaves_content_only_history_untouched ... ok +test server::reasoning_echo::tests::stored_content_only_turn_renders_identically_to_the_echoed_form ... ok +test server::reasoning_echo::tests::surrounding_whitespace_does_not_change_the_key ... ok +test server::reasoning_echo::tests::tool_call_and_inline_think_turns_are_never_filled ... ok +test server::reasoning_echo::tests::unstored_turn_is_unchanged ... ok +test server::reasoning_echo::tests::warmup::record_reports_whether_the_trace_was_stored ... ok +test server::reasoning_echo::tests::warmup::warmup_renders_the_filled_request ... ok +test server::reasoning_echo::tests::warmup::warmup_target_prefixes_the_filled_follow_up ... ok +test server::reasoning_effort_tests::accepted_reasoning_effort_values_change_the_rendered_prompt ... ok +test server::reasoning_effort_tests::chat_template_kwargs_outrank_the_top_level_field ... ok +test server::reasoning_effort_tests::effort_is_inert_when_the_template_has_thinking_disabled ... ok +test server::reasoning_effort_tests::engine_failures_are_not_template_rejections ... ok +test server::reasoning_effort_tests::engine_render_failure_still_falls_back ... ok +test server::reasoning_effort_tests::explicit_enable_thinking_kwarg_wins_over_effort_none ... ok +test server::reasoning_effort_tests::extra_body_reasoning_bool_false_disables ... ok +test server::reasoning_effort_tests::extra_body_reasoning_bool_true_enables_without_a_level ... ok +test server::reasoning_effort_tests::extra_body_reasoning_object_effort_resolves ... ok +test server::reasoning_effort_tests::extra_body_spellings_of_reasoning_effort_resolve ... ok +test server::reasoning_effort_tests::fuel_exhaustion_is_not_a_template_rejection ... ok +test server::reasoning_effort_tests::nested_raise_exception_is_still_a_template_rejection ... ok +test server::reasoning_effort_tests::next_turn_warmup_renders_with_the_mapped_reasoning_effort ... ok +test server::reasoning_effort_tests::next_turn_warmup_without_an_effort_keeps_the_template_default ... ok +test server::reasoning_effort_tests::qwen3_8_template_fixture_matches_pinned_digest ... ok +test server::reasoning_effort_tests::reasoning_effort_is_not_a_reserved_context_key ... ok +test server::reasoning_effort_tests::reasoning_effort_low_sets_enable_thinking_true_on_template_without_level_key ... ok +test server::reasoning_effort_tests::reasoning_effort_maps_to_reasoning_strength_for_muse_glimmer_template ... ok +test server::reasoning_effort_tests::reasoning_effort_none_sets_enable_thinking_false_and_no_level_kwarg ... ok +test server::reasoning_effort_tests::reasoning_effort_prefers_reasoning_effort_key_when_template_reads_both ... ok +test server::reasoning_effort_tests::reasoning_effort_source_outranks_extra_body_reasoning ... ok +test server::reasoning_effort_tests::rejected_reasoning_effort_is_recognised_as_a_template_rejection ... ok +test server::reasoning_effort_tests::template_rejection_also_fails_on_the_raw_render_path ... ok +test server::reasoning_effort_tests::template_rejection_fails_the_request_instead_of_returning_a_fallback_prompt ... ok +test server::reasoning_effort_tests::template_sig_separates_two_top_level_efforts ... ok +test server::reasoning_effort_tests::template_without_reasoning_effort_is_unaffected ... ok +test server::reasoning_effort_tests::top_level_high_is_rejected_rather_than_translated ... ok +test server::reasoning_effort_tests::top_level_reasoning_effort_reaches_the_template ... ok +test server::reasoning_format::tests::a_response_with_no_thoughts_never_gets_a_reasoning_field ... ok +test server::reasoning_format::tests::an_unknown_name_is_reported_with_the_upstream_vocabulary ... ok +test server::reasoning_format::tests::auto_is_deepseek_here_because_there_is_nothing_else_to_detect ... ok +test server::reasoning_format::tests::deepseek_legacy_puts_the_thoughts_in_both ... ok +test server::reasoning_format::tests::deepseek_puts_the_thoughts_in_reasoning_content_only ... ok +test server::reasoning_format::tests::every_b10621_name_parses_to_its_own_format ... ok +test server::reasoning_format::tests::none_leaves_the_thoughts_unparsed_in_content_and_emits_no_reasoning ... ok +test server::reasoning_format::tests::the_default_is_auto_as_it_is_upstream ... ok +test server::reasoning_format::tests::the_placement_predicates_partition_the_four_values ... ok +test server::reasoning_format::tests::the_thoughts_form_is_only_built_when_a_format_needs_it ... ok +test server::request_options::tests::absent_tool_choice_keeps_the_tools_signal ... ok +test server::request_options::tests::an_absent_and_an_empty_request_breaker_field_deserialize_differently ... ok +test server::request_options::tests::an_explicitly_empty_request_breaker_list_disables_the_server_default ... ok +test server::request_options::tests::anthropic_route_gates_on_rendered_tools ... ok +test server::request_options::tests::below_cap_and_absent_max_tokens_are_unchanged ... ok +test server::request_options::tests::build_server_generate_options_applies_request_overrides ... ok +test server::request_options::tests::build_server_generate_options_uses_one_patched_live_snapshot ... ok +test server::request_options::tests::build_server_generate_options_uses_server_defaults ... ok +test server::request_options::tests::carries_loop_amplifier_predicate ... ok +test server::request_options::tests::chat_route_gates_on_rendered_tools ... ok +test server::request_options::tests::completions_route_keeps_grammar_only_requests_disabled ... ok +test server::request_options::tests::disaggregated_chat_front_gates_on_rendered_tools ... ok +test server::request_options::tests::dry_base_below_one_falls_back_to_the_server_default ... ok +test server::request_options::tests::dry_penalty_last_n_wire_values_clamp_below_the_full_history_sentinel ... ok +test server::request_options::tests::explicit_max_tokens_clamps_to_default_without_explicit_context ... ok +test server::request_options::tests::explicit_max_tokens_clamps_to_per_slot_context_size ... ok +test server::request_options::tests::explicit_request_disable_overrides_family_default_on ... ok +test server::request_options::tests::explicit_request_enable_wins_over_the_amplifier_gate ... ok +test server::request_options::tests::explicit_request_tune_overrides_family_default_on ... ok +test server::request_options::tests::gemma4_amplified_request_auto_enables_through_build_server_generate_options ... ok +test server::request_options::tests::gemma4_family_default_on_requires_an_amplifier ... ok +test server::request_options::tests::gemma4_plain_chat_stays_disabled_through_build_server_generate_options ... ok +test server::request_options::tests::global_override_applies_to_non_gemma4 ... ok +test server::request_options::tests::global_override_can_force_disable_gemma4 ... ok +test server::request_options::tests::global_override_off_disables_an_amplified_gemma4_request ... ok +test server::request_options::tests::global_override_on_enables_plain_chat_despite_the_gate ... ok +test server::request_options::tests::grammar_constrained_long_uniform_array_does_not_arm_detector ... ok +test server::request_options::tests::loop_detection_disabled_by_default_for_non_gemma ... ok +test server::request_options::tests::loop_detection_from_request_none_when_no_fields ... ok +test server::request_options::tests::loop_detection_from_request_some_when_any_field_set ... ok +test server::request_options::tests::non_gemma4_amplified_request_stays_disabled_through_build_server_generate_options ... ok +test server::request_options::tests::non_gemma4_family_stays_disabled_by_default ... ok +test server::request_options::tests::recommended_threshold_survives_a_four_column_markdown_table ... ok +test server::request_options::tests::replayed_tool_calls_amplify_without_a_tools_array ... ok +test server::request_options::tests::replayed_tool_results_amplify_without_a_tools_array ... ok +test server::request_options::tests::request_dry_sequence_breakers_override_the_server_default ... ok +test server::request_options::tests::resolve_loop_detection_precedence ... ok +test server::request_options::tests::responses_route_gates_on_rendered_tools ... ok +test server::request_options::tests::reverse_prompt_stops_follow_the_b10621_replace_semantics ... ok +test server::request_options::tests::server_dry_sequence_breaker_default_applies_when_the_request_omits_it ... ok +test server::request_options::tests::tool_choice_auto_keeps_the_tools_signal ... ok +test server::request_options::tests::tool_choice_none_does_not_disarm_replayed_tool_calls ... ok +test server::request_options::tests::tool_choice_none_drops_the_tools_signal ... ok +test server::rerank_worker::tests::queue_full_returns_queuefull_error ... ok +test server::rerank_worker::tests::request_timeout_returns_timeout_error ... ok +test server::rerank_worker::tests::worker_loads_stub_and_reports_info ... ok +test server::rerank_worker::tests::worker_maps_a_family_error_to_internal ... ok +test server::rerank_worker::tests::worker_round_trips_scores_on_its_own_thread ... ok +test server::rerank_worker::tests::worker_surfaces_loader_failure ... ok +test server::rerank_worker::tests::worker_survives_a_panicking_request_and_keeps_serving ... ok +test server::responses_input_parts_tests::assistant_message_image_moves_to_following_user_turn ... ok +test server::responses_input_parts_tests::function_output_image_stays_after_tool_result ... ok +test server::responses_input_parts_tests::function_output_preserves_image_order ... ok +test server::responses_input_parts_tests::function_output_preserves_text_alongside_visual_input ... ok +test server::responses_input_parts_tests::function_output_string_form_is_unchanged ... ok +test server::responses_input_parts_tests::input_file_inside_function_output_is_rejected ... ok +test server::responses_input_parts_tests::input_file_part_is_rejected ... ok +test server::responses_input_parts_tests::input_image_file_id_only_is_rejected_with_named_error ... ok +test server::responses_input_parts_tests::input_text_and_input_image_parts_lower_to_chat_parts ... ok +test server::responses_input_parts_tests::known_non_image_tool_parts_preserve_original_json ... ok +test server::responses_input_parts_tests::non_user_message_preserves_video_and_audio_when_moving_images ... ok +test server::responses_input_parts_tests::output_text_on_non_assistant_roles_is_rejected ... ok +test server::responses_input_parts_tests::stored_response_with_image_tool_output_replays_identically ... ok +test server::responses_input_parts_tests::typed_assistant_output_text_lowers_to_assistant_text ... ok +test server::responses_input_parts_tests::unknown_function_output_parts_remain_as_json_text ... ok +test server::responses_input_parts_tests::untyped_item_with_role_parses_as_message ... ok +test server::responses_store::tests::byte_only_eviction_runs_under_entry_cap ... ok +test server::responses_store::tests::cancel_in_flight_flips_token_when_registered ... ok +test server::responses_store::tests::cancel_in_flight_returns_false_when_unknown ... ok +test server::responses_store::tests::exact_byte_boundary_is_retained ... ok +test server::responses_store::tests::extreme_budgets_do_not_overflow_or_preallocate_unbounded_capacity ... ok +test server::responses_store::tests::insert_then_get_returns_payload ... ok +test server::responses_store::tests::lru_eviction_runs_when_capacity_exceeded ... ok +test server::responses_store::tests::missing_entry_returns_none ... ok +test server::responses_store::tests::oversized_single_response_is_not_retained ... ok +test server::responses_store::tests::remove_returns_previous_and_drops_entry ... ok +test server::responses_store::tests::replacement_updates_running_total_and_lru_index ... ok +test server::responses_store::tests::running_total_stays_consistent_across_remove_and_ttl_sweep ... ok +test server::responses_store::tests::simultaneous_count_and_byte_pressure_evicts_to_both_limits ... ok +test server::responses_store::tests::ttl_sweep_drops_expired_entries ... ok +test server::responses_store::tests::unregister_in_flight_drops_entry ... ok +test server::responses_store::tests::zero_byte_budget_keeps_store_enabled_but_retains_nothing ... ok +test server::responses_translator::tests::conversation_referenced_without_store_returns_400 ... ok +test server::responses_translator::tests::conversation_string_form_records_id ... ok +test server::responses_translator::tests::function_tool_propagates_to_chat_tools ... ok +test server::responses_translator::tests::instructions_become_leading_system_message ... ok +test server::responses_translator::tests::maps_string_input_to_single_user_message ... ok +test server::responses_translator::tests::max_output_tokens_zero_is_rejected ... ok +test server::responses_translator::tests::outbound_build_includes_output_text_aggregator ... ok +test server::responses_translator::tests::previous_response_id_without_store_returns_400 ... ok +test server::responses_translator::tests::reasoning_attaches_to_function_call_turn_in_normal_tool_flow ... ok +test server::responses_translator::tests::reasoning_does_not_leak_when_function_call_output_has_no_preceding_function_call ... ok +test server::responses_translator::tests::reasoning_item_attaches_to_following_assistant_message ... ok +test server::responses_translator::tests::rejects_background_true ... ok +test server::responses_translator::tests::rejects_metadata_over_16 ... ok +test server::responses_translator::tests::rejects_previous_id_with_conversation ... ok +test server::responses_translator::tests::rejects_truncation_auto ... ok +test server::responses_translator::tests::rejects_unsupported_tool_type ... ok +test server::responses_translator::tests::responses_reasoning_effort_none_disables_thinking ... ok +test server::responses_translator::tests::responses_reasoning_effort_reaches_chat_request ... ok +test server::responses_translator::tests::responses_reasoning_effort_template_rejection_survives_translation ... ok +test server::responses_translator::tests::responses_template_engine_failure_still_uses_prompt_fallback ... ok +test server::responses_translator::tests::safety_identifier_falls_back_to_user_for_chat_user_field ... ok +test server::responses_translator::tests::store_defaults_to_true_when_omitted ... ok +test server::responses_translator::tests::store_false_round_trips_to_translated_request ... ok +test server::responses_translator::tests::text_json_schema_format_maps_to_response_format ... ok +test server::router_cache::anchored_delete::tests::delete_contents_detects_nested_directory_swap_before_open ... ok +test server::router_cache::anchored_delete::tests::identity_checks_preserve_device_and_inode_without_narrowing ... ok +test server::router_cache::anchored_publish::tests::cleanup_refuses_staging_parent_identity_swap ... ok +test server::router_cache::anchored_publish::tests::cleanup_unlinks_symlink_without_deleting_target ... ok +test server::router_cache::anchored_publish::tests::publish_refuses_destination_created_after_stage ... ok +test server::router_cache::anchored_publish::tests::publish_refuses_owner_directory_identity_swap ... ok +test server::router_cache::anchored_remove::tests::managed_removal_deletes_complete_snapshot_from_private_quarantine ... ok +test server::router_cache::anchored_remove::tests::managed_removal_detects_source_swap_after_verify_and_leaves_quarantine ... ok +test server::router_cache::anchored_remove::tests::managed_removal_refuses_parent_swap_after_quarantine_rename ... ok +test server::router_cache::anchored_remove::tests::managed_removal_refuses_parent_swap_before_quarantine_rename ... ok +test server::router_cache::anchored_remove::tests::managed_removal_refuses_quarantine_child_swap_before_final_unlink ... ok +test server::router_cache::anchored_remove::tests::managed_removal_unlinks_symlink_child_without_deleting_target ... ok +test server::router_cache::restart_tests::killed_writer_and_terminal_history_reconcile_across_processes ... +running 1 test + +running 1 test +test server::router_cache::restart_tests::restart_child ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 9094 filtered out; finished in 0.01s + + +running 1 test +test server::router_cache::restart_tests::restart_child ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 9094 filtered out; finished in 0.00s + +ok +test server::router_cache::restart_tests::restart_child ... ok +test server::router_front::tests::authoritative_count_at_budget_is_length ... ok +test server::router_front::tests::authoritative_count_fixes_finish_reason_flip ... ok +test server::router_front::tests::chat_chunk_reasoning_honors_alias_policy ... ok +test server::router_front::tests::chat_chunk_usage_shape ... ok +test server::router_front::tests::chat_completion_json_includes_usage ... ok +test server::router_front::tests::chat_completion_json_omits_reasoning_alias_when_disabled ... ok +test server::router_front::tests::chat_completion_json_usage_present_with_reasoning ... ok +test server::router_front::tests::clamps_authoritative_count_to_max_tokens ... ok +test server::router_front::tests::fallback_frame_count_clamped_to_max_tokens ... ok +test server::router_front::tests::falls_back_to_frame_count_when_no_authoritative_count ... ok +test server::router_front::tests::prefers_authoritative_count_over_frame_count ... ok +test server::router_front::tests::router_chat_forwards_forced_tool_choice_instead_of_rejecting_it ... ok +test server::router_front::tests::router_chat_maps_template_rejection_to_bad_request ... ok +test server::router_front::tests::router_chat_rejects_invalid_tool_choice_before_rendering ... ok +test server::router_front::tests::router_chat_rejects_more_than_max_tools_before_rendering ... ok +test server::router_front::tests::router_chat_rejects_response_format_before_rendering ... ok +test server::router_front::tests::router_completion_existing_unsupported_option_guards_are_unchanged ... ok +test server::router_front::tests::router_live_snapshot_preserves_the_startup_zero_timeout_fallback ... ok +test server::router_front::tests::router_refuses_the_kimi_k3_native_chat_format ... ok +test server::router_front::tests::router_settings_route_authenticates_and_publishes_patch ... ok +test server::router_front::tests::router_settings_route_is_absent_until_enabled ... ok +test server::router_front::tests::router_stats_redacts_addresses_by_default ... ok +test server::router_front::tests::router_stats_verbose_env_parsing ... ok +test server::router_front::tests::router_stats_verbose_includes_addresses ... ok +test server::router_front::tests::text_only_router_rejects_declared_media_even_when_resolution_drops_it ... ok +test server::router_front::tests::text_only_router_rejects_declared_media_from_the_request_itself ... ok +test server::router_front::tests::wants_stream_usage_defaults_to_false_without_stream_options ... ok +test server::router_front::tests::wants_stream_usage_respects_explicit_false ... ok +test server::router_front::tests::wants_stream_usage_respects_explicit_true ... ok +test server::router_lifecycle::router_lifecycle_tests::contract::list_and_event_comparison_preserves_nullable_and_unknown_fields ... ok +test server::router_lifecycle::router_lifecycle_tests::contract::normalization_rejects_invalid_or_absent_dynamic_values ... ok +test server::router_lifecycle::router_lifecycle_tests::contract::whole_value_comparison_rejects_missing_extra_and_discriminator_drift ... ok +test server::router_lifecycle::router_lifecycle_tests::lifecycle_busy_and_capacity_axes_are_distinct ... ok +test server::router_lifecycle::router_lifecycle_tests::lifecycle_coordinator_broadcast_order_matches_sequence ... ok +test server::router_lifecycle::router_lifecycle_tests::lifecycle_coordinator_lists_gets_and_reports_cancel_unsupported ... ok +test server::router_lifecycle::router_lifecycle_tests::lifecycle_coordinator_prunes_idempotency_with_terminal_history ... ok +test server::router_lifecycle::router_lifecycle_tests::lifecycle_coordinator_replay_reports_gap_or_restart ... ok +test server::router_lifecycle::router_lifecycle_tests::lifecycle_coordinator_replays_idempotent_operations ... ok +test server::router_lifecycle::router_lifecycle_tests::lifecycle_coordinator_sequence_replay_reports_ring_gap ... ok +test server::router_lifecycle::router_lifecycle_tests::lifecycle_coordinator_sequence_replay_respects_instance_gap_and_current_fences ... ok +test server::router_lifecycle::router_lifecycle_tests::lifecycle_download_operation_producers_match_contract_fixtures ... ok +test server::router_lifecycle::router_lifecycle_tests::lifecycle_download_progress_event_matches_contract_fixture ... ok +test server::router_lifecycle::router_lifecycle_tests::lifecycle_event_ring_limit_reports_gap_for_pruned_event ... ok +test server::router_lifecycle::router_lifecycle_tests::lifecycle_response_dtos_round_trip_contract_fixtures ... ok +test server::router_lifecycle::router_lifecycle_tests::stable_model_identity_matches_contract_vectors ... ok +test server::router_models::router_load_profile_tests::active_profile_config_is_observed_but_cannot_hot_mutate ... ok +test server::router_models::router_load_profile_tests::invalid_profile_is_rejected_before_eviction_or_lifecycle_mutation ... ok +test server::router_models::router_load_profile_tests::profile_fingerprint_replay_conflict_and_failed_load_leave_template_intact ... ok +test server::router_models::router_load_profile_tests::profile_resolution_preserves_template_and_model_identity ... ok +test server::router_models::router_models_discovery_tests::discovery_rejects_model_whose_config_is_symlink_evidence ... ok +test server::router_models::router_models_discovery_tests::router_sources_reject_symlinked_config_evidence_consistently ... ok +test server::router_models::router_models_tests::a_download_emits_the_b10621_event_sequence_and_lands_in_the_cache ... ok +test server::router_models::router_models_tests::a_failed_download_emits_download_failed_and_drops_the_entry ... ok +test server::router_models::router_models_tests::a_failed_load_reports_unloaded_with_failure ... ok +test server::router_models::router_models_tests::active_download_replays_resolved_revision_alias ... ok +test server::router_models::router_models_tests::begin_load_reservation_is_atomic_with_current_registry_entry ... ok +test server::router_models::router_models_tests::cache_snapshots_list_as_removable_cache_entries ... ok +test server::router_models::router_models_tests::cache_source_list_does_not_create_absent_store_root ... ok +test server::router_models::router_models_tests::cancel_after_publish_linearization_is_refused_and_download_completes ... ok +test server::router_models::router_models_tests::discovery_finds_checkpoint_dirs_and_skips_noise ... ok +test server::router_models::router_models_tests::discovery_skips_symlinks_that_escape_the_models_dir ... ok +test server::router_models::router_models_tests::download_admission_rejects_queue_saturation_before_worker_network ... ok +test server::router_models::router_models_tests::download_progress_events_carry_per_url_done_and_total ... ok +test server::router_models::router_models_tests::download_progress_keeps_plan_total_and_throttles_coordinator_events ... ok +test server::router_models::router_models_tests::download_rejects_case_only_cache_alias ... ok +test server::router_models::router_models_tests::duplicate_download_idempotency_key_rejects_different_payload_before_alias_replay ... ok +test server::router_models::router_models_tests::duplicate_download_with_same_idempotency_key_replays_active_operation ... ok +test server::router_models::router_models_tests::ensure_ready_propagates_load_failure ... ok +test server::router_models::router_models_tests::explicit_eviction_error_retarget_preserves_operation_rejection ... ok +test server::router_models::router_models_tests::failed_download_can_retry_same_repo_with_new_idempotency_key ... ok +test server::router_models::router_models_tests::load_on_startup_names_come_from_the_preset ... ok +test server::router_models::router_models_tests::missing_models_dir_is_a_startup_error ... ok +test server::router_models::router_models_tests::models_dir_wins_a_name_collision_with_the_cache ... ok +test server::router_models::router_models_tests::preset_overlay_resources_a_discovered_model_and_dedup_hides_cache_twins ... ok +test server::router_models::router_models_tests::preset_sections_define_models_with_aliases_and_tags ... ok +test server::router_models::router_models_tests::queued_ui_action_rejects_different_id_with_same_name_before_execution ... ok +test server::router_models::router_models_tests::queued_ui_action_rejects_same_id_recreated_before_execution ... ok +test server::router_models::router_models_tests::queued_ui_load_rejects_advanced_eviction_target_revision_before_execution ... ok +test server::router_models::router_models_tests::queued_ui_load_rejects_different_id_eviction_target_same_name_before_execution ... ok +test server::router_models::router_models_tests::queued_ui_load_rejects_same_id_recreated_eviction_target_before_execution ... ok +test server::router_models::router_models_tests::recreated_cache_entry_keeps_model_id_but_gets_fresh_revision ... ok +test server::router_models::router_models_tests::remove_cancels_an_in_flight_download ... ok +test server::router_models::router_models_tests::remove_deletes_a_cache_model_from_disk_and_emits_model_remove ... ok +test server::router_models::router_models_tests::remove_refuses_models_dir_and_unknown_entries ... ok +test server::router_models::router_models_tests::rescan_and_remove_preserve_reserved_entries_until_release ... ok +test server::router_models::router_models_tests::rescan_picks_up_new_directories_and_drops_removed_ones ... ok +test server::router_models::router_models_tests::rescan_preserves_entry_that_becomes_reserved_after_snapshot_clone ... ok +test server::router_models::router_models_tests::rescan_preserves_webui_removal_busy_entry_until_operation_finishes ... ok +test server::router_models::router_models_tests::resolution_matches_b10621s_refusals ... ok +test server::router_models::router_models_tests::response_body_drop_releases_active_request_lease ... ok +test server::router_models::router_models_tests::shutdown_reports_pending_reserved_entries_within_bound ... ok +test server::router_models::router_models_tests::start_download_refuses_an_existing_name ... ok +test server::router_models::router_models_tests::ui_load_operation_waits_for_terminal_worker_state ... ok +test server::router_models::router_models_tests::ui_load_rejects_stale_eviction_target_revision_before_unload ... ok +test server::router_models::router_models_tests::ui_load_requires_explicit_eviction_when_capacity_is_reserved ... ok +test server::router_models::router_models_tests::ui_model_action_replay_wins_over_stale_revision_after_failure ... ok +test server::router_models::router_models_tests::unload_refuses_a_model_that_is_not_running ... ok +test server::router_models::router_models_tests::webui_cache_removal_deletes_managed_snapshot_and_drops_entry ... ok +test server::router_models::router_models_tests::webui_cache_removal_rejects_active_preset_physical_alias_without_hidden_cache_row ... ok +test server::router_models::router_models_tests::webui_cache_removal_rejects_descendant_models_dir_overlap ... ok +test server::router_models::router_models_tests::webui_cache_removal_rejects_loaded_preset_descendant_overlap ... ok +test server::router_models::router_models_tests::webui_cache_removal_rejects_models_dir_physical_overlap ... ok +test server::router_models::router_models_tests::webui_cache_removal_rejects_preset_physical_alias_even_when_hidden ... ok +test server::router_models::router_models_tests::webui_cache_removal_rejects_when_operation_guard_is_held ... ok +test server::router_models::router_unload_revision_tests::legacy_unload_cleans_failed_worker_without_new_revision_precondition ... ok +test server::router_models::router_unload_revision_tests::owned_drain_token_uses_shared_authority_and_survives_lease_completion ... ok +test server::router_models::router_unload_revision_tests::runtime_observation_requires_current_revision_without_lru_or_lease_touch ... ok +test server::router_models::router_unload_revision_tests::unload_rejects_external_revision_change_during_drain_without_stopping_worker ... ok +test server::router_models::router_unload_revision_tests::unload_rejects_replaced_entry_during_drain_without_stopping_either_worker ... ok +test server::router_models::router_unload_revision_tests::valid_revision_unload_drains_request_and_observes_worker_exit ... ok +test server::router_presets::router_presets_tests::a_negative_seed_means_random_per_request ... ok +test server::router_presets::router_presets_tests::apply_overlays_preset_values_where_the_cli_did_not_speak ... ok +test server::router_presets::router_presets_tests::env_spellings_and_short_forms_canonicalize ... ok +test server::router_presets::router_presets_tests::explicit_cli_flags_win_over_preset_values ... ok +test server::router_presets::router_presets_tests::malformed_lines_and_bad_values_are_errors ... ok +test server::router_presets::router_presets_tests::preset_only_options_parse ... ok +test server::router_presets::router_presets_tests::sections_keys_comments_and_globals_parse ... ok +test server::router_presets::router_presets_tests::unknown_keys_fail_loudly_with_key_and_section ... ok +test server::router_server::router_server_security_prefix_tests::generic_security_wrapper_handles_prefixed_legacy_sse_typed_auth_and_encoded_reload ... ok +test server::router_server::router_server_security_support_tests::assembled_ui_off_router_body_boundary_preserves_legacy_load_handler ... ok +test server::router_server::router_server_security_support_tests::assembled_ui_router_body_boundary_reaches_actual_action_handler ... ok +test server::router_server::router_server_security_support_tests::error_fixture_comparison_rejects_missing_extra_static_and_dynamic_drift ... ok +test server::router_server::router_server_security_support_tests::every_admin_family_enforces_rate_capacity_and_body_limits ... ok +test server::router_server::router_server_security_support_tests::library_integration_tests::no_cache_library_admission_is_canonical_unsupported_without_mutation ... ok +test server::router_server::router_server_security_support_tests::library_integration_tests::prefixed_library_is_secured_once_and_observation_does_not_create_cache ... ok +test server::router_server::router_server_security_support_tests::library_integration_tests::prefixed_library_keeps_root_health_public_and_prefixed_health_private ... ok +test server::router_server::router_server_security_support_tests::mounted_bootstrap_matches_full_model_free_fixture ... ok +test server::router_server::router_server_security_support_tests::mounted_bootstrap_without_pool_cache_ignores_startup_cache_hint ... ok +test server::router_server::router_server_security_support_tests::secured_router_mounts_static_bootstrap_catalog_runtime_and_events ... ok +test server::router_server::router_server_security_tests::secured_webui_allows_configured_preflight_without_bearer ... ok +test server::router_server::router_server_security_tests::secured_webui_bounds_control_capacity_and_declared_body_size ... ok +test server::router_server::router_server_security_tests::secured_webui_bounds_sse_connections_until_response_drop ... ok +test server::router_server::router_server_security_tests::secured_webui_keeps_health_public_and_private_routes_keyed ... ok +test server::router_server::router_server_security_tests::secured_webui_leaves_large_authenticated_data_plane_posts_unlimited_by_control_caps ... ok +test server::router_server::router_server_security_tests::secured_webui_protects_legacy_get_mutation_and_encoded_private_paths ... ok +test server::router_server::router_server_security_tests::secured_webui_rate_limits_sequential_control_requests ... ok +test server::router_server::router_server_security_tests::secured_webui_rejects_host_origin_fetch_and_query_credential_attacks ... ok +test server::router_server::router_server_tests::add_and_delete_answer_their_refusal_surface ... ok +test server::router_server::router_server_tests::authenticated_webui_catalog_lists_reads_and_refreshes_router_pool ... ok +test server::router_server::router_server_tests::base_router_does_not_mount_webui_adapters ... ok +test server::router_server::router_server_tests::catalog_refresh_singleflights_and_reports_same_size_changes ... ok +test server::router_server::router_server_tests::contract::list_and_event_comparison_preserves_nullable_and_unknown_fields ... ok +test server::router_server::router_server_tests::contract::normalization_rejects_invalid_or_absent_dynamic_values ... ok +test server::router_server::router_server_tests::contract::whole_value_comparison_rejects_missing_extra_and_discriminator_drift ... ok +test server::router_server::router_server_tests::delete_models_removes_a_cache_entry_from_disk ... ok +test server::router_server::router_server_tests::dispatch_get_patch_api_key_guards_query_selected_models ... ok +test server::router_server::router_server_tests::dispatch_get_patch_model_free_requests_require_a_query_model ... ok +test server::router_server::router_server_tests::dispatch_get_patch_patch_forwards_the_body_and_uses_the_query_model ... ok +test server::router_server::router_server_tests::dispatch_reaches_the_load_path_through_an_alias ... ok +test server::router_server::router_server_tests::dispatch_refusals_match_the_proxy_contract ... ok +test server::router_server::router_server_tests::explicit_model_store_root_requires_readable_directory_but_default_absent_is_ok ... ok +test server::router_server::router_server_tests::explicit_webui_router_requires_configured_api_key ... ok +test server::router_server::router_server_tests::health_is_public_and_management_routes_are_keyed ... ok +test server::router_server::router_server_tests::load_and_unload_refusals_match_b10621 ... ok +test server::router_server::router_server_tests::model_names_cannot_be_paths ... ok +test server::router_server::router_server_tests::post_models_downloads_into_the_cache_and_lists_it_removable ... ok +test server::router_server::router_server_tests::post_models_expands_bare_names_to_the_default_org ... ok +test server::router_server::router_server_tests::reload_rescans_the_directory ... ok +test server::router_server::router_server_tests::router_catalog_route_tests::cache_download_refreshes_catalog_inventory_after_empty_cache_hit ... ok +test server::router_server::router_server_tests::router_catalog_route_tests::catalog_route_cache_is_scoped_per_router_pool ... ok +test server::router_server::router_server_tests::router_catalog_route_tests::catalog_route_paginates_thousand_entries_across_http_refresh ... ok +test server::router_server::router_server_tests::router_catalog_route_tests::explicit_refresh_detects_same_size_config_and_index_edits ... ok +test server::router_server::router_server_tests::router_catalog_route_tests::legacy_models_reload_invalidates_catalog_cache_by_epoch ... ok +test server::router_server::router_server_tests::router_catalog_route_tests::mounted_dflash_catalog_matches_bounded_whole_fixture ... ok +test server::router_server::router_server_tests::the_router_inventory_carries_the_b10621_model_object ... ok +test server::router_server::router_server_tests::the_router_props_block_matches_b10621s_shape ... ok +test server::router_server::router_server_tests::ui_bootstrap_reports_default_cache_root_from_pool_authority ... ok +test server::router_server::router_server_tests::ui_bootstrap_reports_env_models_root_from_pool_authority ... ok +test server::router_server::router_server_tests::ui_download_route_replays_same_idempotency_key ... ok +test server::router_server::router_server_tests::ui_events_emit_snapshot_and_gap_reset_with_sse_ids ... ok +test server::router_server::router_server_tests::ui_events_reject_invalid_paired_replay_cursors ... ok +test server::router_server::router_server_tests::ui_events_replay_from_paired_sequence_cursor ... ok +test server::router_server::router_server_tests::ui_model_action_route_rejects_contract_invalid_fields ... ok +test server::router_server::router_server_tests::ui_model_action_route_rejects_unsupported_load_profile_with_canonical_error ... ok +test server::router_server::router_server_tests::ui_model_action_route_validates_profile_fields_and_idempotency ... ok +test server::router_server::router_server_tests::ui_model_removal_route_matches_operation_accepted_fixture ... ok +test server::router_server::router_server_tests::ui_operations_routes_list_get_and_report_cancel_unsupported ... ok +test server::router_server::router_server_tests::ui_operations_routes_reject_invalid_filters_and_ids ... ok +test server::router_server::router_server_tests::ui_runtime_uses_selected_entry_effective_config ... ok +test server::router_server::router_server_tests::v1_models_serves_the_same_router_inventory ... ok +test server::router_server::router_webui_playwright_harness_tests::artifact_run_dirs_export_absolute_child_paths_without_chdir ... ok +test server::router_server::router_webui_playwright_harness_tests::real_router_browser_harness ... ignored, opt-in real-router WebUI browser harness for #1848; use make verify-webui-integration-fake +test server::routes::anthropic::tests::anthropic_route_accepts_image_only_message ... ok +test server::routes::anthropic::tests::anthropic_route_accepts_normal_request ... ok +test server::routes::anthropic::tests::anthropic_route_accepts_tool_result_only_message ... ok +test server::routes::anthropic::tests::anthropic_route_history_with_real_content_passes_despite_empty_last_message ... ok +test server::routes::anthropic::tests::anthropic_route_rejects_content_list_with_only_empty_text_block ... ok +test server::routes::anthropic::tests::anthropic_route_rejects_empty_messages_array ... ok +test server::routes::anthropic::tests::anthropic_route_rejects_empty_system_and_empty_messages ... ok +test server::routes::anthropic::tests::anthropic_route_rejects_single_empty_string_content ... ok +test server::routes::anthropic::tests::anthropic_route_rejects_whitespace_only_content ... ok +test server::routes::anthropic::tests::anthropic_route_system_prompt_alone_counts_as_effective_input ... ok +test server::routes::anthropic::tests::combined_video_audio_refusal_renders_as_a_client_error_in_the_anthropic_envelope ... ok +test server::routes::anthropic::tests::extract_reasoning_empty_yields_none ... ok +test server::routes::anthropic::tests::per_modality_refusal_renders_as_a_capability_gap_in_the_anthropic_envelope ... ok +test server::routes::anthropic::tests::split_harmony_routes_analysis_to_reasoning ... ok +test server::routes::anthropic::tests::split_inline_think_block ... ok +test server::routes::anthropic::tests::split_no_think_returns_cleaned ... ok +test server::routes::anthropic::tests::split_open_primed_close_only ... ok +test server::routes::audio::tests::audio_response_sets_binary_headers ... ok +test server::routes::audio::tests::kind_not_loaded_is_501_with_phrase ... ok +test server::routes::audio::tests::minimal_transcription_serializes_to_text_only ... ok +test server::routes::audio::tests::model_error_maps_kinds_and_inference ... ok +test server::routes::audio::tests::multipart_empty_temperature_yields_none ... ok +test server::routes::audio::tests::multipart_invalid_temperature_returns_bad_request ... ok +test server::routes::audio::tests::multipart_missing_file_part_yields_none ... ok +test server::routes::audio::tests::multipart_parses_well_formed_form ... ok +test server::routes::audio::tests::multipart_unknown_part_is_drained_and_ignored ... ok +test server::routes::audio::tests::resolve_format_defaults_to_wav ... ok +test server::routes::audio::tests::resolve_format_rejects_unsupported ... ok +test server::routes::audio::tests::speech_request_parses_with_optional_fields_defaulted ... ok +test server::routes::audio::tests::transcription_format_selects_content_type ... ok +test server::routes::audio::tests::transcription_json_explicit_matches_none_default ... ok +test server::routes::audio::tests::transcription_unsupported_format_returns_bad_request ... ok +test server::routes::audio::tests::transcription_verbose_json_returns_json_content_type ... ok +test server::routes::availability_tests::audio_only_server_names_the_served_routes ... ok +test server::routes::availability_tests::audio_only_server_reports_healthy_after_its_worker_is_ready ... ok +test server::routes::availability_tests::embedding_only_server_returns_501_on_all_generation_routes ... ok +test server::routes::availability_tests::exited_chat_worker_returns_503_without_channel_details ... ok +test server::routes::availability_tests::rerank_only_server_names_the_served_route_and_flag ... ok +test server::routes::cache::tests::apc_unique_block_hashes_reflects_dedup_potential ... ok +test server::routes::cache::tests::build_reset_response_clears_store_and_reports_snapshot ... ok +test server::routes::cache::tests::build_reset_response_returns_zeroes_for_disabled_cache ... ok +test server::routes::cache::tests::build_stats_response_apc_zero_when_disabled_with_inserts ... ok +test server::routes::cache::tests::build_stats_response_disabled_when_store_is_none ... ok +test server::routes::cache::tests::build_stats_response_reflects_apc_blocks_when_enabled ... ok +test server::routes::cache::tests::build_stats_response_reflects_live_store ... ok +test server::routes::cache::tests::build_stats_response_reports_snapshot_bytes_per_entry ... ok +test server::routes::cache::tests::build_stats_response_surfaces_paged_pool_independent_of_store ... ok +test server::routes::cache::tests::cache_reset_response_serializes_with_expected_keys ... ok +test server::routes::cache::tests::cache_stats_effective_kv_mode_prefers_batch_kv_quant_when_enabled ... ok +test server::routes::cache::tests::cache_stats_response_disabled_payload_uses_zero_counters ... ok +test server::routes::cache::tests::cache_stats_response_serializes_with_expected_keys ... ok +test server::routes::cache::tests::concurrent_reset_and_lookup_does_not_corrupt_store ... ok +test server::routes::cache::tests::hit_rate_handles_zero_lookups_without_nan ... ok +test server::routes::cache::tests::other_reject_reasons_leave_the_stats_divergence_counter_at_zero ... ok +test server::routes::cache::tests::paged_block_stats_projects_from_observability_snapshot ... ok +test server::routes::cache::tests::router_returns_stats_and_reset_with_correct_methods ... ok +test server::routes::cache::tests::snapshot_divergence_reject_reaches_the_stats_body_with_its_geometry ... ok +test server::routes::cache::tests::store_clear_drops_all_entries_for_reset_handler ... ok +test server::routes::cache::tests::store_stats_reflect_inserts_and_lookups_for_handler_use ... ok +test server::routes::chat::reasoning_format_route_tests::a_gemma_style_channel_block_keeps_its_delimiters_too ... ok +test server::routes::chat::reasoning_format_route_tests::a_primed_block_synthesizes_its_open_marker_in_the_stream ... ok +test server::routes::chat::reasoning_format_route_tests::a_primed_k3_think_block_closes_byte_for_byte_in_the_stream ... ok +test server::routes::chat::reasoning_format_route_tests::a_streamed_gemma_channel_block_carries_the_canonical_markers ... ok +test server::routes::chat::reasoning_format_route_tests::a_streamed_none_response_carries_the_thinking_delimiters ... ok +test server::routes::chat::reasoning_format_route_tests::a_streamed_plain_response_gains_no_delimiters ... ok +test server::routes::chat::reasoning_format_route_tests::each_format_places_the_thoughts_where_b10621_does ... ok +test server::routes::chat::reasoning_format_route_tests::text_without_a_thinking_block_is_identical_under_every_format ... ok +test server::routes::chat::reasoning_format_route_tests::the_gap_between_the_close_marker_and_the_answer_survives ... ok +test server::routes::chat::reasoning_format_route_tests::the_thoughts_form_is_the_answer_with_its_block_restored ... ok +test server::routes::chat::reasoning_format_route_tests::the_thoughts_form_never_restores_tool_call_syntax ... ok +test server::routes::chat::tests::a_grammar_that_does_not_compile_degrades_to_instruction_only ... ok +test server::routes::chat::tests::chat_accepts_p_less_bool ... ok +test server::routes::chat::tests::chat_completions_handler_check_accepts_image_only_request ... ok +test server::routes::chat::tests::chat_completions_handler_check_rejects_empty_messages ... ok +test server::routes::chat::tests::chat_completions_handler_check_rejects_empty_string_content ... ok +test server::routes::chat::tests::chat_completions_no_effective_input_error_matches_issue_773_spec ... ok +test server::routes::chat::tests::chat_rejects_negative_top_n_sigma ... ok +test server::routes::chat::tests::chat_rejects_out_of_domain_typical_p ... ok +test server::routes::chat::tests::chunk_carries_content_false_for_empty_placeholder ... ok +test server::routes::chat::tests::chunk_carries_content_false_for_reasoning_only_chunk ... ok +test server::routes::chat::tests::chunk_carries_content_true_for_non_empty_delta_content ... ok +test server::routes::chat::tests::chunk_carries_reasoning_content_false_for_content_chunk ... ok +test server::routes::chat::tests::chunk_carries_reasoning_content_true_for_reasoning_chunk ... ok +test server::routes::chat::tests::count_tool_calls_reaching_client_counts_every_call_when_choice_is_required ... ok +test server::routes::chat::tests::count_tool_calls_reaching_client_counts_only_the_named_function ... ok +test server::routes::chat::tests::count_tool_calls_reaching_client_is_zero_when_the_named_filter_matches_nothing ... ok +test server::routes::chat::tests::extract_reasoning_gemma4_channel_block ... ok +test server::routes::chat::tests::extract_reasoning_gemma4_primed_all_thinking ... ok +test server::routes::chat::tests::extract_reasoning_none_for_plain_content ... ok +test server::routes::chat::tests::extract_reasoning_qwen_primed_open ... ok +test server::routes::chat::tests::extract_reasoning_qwen_think_block ... ok +test server::routes::chat::tests::log_if_reasoning_only_covers_the_unprimed_case_primed_thinking_unclosed_misses ... ok +test server::routes::chat::tests::log_if_reasoning_only_false_for_structural_marker_only_output ... ok +test server::routes::chat::tests::log_if_reasoning_only_false_when_content_present ... ok +test server::routes::chat::tests::log_if_reasoning_only_false_when_nothing_was_generated ... ok +test server::routes::chat::tests::log_if_reasoning_only_false_without_reasoning_content ... ok +test server::routes::chat::tests::log_if_reasoning_only_generalizes_primed_thinking_unclosed ... ok +test server::routes::chat::tests::log_if_reasoning_only_true_when_content_empty_and_generation_happened ... ok +test server::routes::chat::tests::max_tools_constant_is_128 ... ok +test server::routes::chat::tests::primed_thinking_unclosed_false_when_close_marker_present ... ok +test server::routes::chat::tests::primed_thinking_unclosed_false_when_not_primed ... ok +test server::routes::chat::tests::primed_thinking_unclosed_is_the_content_emptying_predicate ... ok +test server::routes::chat::tests::primed_thinking_unclosed_true_when_primed_and_no_close_marker ... ok +test server::routes::chat::tests::prompt_primed_detection_accepts_a_newline_free_open_marker ... ok +test server::routes::chat::tests::prompt_primed_detection_falls_back_to_the_legacy_table_without_markers ... ok +test server::routes::chat::tests::prompt_primed_detection_matches_exact_suffix ... ok +test server::routes::chat::tests::prompt_primed_detection_rejects_closed_priming ... ok +test server::routes::chat::tests::prompt_primed_detection_rejects_unrelated_endings ... ok +test server::routes::chat::tests::reasoning_split_identical_whole_vs_chunked ... ok +test server::routes::chat::tests::request_has_video_blocks_returns_false_for_plain_text ... ok +test server::routes::chat::tests::request_has_video_blocks_returns_false_for_text_and_image_only ... ok +test server::routes::chat::tests::request_has_video_blocks_returns_true_when_video_url_present ... ok +test server::routes::chat::tests::stream_reasoning_only_false_for_a_tool_calling_stream ... ok +test server::routes::chat::tests::stream_reasoning_only_false_when_content_reached_the_client ... ok +test server::routes::chat::tests::stream_reasoning_only_false_when_nothing_was_generated ... ok +test server::routes::chat::tests::stream_reasoning_only_false_when_the_stream_emitted_no_reasoning ... ok +test server::routes::chat::tests::stream_reasoning_only_true_for_a_stream_truncated_mid_thought ... ok +test server::routes::chat::tests::strip_unclosed_primed_thinking_empties_when_primed_and_no_close ... ok +test server::routes::chat::tests::strip_unclosed_primed_thinking_noop_when_not_primed ... ok +test server::routes::chat::tests::strip_unclosed_primed_thinking_preserves_when_close_present ... ok +test server::routes::chat::tests::tools_above_limit_detected ... ok +test server::routes::chat::tests::tools_below_limit_accepted ... ok +test server::routes::chat::tests::validate_top_n_sigma_accepts_unset_zero_and_positive ... ok +test server::routes::chat::tests::validate_top_n_sigma_rejects_non_finite ... ok +test server::routes::chat::tests::validate_typical_p_accepts_unset_disabled_and_in_range ... ok +test server::routes::chat::tests::validate_xtc_params_accepts_in_range_boundaries ... ok +test server::routes::chat::tests::validate_xtc_params_accepts_unset_fields ... ok +test server::routes::chat::tests::validate_xtc_params_checks_threshold_before_probability ... ok +test server::routes::chat::tests::validate_xtc_params_rejects_out_of_range_probability ... ok +test server::routes::chat::tests::validate_xtc_params_rejects_out_of_range_threshold ... ok +test server::routes::completions::tests::completions_accepts_in_range_xtc ... ok +test server::routes::completions::tests::completions_accepts_p_less_bool ... ok +test server::routes::completions::tests::completions_accepts_positive_top_n_sigma ... ok +test server::routes::completions::tests::completions_accepts_typical_p_in_range ... ok +test server::routes::completions::tests::completions_allows_fully_empty_prompt ... ok +test server::routes::completions::tests::completions_allows_normal_prompt ... ok +test server::routes::completions::tests::completions_deserializes_empty_and_whitespace_prompts ... ok +test server::routes::completions::tests::completions_no_effective_input_error_matches_issue_773_spec ... ok +test server::routes::completions::tests::completions_rejects_negative_top_n_sigma ... ok +test server::routes::completions::tests::completions_rejects_out_of_range_xtc_probability ... ok +test server::routes::completions::tests::completions_rejects_out_of_range_xtc_threshold ... ok +test server::routes::completions::tests::completions_rejects_whitespace_only_newline ... ok +test server::routes::completions::tests::completions_rejects_whitespace_only_spaces ... ok +test server::routes::completions::tests::completions_rejects_whitespace_only_tabs_and_mixed ... ok +test server::routes::completions::tests::completions_rejects_zero_typical_p ... ok +test server::routes::embedding_rerank_mode_tests::a_body_carrying_both_document_spellings_is_served_not_refused ... ok +test server::routes::embedding_rerank_mode_tests::a_body_carrying_both_spellings_stays_on_the_jina_envelope ... ok +test server::routes::embedding_rerank_mode_tests::a_rerank_body_missing_its_query_uses_the_upstream_wording ... ok +test server::routes::embedding_rerank_mode_tests::a_rerank_only_server_names_its_own_flag ... ok +test server::routes::embedding_rerank_mode_tests::a_restricted_server_does_not_advertise_completion ... ok +test server::routes::embedding_rerank_mode_tests::a_restricted_server_reports_healthy_once_its_worker_is_up ... ok +test server::routes::embedding_rerank_mode_tests::a_texts_request_gets_b10621s_tei_array ... ok +test server::routes::embedding_rerank_mode_tests::an_embedding_body_with_neither_input_nor_content_uses_the_upstream_wording ... ok +test server::routes::embedding_rerank_mode_tests::an_embedding_only_server_refuses_generation_and_names_the_flag ... ok +test server::routes::embedding_rerank_mode_tests::an_unrestricted_server_answers_the_b10621_health_body ... ok +test server::routes::embedding_rerank_mode_tests::an_unrestricted_server_still_generates ... ok +test server::routes::embedding_rerank_mode_tests::models_labels_each_entry_with_what_it_can_be_asked_for ... ok +test server::routes::embedding_rerank_mode_tests::props_omits_the_side_model_blocks_when_none_is_loaded ... ok +test server::routes::embedding_rerank_mode_tests::props_reports_a_restricted_server_as_restricted ... ok +test server::routes::embedding_rerank_mode_tests::props_reports_the_normalization_an_unqualified_request_gets ... ok +test server::routes::embedding_rerank_mode_tests::props_reports_the_resolved_side_model_capability ... ok +test server::routes::embedding_rerank_mode_tests::return_documents_still_echoes_under_the_cohere_spelling ... ok +test server::routes::embedding_rerank_mode_tests::return_text_echoes_under_the_tei_spelling ... ok +test server::routes::embedding_rerank_mode_tests::the_embedding_501_opens_with_the_upstream_sentence ... ok +test server::routes::embedding_rerank_mode_tests::the_jina_envelope_carries_the_object_key ... ok +test server::routes::embedding_rerank_mode_tests::the_rerank_501_opens_with_the_upstream_sentence ... ok +test server::routes::embedding_rerank_mode_tests::the_richer_mlxcel_item_forms_still_pass_the_shape_check ... ok +test server::routes::embedding_rerank_mode_tests::the_side_model_routes_still_serve_in_a_restricted_mode ... ok +test server::routes::embeddings::tests::alias_path_without_v1_prefix_is_mounted ... ok +test server::routes::embeddings::tests::an_out_of_domain_embd_normalize_is_a_400_naming_the_domain ... ok +test server::routes::embeddings::tests::base64_encoding_roundtrips_f32 ... ok +test server::routes::embeddings::tests::dimensions_truncates_and_renormalizes ... ok +test server::routes::embeddings::tests::embd_normalize_minus_one_leaves_the_vector_unnormalized ... ok +test server::routes::embeddings::tests::embd_normalize_one_produces_a_unit_l1_vector ... ok +test server::routes::embeddings::tests::empty_input_is_400 ... ok +test server::routes::embeddings::tests::error_mapping_matches_audio_routes ... ok +test server::routes::embeddings::tests::image_item_is_400_for_text_only_model ... ok +test server::routes::embeddings::tests::input_shapes_flatten_to_ordered_items ... ok +test server::routes::embeddings::tests::list_input_preserves_order_across_micro_batches ... ok +test server::routes::embeddings::tests::model_mismatch_is_400_and_match_is_accepted ... ok +test server::routes::embeddings::tests::multi_vector_model_returns_token_rows_and_shape_in_base64 ... ok +test server::routes::embeddings::tests::no_embedding_model_is_501 ... ok +test server::routes::embeddings::tests::non_finite_embeddings_return_500 ... ok +test server::routes::embeddings::tests::string_input_returns_one_vector ... ok +test server::routes::embeddings::tests::the_native_route_honors_embd_normalize_too ... ok +test server::routes::embeddings::tests::token_id_above_vocab_is_400 ... ok +test server::routes::embeddings::tests::token_id_input ... ok +test server::routes::embeddings::tests::too_many_images_are_rejected_before_resolution ... ok +test server::routes::embeddings::tests::unsupported_encoding_format_is_400 ... ok +test server::routes::embeddings::tests::usage_counts_real_tokens ... ok +test server::routes::feature_disabled_tests::tools_and_cors_proxy_answer_the_b10621_feature_disabled_envelope ... ok +test server::routes::health::tests::loading_response_matches_b10621_envelope ... ok +test server::routes::health::tests::ready_body_is_exactly_status_ok ... ok +test server::routes::infill::infill_route_tests::a_capable_model_answers_the_native_completion_shape ... ok +test server::routes::infill::infill_route_tests::a_marker_in_the_prefix_is_refused_with_an_actionable_diagnostic ... ok +test server::routes::infill::infill_route_tests::a_missing_prefix_is_a_400_on_a_capable_model ... ok +test server::routes::infill::infill_route_tests::a_model_without_fim_tokens_is_refused_with_the_upstream_message ... ok +test server::routes::infill::infill_route_tests::spm_infill_changes_the_prompt_the_server_actually_sends ... ok +test server::routes::infill::infill_route_tests::the_capability_gate_runs_before_request_validation ... ok +test server::routes::infill::infill_route_tests::the_capability_refusal_carries_upstreams_error_type ... ok +test server::routes::infill::infill_route_tests::the_completion_half_of_the_body_is_still_honored ... ok +test server::routes::infill::infill_route_tests::the_served_prompt_carries_the_default_prefix_suffix_middle_ordering ... ok +test server::routes::infill::infill_route_tests::the_whole_fim_context_is_served_without_batch_truncation ... ok +test server::routes::lora_adapters::lora_adapters_tests::a_server_without_adapters_reports_an_empty_list ... ok +test server::routes::lora_adapters::lora_adapters_tests::an_unapplied_adapter_reports_scale_zero ... ok +test server::routes::lora_adapters::lora_adapters_tests::init_without_apply_adapters_activate_through_post ... ok +test server::routes::lora_adapters::lora_adapters_tests::inventory_carries_the_b10621_entry_shape ... ok +test server::routes::lora_adapters::lora_adapters_tests::post_applies_a_scale_change_on_the_runtime_path ... ok +test server::routes::lora_adapters::lora_adapters_tests::post_changes_the_default_not_the_live_handles ... ok +test server::routes::lora_adapters::lora_adapters_tests::post_changing_a_scale_is_refused_with_the_migration_diagnostic ... ok +test server::routes::lora_adapters::lora_adapters_tests::post_non_array_body_uses_upstreams_wording ... ok +test server::routes::lora_adapters::lora_adapters_tests::post_with_the_current_configuration_is_acknowledged ... ok +test server::routes::lora_adapters::lora_adapters_tests::runtime_path_still_refuses_a_non_array_body ... ok +test server::routes::lora_adapters::lora_adapters_tests::unknown_ids_are_ignored_like_upstreams_construct_lora_list ... ok +test server::routes::metrics::metrics_audio::tests::source_normalized_prefill_and_reasons_remain_distinct ... ok +test server::routes::metrics::metrics_llama_tests::disabled_metrics_endpoint_answers_the_b10621_diagnostic_not_404 ... ok +test server::routes::metrics::metrics_llama_tests::label_cardinality_is_bounded_and_code_defined ... ok +test server::routes::metrics::metrics_llama_tests::request_completion_feeds_the_llama_counters ... ok +test server::routes::metrics::metrics_llama_tests::the_b10621_families_are_exported_with_help_and_type_lines ... ok +test server::routes::metrics::metrics_llama_tests::throughput_gauges_reset_between_scrapes ... ok +test server::routes::models::models_tests::both_spellings_answer_the_same_shape ... ok +test server::routes::models::models_tests::ctx_size_zero_reports_the_effective_context_in_model_meta ... ok +test server::routes::models::models_tests::the_data_entry_carries_the_b10621_key_set ... ok +test server::routes::models::models_tests::the_ollama_block_mirrors_b10621 ... ok +test server::routes::mtp_policy::tests::exactness_declined_reports_the_veto_and_its_reason ... ok +test server::routes::mtp_policy::tests::forced_is_reported_separately_from_settled ... ok +test server::routes::mtp_policy::tests::nothing_published_yet_answers_worker_not_ready_rather_than_erroring ... ok +test server::routes::mtp_policy::tests::profiling_is_distinguishable_from_unavailable ... ok +test server::routes::mtp_policy::tests::profiling_reports_no_verdict_and_the_remaining_sample_count ... ok +test server::routes::mtp_policy::tests::response_round_trips_through_json_with_the_documented_field_names ... ok +test server::routes::mtp_policy::tests::settled_decline_reports_decline_and_a_disabled_gate ... ok +test server::routes::mtp_policy::tests::settled_enable_reports_the_verdict_and_the_full_key ... ok +test server::routes::mtp_policy::tests::unavailable_reasons_are_distinguishable ... ok +test server::routes::native_completion::tests::a_lazy_grammar_needs_triggers_only_when_the_triggers_key_is_present ... ok +test server::routes::native_completion::tests::a_malformed_trigger_or_preserved_shape_is_refused ... ok +test server::routes::native_completion::tests::a_non_string_grammar_is_ignored_the_way_upstreams_json_value_ignores_it ... ok +test server::routes::native_completion::tests::a_single_token_trigger_word_must_be_a_preserved_token ... ok +test server::routes::native_completion::tests::grammar_wins_over_json_schema_by_presence_not_by_emptiness ... ok +test server::routes::native_completion::tests::native_adaptive_decay_and_min_keep_enforce_upstreams_hard_limits ... ok +test server::routes::native_completion::tests::native_adaptive_p_activates_only_through_the_samplers_stage ... ok +test server::routes::native_completion::tests::native_backend_sampling_is_accepted_and_inert_in_both_values ... ok +test server::routes::native_completion::tests::native_completion_absent_typical_p_takes_the_server_default ... ok +test server::routes::native_completion::tests::native_completion_maps_ignore_eos_and_repeat_last_n ... ok +test server::routes::native_completion::tests::native_completion_maps_p_less ... ok +test server::routes::native_completion::tests::native_completion_maps_the_1485_sampler_fields ... ok +test server::routes::native_completion::tests::native_completion_maps_top_n_sigma_with_the_b10621_sentinel ... ok +test server::routes::native_completion::tests::native_completion_maps_typical_p ... ok +test server::routes::native_completion::tests::native_completion_maps_xtc_fields_with_the_b10621_soft_clamp ... ok +test server::routes::native_completion::tests::native_completion_out_of_domain_typical_p_is_the_explicit_disable ... ok +test server::routes::native_completion::tests::native_dry_sequence_breakers_must_be_a_nonempty_string_array ... ok +test server::routes::native_completion::tests::native_generation_settings_echo_the_1485_keys ... ok +test server::routes::native_completion::tests::native_generation_settings_echo_typical_p ... ok +test server::routes::native_completion::tests::native_grammar_surfaces_no_longer_reject_a_constrained_request ... ok +test server::routes::native_completion::tests::native_logit_bias_field_replaces_the_server_wide_set ... ok +test server::routes::native_completion::tests::native_logit_bias_parses_both_upstream_shapes_and_false_bans ... ok +test server::routes::native_completion::tests::native_mirostat_outside_the_declared_domain_is_refused ... ok +test server::routes::native_completion::tests::native_n_probs_and_its_logprobs_alias_enable_the_report ... ok +test server::routes::native_completion::tests::native_probability_report_uses_upstreams_key_names ... ok +test server::routes::native_completion::tests::native_samplers_accepts_only_the_default_order ... ok +test server::routes::native_completion::tests::native_samplers_accepts_the_adaptive_p_extension_only ... ok +test server::routes::native_completion::tests::native_seed_folds_into_uint32_space ... ok +test server::routes::native_completion::tests::native_speculative_dotted_fields_are_accepted_and_inert_like_b10621 ... ok +test server::routes::native_completion::tests::the_server_default_grammar_survives_a_request_that_sets_none ... ok +test server::routes::native_route_tests::a_chat_completion_carries_no_timings_object_without_a_drafter ... ok +test server::routes::native_route_tests::a_chat_completion_carries_the_timings_object_of_a_drafted_request ... ok +test server::routes::native_route_tests::a_matched_stop_string_is_reported_as_stop_type_word ... ok +test server::routes::native_route_tests::a_non_boolean_include_usage_is_refused_with_the_field_named ... ok +test server::routes::native_route_tests::a_non_object_stream_options_is_tolerated ... ok +test server::routes::native_route_tests::a_wrongly_typed_response_fields_is_ignored_rather_than_refused ... ok +test server::routes::native_route_tests::an_unknown_native_field_is_ignored_as_upstream_ignores_it ... ok +test server::routes::native_route_tests::generation_settings_reports_the_b10621_task_params_keys_mlxcel_resolves ... ok +test server::routes::native_route_tests::n_predict_accepts_the_openai_aliases ... ok +test server::routes::native_route_tests::n_predict_below_the_hard_limit_is_refused_with_the_upstream_wording ... ok +test server::routes::native_route_tests::n_predict_minus_one_is_accepted_as_the_unbounded_spelling ... ok +test server::routes::native_route_tests::n_predict_zero_is_accepted_as_the_prompt_only_spelling ... ok +test server::routes::native_route_tests::response_fields_keys_a_slashed_path_by_the_whole_path ... ok +test server::routes::native_route_tests::response_fields_projects_the_native_body ... ok +test server::routes::native_route_tests::return_progress_is_accepted_and_adds_nothing_to_a_non_streaming_response ... ok +test server::routes::native_route_tests::return_tokens_projects_the_generated_ids_and_is_empty_without_it ... ok +test server::routes::native_route_tests::stream_options_is_accepted_and_inert_on_the_native_route ... ok +test server::routes::native_route_tests::the_completions_alias_reports_the_matched_stop_string_too ... ok +test server::routes::native_route_tests::the_generation_bounds_are_accepted_across_their_value_domain ... ok +test server::routes::native_route_tests::the_inert_value_of_an_unsupported_field_is_accepted ... ok +test server::routes::native_route_tests::the_native_completion_echoes_the_prompt_and_stop_metadata ... ok +test server::routes::native_route_tests::the_native_completion_paths_answer_the_native_shape ... ok +test server::routes::native_route_tests::the_native_completion_response_carries_the_b10621_key_set ... ok +test server::routes::native_route_tests::the_native_embedding_path_accepts_the_content_spelling ... ok +test server::routes::native_route_tests::the_native_embedding_paths_are_mounted_and_separate_from_v1 ... ok +test server::routes::native_route_tests::the_native_stream_carries_the_draft_keys_on_the_final_frame_only ... ok +test server::routes::native_route_tests::the_native_timings_omit_the_draft_keys_without_a_drafter ... ok +test server::routes::native_route_tests::the_native_timings_report_the_draft_counters_of_a_drafted_request ... ok +test server::routes::native_route_tests::the_streaming_chat_finish_chunk_carries_the_timings_and_the_others_do_not ... ok +test server::routes::native_route_tests::the_v1_completion_path_stays_openai ... ok +test server::routes::native_route_tests::tokens_cached_reports_the_upstream_slot_occupancy_formula ... ok +test server::routes::native_route_tests::unsupported_native_fields_are_refused_with_a_diagnostic ... ok +test server::routes::native_route_tests::verbose_is_accepted_and_changes_nothing ... ok +test server::routes::prompt_inspection::prompt_inspection_tests::a_body_without_a_model_is_served_the_way_b10621_serves_it ... ok +test server::routes::prompt_inspection::prompt_inspection_tests::a_malformed_body_is_a_400_not_a_422 ... ok +test server::routes::prompt_inspection::prompt_inspection_tests::a_media_part_is_refused_rather_than_fetched_and_counted ... ok +test server::routes::prompt_inspection::prompt_inspection_tests::a_responses_native_image_part_is_refused_on_the_count_routes_too ... ok +test server::routes::prompt_inspection::prompt_inspection_tests::a_text_only_body_is_unaffected_by_the_media_gate ... ok +test server::routes::prompt_inspection::prompt_inspection_tests::apply_template_answers_the_rendered_prompt ... ok +test server::routes::prompt_inspection::prompt_inspection_tests::apply_template_reflects_the_reasoning_modes ... ok +test server::routes::prompt_inspection::prompt_inspection_tests::apply_template_reflects_tools_in_the_render ... ok +test server::routes::prompt_inspection::prompt_inspection_tests::apply_template_refuses_an_oversized_tool_array ... ok +test server::routes::prompt_inspection::prompt_inspection_tests::apply_template_reports_the_native_kimi_k3_token_count ... ok +test server::routes::prompt_inspection::prompt_inspection_tests::both_chat_input_token_paths_answer_the_same_count ... ok +test server::routes::prompt_inspection::prompt_inspection_tests::both_responses_input_token_paths_answer_the_same_count ... ok +test server::routes::prompt_inspection::prompt_inspection_tests::chat_input_tokens_counts_the_native_kimi_k3_ids_not_a_reencode ... ok +test server::routes::prompt_inspection::prompt_inspection_tests::the_anthropic_count_route_answers_the_same_key ... ok +test server::routes::prompt_inspection::prompt_inspection_tests::the_chat_input_token_count_matches_the_rendered_prompt ... ok +test server::routes::prompt_inspection::prompt_inspection_tests::the_count_grows_with_the_conversation ... ok +test server::routes::prompt_inspection::prompt_inspection_tests::the_input_token_count_follows_the_reasoning_mode ... ok +test server::routes::prompt_inspection::prompt_inspection_tests::the_video_plus_audio_combination_is_still_refused_here ... ok +test server::routes::props::props_tests::endpoint_toggles_reflect_the_flags ... ok +test server::routes::props::props_tests::geometry_block_reports_batch_and_kv_bounds ... ok +test server::routes::props::props_tests::geometry_block_reports_the_resolved_batch_size_alias ... ok +test server::routes::props::props_tests::get_props_carries_the_b10621_key_set ... ok +test server::routes::props::props_tests::get_props_is_served_without_the_props_flag ... ok +test server::routes::props::props_tests::get_props_reports_post_load_non_batching_context_geometry ... ok +test server::routes::props::props_tests::get_props_resolves_ctx_size_zero_to_effective_context ... ok +test server::routes::props::props_tests::params_reports_exactly_the_documented_key_set ... ok +test server::routes::props::props_tests::post_props_with_the_flag_acknowledges_like_b10621 ... ok +test server::routes::props::props_tests::post_props_without_the_flag_answers_the_b10621_diagnostic ... ok +test server::routes::props::props_tests::props_reports_the_b10621_default_breaker_set_when_the_flag_is_absent ... ok +test server::routes::props::props_tests::props_reports_the_resolved_dry_sequence_breakers ... ok +test server::routes::props::props_tests::props_reports_the_same_patched_defaults_as_live_settings ... ok +test server::routes::realtime_route_tests::realtime_route_is_mounted_only_with_an_engine_and_behind_api_keys ... ok +test server::routes::realtime_route_tests::realtime_server_points_chat_routes_at_the_socket ... ok +test server::routes::realtime_route_tests::realtime_upgrade_enforces_the_origin_policy_in_both_app_builds ... ok +test server::routes::rerank::tests::a_body_that_is_not_an_object_is_still_a_serde_400 ... ok +test server::routes::rerank::tests::all_rerank_aliases_are_mounted ... ok +test server::routes::rerank::tests::blank_query_and_blank_document_are_400 ... ok +test server::routes::rerank::tests::empty_documents_is_400 ... ok +test server::routes::rerank::tests::image_documents_reach_a_multimodal_reranker ... ok +test server::routes::rerank::tests::image_item_on_text_reranker_is_400 ... ok +test server::routes::rerank::tests::instruction_is_accepted_by_a_generative_reranker ... ok +test server::routes::rerank::tests::instruction_on_sequence_classifier_is_400 ... ok +test server::routes::rerank::tests::malformed_body_is_400 ... ok +test server::routes::rerank::tests::model_mismatch_is_400 ... ok +test server::routes::rerank::tests::no_reranker_is_501 ... ok +test server::routes::rerank::tests::non_finite_scores_return_500 ... ok +test server::routes::rerank::tests::provider_errors_map_to_the_shared_status_codes ... ok +test server::routes::rerank::tests::results_sorted_desc_ties_by_index ... ok +test server::routes::rerank::tests::return_documents_echoes_items ... ok +test server::routes::rerank::tests::the_reranker_is_listed_in_v1_models ... ok +test server::routes::rerank::tests::too_many_images_are_rejected_before_resolution ... ok +test server::routes::rerank::tests::top_n_truncates ... ok +test server::routes::rerank::tests::top_n_zero_is_400 ... ok +test server::routes::rerank::tests::v1_health_alias_is_public_when_api_key_auth_is_enabled ... ok +test server::routes::responses::tests::invalid_input_part_maps_to_named_400_response ... ok +test server::routes::responses::tests::responses_accepts_in_range_xtc ... ok +test server::routes::responses::tests::responses_accepts_p_less_bool ... ok +test server::routes::responses::tests::responses_rejects_above_one_typical_p ... ok +test server::routes::responses::tests::responses_rejects_negative_top_n_sigma ... ok +test server::routes::responses::tests::responses_rejects_out_of_range_xtc_probability ... ok +test server::routes::responses::tests::responses_rejects_out_of_range_xtc_threshold ... ok +test server::routes::responses::tests::responses_route_accepts_image_only_input ... ok +test server::routes::responses::tests::responses_route_accepts_normal_text_input ... ok +test server::routes::responses::tests::responses_route_history_with_real_content_passes_despite_empty_last_message ... ok +test server::routes::responses::tests::responses_route_non_empty_instructions_count_as_effective_input ... ok +test server::routes::responses::tests::responses_route_rejects_content_list_with_only_empty_text ... ok +test server::routes::responses::tests::responses_route_rejects_empty_string_input ... ok +test server::routes::responses::tests::responses_route_rejects_whitespace_only_input ... ok +test server::routes::responses::tests::split_reasoning_close_only_empty_reasoning_yields_none ... ok +test server::routes::responses::tests::split_reasoning_inline_block_separates_content ... ok +test server::routes::responses::tests::split_reasoning_no_think_block_returns_raw ... ok +test server::routes::responses::tests::split_reasoning_open_primed_close_only_separates_content ... ok +test server::routes::settings_tests::patched_reasoning_budget_is_carried_by_the_next_generation ... ok +test server::routes::settings_tests::settings_route_aliases_require_api_key_when_configured ... ok +test server::routes::settings_tests::settings_route_get_returns_schema_current_and_fingerprint ... ok +test server::routes::settings_tests::settings_route_is_absent_when_disabled ... ok +test server::routes::settings_tests::settings_route_patch_partially_applies_and_publishes_to_both_aliases ... ok +test server::routes::slots::slots_tests::disabled_slots_endpoint_answers_the_b10621_diagnostic_not_404 ... ok +test server::routes::slots::slots_tests::fail_on_no_slot_distinguishes_saturation_from_idle ... ok +test server::routes::slots::slots_tests::get_slots_reports_the_b10621_slot_shape ... ok +test server::routes::slots::slots_tests::get_slots_resolves_ctx_size_zero_to_effective_context ... ok +test server::routes::slots::slots_tests::invalid_slot_ids_and_actions_answer_b10621s_400s ... ok +test server::routes::slots::slots_tests::restore_rejects_a_file_saved_under_a_different_model ... ok +test server::routes::slots::slots_tests::restore_survives_a_simulated_restart ... ok +test server::routes::slots::slots_tests::save_restore_erase_roundtrip_through_the_route ... ok +test server::routes::slots::slots_tests::slot_actions_without_save_path_answer_the_b10621_diagnostic ... ok +test server::routes::slots::slots_tests::stoi_prefix_parsing_matches_b10621 ... ok +test server::routes::slots::slots_tests::traversal_filenames_are_refused_with_invalid_filename ... ok +test server::routes::stream_route_tests::control_route_validates_its_body ... ok +test server::routes::stream_route_tests::delete_cancels_the_generation_and_evicts_the_session ... ok +test server::routes::stream_route_tests::metrics_tests::activity_projection_counts_a_completed_stream ... ok +test server::routes::stream_route_tests::metrics_tests::client_cancelled_plain_stream_is_not_recorded ... ok +test server::routes::stream_route_tests::metrics_tests::completed_stream_records_one_request_with_its_counts ... ok +test server::routes::stream_route_tests::metrics_tests::metrics_endpoint_reports_a_completed_stream ... ok +test server::routes::stream_route_tests::metrics_tests::resumable_stream_is_recorded_after_a_client_disconnect ... ok +test server::routes::stream_route_tests::plain_stream_without_conversation_id_still_cancels_on_disconnect ... ok +test server::routes::stream_route_tests::reasoning_end_forces_the_armed_flag_and_expires_with_the_completion ... ok +test server::routes::stream_route_tests::reasoning_end_on_an_unarmed_completion_reports_not_enabled ... ok +test server::routes::stream_route_tests::resumable_chat_stream_replays_across_disconnect_without_loss_or_duplication ... ok +test server::routes::stream_route_tests::stream_get_rejects_an_unparsable_from_offset ... ok +test server::routes::stream_route_tests::stream_get_validates_conv_id_and_from ... ok +test server::routes::stream_route_tests::stream_sessions_are_isolated_between_api_keys ... ok +test server::routes::tokenize::tokenize_tests::a_content_of_the_wrong_type_is_a_400 ... ok +test server::routes::tokenize::tokenize_tests::a_mixed_content_array_splices_pre_tokenized_ids ... ok +test server::routes::tokenize::tokenize_tests::a_special_token_piece_is_its_own_spelling ... ok +test server::routes::tokenize::tokenize_tests::a_spliced_id_consumes_the_add_special_position ... ok +test server::routes::tokenize::tokenize_tests::an_absent_content_is_an_empty_tokenization_not_an_error ... ok +test server::routes::tokenize::tokenize_tests::an_absent_or_empty_token_list_detokenizes_to_the_empty_string ... ok +test server::routes::tokenize::tokenize_tests::an_invalid_utf8_piece_comes_back_as_an_array_of_byte_values ... ok +test server::routes::tokenize::tokenize_tests::detokenize_accepts_the_last_vocabulary_ids ... ok +test server::routes::tokenize::tokenize_tests::detokenize_answers_500_for_ids_outside_the_vocabulary ... ok +test server::routes::tokenize::tokenize_tests::detokenize_checks_an_id_above_i32_max_instead_of_returning_422 ... ok +test server::routes::tokenize::tokenize_tests::detokenize_names_a_negative_id_as_sent ... ok +test server::routes::tokenize::tokenize_tests::detokenize_refuses_a_mixed_list_without_partial_text ... ok +test server::routes::tokenize::tokenize_tests::detokenize_renders_special_tokens_rather_than_skipping_them ... ok +test server::routes::tokenize::tokenize_tests::detokenize_reports_the_first_bad_id_in_request_order ... ok +test server::routes::tokenize::tokenize_tests::detokenize_round_trips_ascii_unicode_and_special_tokens ... ok +test server::routes::tokenize::tokenize_tests::empty_content_tokenizes_to_an_empty_list ... ok +test server::routes::tokenize::tokenize_tests::parse_special_defaults_to_true_and_can_be_turned_off ... ok +test server::routes::tokenize::tokenize_tests::the_default_shape_is_a_flat_id_array ... ok +test server::routes::tokenize::tokenize_tests::the_pieces_of_a_tokenization_concatenate_back_to_the_input ... ok +test server::routes::tokenize::tokenize_tests::with_pieces_answers_objects_carrying_the_id_and_the_piece ... ok +test server::routes::transcription_compat::tests::a_degenerate_format_chunk_is_refused_rather_than_dividing_by_zero ... ok +test server::routes::transcription_compat::tests::a_duplicate_file_part_keeps_the_last_one ... ok +test server::routes::transcription_compat::tests::a_duplicate_text_part_becomes_an_array_and_falls_back_to_the_default ... ok +test server::routes::transcription_compat::tests::a_form_with_no_file_part_is_detected ... ok +test server::routes::transcription_compat::tests::a_form_with_too_many_parts_is_refused ... ok +test server::routes::transcription_compat::tests::a_header_declaring_more_audio_than_it_carries_is_clamped ... ok +test server::routes::transcription_compat::tests::a_malformed_or_truncated_clip_is_refused_from_the_header ... ok +test server::routes::transcription_compat::tests::a_numeric_field_that_does_not_parse_is_a_bad_request ... ok +test server::routes::transcription_compat::tests::a_well_formed_clip_reports_its_geometry ... ok +test server::routes::transcription_compat::tests::an_over_long_over_wide_or_over_fast_clip_is_refused ... ok +test server::routes::transcription_compat::tests::an_unknown_field_is_carried_but_changes_nothing ... ok +test server::routes::transcription_compat::tests::every_documented_field_is_read_off_the_form ... ok +test server::routes::transcription_compat::tests::response_format_accepts_json_and_nothing_else ... ok +test server::routes::transcription_compat::tests::stream_is_compared_against_the_literal_true ... ok +test server::routes::transcription_compat::tests::the_asr_prompt_matches_upstreams_preset_and_language_suffix ... ok +test server::routes::transcription_compat::tests::the_delta_event_is_upstreams_partial_shape ... ok +test server::routes::transcription_compat::tests::the_done_event_is_upstreams_asr_shape_not_openais_transcription_object ... ok +test server::routes::transcription_compat::tests::the_synthesized_chat_request_carries_the_prompt_and_the_clip ... ok +test server::runtime_settings::tests::chat_template_kwargs_accepts_an_object_through_the_shared_parser ... ok +test server::runtime_settings::tests::chat_template_kwargs_rejects_non_objects_without_mutation ... ok +test server::runtime_settings::tests::fingerprint_hashes_only_canonical_mutable_values ... ok +test server::runtime_settings::tests::merge_applies_valid_values_and_reports_each_rejection ... ok +test server::runtime_settings::tests::patch_body_accepts_flat_and_wrapped_forms ... ok +test server::runtime_settings::tests::patch_body_rejects_malformed_wrappers ... ok +test server::runtime_settings::tests::replace_starts_from_the_startup_snapshot ... ok +test server::runtime_settings::tests::server_config_schema_classifies_all_113_fields ... ok +test server::slot_persist::slot_persist_tests::filename_validation_matches_b10621_rules ... ok +test server::slot_persist::slot_persist_tests::load_rejects_garbage_and_missing_files ... ok +test server::slot_persist::slot_persist_tests::load_rejects_model_and_tokenizer_mismatch ... ok +test server::slot_persist::slot_persist_tests::save_into_missing_root_reports_io_error ... ok +test server::slot_persist::slot_persist_tests::save_is_atomic_no_temp_file_survives ... ok +test server::slot_persist::slot_persist_tests::save_then_load_roundtrips_tokens_and_identity ... ok +test server::slot_persist::slot_persist_tests::symlink_inside_the_root_cannot_be_written_through ... ok +test server::slot_persist::slot_persist_tests::symlink_inside_the_root_cannot_read_outside_it ... ok +test server::slot_persist::slot_persist_tests::traversal_filenames_cannot_escape_the_root ... ok +test server::slots_state::slots_state_tests::a_queued_request_does_not_hold_a_slot_away_from_a_serving_one ... ok +test server::slots_state::slots_state_tests::busy_slot_refuses_cache_actions ... ok +test server::slots_state::slots_state_tests::debug_switch_exposes_prompt_and_generated_only_when_retained ... ok +test server::slots_state::slots_state_tests::id_task_increments_across_requests ... ok +test server::slots_state::slots_state_tests::out_of_range_slot_reports_none ... ok +test server::slots_state::slots_state_tests::oversubscribed_request_is_unbound_then_binds_on_progress ... ok +test server::slots_state::slots_state_tests::prefill_progress_binds_and_reports_b10621_counters_live ... ok +test server::slots_state::slots_state_tests::queued_request_behind_prefilling_request_stays_unbound ... ok +test server::slots_state::slots_state_tests::restore_and_erase_manage_the_slot_cache ... ok +test server::slots_state::slots_state_tests::slots_bind_lowest_free_id_and_release_on_drop ... ok +test server::slots_state::slots_state_tests::slots_json_matches_b10621_shape_for_idle_and_processing ... ok +test server::slots_state::slots_state_tests::task_counters_survive_release_like_task_prev ... ok +test server::slots_state::slots_state_tests::text_is_not_retained_without_the_debug_or_save_gate ... ok +test server::speculative_dispatch::tests::block_size_accessor_is_none_for_disabled_and_classic ... ok +test server::speculative_dispatch::tests::is_kind_specific_is_true_only_for_mtp_and_dflash ... ok +test server::speculative_dispatch::tests::resolve_dflash_block_size_override ... ok +test server::speculative_dispatch::tests::resolve_dflash_explicit_kind ... ok +test server::speculative_dispatch::tests::resolve_internal_mtp_kind_is_rejected_at_cli ... ok +test server::speculative_dispatch::tests::resolve_mtp_auto_detected_from_drafter_config ... ok +test server::speculative_dispatch::tests::resolve_mtp_explicit_kind ... ok +test server::speculative_dispatch::tests::resolve_mtp_explicit_kind_with_block_size_override ... ok +test server::speculative_dispatch::tests::resolve_prompt_lookup_block_size_and_max_batch ... ok +test server::speculative_dispatch::tests::resolve_prompt_lookup_rejects_out_of_range_settings ... ok +test server::speculative_dispatch::tests::resolve_prompt_lookup_with_a_drafter_is_invalid ... ok +test server::speculative_dispatch::tests::resolve_prompt_lookup_without_a_drafter ... ok +test server::speculative_dispatch::tests::resolve_returns_disabled_when_no_drafter_configured ... ok +test server::speculative_dispatch::tests::resolve_unknown_kind_returns_invalid_kind_error ... ok +test server::speculative_dispatch::tests::resolve_with_missing_drafter_config_falls_back_to_default_kind ... ok +test server::speculative_dispatch::tests::summary_contains_block_size_for_kind_specific_variants ... ok +test server::speculative_dispatch::tests::unknown_kind_message_lists_prompt_lookup ... ok +test server::startup::muse_glimmer_startup_guard_tests::muse_glimmer_accepts_assistant_drafter ... ok +test server::startup::muse_glimmer_startup_guard_tests::muse_glimmer_rejects_non_assistant_drafter ... ok +test server::startup::muse_glimmer_startup_guard_tests::muse_glimmer_startup_allows_baseline_and_keeps_video_disabled ... ok +test server::startup::muse_glimmer_startup_guard_tests::muse_glimmer_startup_rejects_adapters_and_orphan_draft_flags ... ok +test server::startup::muse_glimmer_startup_guard_tests::muse_glimmer_startup_rejects_parallel_and_distributed_modes ... ok +test server::startup::muse_glimmer_startup_guard_tests::muse_glimmer_startup_rejects_quantized_kv_modes ... ok +test server::startup::muse_glimmer_startup_guard_tests::muse_glimmer_startup_rejects_xla_backend_selection ... ok +test server::startup::tests::a_mode_flag_with_its_worker_starts ... ok +test server::startup::tests::a_mode_flag_with_no_matching_worker_fails_startup ... ok +test server::startup::tests::an_unrestricted_server_never_fails_the_mode_gate ... ok +test server::startup::tests::api_keys_from_the_flag_and_the_file_join_one_set ... ok +test server::startup::tests::build_server_config_applies_normalized_startup_values ... ok +test server::startup::tests::build_server_config_honors_no_batch_as_single_slot_context ... ok +test server::startup::tests::build_server_config_keeps_lower_explicit_max_kv_size ... ok +test server::startup::tests::build_server_config_keeps_whole_window_for_unified_context ... ok +test server::startup::tests::build_server_config_max_batch_size_is_at_least_one ... ok +test server::startup::tests::build_server_config_preserves_batch_scheduler_for_tensor_parallel ... ok +test server::startup::tests::build_server_config_prompt_cache_default_is_enabled ... ok +test server::startup::tests::build_server_config_prompt_cache_disabled_produces_false_is_enabled ... ok +test server::startup::tests::build_server_config_propagates_no_batch_flag ... ok +test server::startup::tests::build_server_config_propagates_pipeline_parallel_settings ... ok +test server::startup::tests::build_server_config_propagates_prompt_cache_capacity ... ok +test server::startup::tests::build_server_config_uses_cli_decode_storage_backend ... ok +test server::startup::tests::build_server_config_uses_max_batch_size_as_context_divisor ... ok +test server::startup::tests::decode_storage_backend_parses_auto_dense_and_paged ... ok +test server::startup::tests::detect_model_media_support_falls_back_for_missing_config ... ok +test server::startup::tests::detect_model_media_support_recognises_gemma4_unified ... ok +test server::startup::tests::detect_model_media_support_recognises_gemma4_vlm ... ok +test server::startup::tests::detect_model_media_support_recognises_inkling_video ... ok +test server::startup::tests::detect_model_media_support_recognises_kimi_k25 ... ok +test server::startup::tests::detect_model_media_support_recognises_qwen35_vlm_video ... ok +test server::startup::tests::detect_model_media_support_text_only_disables_video ... ok +test server::startup::tests::explicit_server_sampling_knobs_override_generation_config ... ok +test server::startup::tests::generation_config_sampling_defaults_fill_unset_server_knobs ... ok +test server::startup::tests::loop_detection_env_colon_triple_parsed ... ok +test server::startup::tests::loop_detection_env_comma_triple_parsed ... ok +test server::startup::tests::loop_detection_env_malformed_returns_none ... ok +test server::startup::tests::loop_detection_env_off_keywords_force_disable ... ok +test server::startup::tests::loop_detection_env_on_keywords_force_recommended ... ok +test server::startup::tests::loop_detection_env_unset_returns_none ... ok +test server::startup::tests::loop_detection_env_wrong_field_count_returns_none ... ok +test server::startup::tests::media_support_denies_the_frames_fallback_to_text_only_and_muse_glimmer ... ok +test server::startup::tests::media_support_gives_the_vit_gemma4_vlm_no_frames_fallback ... ok +test server::startup::tests::media_support_keeps_native_video_families_native ... ok +test server::startup::tests::media_support_marks_image_only_vlms_as_frames_fallback ... ok +test server::startup::tests::parallel_context_size_divides_total_budget_by_active_slots ... ok +test server::startup::tests::resolve_chat_template_respects_override_then_file_then_model_metadata ... ok +test server::startup::tests::resolve_decode_storage_backend_defaults_to_auto ... ok +test server::startup::tests::resolve_default_max_tokens_matches_server_policy ... ok +test server::startup::tests::resolve_dry_penalty_last_n_maps_the_sentinels ... ok +test server::startup::tests::resolve_remote_pipeline_topology_builds_remote_coordinator_runtime ... ok +test server::startup::tests::resolve_remote_pipeline_topology_builds_remote_stage_service ... ok +test server::startup::tests::resolve_remote_pipeline_topology_preserves_thunderbolt_backend ... ok +test server::startup::tests::resolve_remote_pipeline_topology_rejects_control_port_conflict ... ok +test server::startup::tests::resolve_tensor_parallel_runtime_support_allows_server_batching_for_gemma3 ... ok +test server::startup::tests::resolve_tensor_parallel_runtime_support_allows_server_batching_for_gemma4 ... ok +test server::startup::tests::resolve_tensor_parallel_runtime_support_allows_server_batching_for_llama ... ok +test server::startup::tests::resolve_tensor_parallel_runtime_support_forces_no_batch_for_gemma4_e2b_fallback ... ok +test server::startup::tests::sampler_order_accepts_only_the_fixed_b10621_default ... ok +test server::startup::tests::sampler_order_accepts_the_adaptive_p_extension_and_reports_it ... ok +test server::startup::tests::sanitize_top_n_sigma_default_folds_the_b10621_disabled_sentinel ... ok +test server::startup::tests::sanitize_typical_p_default_folds_out_of_domain_to_disabled ... ok +test server::startup::tests::settings_endpoint_allows_external_listener_when_disabled_or_authenticated ... ok +test server::startup::tests::settings_endpoint_comment_only_key_file_fails_before_guard ... ok +test server::startup::tests::settings_endpoint_without_keys_allows_only_local_listeners ... ok +test server::startup::tests::settings_endpoint_without_keys_rejects_non_loopback_listeners ... ok +test server::startup::tests::startup_passes_strict_allowlist_dir ... ok +test server::startup::tests::startup_warmup_skips_only_the_families_without_a_text_chat_worker ... ok +test server::startup::tests::startup_warns_on_world_writable_allowlist_dir ... ok +test server::startup::tests::unified_context_size_gives_each_slot_the_total_budget ... ok +test server::startup::tests::validate_parallel_context_startup_rejects_too_small_per_slot_window ... ok +test server::startup::tests::validate_pipeline_parallel_startup_accepts_adapter_config ... ok +test server::startup::tests::validate_pipeline_parallel_startup_accepts_supported_llama_config ... ok +test server::startup::tests::validate_pipeline_parallel_startup_rejects_no_batch_mode ... ok +test server::startup::tests::validate_tensor_parallel_startup_accepts_ernie45_multi_rank_runtime ... ok +test server::startup::tests::validate_tensor_parallel_startup_accepts_gemma3_multi_rank_runtime ... ok +test server::startup::tests::validate_tensor_parallel_startup_accepts_gemma4_multi_rank_runtime ... ok +test server::startup::tests::validate_tensor_parallel_startup_accepts_hunyuan_v1_dense_multi_rank_runtime ... ok +test server::startup::tests::validate_tensor_parallel_startup_accepts_qwen2_multi_rank_runtime ... ok +test server::startup::tests::validate_tensor_parallel_startup_accepts_qwen35_multi_rank_runtime ... ok +test server::startup::tests::validate_tensor_parallel_startup_accepts_qwen3_multi_rank_runtime ... ok +test server::startup::tests::validate_tensor_parallel_startup_accepts_single_rank ... ok +test server::startup::tests::validate_tensor_parallel_startup_accepts_supported_multi_rank_runtime ... ok +test server::startup::tests::webui_security_treats_bracketed_ipv6_loopback_as_loopback ... ok +test server::state::tests::admission_control_accepts_when_queue_below_limit ... ok +test server::state::tests::admission_control_rejects_when_queue_at_or_above_limit ... ok +test server::state::tests::batch_metrics_cache_adapter_routes_evictions ... ok +test server::state::tests::batch_metrics_cache_adapter_routes_lookups_to_hit_and_miss_counters ... ok +test server::state::tests::batch_metrics_default_equals_new ... ok +test server::state::tests::batch_metrics_initializes_to_zero ... ok +test server::state::tests::batch_metrics_prompt_cache_evictions_labeled_by_reason ... ok +test server::state::tests::batch_metrics_prompt_cache_gauges_update ... ok +test server::state::tests::batch_metrics_prompt_cache_hit_increments_counters ... ok +test server::state::tests::batch_metrics_prompt_cache_miss_increments_counter ... ok +test server::state::tests::batch_metrics_publishes_post_load_context_geometry_atomically ... ok +test server::state::tests::batch_metrics_queue_reservation_is_atomic_and_bounded ... ok +test server::state::tests::batch_metrics_record_sequence_completed_accumulates ... ok +test server::state::tests::batch_metrics_set_active_count_is_reflected_by_getter ... ok +test server::state::tests::batch_metrics_set_queue_depth_is_reflected_by_getter ... ok +test server::state::tests::metrics_record_request_accumulates_counters ... ok +test server::state::tests::prompt_cache_store_is_send_sync_via_arc ... ok +test server::state::tests::server_config_carries_prompt_cache_defaults ... ok +test server::stream_session::tests::append_and_read_from_zero_returns_everything ... ok +test server::stream_session::tests::cap_drops_the_front_and_replay_below_the_prefix_is_lost ... ok +test server::stream_session::tests::create_or_replace_cancels_and_finalizes_the_previous_session ... ok +test server::stream_session::tests::evict_and_cancel_is_idempotent_and_owner_scoped ... ok +test server::stream_session::tests::frame_sse_matches_axum_event_wire_format ... ok +test server::stream_session::tests::lookup_matches_exact_and_per_model_variants_for_the_owner_only ... ok +test server::stream_session::tests::read_at_live_edge_is_pending_then_eof_after_finalize ... ok +test server::stream_session::tests::resume_tee_frames_and_finalizes_on_drop ... ok +test server::stream_session::tests::retained_completed_sessions_are_capped ... ok +test server::stream_session::tests::same_conversation_id_under_different_owners_is_two_sessions ... ok +test server::stream_session::tests::single_chunk_larger_than_the_cap_keeps_only_the_tail ... ok +test server::stream_session::tests::sweep_evicts_completed_sessions_past_the_ttl_and_keeps_live_ones ... ok +test server::stream_session::tests::wait_for_change_wakes_on_append_and_finalize ... ok +test server::streaming::tests::blocking_sse_sender_sends_json_text_and_done_in_order ... ok +test server::streaming::tests::cancellation_token_not_set_when_send_succeeds ... ok +test server::streaming::tests::cancellation_token_set_when_receiver_dropped ... ok +test server::streaming::tests::completion_content_chunk_serializes_finish_reason_as_null ... ok +test server::streaming::tests::completion_usage_chunk_has_empty_choices_and_populated_usage ... ok +test server::streaming::tests::content_chunk_choice_has_logprobs_field ... ok +test server::streaming::tests::content_chunk_has_system_fingerprint_field ... ok +test server::streaming::tests::content_chunk_serializes_finish_reason_as_null ... ok +test server::streaming::tests::done_marker_matches_openai_stream_terminator ... ok +test server::streaming::tests::finish_chunk_has_stop_finish_reason ... ok +test server::streaming::tests::initial_chunk_has_role_and_null_finish_reason ... ok +test server::streaming::tests::long_prefill_channel_stays_open_before_first_token ... ok +test server::streaming::tests::plain_usage_chunk_has_no_prompt_tokens_details ... ok +test server::streaming::tests::reasoning_chunk_carries_both_reasoning_fields ... ok +test server::streaming::tests::reasoning_chunk_omits_alias_when_disabled ... ok +test server::streaming::tests::sender_without_cancellation_token_does_not_panic_on_dropped_receiver ... ok +test server::streaming::tests::serialize_json_data_returns_errors_instead_of_panicking ... ok +test server::streaming::tests::usage_chunk_has_empty_choices_and_populated_usage ... ok +test server::streaming::tests::usage_with_cache_chunk_includes_cached_tokens_when_enabled ... ok +test server::streaming::tests::usage_with_cache_chunk_omits_cached_tokens_when_disabled ... ok +test server::streaming_anthropic::tests::channel_round_trips_event_with_header ... ok +test server::streaming_anthropic::tests::emitter_block_index_machine ... ok +test server::streaming_anthropic::tests::emitter_idempotent_open_same_kind ... ok +test server::streaming_responses::tests::channel_round_trips_event_with_header ... ok +test server::streaming_responses::tests::emitter_advances_output_index ... ok +test server::streaming_responses::tests::emitter_next_seq_is_monotonic ... ok +test server::streaming_responses::tests::emitter_open_close_message_round_trips_text ... ok +test server::structured::tests::bench_packed_mask_apply ... ignored, microbenchmark; run explicitly with --ignored --nocapture +test server::structured::tests::build_constraint_from_response_format_helper_threads_through ... ok +test server::structured::tests::build_constraint_from_text_response_format_passes_through ... ok +test server::structured::tests::build_constraint_with_minimal_tokenizer_does_not_panic ... ok +test server::structured::tests::build_constraint_with_simple_string_schema ... ok +test server::structured::tests::invalid_request_propagates_through_helper ... ok +test server::structured::tests::json_object_type_is_unsupported ... ok +test server::structured::tests::json_schema_with_schema_field_returns_schema ... ok +test server::structured::tests::json_schema_without_inner_schema_errors_clean ... ok +test server::structured::tests::json_schema_without_wrapper_errors_clean ... ok +test server::structured::tests::lark_constraint_compiles_tool_schemas_that_use_defs_refs ... ok +test server::structured::tests::lark_constraint_forces_hermes_wrapper ... ok +test server::structured::tests::lark_constraint_named_choice_refuses_other_tool_names ... ok +test server::structured::tests::lark_constraint_rejects_oversized_grammar_text ... ok +test server::structured::tests::missing_response_format_returns_none ... ok +test server::structured::tests::non_object_response_format_errors_clean ... ok +test server::structured::tests::packed_apply_handles_a_width_change_between_calls ... ok +test server::structured::tests::packed_apply_handles_the_all_allowed_and_single_allowed_edges ... ok +test server::structured::tests::packed_apply_matches_bias_apply ... ok +test server::structured::tests::packed_mask_matches_bool_mask ... ok +test server::structured::tests::packed_mask_of_an_empty_allow_set_is_all_zero ... ok +test server::structured::tests::packed_mask_trims_the_matchers_own_excess_bits ... ok +test server::structured::tests::packed_mask_zero_pads_past_the_matcher_vocabulary ... ok +test server::structured::tests::sentencepiece_tokenizer_yields_unsupported_error ... ok +test server::structured::tests::text_response_format_returns_none ... ok +test server::structured::tests::unknown_type_errors_clean ... ok +test server::thinking_budget::tests::a_natural_close_never_injects_the_message ... ok +test server::thinking_budget::tests::a_runtime_force_end_emits_the_message_too ... ok +test server::thinking_budget::tests::a_sampled_token_equal_to_the_message_head_does_not_advance_the_cursor ... ok +test server::thinking_budget::tests::alias_all_none_is_none ... ok +test server::thinking_budget::tests::alias_primary_wins ... ok +test server::thinking_budget::tests::alias_qwen_picked_last ... ok +test server::thinking_budget::tests::alias_vllm_wins_over_qwen ... ok +test server::thinking_budget::tests::an_empty_message_is_stored_as_none ... ok +test server::thinking_budget::tests::an_exhausted_budget_emits_the_message_then_the_close_tag ... ok +test server::thinking_budget::tests::armed_without_budget_is_active_and_tracks_the_block ... ok +test server::thinking_budget::tests::budget_limited_enters_block_and_counts ... ok +test server::thinking_budget::tests::budget_one_emits_exactly_one_reasoning_token ... ok +test server::thinking_budget::tests::budget_zero_with_template_primed_forces_immediate ... ok +test server::thinking_budget::tests::disabled_state_never_overrides ... ok +test server::thinking_budget::tests::force_end_before_first_primed_token_closes_immediately ... ok +test server::thinking_budget::tests::force_end_lets_a_natural_close_through ... ok +test server::thinking_budget::tests::force_end_outside_a_block_waits_for_the_open_token ... ok +test server::thinking_budget::tests::forced_close_does_not_advance_phase_past_closed ... ok +test server::thinking_budget::tests::from_raw_minus_one_is_unbounded ... ok +test server::thinking_budget::tests::from_raw_other_negatives_rejected ... ok +test server::thinking_budget::tests::from_raw_positive_is_limited ... ok +test server::thinking_budget::tests::from_raw_zero_is_immediate_close ... ok +test server::thinking_budget::tests::natural_close_within_block_is_not_overridden_even_at_cap ... ok +test server::thinking_budget::tests::no_message_keeps_the_pre_1470_single_close_token ... ok +test server::thinking_budget::tests::non_primed_budget_zero_waits_for_open_token_first ... ok +test server::thinking_budget::tests::non_primed_waits_for_open_token ... ok +test server::thinking_budget::tests::non_thinking_model_state_is_noop ... ok +test server::thinking_budget::tests::observe_natural_close_marks_closed ... ok +test server::thinking_budget::tests::primed_open_thinking_with_bounded_budget_force_closes_at_cap ... ok +test server::thinking_budget::tests::primed_open_thinking_with_budget_zero_forces_close_immediately ... ok +test server::thinking_budget::tests::request_equal_to_max_tokens_accepted ... ok +test server::thinking_budget::tests::request_exceeding_max_tokens_rejected ... ok +test server::thinking_budget::tests::request_invalid_negative_rejected ... ok +test server::thinking_budget::tests::request_minus_one_reverts_even_when_server_bounded ... ok +test server::thinking_budget::tests::request_none_inherits_server_default ... ok +test server::thinking_budget::tests::request_overrides_server_default ... ok +test server::thinking_budget::tests::request_zero_means_immediate_close ... ok +test server::thinking_budget::tests::resolve_falls_back_to_gemma4_channel_pair ... ok +test server::thinking_budget::tests::resolve_falls_back_to_inkling_pair ... ok +test server::thinking_budget::tests::resolve_partial_gemma4_pair_does_not_resolve ... ok +test server::thinking_budget::tests::resolve_prefers_qwen_think_pair_when_present ... ok +test server::thinking_budget::tests::resolve_returns_none_for_non_thinking_tokenizer ... ok +test server::thinking_budget::tests::server_default_env_fallback_all_cases ... ok +test server::thinking_budget::tests::the_message_is_emitted_on_the_primed_template_path ... ok +test server::thinking_budget::tests::unarmed_state_without_budget_stays_disabled ... ok +test server::thinking_budget::tests::unbounded_state_never_overrides ... ok +test server::tls::tls_tests::a_certificate_that_does_not_match_the_key_is_rejected ... ok +test server::tls::tls_tests::a_certificate_without_a_key_is_refused_rather_than_served_in_plaintext ... ok +test server::tls::tls_tests::a_file_with_no_certificate_block_is_rejected ... ok +test server::tls::tls_tests::a_file_with_no_private_key_block_is_rejected ... ok +test server::tls::tls_tests::a_key_without_a_certificate_is_refused ... ok +test server::tls::tls_tests::a_missing_certificate_file_names_the_flag_and_the_path ... ok +test server::tls::tls_tests::a_missing_key_file_names_the_flag_and_the_path ... ok +test server::tls::tls_tests::a_valid_keypair_builds_a_server_config ... ok +test server::tls::tls_tests::both_flags_pair_into_tls_paths ... ok +test server::tls::tls_tests::neither_flag_means_plaintext_http ... ok +test server::tool_calls::atem::tests::atem_allowlist_filters_and_normalizes_namespace ... ok +test server::tool_calls::atem::tests::atem_bounds_huge_call_parameter_and_argument_amplification ... ok +test server::tool_calls::atem::tests::atem_duplicate_parameters_last_value_wins ... ok +test server::tool_calls::atem::tests::atem_format_display_and_parse_identity ... ok +test server::tool_calls::atem::tests::atem_malformed_truncated_and_unknown_tags_do_not_panic ... ok +test server::tool_calls::atem::tests::atem_nested_and_typed_values_follow_template_contract ... ok +test server::tool_calls::atem::tests::atem_parallel_calls_preserve_order ... ok +test server::tool_calls::atem::tests::atem_precedes_minimax_m2_when_both_are_present ... ok +test server::tool_calls::atem::tests::atem_trailing_content_is_visible_without_wrappers ... ok +test server::tool_calls::atem::tests::atem_wrapper_only_and_unknown_tools_are_stripped_from_content ... ok +test server::tool_calls::atem::tests::muse_cli_render_hides_reasoning_and_control_markers ... ok +test server::tool_calls::atem::tests::muse_cli_render_is_inert_for_plain_text ... ok +test server::tool_calls::atem::tests::muse_recipient_envelope_keeps_user_answer_content ... ok +test server::tool_calls::atem::tests::muse_recipient_envelope_routes_reasoning_and_hides_tool_header ... ok +test server::tool_calls::formats::tests::command_r_invalid_json_skipped ... ok +test server::tool_calls::formats::tests::command_r_multiple_calls ... ok +test server::tool_calls::formats::tests::command_r_no_match ... ok +test server::tool_calls::formats::tests::command_r_single_call ... ok +test server::tool_calls::formats::tests::command_r_with_content_before ... ok +test server::tool_calls::formats::tests::deepseek_tool_call_via_hermes_with_think_block ... ok +test server::tool_calls::formats::tests::function_gemma_bare_token_falls_back_to_raw_string ... ok +test server::tool_calls::formats::tests::function_gemma_escaped_string_arg ... ok +test server::tool_calls::formats::tests::function_gemma_escaped_string_with_comma_and_brace ... ok +test server::tool_calls::formats::tests::function_gemma_malformed_call_body_returns_none ... ok +test server::tool_calls::formats::tests::function_gemma_multiple_args ... ok +test server::tool_calls::formats::tests::function_gemma_multiple_calls ... ok +test server::tool_calls::formats::tests::function_gemma_no_args ... ok +test server::tool_calls::formats::tests::function_gemma_no_match ... ok +test server::tool_calls::formats::tests::function_gemma_numeric_and_boolean_values ... ok +test server::tool_calls::formats::tests::function_gemma_with_content_before ... ok +test server::tool_calls::formats::tests::functionary_v31_malformed_trailing_tag_preserves_prior_calls ... ok +test server::tool_calls::formats::tests::functionary_v31_no_match ... ok +test server::tool_calls::formats::tests::functionary_v31_single_call ... ok +test server::tool_calls::formats::tests::functionary_v32_content_before_first_marker ... ok +test server::tool_calls::formats::tests::functionary_v32_multiple_calls ... ok +test server::tool_calls::formats::tests::functionary_v32_no_false_positive_blockquote ... ok +test server::tool_calls::formats::tests::functionary_v32_no_false_positive_mid_line ... ok +test server::tool_calls::formats::tests::functionary_v32_single_call ... ok +test server::tool_calls::formats::tests::functionary_v32_skips_all_segment ... ok +test server::tool_calls::formats::tests::generic_json_array ... ok +test server::tool_calls::formats::tests::generic_json_not_a_tool_call ... ok +test server::tool_calls::formats::tests::generic_json_single ... ok +test server::tool_calls::formats::tests::glm47_content_before_block_preserved ... ok +test server::tool_calls::formats::tests::glm47_declines_bare_hermes_json_body ... ok +test server::tool_calls::formats::tests::glm47_does_not_claim_qwen3_coder_body ... ok +test server::tool_calls::formats::tests::glm47_fallback_json_function_shape ... ok +test server::tool_calls::formats::tests::glm47_fallback_json_tool_shape ... ok +test server::tool_calls::formats::tests::glm47_fallback_name_newline_json ... ok +test server::tool_calls::formats::tests::glm47_fallback_name_space_json ... ok +test server::tool_calls::formats::tests::glm47_fallback_shell_kv ... ok +test server::tool_calls::formats::tests::glm47_fallback_shell_kv_quoted_value ... ok +test server::tool_calls::formats::tests::glm47_integer_typed_accepts_zero_fraction_float ... ok +test server::tool_calls::formats::tests::glm47_malformed_returns_none ... ok +test server::tool_calls::formats::tests::glm47_multiline_value_preserves_internal_newlines ... ok +test server::tool_calls::formats::tests::glm47_multiple_args_with_typed_coercion ... ok +test server::tool_calls::formats::tests::glm47_no_schema_uses_loose_literal_coercion ... ok +test server::tool_calls::formats::tests::glm47_parallel_calls ... ok +test server::tool_calls::formats::tests::glm47_single_arg ... ok +test server::tool_calls::formats::tests::glm47_string_typed_keeps_raw_vs_numeric_coerces ... ok +test server::tool_calls::formats::tests::granite_multiple_calls ... ok +test server::tool_calls::formats::tests::granite_no_match ... ok +test server::tool_calls::formats::tests::granite_single_call ... ok +test server::tool_calls::formats::tests::granite_with_content_before_response_tag ... ok +test server::tool_calls::formats::tests::harmony_analysis_routes_to_reasoning ... ok +test server::tool_calls::formats::tests::harmony_constrain_marker_optional ... ok +test server::tool_calls::formats::tests::harmony_content_never_leaks_channel_markup ... ok +test server::tool_calls::formats::tests::harmony_final_channel_is_content_not_tool_call ... ok +test server::tool_calls::formats::tests::harmony_malformed_missing_message_marker_does_not_panic ... ok +test server::tool_calls::formats::tests::harmony_multiple_sequential_tool_calls ... ok +test server::tool_calls::formats::tests::harmony_no_match_gemma_single_pipe_channel ... ok +test server::tool_calls::formats::tests::harmony_no_match_hermes_tool_call ... ok +test server::tool_calls::formats::tests::harmony_no_match_plain_text ... ok +test server::tool_calls::formats::tests::harmony_recipient_stops_at_constrain_without_space ... ok +test server::tool_calls::formats::tests::harmony_single_tool_call_matches_issue_repro ... ok +test server::tool_calls::formats::tests::harmony_strips_functions_namespace ... ok +test server::tool_calls::formats::tests::hermes_multiple_tool_calls ... ok +test server::tool_calls::formats::tests::hermes_no_match ... ok +test server::tool_calls::formats::tests::hermes_single_tool_call ... ok +test server::tool_calls::formats::tests::hermes_with_content_before ... ok +test server::tool_calls::formats::tests::integer_literal_rule_is_textual_and_exact ... ok +test server::tool_calls::formats::tests::kimi_k2_content_before_section_preserved ... ok +test server::tool_calls::formats::tests::kimi_k2_loose_literal_python_repr_arguments_coerced ... ok +test server::tool_calls::formats::tests::kimi_k2_loose_literal_word_boundary_guard_preserves_identifier_substrings ... ok +test server::tool_calls::formats::tests::kimi_k2_malformed_json_args_falls_back_to_raw_string ... ok +test server::tool_calls::formats::tests::kimi_k2_missing_per_call_wrappers_parses_whole_section_as_one_call ... ok +test server::tool_calls::formats::tests::kimi_k2_missing_section_end_marker_still_parses ... ok +test server::tool_calls::formats::tests::kimi_k2_multiple_calls_in_one_section ... ok +test server::tool_calls::formats::tests::kimi_k2_name_extracted_from_functions_prefixed_id ... ok +test server::tool_calls::formats::tests::kimi_k2_name_extracted_without_functions_prefix ... ok +test server::tool_calls::formats::tests::kimi_k2_no_match_without_section_marker ... ok +test server::tool_calls::formats::tests::kimi_k2_single_call_with_wrapper ... ok +test server::tool_calls::formats::tests::kimi_k3_attribute_accepts_any_ascii_whitespace_boundary ... ok +test server::tool_calls::formats::tests::kimi_k3_caps_calls_and_arguments_per_call ... ok +test server::tool_calls::formats::tests::kimi_k3_claims_on_a_genuine_response_pair_with_no_tools ... ok +test server::tool_calls::formats::tests::kimi_k3_content_never_carries_a_marker ... ok +test server::tool_calls::formats::tests::kimi_k3_content_strips_attribute_bearing_openers_and_stray_markers ... ok +test server::tool_calls::formats::tests::kimi_k3_declines_a_lone_marker_echoed_by_another_family ... ok +test server::tool_calls::formats::tests::kimi_k3_declines_on_every_other_family ... ok +test server::tool_calls::formats::tests::kimi_k3_multiple_calls_keep_their_order ... ok +test server::tool_calls::formats::tests::kimi_k3_splits_reasoning_content_and_typed_arguments ... ok +test server::tool_calls::formats::tests::kimi_k3_string_arguments_are_never_reinterpreted ... ok +test server::tool_calls::formats::tests::kimi_k3_strip_markers_removes_message_close_without_leaving_the_bare_word ... ok +test server::tool_calls::formats::tests::kimi_k3_strip_tools_block_drops_contents_and_survives_unclosed_input ... ok +test server::tool_calls::formats::tests::kimi_k3_trailing_json_block_cannot_override_explicit_arguments ... ok +test server::tool_calls::formats::tests::kimi_k3_unescapes_attribute_values_in_the_renderer_reverse_order ... ok +test server::tool_calls::formats::tests::kimi_k3_whole_object_json_block_round_trips ... ok +test server::tool_calls::formats::tests::llama3_array ... ok +test server::tool_calls::formats::tests::llama3_single_call ... ok +test server::tool_calls::formats::tests::llama3_with_python_tag ... ok +test server::tool_calls::formats::tests::longcat_fallback_shapes ... ok +test server::tool_calls::formats::tests::longcat_integer_typed_accepts_zero_fraction_float ... ok +test server::tool_calls::formats::tests::longcat_malformed_returns_none ... ok +test server::tool_calls::formats::tests::longcat_multiline_value ... ok +test server::tool_calls::formats::tests::longcat_parallel_calls ... ok +test server::tool_calls::formats::tests::longcat_raw_json_body_claimed ... ok +test server::tool_calls::formats::tests::longcat_single_and_multiple_args ... ok +test server::tool_calls::formats::tests::longcat_string_vs_numeric_coercion ... ok +test server::tool_calls::formats::tests::minimax_m2_boolean_param ... ok +test server::tool_calls::formats::tests::minimax_m2_caps_excessive_parallel_calls ... ok +test server::tool_calls::formats::tests::minimax_m2_caps_excessive_parameters_per_call ... ok +test server::tool_calls::formats::tests::minimax_m2_integer_typed_accepts_zero_fraction_float ... ok +test server::tool_calls::formats::tests::minimax_m2_json_object_param ... ok +test server::tool_calls::formats::tests::minimax_m2_lone_quote_in_name_does_not_panic ... ok +test server::tool_calls::formats::tests::minimax_m2_malformed_parameter_no_quadratic_blowup ... ok +test server::tool_calls::formats::tests::minimax_m2_missing_close_invoke ... ok +test server::tool_calls::formats::tests::minimax_m2_no_match_hermes_format ... ok +test server::tool_calls::formats::tests::minimax_m2_no_match_plain_text ... ok +test server::tool_calls::formats::tests::minimax_m2_null_param ... ok +test server::tool_calls::formats::tests::minimax_m2_numeric_params ... ok +test server::tool_calls::formats::tests::minimax_m2_parallel_tool_calls ... ok +test server::tool_calls::formats::tests::minimax_m2_single_quotes_name ... ok +test server::tool_calls::formats::tests::minimax_m2_single_tool_call ... ok +test server::tool_calls::formats::tests::minimax_m2_string_typed_param_keeps_numeric_text ... ok +test server::tool_calls::formats::tests::minimax_m2_trailing_malformed_invoke_preserves_prior_calls ... ok +test server::tool_calls::formats::tests::minimax_m2_without_schema_uses_loose_rules ... ok +test server::tool_calls::formats::tests::minimax_m3_anyof_integer_or_string_keeps_the_exponent_form_a_string ... ok +test server::tool_calls::formats::tests::minimax_m3_content_before_block_preserved ... ok +test server::tool_calls::formats::tests::minimax_m3_integer_typed_accepts_zero_fraction_float ... ok +test server::tool_calls::formats::tests::minimax_m3_item_tag_arrays ... ok +test server::tool_calls::formats::tests::minimax_m3_malformed_returns_none_no_panic ... ok +test server::tool_calls::formats::tests::minimax_m3_mixed_text_and_children_uses_text_field ... ok +test server::tool_calls::formats::tests::minimax_m3_nested_item_arrays_typed ... ok +test server::tool_calls::formats::tests::minimax_m3_nested_object_param ... ok +test server::tool_calls::formats::tests::minimax_m3_no_schema_loose_coercion ... ok +test server::tool_calls::formats::tests::minimax_m3_ns_lt_kept_in_sync ... ok +test server::tool_calls::formats::tests::minimax_m3_number_typed_keeps_written_form ... ok +test server::tool_calls::formats::tests::minimax_m3_parallel_invokes ... ok +test server::tool_calls::formats::tests::minimax_m3_repeated_tag_arrays ... ok +test server::tool_calls::formats::tests::minimax_m3_schema_coercion_anyof ... ok +test server::tool_calls::formats::tests::minimax_m3_schema_coercion_dict_and_list ... ok +test server::tool_calls::formats::tests::minimax_m3_schema_coercion_enum ... ok +test server::tool_calls::formats::tests::minimax_m3_schema_coercion_numeric_kinds ... ok +test server::tool_calls::formats::tests::minimax_m3_schema_coercion_oneof ... ok +test server::tool_calls::formats::tests::minimax_m3_schema_coercion_string_not_numified ... ok +test server::tool_calls::formats::tests::minimax_m3_single_call ... ok +test server::tool_calls::formats::tests::minimax_m3_unterminated_body_keeps_call ... ok +test server::tool_calls::formats::tests::mistral_bracket_leading_content_returns_none ... ok +test server::tool_calls::formats::tests::mistral_bracket_nested_braces_and_newlines ... ok +test server::tool_calls::formats::tests::mistral_bracket_no_args_marker_no_quadratic_blowup ... ok +test server::tool_calls::formats::tests::mistral_bracket_old_format_regression_returns_none ... ok +test server::tool_calls::formats::tests::mistral_bracket_single_call ... ok +test server::tool_calls::formats::tests::mistral_bracket_unclosed_args_no_quadratic_blowup ... ok +test server::tool_calls::formats::tests::mistral_nemo_no_prefix ... ok +test server::tool_calls::formats::tests::mistral_nemo_single_call ... ok +test server::tool_calls::formats::tests::pythonic_bracketed_list_arg ... ok +test server::tool_calls::formats::tests::pythonic_bracketed_list_with_quoted_string_items ... ok +test server::tool_calls::formats::tests::pythonic_declines_json_with_embedded_bracket_call ... ok +test server::tool_calls::formats::tests::pythonic_deeply_nested_list_does_not_overflow_stack ... ok +test server::tool_calls::formats::tests::pythonic_empty_args ... ok +test server::tool_calls::formats::tests::pythonic_first_match_only ... ok +test server::tool_calls::formats::tests::pythonic_list_depth_cap_boundary ... ok +test server::tool_calls::formats::tests::pythonic_list_with_quoted_item_containing_comma ... ok +test server::tool_calls::formats::tests::pythonic_list_with_single_quoted_items ... ok +test server::tool_calls::formats::tests::pythonic_marker_wrapped_and_bare_body_match ... ok +test server::tool_calls::formats::tests::pythonic_marker_wrapped_single_quotes ... ok +test server::tool_calls::formats::tests::pythonic_mixed_quoted_and_unquoted_args ... ok +test server::tool_calls::formats::tests::pythonic_non_matching_text_returns_none ... ok +test server::tool_calls::formats::tests::pythonic_preserves_private_use_chars_in_values ... ok +test server::tool_calls::formats::tests::pythonic_python_bool_and_none_literals ... ok +test server::tool_calls::formats::tests::pythonic_quoted_string_arg ... ok +test server::tool_calls::formats::tests::pythonic_quoted_values_unescape_matching_quotes_and_backslashes ... ok +test server::tool_calls::formats::tests::pythonic_single_quoted_string_args ... ok +test server::tool_calls::formats::tests::pythonic_single_quoted_value_with_comma ... ok +test server::tool_calls::formats::tests::pythonic_unquoted_bool_args ... ok +test server::tool_calls::formats::tests::pythonic_unquoted_float_arg ... ok +test server::tool_calls::formats::tests::pythonic_unquoted_int_arg ... ok +test server::tool_calls::formats::tests::qwen3_coder_integer_typed_accepts_zero_fraction_float ... ok +test server::tool_calls::formats::tests::qwen3_coder_integer_typed_keeps_fractional_value_as_number ... ok +test server::tool_calls::formats::tests::qwen3_coder_number_typed_keeps_written_form ... ok +test server::tool_calls::formats::tests::qwen3_coder_object_typed_invalid_json_falls_back_to_string ... ok +test server::tool_calls::formats::tests::qwen3_coder_object_typed_valid_json_parses ... ok +test server::tool_calls::formats::tests::qwen3_coder_string_typed_param_keeps_numeric_text ... ok +test server::tool_calls::formats::tests::qwen3_coder_string_typed_true_stays_string ... ok +test server::tool_calls::formats::tests::qwen3_coder_without_schema_uses_loose_rules ... ok +test server::tool_calls::formats::tests::test_gemma4_empty_string_value ... ok +test server::tool_calls::formats::tests::test_gemma4_mixed_types ... ok +test server::tool_calls::formats::tests::test_gemma4_multiple_calls ... ok +test server::tool_calls::formats::tests::test_gemma4_no_args ... ok +test server::tool_calls::formats::tests::test_gemma4_no_match ... ok +test server::tool_calls::formats::tests::test_gemma4_string_arg ... ok +test server::tool_calls::formats::tests::test_gemma4_string_with_comma ... ok +test server::tool_calls::formats::tests::test_gemma4_string_with_special_chars ... ok +test server::tool_calls::formats::tests::test_gemma4_with_content_before ... ok +test server::tool_calls::formats::tests::xml_array_typed_bare_scalar_takes_the_item_type ... ok +test server::tool_calls::formats::tests::xml_boolean_typed_accepts_the_words_a_strict_json_read_rejects ... ok +test server::tool_calls::formats::tests::xml_boolean_words_need_a_declaration ... ok +test server::tool_calls::formats::tests::xml_null_literal_is_null_except_under_a_plain_string_schema ... ok +test server::tool_calls::formats::tests::xml_parsers_ignore_a_schema_for_a_different_function ... ok +test server::tool_calls::formats::tests::xml_parsers_resolve_a_namespaced_function_name ... ok +test server::tool_calls::parser::tests::clean_content_markers_strips_all ... ok +test server::tool_calls::parser::tests::clean_content_markers_strips_kimi_k3_message_close ... ok +test server::tool_calls::parser::tests::clean_structural_tokens_drops_a_leftover_kimi_k3_tools_block ... ok +test server::tool_calls::parser::tests::clean_structural_tokens_handles_inkling_thinking_and_answer_wrappers ... ok +test server::tool_calls::parser::tests::clean_structural_tokens_handles_primed_inkling_close ... ok +test server::tool_calls::parser::tests::clean_structural_tokens_preserves_inkling_answer_closed_by_end_message ... ok +test server::tool_calls::parser::tests::clean_structural_tokens_primed_qwen_close_only ... ok +test server::tool_calls::parser::tests::clean_structural_tokens_splits_muse_recipient_channels ... ok +test server::tool_calls::parser::tests::filter_by_tools_bare_name_unchanged ... ok +test server::tool_calls::parser::tests::filter_by_tools_strips_leading_namespace ... ok +test server::tool_calls::parser::tests::filter_by_tools_unknown_namespaced_name_dropped ... ok +test server::tool_calls::parser::tests::gemma4_content_then_tool_call ... ok +test server::tool_calls::parser::tests::gemma4_multiple_tool_calls ... ok +test server::tool_calls::parser::tests::gemma4_strips_trailing_turn ... ok +test server::tool_calls::parser::tests::gemma4_strips_trailing_turn_with_tools ... ok +test server::tool_calls::parser::tests::gemma4_thinking_only ... ok +test server::tool_calls::parser::tests::gemma4_thinking_then_content ... ok +test server::tool_calls::parser::tests::gemma4_thinking_then_tool_call ... ok +test server::tool_calls::parser::tests::generate_tool_call_id_format ... ok +test server::tool_calls::parser::tests::kimi_k3_thinking_pair_is_recognized_by_the_shared_helpers ... ok +test server::tool_calls::parser::tests::parse_command_r_format ... ok +test server::tool_calls::parser::tests::parse_deepseek_format_via_hermes ... ok +test server::tool_calls::parser::tests::parse_filters_unknown_tools ... ok +test server::tool_calls::parser::tests::parse_function_gemma_filters_unknown_tools ... ok +test server::tool_calls::parser::tests::parse_function_gemma_format ... ok +test server::tool_calls::parser::tests::parse_function_gemma_not_confused_with_gemma4 ... ok +test server::tool_calls::parser::tests::parse_functionary_v31_format ... ok +test server::tool_calls::parser::tests::parse_gemma4_filters_unknown_tools ... ok +test server::tool_calls::parser::tests::parse_gemma4_format ... ok +test server::tool_calls::parser::tests::parse_generic_json_format ... ok +test server::tool_calls::parser::tests::parse_glm47_does_not_regress_generic_json ... ok +test server::tool_calls::parser::tests::parse_glm47_does_not_regress_qwen3_coder ... ok +test server::tool_calls::parser::tests::parse_glm47_filters_unknown_tools ... ok +test server::tool_calls::parser::tests::parse_glm47_primary_end_to_end ... ok +test server::tool_calls::parser::tests::parse_glm47_string_coercion_threads_schema ... ok +test server::tool_calls::parser::tests::parse_granite_format ... ok +test server::tool_calls::parser::tests::parse_granite_takes_precedence_over_hermes ... ok +test server::tool_calls::parser::tests::parse_harmony_filters_unknown_tools ... ok +test server::tool_calls::parser::tests::parse_harmony_final_only_does_not_leak_markup ... ok +test server::tool_calls::parser::tests::parse_harmony_multiple_calls ... ok +test server::tool_calls::parser::tests::parse_harmony_no_tools_accepts_all ... ok +test server::tool_calls::parser::tests::parse_harmony_tool_call ... ok +test server::tool_calls::parser::tests::parse_hermes_format ... ok +test server::tool_calls::parser::tests::parse_hermes_json_body_routes_to_hermes_not_glm47 ... ok +test server::tool_calls::parser::tests::parse_kimi_k2_filters_unknown_tools ... ok +test server::tool_calls::parser::tests::parse_kimi_k2_multiple_calls ... ok +test server::tool_calls::parser::tests::parse_kimi_k2_single_call ... ok +test server::tool_calls::parser::tests::parse_kimi_k3_filters_calls_to_undeclared_tools ... ok +test server::tool_calls::parser::tests::parse_longcat_primary_end_to_end ... ok +test server::tool_calls::parser::tests::parse_minimax_m2_filters_unknown_tools ... ok +test server::tool_calls::parser::tests::parse_minimax_m2_parallel_calls ... ok +test server::tool_calls::parser::tests::parse_minimax_m2_passes_request_schema_to_parser ... ok +test server::tool_calls::parser::tests::parse_minimax_m2_single_call ... ok +test server::tool_calls::parser::tests::parse_minimax_m3_does_not_affect_hermes_or_generic_json ... ok +test server::tool_calls::parser::tests::parse_minimax_m3_end_to_end ... ok +test server::tool_calls::parser::tests::parse_minimax_m3_filters_unknown_tools ... ok +test server::tool_calls::parser::tests::parse_minimax_m3_parallel_invokes ... ok +test server::tool_calls::parser::tests::parse_mistral_bracket_filters_unknown_tools ... ok +test server::tool_calls::parser::tests::parse_mistral_bracket_format ... ok +test server::tool_calls::parser::tests::parse_mistral_nemo_format ... ok +test server::tool_calls::parser::tests::parse_no_tools_provided_accepts_all ... ok +test server::tool_calls::parser::tests::parse_plain_text_returns_none ... ok +test server::tool_calls::parser::tests::parse_pythonic_does_not_steal_json_tool_call ... ok +test server::tool_calls::parser::tests::parse_pythonic_filters_unknown_tools ... ok +test server::tool_calls::parser::tests::parse_pythonic_format ... ok +test server::tool_calls::parser::tests::parse_pythonic_single_quoted_literals ... ok +test server::tool_calls::parser::tests::parse_qwen3_coder_passes_request_schema_to_parser ... ok +test server::tool_calls::parser::tests::parse_qwen3_coder_still_runs_after_functionary_v31 ... ok +test server::tool_calls::parser::tests::parse_tool_calls_empty_after_strip_returns_empty_content ... ok +test server::tool_calls::parser::tests::parse_with_thinking_blocks ... ok +test server::tool_calls::parser::tests::qwen3_coder_does_not_regress_functionary_v31_json_body ... ok +test server::tool_calls::parser::tests::qwen3_coder_empty_parameter_value ... ok +test server::tool_calls::parser::tests::qwen3_coder_malformed_missing_closing_tags_keeps_prior_calls ... ok +test server::tool_calls::parser::tests::qwen3_coder_multiple_calls_in_one_response ... ok +test server::tool_calls::parser::tests::qwen3_coder_single_call_multiple_params_with_type_coercion ... ok +test server::tool_calls::parser::tests::qwen3_coder_single_call_single_param ... ok +test server::tool_calls::parser::tests::qwen3_coder_value_with_whitespace_newlines_and_quotes ... ok +test server::tool_calls::parser::tests::qwen3_coder_zero_parameter_call ... ok +test server::tool_calls::parser::tests::reasoning_and_tool_call_stream_markers ... ok +test server::tool_calls::parser::tests::strip_thinking_handles_both_think_and_channel ... ok +test server::tool_calls::parser::tests::strip_thinking_handles_multiple_blocks ... ok +test server::tool_calls::parser::tests::strip_thinking_handles_unclosed_channel ... ok +test server::tool_calls::parser::tests::strip_thinking_handles_unclosed_tag ... ok +test server::tool_calls::parser::tests::strip_thinking_passes_through_no_tags ... ok +test server::tool_calls::parser::tests::strip_thinking_preserves_balanced_channel_after_orphan_close ... ok +test server::tool_calls::parser::tests::strip_thinking_primed_qwen_close_only ... ok +test server::tool_calls::parser::tests::strip_thinking_prompt_primed_close_drops_preceding_thinking ... ok +test server::tool_calls::parser::tests::strip_thinking_prompt_primed_close_then_tool_call ... ok +test server::tool_calls::parser::tests::strip_thinking_removes_gemma4_channel ... ok +test server::tool_calls::parser::tests::strip_thinking_removes_think_blocks ... ok +test server::tool_calls::parser::tests::tool_enabled_muse_final_answer_splits_recipient_channels ... ok +test server::tool_calls::stream_filter::atem_stream_tests::atem_all_fixed_delimiters_split_at_every_byte_boundary ... ok +test server::tool_calls::stream_filter::atem_stream_tests::atem_dynamic_openers_split_across_chunk_boundaries ... ok +test server::tool_calls::stream_filter::atem_stream_tests::atem_exact_eof_ambiguity_is_suppressed_safely ... ok +test server::tool_calls::stream_filter::atem_stream_tests::atem_flush_handles_complete_truncated_malformed_and_wrapper_only ... ok +test server::tool_calls::stream_filter::atem_stream_tests::atem_huge_malformed_input_drains_without_unbounded_visible_buffer ... ok +test server::tool_calls::stream_filter::atem_stream_tests::atem_nested_typed_values_do_not_leak_when_split_one_byte ... ok +test server::tool_calls::stream_filter::atem_stream_tests::atem_parallel_calls_parse_order_from_accumulated_stream ... ok +test server::tool_calls::stream_filter::atem_stream_tests::atem_payload_delimiter_lookalikes_do_not_exit_outer_block ... ok +test server::tool_calls::stream_filter::atem_stream_tests::atem_single_feed_suppresses_and_resumes_after_wrapper ... ok +test server::tool_calls::stream_filter::atem_stream_tests::atem_split_delimiters_preserve_suppressed_positions ... ok +test server::tool_calls::stream_filter::atem_stream_tests::atem_stray_invoke_and_parameter_tags_are_suppressed ... ok +test server::tool_calls::stream_filter::atem_stream_tests::muse_dynamic_tool_recipient_header_is_suppressed ... ok +test server::tool_calls::stream_filter::atem_stream_tests::muse_prompt_primed_leading_space_routes_reasoning ... ok +test server::tool_calls::stream_filter::atem_stream_tests::muse_recipient_channels_split_reasoning_and_content ... ok +test server::tool_calls::stream_filter::tests::angle_bracket_mid_text_passes_through ... ok +test server::tool_calls::stream_filter::tests::angle_brackets_in_normal_text ... ok +test server::tool_calls::stream_filter::tests::content_then_tool_call ... ok +test server::tool_calls::stream_filter::tests::content_tokens_have_zero_suppressed_positions ... ok +test server::tool_calls::stream_filter::tests::delimiter_that_straddles_token_tail_counts_position_once ... ok +test server::tool_calls::stream_filter::tests::empty_fragment ... ok +test server::tool_calls::stream_filter::tests::flush_emits_buffered_content ... ok +test server::tool_calls::stream_filter::tests::flush_in_content_state_emits_content_only ... ok +test server::tool_calls::stream_filter::tests::flush_in_thinking_suppresses ... ok +test server::tool_calls::stream_filter::tests::flush_resolves_bare_channel_fallback_at_end_of_stream ... ok +test server::tool_calls::stream_filter::tests::function_gemma_content_after_call_emitted_in_same_fragment ... ok +test server::tool_calls::stream_filter::tests::function_gemma_content_before_call_emitted ... ok +test server::tool_calls::stream_filter::tests::function_gemma_markers_not_confused_with_gemma4 ... ok +test server::tool_calls::stream_filter::tests::function_gemma_tool_call_suppressed ... ok +test server::tool_calls::stream_filter::tests::gemma4_regression_channel_reasoning_and_content ... ok +test server::tool_calls::stream_filter::tests::gemma4_streaming_delta_contract_only_drops_thought_residue ... ok +test server::tool_calls::stream_filter::tests::gemma4_tool_call_not_confused_with_hermes ... ok +test server::tool_calls::stream_filter::tests::hermes_content_after_tool_call_emitted_in_same_fragment ... ok +test server::tool_calls::stream_filter::tests::hermes_content_then_tool_call_strips_markup ... ok +test server::tool_calls::stream_filter::tests::hermes_flush_in_tool_call_state_suppresses ... ok +test server::tool_calls::stream_filter::tests::hermes_multiple_tool_calls_suppressed ... ok +test server::tool_calls::stream_filter::tests::hermes_partial_marker_at_boundary_then_complete_tool_call ... ok +test server::tool_calls::stream_filter::tests::hermes_partial_marker_at_token_boundary_buffered_and_released ... ok +test server::tool_calls::stream_filter::tests::hermes_tool_call_does_not_enter_gemma4_state ... ok +test server::tool_calls::stream_filter::tests::hermes_tool_call_only_suppressed ... ok +test server::tool_calls::stream_filter::tests::hermes_tool_call_token_by_token_suppressed ... ok +test server::tool_calls::stream_filter::tests::inkling_thinking_then_answer_wrappers_are_filtered ... ok +test server::tool_calls::stream_filter::tests::kimi_k2_content_before_section_emitted ... ok +test server::tool_calls::stream_filter::tests::kimi_k2_multi_call_section_all_calls_suppressed ... ok +test server::tool_calls::stream_filter::tests::kimi_k2_section_markers_split_across_fragment_boundaries ... ok +test server::tool_calls::stream_filter::tests::kimi_k2_tool_call_not_confused_with_hermes_or_gemma4 ... ok +test server::tool_calls::stream_filter::tests::kimi_k2_tool_call_section_suppressed_in_one_fragment ... ok +test server::tool_calls::stream_filter::tests::kimi_k3_markers_do_not_disturb_other_families ... ok +test server::tool_calls::stream_filter::tests::kimi_k3_open_think_marker_enters_the_reasoning_channel ... ok +test server::tool_calls::stream_filter::tests::kimi_k3_open_think_marker_reports_both_canonical_delimiters ... ok +test server::tool_calls::stream_filter::tests::kimi_k3_primed_open_think_marker_reports_the_close_delimiter ... ok +test server::tool_calls::stream_filter::tests::kimi_k3_primed_open_thinking_splits_reasoning_content_and_tool_calls ... ok +test server::tool_calls::stream_filter::tests::kimi_k3_whole_fragment_feed_agrees_with_byte_by_byte ... ok +test server::tool_calls::stream_filter::tests::longcat_content_before_block_emitted ... ok +test server::tool_calls::stream_filter::tests::longcat_streaming_split_at_every_byte_boundary ... ok +test server::tool_calls::stream_filter::tests::longcat_tool_call_suppressed_single_feed ... ok +test server::tool_calls::stream_filter::tests::minimax_m3_content_before_block_emitted ... ok +test server::tool_calls::stream_filter::tests::minimax_m3_partial_prefix_released_when_not_marker ... ok +test server::tool_calls::stream_filter::tests::minimax_m3_streaming_split_at_every_byte_boundary ... ok +test server::tool_calls::stream_filter::tests::minimax_m3_tool_call_suppressed_single_feed ... ok +test server::tool_calls::stream_filter::tests::mistral_bracket_tool_calls_marker_suppressed ... ok +test server::tool_calls::stream_filter::tests::mistral_nemo_partial_marker_at_boundary_held ... ok +test server::tool_calls::stream_filter::tests::mistral_nemo_partial_marker_resolves_to_content ... ok +test server::tool_calls::stream_filter::tests::mistral_nemo_tool_calls_marker_suppressed ... ok +test server::tool_calls::stream_filter::tests::multi_fragment_gemma4_close_tag_two_tokens_counts_two_positions ... ok +test server::tool_calls::stream_filter::tests::multi_fragment_hermes_close_tag_counts_all_token_positions ... ok +test server::tool_calls::stream_filter::tests::multi_fragment_hermes_close_three_feeds_suppressed_equals_three ... ok +test server::tool_calls::stream_filter::tests::muse_primed_self_header_split_at_real_token_boundaries ... ok +test server::tool_calls::stream_filter::tests::no_special_tokens_passthrough ... ok +test server::tool_calls::stream_filter::tests::parallel_gemma4_tool_calls_delimiter_tokens_have_suppressed_positions ... ok +test server::tool_calls::stream_filter::tests::parallel_tool_calls_delimiter_matches_have_suppressed_positions ... ok +test server::tool_calls::stream_filter::tests::parallel_tool_calls_delimiter_tokens_have_suppressed_positions ... ok +test server::tool_calls::stream_filter::tests::partial_channel_delimiter ... ok +test server::tool_calls::stream_filter::tests::partial_delimiter_at_end ... ok +test server::tool_calls::stream_filter::tests::partial_delimiter_resolves_to_content ... ok +test server::tool_calls::stream_filter::tests::pipe_in_normal_text ... ok +test server::tool_calls::stream_filter::tests::primed_open_thinking_starts_in_reasoning_state ... ok +test server::tool_calls::stream_filter::tests::primed_open_thinking_token_by_token ... ok +test server::tool_calls::stream_filter::tests::primed_open_thinking_unclosed_suppresses_content_entirely ... ok +test server::tool_calls::stream_filter::tests::pythonic_content_before_call_emitted ... ok +test server::tool_calls::stream_filter::tests::pythonic_single_quoted_tool_call_suppressed ... ok +test server::tool_calls::stream_filter::tests::pythonic_single_quoted_tool_call_suppressed_across_fragments ... ok +test server::tool_calls::stream_filter::tests::pythonic_start_marker_not_confused_with_gemma4_or_kimi_k2 ... ok +test server::tool_calls::stream_filter::tests::pythonic_tool_call_suppressed ... ok +test server::tool_calls::stream_filter::tests::qwen_think_full_chunk ... ok +test server::tool_calls::stream_filter::tests::qwen_think_prompt_primed ... ok +test server::tool_calls::stream_filter::tests::qwen_think_token_by_token_full_chunk ... ok +test server::tool_calls::stream_filter::tests::qwen_think_token_by_token_prompt_primed ... ok +test server::tool_calls::stream_filter::tests::single_token_delimiter_still_counts_one_position ... ok +test server::tool_calls::stream_filter::tests::strips_leading_turn ... ok +test server::tool_calls::stream_filter::tests::strips_think_marker ... ok +test server::tool_calls::stream_filter::tests::strips_trailing_turn ... ok +test server::tool_calls::stream_filter::tests::thinking_block_surfaces_as_reasoning_not_content ... ok +test server::tool_calls::stream_filter::tests::thinking_delimiter_also_increments_suppressed_positions ... ok +test server::tool_calls::stream_filter::tests::thinking_only ... ok +test server::tool_calls::stream_filter::tests::thinking_then_content ... ok +test server::tool_calls::stream_filter::tests::thinking_then_content_with_turn ... ok +test server::tool_calls::stream_filter::tests::thinking_then_tool_call ... ok +test server::tool_calls::stream_filter::tests::token_by_token_content ... ok +test server::tool_calls::stream_filter::tests::token_by_token_thinking_then_content ... ok +test server::tool_calls::stream_filter::tests::token_by_token_tool_call ... ok +test server::tool_calls::stream_filter::tests::tool_call_only ... ok +test server::tool_calls::stream_filter::tests::trailing_angle_bracket_buffered ... ok +test server::tool_calls::tool_choice_grammar_tests::special_token_id_follows_the_trie_classification ... ok +test server::tool_calls::tool_choice_grammar_tests::tool_choice_grammar_hermes_required_is_anyof_over_all_tools ... ok +test server::tool_calls::tool_choice_grammar_tests::tool_choice_grammar_is_none_for_atem_and_gemma4 ... ok +test server::tool_calls::tool_choice_grammar_tests::tool_choice_grammar_is_none_when_the_declared_schemas_exceed_the_ref_cap ... ok +test server::tool_calls::tool_choice_grammar_tests::tool_choice_grammar_is_none_when_the_declared_schemas_exceed_the_size_cap ... ok +test server::tool_calls::tool_choice_grammar_tests::tool_choice_grammar_is_none_without_a_forced_choice_or_a_matching_tool ... ok +test server::tool_calls::tool_choice_grammar_tests::tool_choice_grammar_named_pins_name_const ... ok +test server::tool_calls::tool_choice_grammar_tests::tool_choice_grammar_references_special_wrapper_tokens_by_id ... ok +test server::transport::transport_tests::api_prefix_accepts_a_leading_slash_without_a_trailing_one ... ok +test server::transport::transport_tests::api_prefix_default_is_empty ... ok +test server::transport::transport_tests::api_prefix_rejects_spaces_and_control_characters ... ok +test server::transport::transport_tests::api_prefix_rejects_the_shapes_that_would_404_every_route ... ok +test server::transport::transport_tests::empty_host_is_rejected ... ok +test server::transport::transport_tests::host_ending_in_sock_is_a_unix_socket_at_any_port ... ok +test server::transport::transport_tests::http_timeout_default_is_the_b10621_hour ... ok +test server::transport::transport_tests::http_timeout_keeps_zero_rather_than_treating_it_as_disabled ... ok +test server::transport::transport_tests::legacy_port_zero_socket_path_still_binds_a_socket_with_a_warning ... ok +test server::transport::transport_tests::port_zero_on_a_normal_host_is_an_ephemeral_tcp_bind ... ok +test server::transport::transport_tests::sse_ping_interval_negative_disables_pings ... ok +test server::transport::transport_tests::sse_ping_interval_positive_is_a_duration ... ok +test server::transport::transport_tests::sse_ping_interval_zero_is_rejected ... ok +test server::transport::transport_tests::tcp_is_the_default_resolution ... ok +test server::transport::transport_tests::threads_http_auto_reserves_four_threads_above_the_slot_count ... ok +test server::transport::transport_tests::threads_http_honors_an_explicit_positive_value ... ok +test server::transport::transport_tests::timeout_migration_warning_fires_only_on_the_ambiguous_command_line ... ok +test server::transport::transport_tests::timeout_migration_warning_names_both_spellings_and_defaults ... ok +test server::types::anthropic_request::tests::base64_image_default_media_type ... ok +test server::types::anthropic_request::tests::base64_image_source_builds_data_uri ... ok +test server::types::anthropic_request::tests::extra_top_level_fields_tolerated ... ok +test server::types::anthropic_request::tests::parse_full_request_with_tool_result_image ... ok +test server::types::anthropic_request::tests::system_blocks_join_text ... ok +test server::types::anthropic_request::tests::system_empty_is_none ... ok +test server::types::anthropic_request::tests::system_role_turn_inside_messages_deserializes ... ok +test server::types::anthropic_request::tests::system_string_round_trips ... ok +test server::types::anthropic_request::tests::unknown_content_block_is_tolerated ... ok +test server::types::anthropic_request::tests::url_image_source_passes_through ... ok +test server::types::anthropic_response::tests::error_envelope_shape ... ok +test server::types::anthropic_response::tests::message_response_serializes_with_constants ... ok +test server::types::anthropic_response::tests::tool_use_block_serializes ... ok +test server::types::anthropic_stream::tests::event_names_match_type_tags ... ok +test server::types::anthropic_stream::tests::input_json_delta_shape ... ok +test server::types::anthropic_stream::tests::message_delta_shape ... ok +test server::types::anthropic_stream::tests::message_start_serializes_message ... ok +test server::types::anthropic_stream::tests::text_delta_shape ... ok +test server::types::native_completion::native_completion_tests::a_missing_path_is_omitted_without_an_error ... ok +test server::types::native_completion::native_completion_tests::a_nested_object_can_be_selected_whole ... ok +test server::types::native_completion::native_completion_tests::a_path_that_walks_into_a_non_object_is_omitted ... ok +test server::types::native_completion::native_completion_tests::a_repeated_path_yields_one_key ... ok +test server::types::native_completion::native_completion_tests::a_single_predicted_token_reports_zero_generation_rates ... ok +test server::types::native_completion::native_completion_tests::a_slashed_path_keys_the_value_under_the_whole_path ... ok +test server::types::native_completion::native_completion_tests::a_streaming_chunk_carries_timings_and_progress_when_requested ... ok +test server::types::native_completion::native_completion_tests::a_streaming_chunk_omits_the_optional_blocks_by_default ... ok +test server::types::native_completion::native_completion_tests::a_zero_round_speculative_run_reports_no_draft_block ... ok +test server::types::native_completion::native_completion_tests::an_empty_path_selects_nothing ... ok +test server::types::native_completion::native_completion_tests::an_empty_response_fields_list_returns_the_whole_object ... ok +test server::types::native_completion::native_completion_tests::every_drafter_kind_renders_its_canonical_name ... ok +test server::types::native_completion::native_completion_tests::prompt_n_is_the_prompt_minus_what_the_cache_supplied ... ok +test server::types::native_completion::native_completion_tests::response_fields_keeps_only_the_named_root_keys ... ok +test server::types::native_completion::native_completion_tests::stop_type_serializes_as_the_upstream_lowercase_strings ... ok +test server::types::native_completion::native_completion_tests::the_projection_preserves_the_order_the_request_listed ... ok +test server::types::native_completion::native_completion_tests::the_response_carries_exactly_the_b10621_key_set_in_order ... ok +test server::types::native_completion::native_completion_tests::the_timings_block_leads_with_cache_n ... ok +test server::types::native_completion::native_completion_tests::timings_carries_no_draft_keys_without_a_drafter ... ok +test server::types::native_completion::native_completion_tests::timings_carries_the_b10621_draft_pair_for_a_speculative_request ... ok +test server::types::native_completion::native_completion_tests::timings_rates_are_derived_the_way_upstream_derives_them ... ok +test server::types::native_completion::native_completion_tests::tokens_is_present_and_empty_when_not_requested ... ok +test server::types::native_completion::native_completion_tests::zero_counts_produce_zero_rates_rather_than_nan ... ok +test server::types::request::tests::agreeing_parts_resolve_to_one_budget ... ok +test server::types::request::tests::an_invalid_numeric_budget_is_rejected_even_when_detail_is_valid ... ok +test server::types::request::tests::audio_transcription_request_deserializes_and_defaults ... ok +test server::types::request::tests::chat_request_accepts_llama_sampling_aliases_and_scalar_stop ... ok +test server::types::request::tests::completion_request_accepts_alternate_max_tokens_and_stop_array ... ok +test server::types::request::tests::conflicting_parts_are_rejected ... ok +test server::types::request::tests::detail_auto_means_no_override ... ok +test server::types::request::tests::detail_is_case_insensitive ... ok +test server::types::request::tests::detail_low_and_high_map_to_ladder_ends ... ok +test server::types::request::tests::has_effective_text_matches_text_trim_is_empty_for_all_shapes ... ok +test server::types::request::tests::image_url_serialization_omits_unset_budget_fields ... ok +test server::types::request::tests::image_url_without_budget_fields_deserializes_and_means_no_override ... ok +test server::types::request::tests::max_soft_tokens_extension_names_an_exact_budget ... ok +test server::types::request::tests::message_content_default_is_empty_text ... ok +test server::types::request::tests::message_reasoning_field_and_alias_round_trip ... ok +test server::types::request::tests::message_with_multimodal_content_deserializes ... ok +test server::types::request::tests::message_with_null_content_deserializes_to_empty ... ok +test server::types::request::tests::message_with_string_content_deserializes ... ok +test server::types::request::tests::message_without_content_field_deserializes_to_empty ... ok +test server::types::request::tests::numeric_budget_wins_over_detail ... ok +test server::types::request::tests::off_ladder_max_soft_tokens_is_rejected ... ok +test server::types::request::tests::ordered_media_parser_preserves_text_and_exact_part_order ... ok +test server::types::request::tests::ordered_media_parser_rejects_cardinality_drift ... ok +test server::types::request::tests::seed_values_fold_into_b10621s_uint32_seed_space ... ok +test server::types::request::tests::tool_choice_auto_and_none_validate_without_tools ... ok +test server::types::request::tests::tool_choice_object_without_function_type_is_rejected ... ok +test server::types::request::tests::tool_choice_required_without_tools_is_rejected ... ok +test server::types::request::tests::tool_choice_unknown_function_is_rejected ... ok +test server::types::request::tests::unknown_detail_value_is_rejected ... ok +test server::types::response::tests::florence2_result_absent_when_none ... ok +test server::types::response::tests::florence2_result_present_alongside_text_content ... ok +test server::types::response::tests::reasoning_alias_field_none_suppresses_alias ... ok +test server::types::response::tests::reasoning_content_absent_when_none ... ok +test server::types::response::tests::reasoning_content_present_when_some ... ok +test server::types::response::tests::regular_response_serializes_content_as_string ... ok +test server::types::response::tests::regular_response_with_empty_content_serializes_as_empty_string ... ok +test server::types::response::tests::tool_call_with_text_preamble_preserves_content ... ok +test server::types::response::tests::tool_only_turn_serializes_content_as_null ... ok +test server::types::response::tests::usage_with_cache_includes_prompt_tokens_details ... ok +test server::types::response::tests::usage_without_cache_omits_prompt_tokens_details ... ok +test server::types::response::tests::with_cached_tokens_omits_details_when_cache_disabled ... ok +test server::types::response::tests::with_cached_tokens_sets_details_when_cache_enabled ... ok +test server::types::response::tests::with_cached_tokens_zero_with_cache_enabled_emits_field ... ok +test server::types::response::tests::with_reasoning_only_false_omits_field ... ok +test server::types::response::tests::with_reasoning_only_true_sets_and_serializes_field ... ok +test server::types::responses_input_part::tests::file_id_only_image_has_named_error ... ok +test server::types::responses_input_part::tests::native_image_maps_detail_to_chat_image ... ok +test server::types::responses_input_part::tests::unknown_part_retains_its_json_object ... ok +test server::types::responses_request::tests::conversation_ref_accepts_string_and_object ... ok +test server::types::responses_request::tests::function_tool_parses_with_parameters ... ok +test server::types::responses_request::tests::input_as_items_round_trips ... ok +test server::types::responses_request::tests::input_as_string_yields_single_user_message ... ok +test server::types::responses_request::tests::text_format_json_schema_round_trips ... ok +test server::types::responses_request::tests::text_format_plain_text_yields_no_constraint ... ok +test server::types::responses_request::tests::unsupported_tool_type_falls_through_to_catch_all ... ok +test server::types::responses_response::tests::function_call_output_serializes_with_required_fields ... ok +test server::types::responses_response::tests::output_message_serializes_with_assistant_role ... ok +test server::types::responses_response::tests::output_text_aggregator_is_serialized ... ok +test server::types::responses_response::tests::response_status_serializes_snake_case ... ok +test server::types::responses_stream::tests::created_event_serializes_with_type_field ... ok +test server::types::responses_stream::tests::function_call_arguments_done_serializes ... ok +test server::types::responses_stream::tests::output_text_delta_carries_required_fields ... ok +test server::types::responses_stream::tests::sequence_counter_is_monotonic ... ok +test server::types::stream::tests::content_chunk_never_carries_reasoning_only ... ok +test server::types::stream::tests::with_reasoning_only_false_omits_field ... ok +test server::types::stream::tests::with_reasoning_only_true_sets_and_serializes_field ... ok +test server::webui::assets::assets_tests::conditional_get_returns_304_with_security_headers ... ok +test server::webui::assets::assets_tests::embedded_manifest_is_valid_and_budgeted ... ok +test server::webui::assets::assets_tests::head_errors_suppress_body ... ok +test server::webui::assets::assets_tests::head_uses_the_same_metadata_without_a_body ... ok +test server::webui::assets::assets_tests::index_and_assets_are_served_with_expected_headers ... ok +test server::webui::assets::assets_tests::manifest_hashes_match_embedded_assets ... ok +test server::webui::assets::assets_tests::missing_assets_and_unsupported_methods_do_not_fall_back_to_shell ... ok +test server::webui::assets::assets_tests::nested_api_prefix_serves_assets ... ok +test server::webui::assets::assets_tests::path_attacks_are_rejected ... ok +test server::webui::assets::assets_tests::static_assets_use_immutable_cache_and_correct_mime ... ok +test server::webui::assets::assets_tests::trailing_slash_redirect_preserves_nested_api_prefix ... ok +test server::webui::assets::assets_tests::vite_hash_cache_classification_accepts_base64url_without_splitting_hash ... ok +test server::webui::assets::assets_tests::webui_router_does_not_swallow_root_or_api_routes ... ok +test server::webui::catalog::catalog_fs::tests::interrupted_download_missing_an_indexed_shard_is_incomplete ... ok +test server::webui::catalog::catalog_fs::tests::repackaged_quant_with_a_stale_shard_index_is_complete ... ok +test server::webui::catalog::catalog_fs::tests::zero_byte_weight_files_do_not_satisfy_either_path ... ok +test server::webui::catalog::catalog_metadata::backend_tests::each_backend_kind_reads_its_own_column ... ok +test server::webui::catalog::catalog_metadata::backend_tests::every_gpu_backend_kind_has_a_registry_column ... ok +test server::webui::catalog::catalog_metadata::backend_tests::no_gpu_backend_is_unsupported_even_when_every_column_is_supported ... ok +test server::webui::catalog::catalog_metadata::backend_tests::runnable_on_backend_follows_the_resolved_backend ... ok +test server::webui::catalog::catalog_metadata::reason_tests::detection_reason_limit_counts_unicode_scalars_without_splitting_utf8 ... ok +test server::webui::catalog::catalog_metadata::reason_tests::detection_reason_redacts_full_unicode_path_before_applying_limit ... ok +test server::webui::catalog::tests::architecture_uses_detection_authority_for_embedding_layouts ... ok +test server::webui::catalog::tests::catalog_cache_tests::catalog_cache_uses_epoch_and_projects_fresh_provider_lifecycle ... ok +test server::webui::catalog::tests::catalog_contract_tests::actual_catalog_producer_matches_whole_expected_shape ... ok +test server::webui::catalog::tests::catalog_contract_tests::bounded_catalog_detection_reports_unknown_when_weight_index_is_required ... ok +test server::webui::catalog::tests::catalog_contract_tests::bounded_detection_rejects_dflash_without_reading_weights ... ok +test server::webui::catalog::tests::catalog_contract_tests::cached_single_model_catalog_accessor_projects_fresh_app_state_provider ... ok +test server::webui::catalog::tests::catalog_contract_tests::catalog_cache_projects_fresh_lifecycle_without_metadata_rescan ... ok +test server::webui::catalog::tests::catalog_contract_tests::catalog_fixture_round_trips_through_producer_dtos ... ok +test server::webui::catalog::tests::catalog_contract_tests::display_name_is_the_inference_id_verbatim ... ok +test server::webui::catalog::tests::catalog_contract_tests::empty_weight_map_is_incomplete_and_reasons_do_not_leak_absolute_paths ... ok +test server::webui::catalog::tests::catalog_contract_tests::gemma4_processor_config_symlink_is_not_variant_evidence ... ok +test server::webui::catalog::tests::catalog_contract_tests::gemma4_without_bounded_variant_evidence_is_unknown_not_text ... ok +test server::webui::catalog::tests::catalog_contract_tests::pooling_parent_symlink_is_not_embedding_layout_evidence ... ok +test server::webui::catalog::tests::catalog_contract_tests::shared_detection_errors_do_not_leak_absolute_catalog_paths ... ok +test server::webui::catalog::tests::catalog_contract_tests::single_model_catalog_entry_is_read_only_and_uses_actual_inference_id ... ok +test server::webui::catalog::tests::catalog_contract_tests::symlink_loop_and_large_config_are_bounded_metadata ... ok +test server::webui::catalog::tests::catalog_contract_tests::symlinked_config_index_and_shards_are_not_catalog_evidence ... ok +test server::webui::catalog::tests::catalog_contract_tests::thousand_entry_inventory_paginates_without_duplicates ... ok +test server::webui::catalog::tests::catalog_filters_validate_lifecycle_support_and_completeness ... ok +test server::webui::catalog::tests::catalog_provider_tests::cached_text_capabilities_follow_ready_unload_ready_without_epoch_rescan ... ok +test server::webui::catalog::tests::catalog_provider_tests::provider_presence_does_not_invent_generation_tasks_for_nontext_models ... ok +test server::webui::catalog::tests::catalog_provider_tests::text_provider_projection_preserves_preload_and_resets_every_nonready_state ... ok +test server::webui::catalog::tests::directory_entry_bounds_count_junk_before_filtering ... ok +test server::webui::catalog::tests::dtype_reports_the_declared_weight_dtype_and_null_when_unknown ... ok +test server::webui::catalog::tests::empty_catalog_is_valid_and_paginated ... ok +test server::webui::catalog::tests::incomplete_index_and_unsupported_dense_variant_stay_inspectable ... ok +test server::webui::catalog::tests::invalid_raw_config_strings_are_null_with_reasons ... ok +test server::webui::catalog::tests::metadata_scan_reports_supported_complete_model_without_loading_provider ... ok +test server::webui::catalog::tests::non_chat_task_and_removal_reasons_are_truthful ... ok +test server::webui::catalog::tests::raw_model_type_and_declared_architectures_preserve_bounded_config_strings ... ok +test server::webui::library::tests::repo_id_validation_rejects_path_and_url_shapes ... ok +test server::webui::library::tests::revision_validation_rejects_dot_only_segments ... ok +test server::webui::library_policy::tests::capability_matrix_is_pure_and_fail_closed ... ok +test server::webui::load_profile::tests::profile_bounds_and_enum_follow_canonical_request_contract ... ok +test server::webui::load_profile::tests::profile_context_reuses_actual_per_slot_floor_and_config_conversion ... ok +test server::webui::load_profile::tests::profile_omission_inherits_and_precedence_preserves_operator_flags ... ok +test server::webui::load_profile::tests::profile_rejects_model_kv_substitution_and_read_only_distributed_geometry ... ok +test server::webui::media_limits_tests::media_body_budget_distinguishes_router_and_single_inference ... ok +test server::webui::media_limits_tests::resolved_media_limits_preserve_configured_asymmetric_bounds ... ok +test server::webui::runtime::tests::counters_are_opt_in_and_reset_is_visible_without_mutating_scrape_baseline ... ok +test server::webui::runtime::tests::disabled_projection_matches_whole_canonical_fixture ... ok +test server::webui::runtime::tests::nonbatch_geometry_and_unknown_denominator_are_not_guessed ... ok +test server::webui::runtime::tests::ready_projection_matches_whole_canonical_fixture ... ok +test server::webui::runtime::tests::single_stream_does_not_invent_idle_active_or_decode_counters ... ok +test server::webui::runtime::tests::slots_mirror_native_context_without_text_or_double_counting ... ok +test server::webui::security::security_body_boundary_tests::chunked_json_body_honors_frozen_two_mib_boundary ... ok +test server::webui::security::security_body_boundary_tests::declared_json_body_honors_frozen_two_mib_boundary ... ok +test server::webui::security::security_tests::all_admin_mutations_are_control_limited_without_capping_data_plane ... ok +test server::webui::security::security_tests::allowed_origins_are_strict_origins ... ok +test server::webui::security::security_tests::custom_prefixes_classify_private_api_and_public_shell ... ok +test server::webui::security::security_tests::host_authorities_are_canonicalized_and_validated ... ok +test server::webui::security::security_tests::loopback_interactive_generates_redacted_session_key ... ok +test server::webui::security::security_tests::loopback_noninteractive_requires_configured_key ... ok +test server::webui::security::security_tests::nonloopback_requires_key_and_tls ... ok +test server::webui::security::security_tests::query_credentials_are_detected_case_insensitively ... ok +test server::webui::security::security_tests::ui_disabled_resolves_to_no_policy ... ok +test server::webui::security::security_tests::unix_socket_is_rejected_for_webui ... ok +test surgery::tests::load_pipeline_from_empty_yaml_file_succeeds ... ok +test surgery::tests::load_pipeline_surfaces_io_error_for_missing_file ... ok +test surgery::tests::set_none_clears_active_pipeline ... ok +test surgery::tests::set_then_snapshot_round_trip ... ok +test surgery::tests::snapshot_returns_none_when_slot_never_written ... ok +test tokenizer::added_tokens::tests::config_only_added_token_encodes_to_its_declared_id ... ok +test tokenizer::added_tokens::tests::declared_id_the_tokenizer_cannot_assign_is_left_unregistered ... ok +test tokenizer::added_tokens::tests::entries_tokenizer_json_already_resolves_are_left_alone ... ok +test tokenizer::added_tokens::tests::mixed_special_runs_land_on_their_declared_ids ... ok +test tokenizer::contains_id_tests::huggingface_contains_id_is_membership_not_a_vocab_size_bound ... ok +test tokenizer::fim::fim_tests::a_chat_only_vocabulary_names_every_missing_token ... ok +test tokenizer::fim::fim_tests::a_codellama_sentencepiece_vocabulary_resolves_the_underscored_spellings ... ok +test tokenizer::fim::fim_tests::a_deepseek_coder_vocabulary_resolves_its_fullwidth_spellings ... ok +test tokenizer::fim::fim_tests::a_partial_vocabulary_names_only_what_is_missing ... ok +test tokenizer::fim::fim_tests::a_qwen_style_vocabulary_resolves_the_triple ... ok +test tokenizer::fim::fim_tests::the_first_matching_spelling_wins ... ok +test tokenizer::fim::fim_tests::the_spelling_lists_match_the_pinned_binary ... ok +test tokenizer::pieces::pieces_tests::a_character_outside_the_alphabet_contributes_its_own_utf8 ... ok +test tokenizer::pieces::pieces_tests::byte_fallback_values_parse_only_the_exact_spelling ... ok +test tokenizer::pieces::pieces_tests::byte_level_bytes_recovers_a_split_multibyte_character ... ok +test tokenizer::pieces::pieces_tests::lost_bytes_only_fires_when_the_decoder_added_a_replacement ... ok +test tokenizer::pieces::pieces_tests::piece_json_is_a_string_for_valid_utf8_and_an_array_otherwise ... ok +test tokenizer::pieces::pieces_tests::the_alphabet_matches_the_reference_table_at_its_boundaries ... ok +test tokenizer::pieces::pieces_tests::the_byte_level_alphabet_is_a_bijection_over_all_256_bytes ... ok +test tokenizer::spm_proto::spm_proto_tests::a_group_wire_type_is_rejected_rather_than_mis_parsed ... ok +test tokenizer::spm_proto::spm_proto_tests::a_missing_normalizer_spec_gains_one_that_disables_the_prefix ... ok +test tokenizer::spm_proto::spm_proto_tests::a_present_add_dummy_prefix_is_rewritten_to_false ... ok +test tokenizer::spm_proto::spm_proto_tests::a_repeated_normalizer_spec_is_rewritten_in_every_occurrence ... ok +test tokenizer::spm_proto::spm_proto_tests::a_truncated_message_is_rejected_rather_than_silently_repaired ... ok +test tokenizer::spm_proto::spm_proto_tests::an_already_false_add_dummy_prefix_stays_false ... ok +test tokenizer::spm_proto::spm_proto_tests::duplicate_add_dummy_prefix_entries_collapse_to_a_single_false ... ok +test tokenizer::spm_proto::spm_proto_tests::every_top_level_field_and_its_order_survives_the_rewrite ... ok +test tokenizer::spm_proto::spm_proto_tests::the_iquest_coder_model_loses_only_its_leading_word_boundary ... ok +test tokenizer::spm_proto::spm_proto_tests::the_other_normalizer_fields_survive_the_rewrite ... ok +test tokenizer::tests::a_dense_vocab_registers_every_added_token_at_its_declared_id ... ok +test tokenizer::tests::add_prefix_space_is_read_only_when_it_is_written_down ... ok +test tokenizer::tests::added_tokens_decoder_defaults_special_to_false ... ok +test tokenizer::tests::added_tokens_json_fallback_tokens_are_not_special ... ok +test tokenizer::tests::builds_a_qwen2_tokenizer_from_vocab_and_merges ... ok +test tokenizer::tests::demote_tool_parser_markers_flips_special_flag_for_present_markers ... ok +test tokenizer::tests::demote_tool_parser_markers_is_a_noop_when_absent ... ok +test tokenizer::tests::demote_tool_parser_markers_skips_already_non_special_markers ... ok +test tokenizer::tests::detects_a_qwen2_slow_tokenizer_directory ... ok +test tokenizer::tests::diffusion_gemma_thinking_channel_survives_demotion ... ok +test tokenizer::tests::diffusion_gemma_tokenizer_survives_skip_special_decode_round_trip ... ok +test tokenizer::tests::diffusion_gemma_tool_call_output_parses_after_demotion ... ok +test tokenizer::tests::find_think_start_locates_multi_token_channel_marker ... ok +test tokenizer::tests::gemma4_real_tokenizer_resolves_multi_token_channel_marker ... ignored, requires models/gemma-4-e4b-it-8bit/; run with --ignored +test tokenizer::tests::infer_thinking_markers_partial_channel_pair_does_not_resolve ... ok +test tokenizer::tests::infer_thinking_markers_prefers_qwen_pair_over_longcat ... ok +test tokenizer::tests::infer_thinking_markers_recognizes_inkling_pair ... ok +test tokenizer::tests::infer_thinking_markers_recognizes_longcat_pair ... ok +test tokenizer::tests::infer_thinking_markers_recognizes_multi_token_channel_pair ... ok +test tokenizer::tests::infer_thinking_markers_recognizes_single_token_qwen_think_pair ... ok +test tokenizer::tests::infer_thinking_markers_returns_default_for_non_thinking_tokenizer ... ok +test tokenizer::tests::is_diffusion_gemma_model_matches_both_config_variants ... ok +test tokenizer::tests::load_tokenizer_demotes_markers_only_for_diffusion_gemma_model_type ... ok +test tokenizer::tests::mixed_special_and_plain_added_tokens_land_on_their_declared_ids ... ok +test tokenizer::tests::override_fires_for_starmie_era_moondream2_with_stale_local_tokenizer ... ok +test tokenizer::tests::override_skipped_for_legacy_era_moondream2 ... ok +test tokenizer::tests::override_skipped_for_non_moondream2_models ... ok +test tokenizer::tests::override_skipped_when_local_tokenizer_is_already_starmie ... ok +test tokenizer::tests::plamo_tokenizer_matches_reference_encodings ... ok +test tokenizer::tests::plamo_tokenizer_round_trips_decode ... ok +test tokenizer::tests::prompt_carries_bos_collapses_the_llama3_double_bos ... ok +test tokenizer::tests::prompt_carries_bos_recognizes_tokenizer_bos_string ... ok +test tokenizer::tests::real_diffusion_gemma_checkpoint_demotes_and_retains_markers ... ok +test tokenizer::tests::rejects_a_vocab_json_that_assigns_one_id_twice ... ok +test tokenizer::tests::rejects_a_vocab_json_whose_ids_are_not_dense ... ok +test tokenizer::tests::rejects_added_token_ids_that_do_not_continue_the_base_vocab ... ok +test tokenizer::tests::remote_tokenizer_repo_for_model_reads_config_json_model_type ... ok +test tokenizer::tests::remote_tokenizer_repo_for_model_type_matches_moondream3 ... ok +test tokenizer::tests::serialized_padding_and_truncation_are_not_applied_on_load ... ok +test tokenizer::tests::the_iquest_coder_tokenizer_encodes_without_a_leading_word_boundary ... ok +test tokenizer::tests::the_iquest_loop_coder_tokenizer_round_trips_its_added_tokens ... ok +test tokenizer::tests::with_tool_call_markers_empty_end_skips_end_transition ... ok +test tokenizer::tests::with_tool_call_markers_nonempty_end_still_registers_transition ... ok +test tokenizer::tests::with_tool_call_markers_preserves_input_when_tokenizer_lacks_hf ... ok +test tokenizer::tests::with_tool_call_markers_threads_explicit_pair_through ... ok +test tokenizer::thinking::tests::find_subseq_empty_needle_returns_none ... ok +test tokenizer::thinking::tests::find_subseq_first_of_multiple ... ok +test tokenizer::thinking::tests::find_subseq_match_at_end ... ok +test tokenizer::thinking::tests::find_subseq_match_at_start ... ok +test tokenizer::thinking::tests::find_subseq_needle_longer_than_haystack ... ok +test tokenizer::thinking::tests::find_subseq_no_match ... ok +test tokenizer::thinking::tests::find_subseq_simple_match ... ok +test tokenizer::thinking::tests::find_subseq_with_end_clamp ... ok +test tokenizer::thinking::tests::find_subseq_with_start_skip ... ok +test tokenizer::thinking::tests::has_thinking_reflects_start_string ... ok +test tokenizer::thinking::tests::has_tool_calling_reflects_start_string ... ok +test tokenizer::thinking::tests::marker_find_methods_delegate_to_registered_sequences ... ok +test tokenizer::thinking::tests::marker_find_methods_return_none_for_missing_sequences ... ok +test tokenizer::thinking::tests::rfind_subseq_empty_needle_returns_none ... ok +test tokenizer::thinking::tests::rfind_subseq_multitoken_match ... ok +test tokenizer::thinking::tests::rfind_subseq_no_match_returns_none ... ok +test tokenizer::thinking::tests::rfind_subseq_returns_last_match ... ok +test tokenizer::thinking::tests::rfind_subseq_with_end_bound_excludes_tail ... ok +test tokenizer::thinking::tests::rfind_subseq_with_start_clamp ... ok +test tokenizer::tiktoken::tests::char_chunks_slices_by_character_not_byte ... ok +test tokenizer::tiktoken::tests::chunk_guard_splits_long_runs ... ok +test tokenizer::tiktoken::tests::control_tokens_named_from_config_else_reserved ... ok +test tokenizer::tiktoken::tests::encode_reaches_the_chunk_guard_through_special_parsing ... ok +test tokenizer::tiktoken::tests::encode_text_never_emits_control_ids ... ok +test tokenizer::tiktoken::tests::every_control_token_matches_the_reference_name_table ... ok +test tokenizer::tiktoken::tests::hunyuan_family_unchanged_without_a_model_type ... ok +test tokenizer::tiktoken::tests::hunyuan_table_unchanged_without_qwen_class ... ok +test tokenizer::tiktoken::tests::hunyuan_tiktoken_checkpoint_still_loads_as_hunyuan ... ok +test tokenizer::tiktoken::tests::k3_corpus_matches_the_reference_tokenizer ... ok +test tokenizer::tiktoken::tests::k3_eos_is_end_of_msg_and_bos_is_never_prepended ... ok +test tokenizer::tiktoken::tests::k3_pattern_splits_han_camel_case_and_digits ... ok +test tokenizer::tiktoken::tests::kimi_k3_family_is_detected_from_config_model_type ... ok +test tokenizer::tiktoken::tests::kimi_linear_needs_a_tiktoken_model_to_be_the_k3_family ... ok +test tokenizer::tiktoken::tests::qwen_auto_map_selects_qwen_specials ... ok +test tokenizer::tiktoken::tests::qwen_image_tags_encode_as_single_specials ... ok +test tokenizer::tiktoken::tests::qwen_tokenizer_class_selects_qwen_specials ... ok +test tokenizer::tiktoken::tests::special_token_split_is_leftmost_longest_and_utf8_safe ... ok +test tokenizer::tiktoken::tests::special_token_split_is_linear_on_interleaved_spellings ... ok +test tokenizer::tiktoken::tests::split_whitespaces_or_nonwhitespaces_matches_the_reference_shape ... ok +test tokenizer::tiktoken::tests::test_encode_chinese ... ignored, requires model files on disk +test tokenizer::tiktoken::tests::test_encode_decode_roundtrip ... ignored, requires model files on disk +test tokenizer::tiktoken::tests::test_load_tiktoken ... ignored, requires model files on disk +test tokenizer::tiktoken::tests::test_special_tokens ... ignored, requires model files on disk +test vision::cohere_compass::cohere_compass_tests::image_pad_expands_to_merged_grid ... ok +test vision::cohere_compass::cohere_compass_tests::small_images_are_upscaled_to_the_checkpoint_min_pixels ... ok +test vision::config::tests::vision_hidden_act_selects_only_the_explicit_pytorch_tanh_variant ... ok +test vision::connectors::granite4_vision::tests::mean_pool_downsampler_equals_block_mean ... ok +test vision::connectors::granite4_vision::tests::strided_downsampler_selects_expected_offset ... ok +test vision::connectors::granite4_vision::tests::window_unwindow_round_trip_is_identity ... ok +test vision::connectors::lfm2_vl::tests::even_grid_matches_reference ... ok +test vision::connectors::lfm2_vl::tests::odd_grid_zero_pads_matches_reference ... ok +test vision::detection::rt_detr_v2::config::tests::class_names_sorted_by_int_id ... ok +test vision::detection::rt_detr_v2::config::tests::out_stage_indices_are_zero_based ... ok +test vision::detection::rt_detr_v2::config::tests::parses_docling_config ... ok +test vision::detection::rt_detr_v2::config::tests::resnet101_depths_via_default_when_absent ... ok +test vision::detection::rt_detr_v2::config::tests::size_block_folds_into_image_size ... ok +test vision::detection::rt_detr_v2::config::tests::validate_rejects_indivisible_d_model ... ok +test vision::detection::rt_detr_v2::sanitize::tests::aifi_rename ... ok +test vision::detection::rt_detr_v2::sanitize::tests::backbone_rename ... ok +test vision::detection::rt_detr_v2::sanitize::tests::decoder_input_proj_and_enc_output_rename ... ok +test vision::detection::rt_detr_v2::sanitize::tests::decoder_layers_passthrough ... ok +test vision::detection::rt_detr_v2::sanitize::tests::drop_num_batches_tracked ... ok +test vision::detection::rt_detr_v2::sanitize::tests::encoder_input_proj_seq_rename ... ok +test vision::detection::rt_detr_v2::sanitize::tests::hybrid_encoder_body_and_norm_rename ... ok +test vision::detection::rt_detr_v2::sanitize::tests::maybe_transpose_conv_transposes_ambiguous_rgb_stem ... ok +test vision::detection::rt_detr_v2::sanitize::tests::maybe_transpose_conv_transposes_pytorch_layout ... ok +test vision::detection::rt_detr_v2::sanitize::tests::needs_sanitize_detects_layout ... ok +test vision::detection::rt_detr_v2::sanitize::tests::needs_sanitize_marker_free_maps_are_no_ops ... ok +test vision::detection::rt_detr_v2::sanitize::tests::needs_sanitize_mixed_markers_is_order_independent ... ok +test vision::detection::rt_detr_v2::sanitize::tests::strips_model_prefix ... ok +test vision::detection::rt_detr_v2::sanitize::tests::vd_shortcut_rename ... ok +test vision::detection::rt_detr_v2::tests::bf16_output_reads_back_elementwise ... ok +test vision::detection::rt_detr_v2::tests::decode_places_known_regions_on_a_tall_page ... ok +test vision::detection::rt_detr_v2::tests::denormalize_box_clamps_per_axis ... ok +test vision::detection::rt_detr_v2::tests::denormalize_box_scales_each_axis_independently ... ok +test vision::detection::rt_detr_v2::tests::f32_output_reads_back_elementwise ... ok +test vision::detection::rt_detr_v2::tests::generate_anchors_shapes_and_logit_consistency ... ok +test vision::detection::rt_detr_v2::tests::grid_sample_center_is_bilinear_mean ... ok +test vision::detection::rt_detr_v2::tests::grid_sample_out_of_bounds_is_zero_padded ... ok +test vision::detection::rt_detr_v2::tests::inverse_sigmoid_is_logit ... ok +test vision::detection::rt_detr_v2::tests::max_pool_3x3_s2_p1_on_4x4 ... ok +test vision::detection::rt_detr_v2::tests::one_query_may_emit_several_labels_sharing_its_box ... ok +test vision::detection::rt_detr_v2::tests::upsample_nearest_2x_doubles_hw ... ok +test vision::encoders::deepseekocr_qwen2::tests::mixed_mask_quadrants_are_exact ... ok +test vision::encoders::deepseekocr_sam::tests::get_rel_pos_shape_and_index ... ok +test vision::encoders::deepseekocr_sam::tests::interp_matrix_rows_sum_to_one ... ok +test vision::encoders::deepseekocr_sam::tests::window_partition_round_trip ... ok +test vision::encoders::florence2_davit::florence2_davit_tests::accepts_every_davit_model_type_spelling_and_rejects_others ... ok +test vision::encoders::florence2_davit::florence2_davit_tests::from_model_config_descends_into_vision_config ... ok +test vision::encoders::florence2_davit::florence2_davit_tests::from_weights_rejects_unsanitized_conv_weights ... ok +test vision::encoders::florence2_davit::florence2_davit_tests::from_weights_revalidates_a_hand_built_config ... ok +test vision::encoders::florence2_davit::florence2_davit_tests::missing_weight_reports_the_key ... ok +test vision::encoders::florence2_davit::florence2_davit_tests::parses_real_shaped_vision_config ... ok +test vision::encoders::florence2_davit::florence2_davit_tests::rejects_hostile_patch_geometry_and_depths ... ok +test vision::encoders::florence2_davit::florence2_davit_tests::rejects_inconsistent_stage_lists ... ok +test vision::encoders::florence2_davit::florence2_davit_tests::sanitize_remaps_conv_weights_and_is_idempotent ... ok +test vision::encoders::florence2_davit::florence2_davit_tests::synthetic_forward_exercises_window_padding_at_real_geometry ... ok +test vision::encoders::florence2_davit::florence2_davit_tests::synthetic_forward_follows_the_stage_shape_progression ... ok +test vision::encoders::gemma3n::helper_tests::make_divisible_rounds_mobile_channel_counts ... ok +test vision::encoders::gemma3n::helper_tests::num_groups_handles_depthwise_and_dense_paths ... ok +test vision::encoders::gemma3n::helper_tests::same_padding_helpers_compute_static_and_dynamic_values ... ok +test vision::encoders::gemma3n::helper_tests::split_symmetric_padding_balances_before_and_after ... ok +test vision::encoders::glm_ocr::tests::downsample_both_conv_layouts_yield_identical_weight ... ok +test vision::encoders::glm_ocr::tests::merge_window_perm_matches_reference_4x4 ... ok +test vision::encoders::glm_ocr::tests::merge_window_perm_offsets_multiple_images ... ok +test vision::encoders::glm_ocr::tests::patch_embed_both_conv_layouts_yield_identical_weight ... ok +test vision::encoders::inkling_hmlp::tests::fold_preserves_reference_timespace_channel_order ... ok +test vision::encoders::inkling_hmlp::tests::one_layer_tower_accepts_reference_tiles_and_emits_text_width ... ok +test vision::encoders::inkling_hmlp::tests::reference_scale_and_layer_plans_match_upstream ... ok +test vision::encoders::inkling_hmlp::tests::tower_rejects_non_reference_tile_geometry ... ok +test vision::encoders::inkling_hmlp::tests::tower_rejects_projection_shape_before_first_forward ... ok +test vision::encoders::jina_vlm::tests::a_pad_embed_without_exactly_two_rows_is_rejected_but_absence_is_allowed ... ok +test vision::encoders::jina_vlm::tests::a_pos_embed_that_is_not_a_two_dimensional_table_is_rejected ... ok +test vision::encoders::jina_vlm::tests::a_tower_without_post_norm_shifts_the_resolved_indices ... ok +test vision::encoders::jina_vlm::tests::an_all_negative_one_crop_is_zeroed_before_the_connector ... ok +test vision::encoders::jina_vlm::tests::an_out_of_range_vit_layer_is_rejected_rather_than_clamped ... ok +test vision::encoders::jina_vlm::tests::negative_vit_layers_resolve_against_the_post_norm_slot ... ok +test vision::encoders::jina_vlm::tests::the_connector_emits_one_pooled_token_per_window_in_the_text_hidden_size ... ok +test vision::encoders::jina_vlm::tests::the_pad_embedding_only_fires_where_the_mask_says_padding ... ok +test vision::encoders::jina_vlm::tests::the_released_geometry_matches_the_checkpoint_tensor_shapes ... ok +test vision::encoders::jina_vlm::tests::vit_layer_order_is_preserved_not_sorted ... ok +test vision::encoders::kimi_vl::tests::apply_rope_interleaved_rotation ... ok +test vision::encoders::kimi_vl::tests::bicubic_reproduces_constant_and_exact_grid ... ok +test vision::encoders::kimi_vl::tests::cu_seqlens_mixes_video_and_image_segments ... ok +test vision::encoders::kimi_vl::tests::encoder_forward_smoke_synthetic_weights ... ok +test vision::encoders::kimi_vl::tests::merger_temporal_pool_is_frame_mean_then_merge ... ok +test vision::encoders::kimi_vl::tests::patch_merger_2x2_groups_neighbours ... ok +test vision::encoders::kimi_vl::tests::pos_emb_video_t1_equals_image_plus_frame0_temporal ... ok +test vision::encoders::kimi_vl::tests::rope_cos_sin_matches_reference_2x2 ... ok +test vision::encoders::kimi_vl::tests::rope_video_table_tiles_image_table ... ok +test vision::encoders::kimi_vl::tests::temporal_sinusoid_shape_row0_and_closed_form ... ok +test vision::encoders::kimi_vl::tests::video_t1_equals_image_with_frame0_temporal_folded_into_bias ... ok +test vision::encoders::mage_vl::tests::apply_rotary_matches_the_upstream_formula ... ok +test vision::encoders::mage_vl::tests::attention_windows_split_long_clips_only ... ok +test vision::encoders::mage_vl::tests::every_group_of_four_shares_one_merge_cell ... ok +test vision::encoders::mage_vl::tests::forward_output_rows_equal_patches_over_four ... ok +test vision::encoders::mage_vl::tests::images_do_not_attend_to_each_other ... ok +test vision::encoders::mage_vl::tests::inv_freq_sizes_are_8_12_12_for_head_dim_64 ... ok +test vision::encoders::mage_vl::tests::patch_kernel_channels_last_matches_processor_row_order ... ok +test vision::encoders::mage_vl::tests::positions_cover_grid_exactly_once ... ok +test vision::encoders::mage_vl::tests::positions_follow_2x2_block_order ... ok +test vision::encoders::mage_vl::tests::rotary_angles_concatenate_the_half_table_with_itself ... ok +test vision::encoders::mage_vl::tests::rotate_half_is_interleaved ... ok +test vision::encoders::minicpmo::tests::current_patch_position_ids_bucket_dynamic_grid ... ok +test vision::encoders::minicpmo::tests::get_2d_sincos_pos_embed_returns_expected_length ... ok +test vision::encoders::minicpmv4_6::tests::merger_output_grid_size_rejects_non_divisible_spatial_grid ... ok +test vision::encoders::minicpmv4_6::tests::merger_rejects_zero_merge_kernel_size ... ok +test vision::encoders::minicpmv4_6::tests::merger_single_round_honors_4x4_merge_kernel_size ... ok +test vision::encoders::minicpmv4_6::tests::merger_two_rounds_2x2_reduces_32x32_grid_to_64_tokens ... ok +test vision::encoders::minicpmv4_6::tests::minicpmv4_6_config_applies_documented_defaults_when_fields_absent ... ok +test vision::encoders::minicpmv4_6::tests::minicpmv4_6_config_honors_explicit_overrides ... ok +test vision::encoders::minicpmv4_6::tests::minicpmv4_6_vision_config_applies_documented_defaults ... ok +test vision::encoders::mllama::tests::all_valid_tiles_produce_a_zero_mask ... ok +test vision::encoders::mllama::tests::dense_vision_tower_falls_back_to_regular_linear ... ok +test vision::encoders::mllama::tests::mask_keeps_real_to_padding_attention_open ... ok +test vision::encoders::mllama::tests::padding_tile_content_reaches_real_tile_output ... ok +test vision::encoders::mllama::tests::padding_tile_is_masked_out ... ok +test vision::encoders::mllama::tests::real_vision_tower_keys_load_and_stay_quantized ... ok +test vision::encoders::mllama::tests::wrong_vision_prefix_reproduces_the_527_load_failure ... ok +test vision::encoders::molmo2::tests::molmo2_uses_the_checkpoint_pytorch_tanh_gelu ... ok +test vision::encoders::moonvit3d::real_weights_tests::kimi_k3_tower_real_weights ... ignored, needs models/kimi-k3-8l-mxfp4 (about 1.5 GB of vision shards) +test vision::encoders::moonvit3d::tests::config_parses_published_fields_and_refuses_other_variants ... ok +test vision::encoders::moonvit3d::tests::pos_emb_bilinear_matches_half_pixel_formula ... ok +test vision::encoders::moonvit3d::tests::rope2d_angle_layout ... ok +test vision::encoders::moonvit3d::tests::time_embedding_sincos ... ok +test vision::encoders::moonvit3d::tests::tower_runs_per_image_and_merges_to_projector_rows ... ok +test vision::encoders::moonvit3d::tests::tpool_merge_averages_over_time_and_groups_2x2 ... ok +test vision::encoders::muse_glimmer::tests::patch_embedder_loads_exact_default_projection_shape_and_position_add ... ok +test vision::encoders::muse_glimmer::tests::reduced_tower_forward_is_finite ... ok +test vision::encoders::muse_glimmer::tests::tower_records_three_window_one_full_schedule_and_rejects_mutation ... ok +test vision::encoders::muse_glimmer::tests::tower_restores_window_order_after_layer_boundary ... ok +test vision::encoders::muse_glimmer_fusion::pinned_tests::contract_assertion_still_fails_on_a_missing_weight_root - should panic ... ok +test vision::encoders::muse_glimmer_fusion::pinned_tests::contract_assertion_still_fails_on_a_schema_mismatched_config - should panic ... ok +test vision::encoders::muse_glimmer_fusion::pinned_tests::contract_assertion_still_fails_on_a_wrong_recorded_shape - should panic ... ok +test vision::encoders::muse_glimmer_fusion::pinned_tests::contract_assertion_still_fails_on_an_absent_weight_map - should panic ... ok +test vision::encoders::muse_glimmer_fusion::pinned_tests::pinned_post_tower_weight_roots_and_shapes_match_published_contract ... ok +test vision::encoders::muse_glimmer_fusion::pinned_tests::pinned_precheck_accepts_a_complete_synthetic_checkpoint ... ok +test vision::encoders::muse_glimmer_fusion::pinned_tests::pinned_precheck_leaves_a_missing_weight_root_to_the_contract_assertion ... ok +test vision::encoders::muse_glimmer_fusion::pinned_tests::pinned_precheck_leaves_a_schema_mismatched_config_to_the_contract_assertion ... ok +test vision::encoders::muse_glimmer_fusion::pinned_tests::pinned_precheck_leaves_an_absent_weight_map_to_the_contract_assertion ... ok +test vision::encoders::muse_glimmer_fusion::pinned_tests::pinned_precheck_names_a_missing_config ... ok +test vision::encoders::muse_glimmer_fusion::pinned_tests::pinned_precheck_names_a_missing_shard ... ok +test vision::encoders::muse_glimmer_fusion::pinned_tests::pinned_precheck_names_an_absent_index ... ok +test vision::encoders::muse_glimmer_fusion::pinned_tests::pinned_precheck_names_an_unparseable_config ... ok +test vision::encoders::muse_glimmer_fusion::pinned_tests::pinned_precheck_names_an_unparseable_index ... ok +test vision::encoders::muse_glimmer_fusion::pinned_tests::safetensors_shape_reads_a_well_formed_header ... ok +test vision::encoders::muse_glimmer_fusion::pinned_tests::safetensors_shape_refuses_a_header_over_the_allocation_ceiling ... ok +test vision::encoders::muse_glimmer_fusion::pinned_tests::safetensors_shape_reports_a_truncated_header ... ok +test vision::encoders::muse_glimmer_fusion::pinned_tests::safetensors_shape_reports_an_unparseable_header ... ok +test vision::encoders::muse_glimmer_fusion::tests::fusion_adapter_projection_output_shape_is_finite ... ok +test vision::encoders::muse_glimmer_fusion::tests::pixel_shuffle_preserves_ordered_multi_image_boundaries ... ok +test vision::encoders::muse_glimmer_fusion::tests::pixel_shuffle_rejects_bad_grid_and_feature_rows ... ok +test vision::encoders::muse_glimmer_fusion::tests::pixel_shuffle_uses_reference_channel_major_order ... ok +test vision::encoders::muse_glimmer_fusion::tests::weightless_perception_norm_matches_rms_without_scale ... ok +test vision::encoders::muse_glimmer_layout::tests::full_cu_seqlens_splits_each_static_frame ... ok +test vision::encoders::muse_glimmer_layout::tests::window_plan_is_identity_when_grid_fits_single_window ... ok +test vision::encoders::muse_glimmer_layout::tests::window_plan_reorders_and_inverse_restores ... ok +test vision::encoders::muse_glimmer_pos::tests::bilinear_indices_match_32_by_32_corner_planes ... ok +test vision::encoders::muse_glimmer_pos::tests::interpolation_samples_32_by_32_center_to_single_runtime_patch ... ok +test vision::encoders::muse_glimmer_pos::tests::interpolation_uses_zero_padding_at_runtime_grid_edges ... ok +test vision::encoders::muse_glimmer_pos::tests::rope_plus_one_offset_changes_the_origin_token ... ok +test vision::encoders::muse_glimmer_pos::tests::rope_uses_width_height_interleaved_reference_order ... ok +test vision::encoders::nemotron_h_nano_omni::tests::config_derives_skip_and_cls_counts ... ok +test vision::encoders::nemotron_h_nano_omni::tests::missing_weight_is_a_loader_error_not_a_panic ... ok +test vision::encoders::nemotron_h_nano_omni::tests::vision_tower_features_count_matches_patch_grid ... ok +test vision::encoders::nemotron_h_nano_omni::tests::vision_tower_loads_synthetic_weights_and_produces_radio_output ... ok +test vision::encoders::paddleocr_vl::tests::attention_dispatch_batches_uniform_segments ... ok +test vision::encoders::paddleocr_vl::tests::attention_dispatch_buckets_repeated_variable_segments ... ok +test vision::encoders::paddleocr_vl::tests::attention_dispatch_keeps_unique_variable_segments_sequential ... ok +test vision::encoders::paddleocr_vl::tests::attention_dispatch_uses_single_for_one_segment ... ok +test vision::encoders::paddleocr_vl::tests::bucketed_attention_fast_path_matches_sequential_segments ... ok +test vision::encoders::paddleocr_vl::tests::uniform_attention_fast_path_matches_sequential_segments ... ok +test vision::encoders::qwen2_5_vl::tests::patch_embed_layout_is_converted_from_the_pytorch_conv3d_form ... ok +test vision::encoders::qwen2_5_vl::tests::patch_embed_layout_leaves_the_mlx_conversion_untouched ... ok +test vision::encoders::qwen2_5_vl::tests::patch_embed_layout_normalizer_is_prefix_parameterized ... ok +test vision::encoders::qwen2_5_vl::tests::patch_embed_layout_passes_through_shapes_it_cannot_classify ... ok +test vision::encoders::qwen2_5_vl::tests::vision_rms_norm_survives_a_float16_row_that_overflows_the_reduction ... ok +test vision::encoders::qwen2_5_vl::tests::window_index_inverse_is_argsort_not_the_permutation_itself ... ok +test vision::encoders::qwen2_5_vl::tests::window_index_inverse_is_the_identity_case_that_hid_the_defect ... ok +test vision::encoders::qwen2_5_vl::tests::window_index_inverse_restores_raster_order_on_a_non_involution_grid ... ok +test vision::encoders::qwen2_5_vl::tests::window_index_inverse_round_trips_a_padded_and_a_multi_image_grid ... ok +test vision::encoders::qwen3_vl::stage_dump_tests::dump_north_micro_vision_stage_tensors ... ignored, requires mlx-community/North-Micro-Vision-Instruct-4bit and writes oracle-comparison tensors +test vision::encoders::qwen3_vl::stage_observer_tests::observed_forward_casts_position_to_patch_dtype_before_residual_add ... ok +test vision::encoders::qwen3_vl::stage_observer_tests::observed_forward_reports_all_tower_stages_without_production_path_flags ... ok +test vision::encoders::qwen3_vl::stage_observer_tests::patch_embed_flattens_conv3d_weights_in_processor_temporal_channel_order ... ok +test vision::encoders::qwen3_vl::stage_observer_tests::position_interpolation_keeps_fractional_weights_in_float32 ... ok +test vision::encoders::qwen3_vl::stage_observer_tests::position_interpolation_uses_transformers_align_corners_true_convention ... ok +test vision::encoders::qwen3_vl::tests::ensure_fused_sdpa_restores_original_output_shape ... ok +test vision::encoders::qwen3_vl::tests::fused_sdpa_target_dim_uses_next_supported_kernel_width ... ok +test vision::encoders::qwen3_vl::tests::sdpa_pad_width_only_pads_the_last_dimension ... ok +test vision::encoders::siglip::siglip_block_tests::an_all_attend_mask_is_a_no_op_and_a_blocking_mask_is_not ... ok +test vision::encoders::siglip::siglip_block_tests::encoder_block_shared_with_vision_is_unchanged ... ok +test vision::encoders::siglip::tests::activation_selection_preserves_exact_and_fast_compatibility ... ok +test vision::encoders::siglip::tests::patch_embed_both_conv_layouts_yield_identical_weight ... ok +test vision::encoders::siglip::tests::pytorch_tanh_gelu_matches_hugging_face_f32_golden ... ok +test vision::encoders::step3p7::tests::conv_permutation_is_idempotent ... ok +test vision::encoders::step3p7::tests::identity_rope_leaves_input_unchanged ... ok +test vision::encoders::step3p7::tests::posemb_interpolation_produces_target_grid_shape ... ok +test vision::encoders::step3p7::tests::rope_tables_have_expected_shape_and_cls_identity ... ok +test vision::encoders::step3p7::tests::rotate_half_maps_pairs_a_b_to_neg_b_a ... ok +test vision::encoders::youtu_vl::tests::config_defaults_match_upstream ... ok +test vision::encoders::youtu_vl::tests::forward_is_deterministic_for_fixed_weights ... ok +test vision::encoders::youtu_vl::tests::forward_with_spatial_produces_expected_shape ... ok +test vision::encoders::youtu_vl::tests::merger_window_size_rejects_zero_divisor_config ... ok +test vision::encoders::youtu_vl::tests::reverse_window_indices_is_argsort_not_the_permutation_itself ... ok +test vision::encoders::youtu_vl::tests::reverse_window_indices_is_the_identity_case_that_hid_the_defect ... ok +test vision::encoders::youtu_vl::tests::reverse_window_indices_restores_raster_order_on_a_non_involution_grid ... ok +test vision::encoders::youtu_vl::tests::reverse_window_indices_round_trips_a_multi_image_batch ... ok +test vision::encoders::youtu_vl::tests::window_index_handles_padding ... ok +test vision::encoders::youtu_vl::tests::window_index_matches_the_reference_on_multi_window_grids ... ok +test vision::encoders::youtu_vl::tests::window_index_partitions_token_set ... ok +test vision::falcon_ocr::tests::the_image_closing_token_is_not_suppressed ... ok +test vision::falcon_ocr::tests::the_patch_and_block_opening_tokens_are_suppressed ... ok +test vision::falcon_ocr_layout::tests::a_box_mostly_inside_a_larger_box_is_dropped ... ok +test vision::falcon_ocr_layout::tests::a_box_repeated_under_several_labels_becomes_one_region ... ok +test vision::falcon_ocr_layout::tests::a_duplicate_box_falls_through_to_its_first_ocrable_label ... ok +test vision::falcon_ocr_layout::tests::a_page_with_only_a_figure_falls_back_to_the_whole_page ... ok +test vision::falcon_ocr_layout::tests::a_page_without_detections_falls_back_to_a_single_plain_region ... ok +test vision::falcon_ocr_layout::tests::a_region_smaller_than_the_minimum_is_not_cropped ... ok +test vision::falcon_ocr_layout::tests::a_sliver_that_would_collapse_after_resize_is_rejected ... ok +test vision::falcon_ocr_layout::tests::detections_become_ordered_regions_with_their_own_instruction ... ok +test vision::falcon_ocr_layout::tests::every_category_keeps_its_reference_instruction ... ok +test vision::falcon_ocr_layout::tests::identical_boxes_do_not_delete_each_other ... ok +test vision::falcon_ocr_layout::tests::layout_classes_route_to_the_reference_ocr_categories ... ok +test vision::falcon_ocr_layout::tests::partially_overlapping_boxes_both_survive ... ok +test vision::falcon_ocr_layout::tests::same_sized_boxes_at_different_positions_stay_separate ... ok +test vision::falcon_ocr_layout::tests::the_geometry_predicate_agrees_with_the_actual_crop ... ok +test vision::falcon_ocr_layout::tests::the_underscore_spelling_of_a_two_word_class_maps_the_same_way ... ok +test vision::feature_cache::tests::clear_drops_all_entries ... ok +test vision::feature_cache::tests::disabled_cache_returns_no_hits ... ok +test vision::feature_cache::tests::get_miss_returns_none ... ok +test vision::feature_cache::tests::hash_and_path_keys_do_not_collide ... ok +test vision::feature_cache::tests::hash_key_is_stable_for_identical_bytes ... ok +test vision::feature_cache::tests::hit_bumps_position_to_most_recent ... ok +test vision::feature_cache::tests::lru_eviction_removes_least_recently_used ... ok +test vision::feature_cache::tests::many_distinct_inserts_cap_at_max_size ... ok +test vision::feature_cache::tests::put_replaces_existing_entry ... ok +test vision::feature_cache::tests::put_then_get_hits ... ok +test vision::feature_cache::tests::soft_token_budget_key_resists_byte_boundary_collision ... ok +test vision::feature_cache::tests::soft_token_budget_partitions_the_cache_key ... ok +test vision::gemma3n_per_layer_inputs_state::tests::bind_fallback_drains_into_per_sequence_slot ... ignored, requires serial MLX execution +test vision::gemma3n_per_layer_inputs_state::tests::bind_fallback_with_empty_slot_leaves_seq_absent ... ignored, requires serial MLX execution +test vision::gemma3n_per_layer_inputs_state::tests::burst_enqueue_race_each_seq_consumes_its_own_tensor ... ignored, requires serial MLX execution +test vision::gemma3n_per_layer_inputs_state::tests::fallback_round_trip_take_returns_value ... ignored, requires serial MLX execution +test vision::gemma3n_per_layer_inputs_state::tests::preemption_round_trip_carries_tensor_to_new_id ... ignored, requires serial MLX execution +test vision::gemma3n_per_layer_inputs_state::tests::release_drops_only_target_sequence ... ignored, requires serial MLX execution +test vision::gemma3n_per_layer_inputs_state::tests::set_fallback_with_none_clears_slot ... ignored, requires serial MLX execution +test vision::gemma3n_per_layer_inputs_state::tests::take_for_sequence_returns_none_for_unknown_id ... ignored, requires serial MLX execution +test vision::gemma3n_per_layer_inputs_state::tests::unknown_sequence_cannot_consume_another_requests_fallback ... ignored, requires serial MLX execution +test vision::gemma3n_vl::tests::align_per_layer_inputs_leaves_matching_sequence_length_untouched ... ok +test vision::gemma3n_vl::tests::align_per_layer_inputs_pads_to_embedding_sequence_length ... ok +test vision::gemma3n_vl::tests::align_per_layer_inputs_slices_to_embedding_sequence_length ... ok +test vision::gemma4_per_layer_inputs_state::tests::bind_fallback_drains_into_per_sequence_slot ... ignored, requires serial MLX execution +test vision::gemma4_per_layer_inputs_state::tests::bind_fallback_with_empty_slot_leaves_seq_absent ... ignored, requires serial MLX execution +test vision::gemma4_per_layer_inputs_state::tests::burst_enqueue_race_each_seq_consumes_its_own_tensor ... ignored, requires serial MLX execution +test vision::gemma4_per_layer_inputs_state::tests::fallback_round_trip_take_returns_value ... ignored, requires serial MLX execution +test vision::gemma4_per_layer_inputs_state::tests::preemption_round_trip_carries_tensor_to_new_id ... ignored, requires serial MLX execution +test vision::gemma4_per_layer_inputs_state::tests::release_drops_only_target_sequence ... ignored, requires serial MLX execution +test vision::gemma4_per_layer_inputs_state::tests::set_fallback_with_none_clears_slot ... ignored, requires serial MLX execution +test vision::gemma4_per_layer_inputs_state::tests::take_for_sequence_returns_none_for_unknown_id ... ignored, requires serial MLX execution +test vision::gemma4_unified_config::tests::audio_config_optional ... ok +test vision::gemma4_unified_config::tests::eoa_token_index_fallback ... ok +test vision::gemma4_unified_config::tests::mixed_precision_quant_inherited_by_text_config ... ok +test vision::gemma4_unified_config::tests::output_suppression_masks_placeholders_but_not_eos ... ok +test vision::gemma4_unified_config::tests::parses_three_subconfigs ... ok +test vision::gemma4_unified_config::tests::placeholder_tokens_cover_all_seven_markers ... ok +test vision::gemma4_unified_config::tests::token_ids_match_reference ... ok +test vision::gemma4_unified_config::tests::vision_config_defaults_apply ... ok +test vision::gemma4_unified_config::tests::vision_soft_tokens_per_video_frame_defaults_to_70 ... ok +test vision::gemma4_unified_mask::tests::block_ids_adjacent_spans_separated_by_eoi_boi_are_distinct ... ok +test vision::gemma4_unified_mask::tests::block_ids_image_only_are_bidirectional_intra_block ... ok +test vision::gemma4_unified_mask::tests::block_ids_none_for_text_only ... ok +test vision::gemma4_unified_mask::tests::block_ids_none_on_decode_single_token ... ok +test vision::gemma4_unified_mask::tests::block_ids_none_when_bidirectional_disabled ... ok +test vision::gemma4_unified_mask::tests::block_ids_survive_audio_tokens ... ok +test vision::gemma4_unified_mask::tests::block_ids_video_counts_as_vision ... ok +test vision::gemma4_unified_mask::tests::block_ids_video_frames_separated_by_eoi_boi_are_distinct ... ok +test vision::gemma4_unified_mask::tests::mask_overlay_with_audio_matches_image_only ... ok +test vision::gemma4_unified_mask::tests::mm_token_type_ids_classifies_each_modality ... ok +test vision::got_ocr::tests::grid_flatten_is_row_major_over_the_16x16_grid ... ok +test vision::got_ocr::tests::tower_output_is_256_tokens_of_1024 ... ok +test vision::idefics2::tests::bucketize_full_grid_is_in_range ... ok +test vision::idefics2::tests::bucketize_matches_reference_for_34x45_grid ... ok +test vision::image_token_overrides::tests::a_degenerate_geometry_leaves_the_declared_bounds_alone ... ok +test vision::image_token_overrides::tests::a_half_that_was_not_requested_keeps_the_checkpoints_own_bound ... ok +test vision::image_token_overrides::tests::an_overflowing_token_count_falls_back_to_the_declared_bound ... ok +test vision::image_token_overrides::tests::both_halves_convert_tokens_to_pixels ... ok +test vision::image_token_overrides::tests::describe_renders_what_the_operator_typed ... ok +test vision::image_token_overrides::tests::installing_the_same_value_twice_is_accepted ... ok +test vision::image_token_overrides::tests::neither_half_means_no_override_at_all ... ok +test vision::image_token_overrides::tests::patch_area_matches_upstreams_definition ... ok +test vision::image_token_overrides::tests::resolve_pixel_bounds_is_a_pass_through_without_an_installed_override ... ok +test vision::image_token_overrides::tests::the_unapplied_diagnostic_names_the_checkpoint_and_the_flag ... ok +test vision::inkling_vl::tests::image_prefill_keeps_hmlp_prepared_embeddings_on_classic_wrapper_path ... ok +test vision::inkling_vl::tests::mixed_prefill_scatter_order_is_normalized_text_then_image_then_audio ... ok +test vision::inkling_vl::tests::slot1_overwrite_touches_only_the_tail ... ok +test vision::inkling_vl::tests::video_slot1_splice_rejects_non_suffix_cardinality ... ok +test vision::inkling_vl::tests::vlm_mtp_adapter_is_a_text_backbone_target ... ok +test vision::internvl::tests::pixel_shuffle_collapses_spatial_into_channels ... ok +test vision::internvl::tests::pixel_shuffle_preserves_first_row_values ... ok +test vision::jina_vlm::tests::feature_rows_past_the_connector_output_are_skipped ... ok +test vision::jina_vlm::tests::image_features_land_only_on_the_named_positions ... ok +test vision::jina_vlm::tests::negative_and_out_of_range_targets_are_skipped ... ok +test vision::jina_vlm::tests::structural_image_tokens_are_suppressed_from_the_output ... ok +test vision::jina_vlm::tests::the_runtime_declares_the_dense_kv_layout_the_decoder_uses ... ok +test vision::jina_vlm::tests::the_scatter_adds_the_connector_output_to_the_placeholder_embedding ... ok +test vision::jina_vlm::tests::the_sparse_scatter_is_bit_identical_to_the_dense_one_hot_matmul ... ok +test vision::kimi_k3_vl::tests::projector_shapes_and_merge_count_mismatch_errors ... ok +test vision::kimi_k3_vl::tests::vision_sanitize_transposes_the_patch_kernel_once ... ok +test vision::kimi_vl::tests::projector_projects_merged_patches_to_text_hidden ... ok +test vision::llmjp_vl::tests::connector_uses_torch_default_layer_norm_eps ... ok +test vision::llmjp_vl::tests::either_patch_embedding_conv_layout_produces_the_same_features ... ok +test vision::llmjp_vl::tests::image_budget_formula_caps_at_12_and_floors_at_1 ... ok +test vision::llmjp_vl::tests::image_features_land_only_on_image_pad_positions ... ok +test vision::llmjp_vl::tests::text_model_selection_by_llm_config_model_type ... ok +test vision::llmjp_vl::tests::the_server_cache_layout_follows_the_text_backbone ... ok +test vision::llmjp_vl::tests::the_three_framing_ids_are_suppressed_from_the_output ... ok +test vision::locateanything::tests::feature_row_count_tracks_the_merged_patch_count ... ok +test vision::locateanything::tests::layer_norm_spans_the_flattened_merged_patch ... ok +test vision::locateanything::tests::projects_merged_patches_into_the_text_hidden_size ... ok +test vision::mage_vl_config::tests::decoder_rope_theta_is_lifted_from_rope_parameters ... ok +test vision::mage_vl_config::tests::eos_ids_merge_generation_config_config_and_defaults ... ok +test vision::mage_vl_config::tests::flat_rope_theta_wins_over_rope_parameters ... ok +test vision::mage_vl_config::tests::non_default_rope_type_becomes_rope_scaling ... ok +test vision::mage_vl_config::tests::pixel_bounds_and_normalization_come_from_the_preprocessor_config ... ok +test vision::mage_vl_config::tests::released_vision_config_parses_and_validates ... ok +test vision::mage_vl_config::tests::token_ids_fall_back_to_released_values_and_reject_garbage ... ok +test vision::mage_vl_config::tests::unsupported_vision_switches_are_rejected_by_name ... ok +test vision::mage_vl_config::tests::without_the_lift_the_decoder_would_silently_run_at_base_10000 ... ok +test vision::merge::tests::masked_scatter_replaces_only_masked_positions ... ok +test vision::merge::tests::merge_llava_flattens_projected_features_in_image_token_order ... ok +test vision::merge::tests::prepare_inputs_for_multimodal_all_ones_mask_is_all_zeros ... ok +test vision::merge::tests::prepare_inputs_for_multimodal_builds_additive_mask_and_preserves_dtype ... ok +test vision::merge::tests::video_then_audio_scatter_fills_each_run_without_clobbering_the_other ... ok +test vision::minimax_m3_vl::minimax_m3_vl_tests::nested_config_parses_text_and_vision_blocks ... ok +test vision::minimax_m3_vl::minimax_m3_vl_tests::placeholder_expansion_matches_merged_token_count ... ok +test vision::minimax_m3_vl::minimax_m3_vl_tests::projector_fold_concatenates_four_adjacent_patches_in_order ... ok +test vision::minimax_m3_vl::minimax_m3_vl_tests::rope_axis_and_rot_dim_match_reference_arithmetic ... ok +test vision::minimax_m3_vl::minimax_m3_vl_tests::text_sanitizer_drops_verbatim_vision_and_projector_keys ... ok +test vision::minimax_m3_vl::minimax_m3_vl_tests::tower_loads_verbatim_keys_and_emits_merged_token_shape ... ok +test vision::minimax_m3_vl::minimax_m3_vl_tests::vision_config_parses_real_nested_values ... ok +test vision::mllama_vl::tests::projector_loads_quantized_with_bias ... ok +test vision::mllama_vl::tests::select_declines_full_tile_counts ... ok +test vision::mllama_vl::tests::select_declines_invalid_tile_counts ... ok +test vision::mllama_vl::tests::select_keeps_ragged_real_tile_rows_media_major ... ok +test vision::moondream2_vl_tests::moondream2_attention_mask_keeps_prefix_fully_connected ... ok +test vision::moondream2_vl_tests::moondream2_attention_mask_uses_causal_prompt_rows_after_prefix ... ok +test vision::moondream3_vl_tests::moondream3_attention_mask_keeps_prefix_fully_connected ... ok +test vision::moondream3_vl_tests::moondream3_attention_mask_uses_causal_prompt_rows_after_prefix ... ok +test vision::nemotron_h_nano_omni_vl::tests::projector_maps_features_to_text_hidden_size ... ok +test vision::nemotron_h_nano_omni_vl::tests::sequence_ids_keep_isolated_state_on_token_and_embedding_paths ... ok +test vision::nemotron_h_nano_omni_vl::tests::subsampling_output_lengths_matches_python_reference ... ok +test vision::nemotron_h_nano_omni_vl::tests::vl_config_default_downsample_factor_round_trips ... ok +test vision::phi4mm_vl::mode_tests::request_modes_do_not_leak_between_sequences ... ok +test vision::processors::anyres::tests::num_image_tokens_matches_reference ... ok +test vision::processors::anyres::tests::preprocess_emits_base_tile_first_and_channels_last ... ok +test vision::processors::anyres::tests::select_best_resolution_matches_reference ... ok +test vision::processors::anyres::tests::tile_info_grid_and_count ... ok +test vision::processors::anyres::tests::token_count_equals_base_plus_unpad_area ... ok +test vision::processors::deepseek_vl2::tests::best_resolution_prefers_larger_effective_area ... ok +test vision::processors::deepseek_vl2::tests::best_resolution_small_square_picks_single_tile ... ok +test vision::processors::deepseek_vl2::tests::best_resolution_wide_picks_landscape ... ok +test vision::processors::deepseek_vl2::tests::num_queries_is_14_for_384_patch14_ds2 ... ok +test vision::processors::deepseek_vl2::tests::placeholder_counts_match_reference_formula ... ok +test vision::processors::deepseekocr::tests::closest_grid_800x600_is_3x2 ... ok +test vision::processors::deepseekocr::tests::placeholder_counts_match_reference_formula ... ok +test vision::processors::deepseekocr::tests::v2_grid_bounds_allow_single_tile ... ok +test vision::processors::deepseekocr::tests::v2_placeholder_counts_are_flat ... ok +test vision::processors::dots_ocr::tests::merge_block_row_index_matches_invariant ... ok +test vision::processors::dots_ocr::tests::smart_resize_rounds_to_factor_and_clamps ... ok +test vision::processors::ernie4_5_vl::tests::grid_is_multiple_of_merge_and_rows_are_588_wide ... ok +test vision::processors::ernie4_5_vl::tests::merge_window_row_order_is_load_bearing ... ok +test vision::processors::falcon_ocr::tests::a_tiny_image_is_scaled_up_to_the_minimum ... ok +test vision::processors::falcon_ocr::tests::an_image_already_inside_the_band_is_not_clamped ... ok +test vision::processors::falcon_ocr::tests::an_oversized_image_is_clamped_on_its_long_side ... ok +test vision::processors::falcon_ocr::tests::normalization_maps_the_byte_range_onto_minus_one_to_one ... ok +test vision::processors::falcon_ocr::tests::smart_resize_grows_past_the_pixel_floor ... ok +test vision::processors::falcon_ocr::tests::smart_resize_shrinks_past_the_pixel_ceiling ... ok +test vision::processors::falcon_ocr::tests::smart_resize_snaps_to_the_patch_grid ... ok +test vision::processors::falcon_ocr::tests::smart_resize_uses_bankers_rounding_on_ties ... ok +test vision::processors::falcon_ocr::tests::the_grid_matches_what_the_patch_matrix_produces ... ok +test vision::processors::falcon_ocr::tests::the_patch_matrix_is_row_major_over_the_grid_and_hwc_within_a_patch ... ok +test vision::processors::fastvlm::tests::default_normalization_is_rescale_only ... ok +test vision::processors::fastvlm::tests::emits_channels_first_square_batch ... ok +test vision::processors::florence2::florence2_tests::an_empty_batch_produces_an_empty_tensor ... ok +test vision::processors::florence2::florence2_tests::emits_nchw_at_the_configured_resolution ... ok +test vision::processors::florence2::florence2_tests::lays_out_channels_then_rows_then_columns ... ok +test vision::processors::florence2::florence2_tests::missing_file_is_an_error_rather_than_a_default ... ok +test vision::processors::florence2::florence2_tests::normalizes_each_channel_with_its_own_statistics ... ok +test vision::processors::florence2::florence2_tests::parses_the_checkpoint_configuration ... ok +test vision::processors::florence2::florence2_tests::preserves_nchw_offsets_for_a_non_square_target ... ok +test vision::processors::florence2::florence2_tests::rejects_configurations_it_would_silently_mishandle ... ok +test vision::processors::florence2::florence2_tests::reports_the_original_size_before_resizing ... ok +test vision::processors::florence2::florence2_tests::resizes_without_preserving_aspect_ratio ... ok +test vision::processors::florence2::florence2_tests::the_real_file_matches_the_pinned_configuration ... ok +test vision::processors::gemma4::tests::default_path_is_byte_identical_to_configured_budget ... ok +test vision::processors::gemma4::tests::image_soft_token_budget_ladder_is_shared_with_video ... ok +test vision::processors::gemma4::tests::patch_grid_at_top_budget_stays_inside_the_vit_position_table ... ok +test vision::processors::gemma4::tests::placeholder_expansion_matches_feature_count_at_every_budget ... ok +test vision::processors::gemma4::tests::placeholder_expansion_matches_feature_count_for_multiple_images ... ok +test vision::processors::gemma4::tests::preprocess_with_budget_yields_strictly_increasing_soft_tokens ... ok +test vision::processors::gemma4::tests::process_videos_all_frames_share_video_dimensions ... ok +test vision::processors::gemma4::tests::process_videos_clamps_long_inputs_to_video_num_frames ... ok +test vision::processors::gemma4::tests::process_videos_emits_one_features_block_per_video ... ok +test vision::processors::gemma4::tests::process_videos_existing_image_path_unchanged ... ok +test vision::processors::gemma4::tests::process_videos_handles_empty_input ... ok +test vision::processors::gemma4::tests::process_videos_handles_single_frame_video ... ok +test vision::processors::gemma4::tests::process_videos_invalid_fps_falls_back_to_default ... ok +test vision::processors::gemma4::tests::process_videos_num_soft_tokens_within_budget ... ok +test vision::processors::gemma4::tests::process_videos_per_video_fps_drives_timestamps ... ok +test vision::processors::gemma4::tests::process_videos_pixel_values_have_expected_shape ... ok +test vision::processors::gemma4::tests::process_videos_pixel_values_match_input_color ... ignored, needs ffmpeg 5.0+ on PATH; run `make verify-test-video` +test vision::processors::gemma4::tests::set_video_config_rejects_unsupported_soft_tokens ... ok +test vision::processors::gemma4::tests::validate_image_soft_tokens_accepts_every_ladder_rung ... ok +test vision::processors::gemma4::tests::validate_image_soft_tokens_rejects_off_ladder_values ... ok +test vision::processors::gemma4_unified::tests::audio_chunks_into_frames_with_mask ... ok +test vision::processors::gemma4_unified::tests::audio_exact_multiple_all_valid ... ok +test vision::processors::gemma4_unified::tests::budget_padded_rows_match_the_budget_while_real_count_is_the_patch_count ... ok +test vision::processors::gemma4_unified::tests::default_path_is_unchanged_by_the_override_plumbing ... ok +test vision::processors::gemma4_unified::tests::grid_positions_stay_inside_the_learned_position_table_at_max_budget ... ok +test vision::processors::gemma4_unified::tests::image_path_unchanged_by_video_budget ... ok +test vision::processors::gemma4_unified::tests::multi_patch_positions_are_grid_indexed ... ok +test vision::processors::gemma4_unified::tests::patch_dim_and_padding ... ok +test vision::processors::gemma4_unified::tests::preprocess_with_budget_yields_strictly_increasing_soft_tokens ... ok +test vision::processors::gemma4_unified::tests::resize_respects_soft_token_budget ... ok +test vision::processors::gemma4_unified::tests::video_frame_budget_is_untouched_by_the_image_override ... ok +test vision::processors::gemma4_unified::tests::video_frames_patchify_each_frame_independently ... ok +test vision::processors::gemma4_unified::tests::video_frames_use_per_frame_soft_token_budget ... ok +test vision::processors::got_ocr::tests::clip_constants_match_the_reference_defaults ... ok +test vision::processors::got_ocr::tests::normalization_uses_clip_mean_and_std_per_channel ... ok +test vision::processors::got_ocr::tests::preprocess_batches_along_the_leading_axis ... ok +test vision::processors::got_ocr::tests::preprocess_emits_a_fixed_1024_square_regardless_of_aspect ... ok +test vision::processors::got_ocr::tests::resize_stretches_instead_of_padding ... ok +test vision::processors::hunyuan_vl::tests::grid_and_rows_and_count ... ok +test vision::processors::idefics2::tests::aspect_preserving_tile_cropped_to_whole_patches ... ok +test vision::processors::idefics2::tests::large_image_scaled_down_to_longest_edge ... ok +test vision::processors::idefics2::tests::siglip_normalization_maps_white_to_one ... ok +test vision::processors::idefics2::tests::small_image_scaled_up_to_shortest_edge ... ok +test vision::processors::inkling::tests::each_image_reports_its_own_tile_count ... ok +test vision::processors::inkling::tests::tiler_includes_exact_width_trailing_column ... ok +test vision::processors::internvl::tests::an_aspect_ratio_tie_follows_the_upstream_area_threshold ... ok +test vision::processors::internvl::tests::multiple_images_report_per_image_tile_counts ... ok +test vision::processors::internvl::tests::normalization_uses_imagenet_statistics ... ok +test vision::processors::internvl::tests::square_image_produces_single_tile_no_thumbnail ... ok +test vision::processors::internvl::tests::wide_image_splits_into_multiple_tiles_plus_thumbnail ... ok +test vision::processors::jina_vlm::tests::a_small_image_produces_a_thumbnail_plus_one_crop ... ok +test vision::processors::jina_vlm::tests::a_wide_image_gets_more_columns_of_crops_than_rows ... ok +test vision::processors::jina_vlm::tests::an_overlap_margin_pair_wider_than_the_crop_cannot_spin_the_pooling_loop ... ok +test vision::processors::jina_vlm::tests::every_pooled_patch_maps_to_a_distinct_image_patch_token ... ok +test vision::processors::jina_vlm::tests::pixels_are_normalized_into_the_configured_min_max_range ... ok +test vision::processors::jina_vlm::tests::sampling_u8_at_read_time_is_bit_identical_to_converting_first ... ok +test vision::processors::jina_vlm::tests::select_tiling_prefers_the_least_upscaling_that_still_covers ... ok +test vision::processors::jina_vlm::tests::smart_resize_shrinks_past_the_maximum_pixel_budget ... ok +test vision::processors::jina_vlm::tests::smart_resize_snaps_both_sides_to_the_patch_grid ... ok +test vision::processors::jina_vlm::tests::smart_resize_uses_bankers_rounding_like_python ... ok +test vision::processors::jina_vlm::tests::the_coverage_mask_ends_with_the_upstream_sentinel_row ... ok +test vision::processors::jina_vlm::tests::the_token_block_is_framed_and_column_delimited ... ok +test vision::processors::jina_vlm::tests::the_token_grid_rounds_each_crop_window_up_separately ... ok +test vision::processors::kimi_k3::tests::after_resize_fill_composites_the_resized_alpha ... ok +test vision::processors::kimi_k3::tests::chessboard_fill ... ok +test vision::processors::kimi_k3::tests::image_prompt_text_names_the_original_size_and_repeats_the_pad ... ok +test vision::processors::kimi_k3::tests::media_token_budget_bounds_a_request ... ok +test vision::processors::kimi_k3::tests::navit_resize_rule ... ok +test vision::processors::kimi_k3::tests::patchify_is_row_major_channel_first_and_pads_black ... ok +test vision::processors::kimi_k3::tests::published_config_parses_from_media_proc_cfg ... ok +test vision::processors::kimi_vl::tests::clip_normalization_is_applied ... ok +test vision::processors::kimi_vl::tests::crops_to_merge_patch_multiple_and_grids ... ok +test vision::processors::kimi_vl::tests::downscales_when_over_token_limit ... ok +test vision::processors::kimi_vl::tests::video_clip_patches_frame_major_with_t_h_w_grid ... ok +test vision::processors::lfm2_vl::tests::closest_ratio_prefers_area_on_ties ... ok +test vision::processors::lfm2_vl::tests::large_image_splits_into_row_major_tiles_plus_optional_thumbnail ... ok +test vision::processors::lfm2_vl::tests::packs_patch_dim_and_grid ... ok +test vision::processors::lfm2_vl::tests::small_image_keeps_single_view ... ok +test vision::processors::lfm2_vl::tests::smart_resize_divisible_by_total_and_clamped ... ok +test vision::processors::lfm2_vl::tests::split_views_follow_row_major_tile_order ... ok +test vision::processors::lfm2_vl::tests::target_tile_ratios_for_2_to_10 ... ok +test vision::processors::lfm2_vl::tests::white_pixel_normalizes_to_one ... ok +test vision::processors::locateanything::tests::an_absurd_in_token_limit_is_clamped_so_one_image_stays_bounded ... ok +test vision::processors::locateanything::tests::constructor_backstop_clamps_an_absurd_merge_kernel_on_both_axes ... ok +test vision::processors::locateanything::tests::constructor_backstop_clamps_an_absurd_patch_size ... ok +test vision::processors::locateanything::tests::downscales_when_over_the_token_budget ... ok +test vision::processors::locateanything::tests::exact_multiple_is_left_untouched ... ok +test vision::processors::locateanything::tests::grid_side_is_clamped_below_the_position_embedding_limit ... ok +test vision::processors::locateanything::tests::merged_token_count_divides_by_the_merge_kernel ... ok +test vision::processors::locateanything::tests::multiple_images_concatenate_in_order ... ok +test vision::processors::locateanything::tests::non_square_images_keep_independent_axes ... ok +test vision::processors::locateanything::tests::normalization_is_the_plain_half_rescale ... ok +test vision::processors::locateanything::tests::rounds_each_side_up_to_a_merge_patch_multiple ... ok +test vision::processors::locateanything::tests::the_released_checkpoint_geometry_passes_through_the_constructor_unchanged ... ok +test vision::processors::minicpmo::tests::find_best_resize_can_align_to_minicpmv46_downsample_factor ... ok +test vision::processors::minicpmo::tests::find_best_resize_respects_patch_alignment ... ok +test vision::processors::minicpmo::tests::find_best_resize_still_downscales_above_the_scale_resolution ... ok +test vision::processors::minicpmo::tests::find_best_resize_upscales_below_the_scale_resolution ... ok +test vision::processors::minicpmo::tests::preprocess_outputs_hwc_tensor_and_spatial_shape ... ok +test vision::processors::minimax_m3::tests::grid_thw_matches_resized_patch_grid ... ok +test vision::processors::minimax_m3::tests::placeholder_count_equals_grid_prod_over_merge_squared ... ok +test vision::processors::minimax_m3::tests::preprocess_emits_1176_dim_rows_and_grid_prod_patches ... ok +test vision::processors::minimax_m3::tests::smart_resize_aligns_to_factor_and_bounds ... ok +test vision::processors::mllama::tests::aspect_ratio_id_is_one_based ... ok +test vision::processors::mllama::tests::optimal_canvas_prefers_square_for_square_image ... ok +test vision::processors::mllama::tests::process_packs_padded_tiles_and_masks ... ok +test vision::processors::mllama::tests::supported_aspect_ratios_match_reference_order ... ok +test vision::processors::molmo::tests::global_pad_pixels_are_normalized_black ... ok +test vision::processors::molmo::tests::high_res_masks_preserve_fractional_patch_coverage ... ok +test vision::processors::moondream3::tests::preprocess_image_produces_global_and_local_crops ... ok +test vision::processors::moondream3::tests::select_tiling_keeps_small_images_single_crop ... ok +test vision::processors::moondream3::tests::select_tiling_scales_large_images_under_max_crop_budget ... ok +test vision::processors::muse_glimmer::tests::grid_and_placeholder_counts_match_merge_size ... ok +test vision::processors::muse_glimmer::tests::normalization_maps_black_and_white_to_minus_one_and_one ... ok +test vision::processors::muse_glimmer::tests::patch_layout_is_row_major_with_temporal_duplication_inside_rows ... ok +test vision::processors::muse_glimmer::tests::processor_config_fixture_overrides_pinned_fields ... ok +test vision::processors::muse_glimmer::tests::smart_resize_uses_28_pixel_grid_and_4096_visual_token_cap ... ok +test vision::processors::nemotron_h_nano_omni::tests::compute_target_patches_caps_at_budget ... ok +test vision::processors::nemotron_h_nano_omni::tests::compute_target_patches_divisible_by_downsample ... ok +test vision::processors::nemotron_h_nano_omni::tests::compute_target_patches_respects_min_floor ... ok +test vision::processors::nemotron_h_nano_omni::tests::preprocess_normalizes_pixels ... ok +test vision::processors::nemotron_h_nano_omni::tests::preprocess_returns_one_entry_per_image ... ok +test vision::processors::phi4_siglip::tests::get_image_size_for_max_num_patches_preserves_aspect_ratio_bounds ... ok +test vision::processors::phi4_siglip::tests::phi4_siglip_processor_clamps_large_images_to_maximum_patch_count ... ok +test vision::processors::phi4_siglip::tests::phi4_siglip_processor_clamps_small_images_to_minimum_patch_count ... ok +test vision::processors::phi4mm::tests::find_closest_aspect_grid_square ... ok +test vision::processors::phi4mm::tests::find_closest_aspect_grid_tall ... ok +test vision::processors::phi4mm::tests::find_closest_aspect_grid_wide ... ok +test vision::processors::phi4mm::tests::small_image_single_crop ... ok +test vision::processors::pixtral::tests::clip_normalization_constants ... ok +test vision::processors::pixtral::tests::dimensions_round_up_to_factor_and_stay_within_edge ... ok +test vision::processors::pixtral::tests::factor_is_patch_times_merge ... ok +test vision::processors::pixtral::tests::mistral3_partial_merged_row_is_not_dropped ... ok +test vision::processors::pixtral::tests::oversized_image_is_downscaled_by_longest_edge ... ok +test vision::processors::pixtral::tests::preprocess_one_reports_matching_geometry_and_shape ... ok +test vision::processors::pixtral::tests::small_image_is_never_upscaled ... ok +test vision::processors::pixtral::tests::square_within_edge_keeps_aspect ... ok +test vision::processors::pixtral::tests::trait_preprocess_single_image_matches_preprocess_one ... ok +test vision::processors::pixtral::tests::wide_non_square_preserves_ratio ... ok +test vision::processors::qwen2_vl::tests::owned_and_mlx_paths_share_spatial_merge_grouped_patch_order ... ok +test vision::processors::qwen2_vl::tests::preprocess_video_pads_frames_to_temporal_patch_grid ... ok +test vision::processors::qwen2_vl::tests::qwen2_vl_processor_temporal_patch_1_row_count ... ok +test vision::processors::qwen2_vl::tests::video_processor_config_reads_qwen_sidecar_bounds ... ok +test vision::processors::qwen2_vl::tests::video_processor_config_rejects_inverted_frame_bounds ... ok +test vision::processors::smolvlm::tests::resize_chain_matches_reference_geometry ... ok +test vision::processors::smolvlm::tests::siglip_normalization_maps_white_to_one ... ok +test vision::processors::smolvlm::tests::single_global_tile_when_splitting_disabled ... ok +test vision::processors::smolvlm::tests::small_image_stays_single_tile_even_when_splitting_enabled ... ok +test vision::processors::smolvlm::tests::tiles_are_row_major_with_global_last ... ok +test vision::processors::smolvlm::tests::zero_dimension_image_preserves_single_tile_invariant ... ok +test vision::processors::step3p7::tests::crop_and_tile_counts_follow_the_0_2_rounding_rule ... ok +test vision::processors::step3p7::tests::feature_token_identity_169_plus_81_per_patch ... ok +test vision::processors::step3p7::tests::max_side_clamp_caps_the_crop_grid ... ok +test vision::processors::step3p7::tests::normalization_constants_are_the_clip_rgb_values ... ok +test vision::processors::step3p7::tests::preprocess_shapes_base_and_patch_batches ... ok +test vision::processors::step3p7::tests::square_pad_of_oversized_extreme_aspect_ratio_stays_bounded_by_max_side ... ok +test vision::processors::step3p7::tests::window_decision_no_patches_when_side_within_base ... ok +test vision::processors::youtu_vl::tests::normalization_matches_siglip_default ... ok +test vision::processors::youtu_vl::tests::patches_are_emitted_merge_block_major_with_channel_last_features ... ok +test vision::processors::youtu_vl::tests::preprocess_concatenates_multi_image_batches ... ok +test vision::processors::youtu_vl::tests::preprocess_emits_expected_patch_shape ... ok +test vision::processors::youtu_vl::tests::smart_resize_aligns_to_patch_merge_factor ... ok +test vision::processors::youtu_vl::tests::smart_resize_matches_autoprocessor_patch_grid ... ok +test vision::processors::youtu_vl::tests::smart_resize_shrinks_under_cap_and_terminates_on_extreme_aspect ... ok +test vision::processors::youtu_vl::tests::try_preprocess_rejects_cap_below_alignment_floor ... ok +test vision::processors::youtu_vl::tests::try_preprocess_rejects_resize_factor_above_u32 ... ok +test vision::smolvlm::tests::pixel_shuffle_matches_reference_shape_and_values ... ok +test vision::smolvlm::tests::pixel_shuffle_preserves_element_count_and_origin ... ok +test vision::snapshot_forwarding_tests::every_snapshot_backbone_wrapper_forwards_snapshot_reuse ... ok +test vision::tests::require_array_ref_accepts_real_arrays ... ok +test vision::tests::require_array_ref_rejects_null_unique_ptrs ... ok +test vision::unlimited_ocr::tests::unlimited_ocr_wrapper_declines_batching ... ok +test vision::unlimited_ocr::tests::unlimited_ocr_wrapper_declines_chunked_prefill ... ok +test vision::unlimited_ocr::tests::unlimited_ocr_wrapper_declines_padded_prefill ... ok + +test result: ok. 8930 passed; 0 failed; 165 ignored; 0 measured; 0 filtered out; finished in 45.97s + + Running unittests src/main.rs (target/test-fast/deps/mlxcel-e029287206517e01) + +running 264 tests +test commands::chat::tests::concat_plaintext_joins_turns_with_newlines ... ok +test commands::chat::tests::finalize_multiline_trims_and_detects_empty ... ok +test commands::chat::tests::non_chat_families_are_refused_before_loading ... ok +test commands::chat::tests::non_slash_input_is_not_a_command ... ok +test commands::chat::tests::slash_bye_signals_exit ... ok +test commands::chat::tests::slash_clear_resets_conversation ... ok +test commands::chat::tests::slash_command_ignores_trailing_args ... ok +test commands::chat::tests::slash_help_aliases_are_handled_without_reset ... ok +test commands::chat::tests::slash_image_attaches_a_path_and_requires_one ... ok +test commands::chat::tests::unknown_slash_command_is_handled_not_sent ... ok +test commands::chat_transcript::tests::a_missing_image_is_an_error_naming_the_file ... ok +test commands::chat_transcript::tests::an_attached_image_survives_its_file_being_deleted ... ok +test commands::chat_transcript::tests::image_soft_tokens_ride_on_every_image_part ... ok +test commands::chat_transcript::tests::image_turns_carry_data_uri_parts_before_the_text ... ok +test commands::chat_transcript::tests::reading_several_images_names_the_missing_one ... ok +test commands::chat_transcript::tests::text_turns_are_plain_string_messages ... ok +test commands::chat_transcript::tests::the_image_budget_allows_up_to_the_cap_and_refuses_past_it ... ok +test commands::chat_transcript::tests::the_image_cap_is_read_from_the_server_not_duplicated ... ok +test commands::chat_transcript::tests::the_image_count_sums_every_turn_of_the_transcript ... ok +test commands::cli_server::tests::a_prompt_that_starts_like_a_short_flag_is_not_that_flag ... ok +test commands::cli_server::tests::a_short_numeric_flag_is_found_alone_or_with_its_value_attached ... ok +test commands::cli_server::tests::bare_cli_keeps_greedy_base_and_server_windows ... ok +test commands::cli_server::tests::explicit_flags_map_one_to_one ... ok +test commands::cli_server::tests::request_fields_parse_as_a_chat_request ... ok +test commands::cli_server::tests::server_sampling_flags_reach_the_server_options ... ok +test commands::cli_turn::tests::a_delta_is_written_verbatim_when_not_dimmed ... ok +test commands::cli_turn::tests::a_dimmed_delta_is_wrapped_in_the_dim_escape ... ok +test commands::cli_turn::tests::an_interrupt_outside_a_turn_terminates ... ok +test commands::cli_turn::tests::the_base_model_notice_asks_about_the_template_only_when_it_may_print ... ok +test commands::cli_turn::tests::the_first_interrupt_cancels_and_the_second_terminates ... ok +test commands::detect::tests::boxes_sharing_a_top_edge_read_left_to_right ... ok +test commands::detect::tests::detections_are_emitted_in_reading_order ... ok +test commands::detect::tests::fully_tied_detections_order_by_class_id ... ok +test commands::detect::tests::labels_sharing_one_box_stay_adjacent_most_confident_first ... ok +test commands::embed::tests::run_embed_rejects_whitespace_only_prompts_like_rerank ... ok +test commands::embed::tests::similarity_is_cosine_for_single_vectors ... ok +test commands::embed::tests::similarity_is_maxsim_for_multi_vectors ... ok +test commands::embed::tests::text_layout_prints_rows_for_multi_vectors ... ok +test commands::generate::tests::apply_user_chat_template_wraps_prompt_as_user_message ... ok +test commands::generate::tests::cli_pipeline_requested_is_disabled_by_default ... ok +test commands::generate::tests::cli_sampling_explicit_flags_override_generation_config_per_key ... ok +test commands::generate::tests::cli_sampling_uses_generation_config_when_flags_are_unset ... ok +test commands::generate::tests::cli_video_content_part_count_enables_qwen_vl_videos ... ok +test commands::generate::tests::cli_video_fallback_appends_frame_images_and_clears_video ... ignored, needs ffmpeg 5.0+ on PATH +test commands::generate::tests::cli_video_fallback_declines_native_and_text_only_checkpoints ... ok +test commands::generate::tests::cli_video_fallback_keeps_the_lead_sentences_without_a_content_list ... ok +test commands::generate::tests::cli_video_fallback_leads_each_clip_with_its_own_frame_count ... ok +test commands::generate::tests::cli_video_fallback_renders_the_server_prompt_for_an_imageless_template ... ok +test commands::generate::tests::cli_video_frames_are_private_and_removed_with_the_run ... ok +test commands::generate::tests::estimate_delta_labels_match_actual_direction ... ok +test commands::generate::tests::gemma4_unified_audio_prompt_matches_reference_framing ... ok +test commands::generate::tests::generated_suffix_falls_back_when_prefix_is_missing ... ok +test commands::generate::tests::generated_suffix_strips_prompt_prefix ... ok +test commands::generate::tests::generation_stats_from_duration_handles_zero_elapsed_time ... ok +test commands::generate::tests::generation_stats_from_duration_uses_elapsed_time_for_decode_rate ... ok +test commands::generate::tests::memory_preflight_ctx_len_includes_prompt_and_generation_budget ... ok +test commands::generate::tests::muse_glimmer_cli_generate_rejects_unsupported_baselines ... ok +test commands::generate::tests::offline_draft_model_check_defers_missing_or_broken_configs_to_the_loader ... ok +test commands::generate::tests::offline_draft_model_rejects_a_dflash_drafter_directory ... ok +test commands::generate::tests::offline_draft_model_rejects_a_dflash_drafter_on_either_marker_alone ... ok +test commands::generate::tests::offline_draft_model_still_accepts_an_ordinary_full_model_drafter ... ok +test commands::generate::tests::resolve_cli_pipeline_assignments_auto_splits_layers_across_stages ... ok +test commands::generate::tests::resolve_cli_pipeline_assignments_honors_manual_ranges ... ok +test commands::generate::tests::resolve_cli_prompt_falls_back_on_template_errors ... ok +test commands::generate::tests::resolve_cli_prompt_keeps_text_path_for_audio_on_plain_template ... ok +test commands::generate::tests::resolve_cli_prompt_returns_template_rejections ... ok +test commands::generate::tests::resolve_cli_prompt_routes_audio_through_vlm_template ... ok +test commands::generate::tests::resolve_cli_prompt_skips_template_when_disabled ... ok +test commands::generate::tests::should_route_offline_mtp_for_auto_detected_mtp ... ok +test commands::generate::tests::should_route_offline_mtp_for_explicit_mtp ... ok +test commands::generate::tests::should_route_offline_mtp_rejects_other_explicit_kinds ... ok +test commands::generate::tests::strip_trailing_eos_drops_terminal_stop_token ... ok +test commands::generate::tests::strip_trailing_eos_empty_eos_set_is_noop ... ok +test commands::generate::tests::strip_trailing_eos_first_token_eos_yields_empty ... ok +test commands::generate::tests::strip_trailing_eos_leaves_output_without_eos_unchanged ... ok +test commands::generate::tests::the_repl_uses_a_drafter_only_with_an_explicit_server_kind ... ok +test commands::generate::tests::validate_pipeline_parallel_args_accepts_2d_pp_tp ... ok +test commands::generate::tests::validate_pipeline_parallel_args_accepts_adapter ... ok +test commands::generate::tests::validate_pipeline_parallel_args_rejects_2d_without_pp_enabled ... ok +test commands::generate::tests::validate_pipeline_parallel_args_rejects_incompatible_modes ... ok +test commands::generate::tests::validate_pipeline_parallel_args_requires_two_stages_without_manual_ranges ... ok +test commands::generate::tests::validate_prompt_lookup_args_is_a_no_op_without_the_flag ... ok +test commands::generate::tests::validate_prompt_lookup_args_refuses_before_the_model_loads ... ok +test commands::generate::tests::validate_tensor_parallel_args_accepts_ernie45_multi_rank_runtime ... ok +test commands::generate::tests::validate_tensor_parallel_args_accepts_gemma3_multi_rank_runtime ... ok +test commands::generate::tests::validate_tensor_parallel_args_accepts_gemma4_multi_rank_runtime ... ok +test commands::generate::tests::validate_tensor_parallel_args_accepts_hunyuan_v1_dense_multi_rank_runtime ... ok +test commands::generate::tests::validate_tensor_parallel_args_accepts_qwen2_multi_rank_runtime ... ok +test commands::generate::tests::validate_tensor_parallel_args_accepts_qwen35_multi_rank_runtime ... ok +test commands::generate::tests::validate_tensor_parallel_args_accepts_qwen3_multi_rank_runtime ... ok +test commands::generate::tests::validate_tensor_parallel_args_accepts_single_rank ... ok +test commands::generate::tests::validate_tensor_parallel_args_accepts_supported_multi_rank_runtime ... ok +test commands::generate::tests::vlm_chat_template_omits_audio_when_template_lacks_audio_support ... ok +test commands::generate::tests::vlm_chat_template_omits_video_when_template_lacks_video_support ... ok +test commands::generate::tests::vlm_chat_template_renders_audio_content_part_in_user_turn ... ok +test commands::generate::tests::vlm_chat_template_renders_video_content_part_in_user_turn ... ok +test commands::generate::tests::xla_cli_rejects_partial_multi_image_decode ... ok +test commands::generate::tests::xla_rejects_output_audio_before_generation ... ok +test commands::generate_falcon_ocr::tests::a_class_name_with_a_control_character_is_rejected ... ok +test commands::generate_falcon_ocr::tests::a_coordinate_that_overflows_to_infinity_is_rejected ... ok +test commands::generate_falcon_ocr::tests::a_detection_missing_its_box_names_the_index ... ok +test commands::generate_falcon_ocr::tests::a_detection_missing_its_class_name_names_the_index ... ok +test commands::generate_falcon_ocr::tests::a_detection_without_a_score_defaults_to_full_confidence ... ok +test commands::generate_falcon_ocr::tests::a_document_without_a_detections_array_names_the_expected_shape ... ok +test commands::generate_falcon_ocr::tests::a_non_array_detections_field_is_rejected ... ok +test commands::generate_falcon_ocr::tests::a_non_numeric_coordinate_is_rejected ... ok +test commands::generate_falcon_ocr::tests::a_non_object_entry_is_rejected ... ok +test commands::generate_falcon_ocr::tests::a_numeric_class_name_is_reported_as_a_type_error_not_a_missing_field ... ok +test commands::generate_falcon_ocr::tests::a_page_of_figures_falls_back_and_the_summary_says_so ... ok +test commands::generate_falcon_ocr::tests::a_short_box_array_is_rejected ... ok +test commands::generate_falcon_ocr::tests::a_top_level_scalar_is_rejected ... ok +test commands::generate_falcon_ocr::tests::alternative_box_key_spellings_parse ... ok +test commands::generate_falcon_ocr::tests::an_array_over_the_detection_cap_is_rejected_with_both_numbers ... ok +test commands::generate_falcon_ocr::tests::an_inverted_box_is_rejected ... ok +test commands::generate_falcon_ocr::tests::an_over_long_class_name_is_rejected ... ok +test commands::generate_falcon_ocr::tests::detect_json_plans_into_reading_ordered_regions_without_repeats ... ok +test commands::generate_falcon_ocr::tests::exactly_the_detection_cap_still_parses ... ok +test commands::generate_falcon_ocr::tests::malformed_json_is_rejected_with_a_parse_error ... ok +test commands::generate_falcon_ocr::tests::parsed_detections_plan_into_regions_with_their_own_instruction ... ok +test commands::generate_falcon_ocr::tests::region_answers_drop_the_task_terminators ... ok +test commands::generate_falcon_ocr::tests::regions_follow_the_files_order_not_a_geometric_sort ... ok +test commands::generate_falcon_ocr::tests::the_detect_subcommand_json_shape_parses ... ok +test commands::generate_falcon_ocr::tests::the_lazy_plan_matches_the_eager_planner_region_for_region ... ok +test commands::generate_falcon_ocr::tests::the_reference_layout_py_shape_and_a_bare_array_parse ... ok +test commands::generate_falcon_ocr::tests::the_summary_reports_nested_and_textless_boxes ... ok +test commands::inspect::tests::corpus_lines_drops_the_trailing_empty_tail ... ok +test commands::inspect::tests::corpus_lines_keeps_a_final_line_with_no_trailing_newline ... ok +test commands::inspect::tests::corpus_lines_keeps_a_trailing_cr_as_part_of_the_line ... ok +test commands::inspect::tests::corpus_lines_on_a_lone_newline_yields_one_empty_line ... ok +test commands::inspect::tests::corpus_lines_on_empty_content_yields_one_empty_line ... ok +test commands::inspect::tests::corpus_lines_preserves_blank_lines_in_the_middle ... ok +test commands::inspect::tests::parse_quant_hint_accepts_known_labels ... ok +test commands::inspect::tests::parse_quant_hint_rejects_unknown ... ok +test commands::models::tests::compact_size_picks_units ... ok +test commands::models::tests::contract_home_leaves_non_prefix_untouched ... ok +test commands::models::tests::contract_home_replaces_prefix ... ok +test commands::models::tests::ellipsize_name_caps_width ... ok +test commands::models::tests::format_modified_future_clamps_to_just_now ... ok +test commands::models::tests::format_modified_none_is_dash ... ok +test commands::models::tests::humanize_days ... ok +test commands::models::tests::humanize_hours ... ok +test commands::models::tests::humanize_just_now_under_a_minute ... ok +test commands::models::tests::humanize_minutes ... ok +test commands::models::tests::humanize_months_and_years ... ok +test commands::models::tests::humanize_weeks ... ok +test commands::models::tests::render_aligns_name_column ... ok +test commands::models::tests::render_default_shows_name_size_modified_no_path ... ok +test commands::models::tests::render_ellipsizes_long_name ... ok +test commands::models::tests::render_empty_store_prints_hint ... ok +test commands::models::tests::render_empty_store_without_root ... ok +test commands::models::tests::render_json_empty_store_is_empty_array ... ok +test commands::models::tests::render_json_is_parseable_and_stable ... ok +test commands::models::tests::render_missing_mtime_is_dash ... ok +test commands::models::tests::render_quiet_emits_repo_ids_only ... ok +test commands::models::tests::render_quiet_empty_store_emits_nothing ... ok +test commands::models::tests::render_singular_header_noun ... ok +test commands::models::tests::render_verbose_restores_path_column ... ok +test commands::models::tests::render_with_color_dims_modified_and_root ... ok +test commands::models::tests::render_without_color_has_no_ansi ... ok +test commands::models::tests::sort_by_modified_recent_first_none_last ... ok +test commands::models::tests::sort_by_name_ascending ... ok +test commands::models::tests::sort_by_size_largest_first ... ok +test commands::rerank::tests::label_truncates_long_text_and_falls_back_for_images ... ok +test commands::run::tests::a_raw_prompt_with_images_stays_on_the_generate_flow ... ok +test commands::run::tests::default_model_is_pinned ... ok +test commands::run::tests::run_accepts_adapter_flag ... ok +test commands::run::tests::run_default_max_tokens_is_unlimited_sentinel ... ok +test commands::run::tests::run_lowers_advanced_groups_to_inert_defaults ... ok +test commands::run::tests::run_no_model_with_prompt_uses_default_model_one_shot ... ok +test commands::run::tests::run_shares_generate_sampling_and_generation_flags ... ok +test commands::run::tests::run_threads_models_dir_into_generate_args ... ok +test commands::run::tests::run_with_no_model_falls_back_to_default_model ... ok +test commands::run::tests::run_with_repo_id_and_prompt_is_one_shot ... ok +test commands::run::tests::run_with_repo_id_no_prompt_enters_repl ... ok +test commands::serve::tests::build_startup_input_lang_bias_defaults_to_none ... ok +test commands::serve::tests::build_startup_input_lang_bias_propagates_when_active ... ok +test commands::serve::tests::build_startup_input_pp_layers_none_by_default ... ok +test commands::serve::tests::build_startup_input_preserves_edge_flags_for_normalization ... ok +test commands::serve::tests::build_startup_input_propagates_decode_storage_backend ... ok +test commands::serve::tests::build_startup_input_propagates_image_limits ... ok +test commands::serve::tests::build_startup_input_propagates_pp_layers ... ok +test commands::serve::tests::serve_preflight_batch_falls_back_to_parallelism_and_honors_no_batch ... ok +test commands::serve::tests::serve_preflight_batch_uses_max_batch_size_when_batching_enabled ... ok +test commands::serve::tests::serve_preflight_ctx_len_uses_default_and_max_kv_cap ... ok +test commands::serve::tests::serve_preflight_ctx_len_uses_parallel_context_semantics ... ok +test commands::serve::tests::settings_cli_build_startup_input_defaults_off_and_propagates_enablement ... ok +test commands::split_mtp::tests::find_foreign_safetensors_file_fails_closed_on_an_unlistable_directory ... ok +test commands::split_mtp::tests::force_clears_a_stale_index_when_no_shards_remain ... ok +test commands::split_mtp::tests::force_refuses_a_directory_with_a_foreign_safetensors_file ... ok +test commands::split_mtp::tests::force_refuses_a_previously_sharded_output_directory ... ok +test commands::split_mtp::tests::marker_is_none_for_an_empty_or_unrelated_directory ... ok +test commands::split_mtp::tests::marker_names_every_shape_of_existing_checkpoint ... ok +test commands::split_mtp::tests::preflight_refuses_an_output_that_equals_the_model_directory ... ok +test commands::tune::tune_tests::head_geometry_defaults_kv_heads_to_mha ... ok +test commands::tune::tune_tests::head_geometry_derives_head_dim_from_hidden_size ... ok +test commands::tune::tune_tests::head_geometry_falls_back_on_an_empty_config ... ok +test commands::tune::tune_tests::head_geometry_never_yields_a_zero_dimension ... ok +test commands::tune::tune_tests::head_geometry_prefers_the_explicit_head_dim ... ok +test commands::tune::tune_tests::parse_usize_list_accepts_whitespace_and_trailing_commas ... ok +test commands::tune::tune_tests::parse_usize_list_rejects_empty_and_zero_and_garbage ... ok +test commands::tune::tune_tests::row_offsets_bracket_every_sequence ... ok +test commands::tune::tune_tests::scattered_rows_are_unique_and_descending ... ok +test commands::tune::tune_tests::scattered_rows_stay_inside_the_pool ... ok +test tests::arch_command_parses_to_arch ... ok +test tests::arch_json_flag_parses_to_arch ... ok +test tests::arch_json_output_is_stable_registry_json ... ok +test tests::arch_supported_alias_parses_to_arch ... ok +test tests::embedding_and_reranking_commands_are_discoverable_in_help ... ok +test tests::family_order_has_no_orphans ... ok +test tests::family_order_is_exhaustive ... ok +test tests::generate_command_accepts_surgery_flag_with_path ... ok +test tests::generate_command_parses_tensor_parallel_flags ... ok +test tests::generate_command_surgery_flag_defaults_to_none ... ok +test tests::list_command_accepts_models_dir ... ok +test tests::list_command_defaults_output_flags ... ok +test tests::list_command_parses_output_flags_and_sort ... ok +test tests::list_command_parses_to_list ... ok +test tests::list_command_quiet_short_flag ... ok +test tests::list_command_rejects_conflicting_output_modes ... ok +test tests::list_command_rejects_removed_local_flag ... ok +test tests::list_command_rejects_unknown_sort ... ok +test tests::list_ls_alias_parses_to_list ... ok +test tests::negative_numbers_stay_rejected_on_sibling_subcommands ... ok +test tests::prompt_lookup_conflicts_with_a_draft_model ... ok +test tests::prompt_lookup_flags_parse_into_the_generator_config ... ok +test tests::prompt_lookup_policy_auto_follows_the_build_and_names_override_it ... ok +test tests::prompt_lookup_tuning_flags_require_prompt_lookup ... ok +test tests::run_defaults_match_clap_defaults ... ok +test tests::serve_accepts_a_negative_float_in_space_form ... ok +test tests::serve_accepts_a_space_separated_negative_number_on_every_value_taking_option ... ok +test tests::serve_accepts_every_b10621_model_source_flag ... ok +test tests::serve_adapter_and_lora_aliases_resolve_identically ... ok +test tests::serve_canonical_llama_envs_and_endpoint_precedence_parse_together ... ok +test tests::serve_command_accepts_surgery_flag_with_path ... ok +test tests::serve_command_surgery_flag_defaults_to_none ... ok +test tests::serve_draft_max_and_draft_aliases_resolve_identically ... ok +test tests::serve_draft_model_and_model_draft_aliases_resolve_identically ... ok +test tests::serve_dry_sequence_breaker_singular_and_plural_aliases_resolve_identically ... ok +test tests::serve_equals_form_negative_values_still_parse ... ok +test tests::serve_flag_names_and_aliases_are_unique ... ok +test tests::serve_n_parallel_and_parallel_aliases_resolve_identically ... ok +test tests::serve_n_predict_and_predict_aliases_resolve_identically ... ok +test tests::serve_negative_seed_predict_and_reasoning_budget_parse_in_space_form ... ok +test tests::serve_reasoning_alias_field_defaults_parses_and_rejects_unknown_values ... ok +test tests::serve_rejects_a_negative_value_in_the_value_parser_for_a_non_negative_option ... ok +test tests::serve_reports_a_mistyped_flag_after_an_option_instead_of_swallowing_it ... ok +test tests::serve_resolves_a_negative_parallel_to_the_automatic_slot_count ... ok +test tests::serve_slots_flags_use_last_occurrence ... ok +test tests::serve_spec_draft_spellings_resolve_to_the_draft_controls ... ok +test tests::serve_still_rejects_a_negative_number_with_no_option_awaiting_a_value ... ok +test tests::serve_store_byte_budget_envs_parse_when_flags_are_absent ... ok +test tests::serve_store_byte_budget_flags_parse ... ok +test tests::serve_temp_and_temperature_aliases_resolve_identically ... ok +test tests::serve_warmup_defaults_to_enabled_and_no_warmup_disables_it ... ok +test tests::settings_cli_mlxcel_serve_defaults_off_and_explicit_flag_enables ... ok +test tests::settings_cli_mlxcel_serve_help_exposes_flag ... ok +test tests::supported_models_header_uses_actual_count ... ok +test tests::supported_models_output_explains_embedding_and_reranking_interfaces ... ok +test tests::supported_models_output_explains_qwen_version_aliases ... ok +test tests::supported_models_output_has_no_dead_doc_link ... ok +test tests::supported_models_output_keeps_muse_glimmer_as_an_architecture_name ... ok +test tests::supported_models_output_lists_iquest_coder_under_the_llama_family ... ok +test tests::supported_models_output_mentions_every_display_name ... ok +test tests::top_level_help_keeps_model_specific_guidance_in_the_model_catalog ... ok + +test result: ok. 263 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.19s + + Running unittests src/bin/bench_decode.rs (target/test-fast/deps/mlxcel_bench_decode-d8d701711f5fa4db) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/bin/bench_engine.rs (target/test-fast/deps/mlxcel_bench_engine-2ec930d264c4367a) + +running 12 tests +test output::tests::cli_measurement_is_dense_without_server_figures ... ok +test output::tests::csv_gets_a_header_once_and_one_row_per_measurement ... ok +test output::tests::prefill_rate_is_prompt_tokens_over_ttft ... ok +test output::tests::server_measurement_derives_decode_rate_from_its_own_timing ... ok +test output::tests::side_by_side_pairs_paths_per_prompt_length_with_a_ratio ... ok +test output::tests::side_by_side_skips_the_ratio_when_the_cli_rate_is_zero ... ok +test tests::chunk_env_agreeing_value_is_accepted_and_conflict_is_an_error ... ok +test tests::chunk_env_is_set_only_when_requested_and_unset ... ok +test tests::defaults_measure_short_and_long_context_on_both_paths ... ok +test tests::repetition_penalty_reaches_the_sampling_config ... ok +test tests::storage_chunk_and_prompt_lengths_parse ... ok +test tests::zero_chunk_is_rejected ... ok + +test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/bin/engine_parity.rs (target/test-fast/deps/mlxcel_engine_parity-9ed786ceb5161668) + +running 18 tests +test report::tests::a_path_that_did_not_run_gives_an_na_row_that_is_not_a_divergence ... ok +test report::tests::divergent_streams_report_first_index_and_ids ... ok +test report::tests::identical_streams_make_an_identical_row ... ok +test report::tests::json_output_carries_streams_and_pair_results ... ok +test report::tests::json_output_marks_a_path_that_did_not_run ... ok +test report::tests::pairs_are_only_formed_between_recorded_sides_and_per_case ... ok +test report::tests::rendered_report_flags_an_unpinned_sdpa ... ok +test report::tests::rendered_report_lists_paths_pairs_and_summary ... ok +test tests::build_cases_follow_the_requested_order_and_seed ... ok +test tests::defaults_run_both_cases_with_the_prompt_cache_comparison ... ok +test tests::empty_prompt_text_is_rejected_up_front ... ok +test tests::expect_identical_requires_deterministic_sdpa ... ok +test tests::model_is_required_and_cases_parse_as_a_list ... ok +test tests::only_expect_identical_turns_divergence_into_failure ... ok +test tests::request_borrows_the_prompt_and_clones_the_sampling ... ok +test tests::server_options_carry_storage_chunk_and_cache_flag ... ok +test tests::single_token_prompt_runs_when_the_cache_case_is_off ... ok +test tests::too_short_prompt_is_rejected_before_the_prime_request ... ok + +test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/bin/mlx_server.rs (target/test-fast/deps/mlxcel_server-f103ed86e524be74) + +running 36 tests +test tests::a_mistyped_flag_after_an_option_is_reported_not_swallowed ... ok +test tests::a_negative_float_parses_in_space_form ... ok +test tests::a_negative_number_with_no_option_awaiting_a_value_is_still_an_error ... ok +test tests::a_negative_parallel_resolves_to_the_automatic_slot_count ... ok +test tests::a_negative_value_for_a_non_negative_option_fails_in_the_value_parser ... ok +test tests::canonical_llama_envs_and_endpoint_precedence_parse_together ... ok +test tests::draft_and_draft_max_aliases_resolve_identically ... ok +test tests::dry_sequence_breaker_singular_and_plural_aliases_resolve_identically ... ok +test tests::equals_form_negative_values_still_parse ... ok +test tests::every_value_taking_long_option_accepts_a_space_separated_negative_number ... ok +test tests::help_explains_embedding_and_reranking_server_modes ... ok +test tests::kv_cache_budget_defaults_to_auto ... ok +test tests::kv_cache_budget_explicit_disable_and_bytes_parse ... ok +test tests::legacy_server_mode_keeps_existing_model_path_verbatim ... ok +test tests::legacy_server_mode_resolves_repo_id_from_models_dir_override ... ok +test tests::lora_and_adapter_aliases_resolve_identically ... ok +test tests::model_draft_and_draft_model_aliases_resolve_identically ... ok +test tests::model_source_compatibility_flags_parse_into_their_own_fields ... ok +test tests::models_dir_with_a_model_argument_fails_with_the_migration_diagnostic ... ok +test tests::negative_seed_predict_and_reasoning_budget_parse_in_space_form ... ok +test tests::no_prompt_cache_flag_disables_prompt_cache ... ok +test tests::parallel_and_n_parallel_aliases_resolve_identically ... ok +test tests::parallel_one_escape_hatch_still_parses ... ok +test tests::reasoning_alias_field_defaults_parses_and_rejects_unknown_values ... ok +test tests::server_flag_names_and_aliases_are_unique ... ok +test tests::serving_throughput_defaults_are_on_out_of_the_box ... ok +test tests::settings_cli_mlxcel_server_defaults_off_and_propagates_explicit_flag ... ok +test tests::settings_cli_mlxcel_server_help_exposes_flag ... ok +test tests::slots_flags_use_last_occurrence ... ok +test tests::spec_draft_spellings_resolve_to_the_draft_controls ... ok +test tests::store_byte_budget_envs_parse_when_flags_are_absent ... ok +test tests::store_byte_budget_flags_parse ... ok +test tests::temp_and_temperature_aliases_resolve_identically ... ok +test tests::the_download_subcommand_accepts_all_three_help_spellings ... ok +test tests::the_download_subcommand_does_not_take_negative_numbers ... ok +test tests::warmup_defaults_to_enabled_and_no_warmup_disables_it ... ok + +test result: ok. 36 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s + + Running unittests src/bin/speculative_bench.rs (target/test-fast/deps/speculative_bench-873145a883391206) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/apertus_parity.rs (target/test-fast/deps/apertus_parity-c44bfaf23ceb5f2a) + +running 1 test +test apertus_greedy_parity_matches_mlx_lm ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/apply_template_tools_parity.rs (target/test-fast/deps/apply_template_tools_parity-b2007d5a95013a11) + +running 1 test +test apply_template_omits_the_tool_preamble_when_the_request_carries_no_tools ... ignored, requires local model weights and the mlxcel-server binary + +test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/attention_f16_range.rs (target/test-fast/deps/attention_f16_range-138269846d1237aa) + +running 3 tests +test phi_attention_scores_stay_in_range ... ok +test phixtral_attention_scores_stay_in_range ... ok +test stablelm_attention_scores_stay_in_range ... ok + +test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.71s + + Running tests/autotuner_outcome.rs (target/test-fast/deps/autotuner_outcome-4c20917d1b09d047) + +running 2 tests +test split_candidates_stay_inside_the_launcher_budget ... ok +test tuned_num_splits_is_never_slower_than_the_default ... Compiling CUDA kernels (first run on this host; cached for later runs)... +ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 11.52s + + Running tests/cascade_decode_dispatch.rs (target/test-fast/deps/cascade_decode_dispatch-62f66eadbdb18eda) + +running 1 test +test the_production_entry_point_dispatches_cascade_and_agrees_with_the_flat_launch ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/causal_prefill_greedy_parity.rs (target/test-fast/deps/causal_prefill_greedy_parity-b24e4113b58bf5d0) + +running 7 tests +test gemma2_greedy_parity_matches_mlx_lm ... ok +test gemma2_prefill_is_causal ... ok +test hunyuan_moe_prefill_is_causal ... ok +test hunyuan_v1_dense_greedy_parity_matches_mlx_lm ... ok +test hunyuan_v1_dense_prefill_is_causal ... ok +test internlm3_greedy_parity_matches_mlx_lm ... ok +test internlm3_prefill_is_causal ... ok + +test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/chat_template_kwargs.rs (target/test-fast/deps/chat_template_kwargs-e6294d8887f3dfd8) + +running 6 tests +test chat_accepts_dashscope_flat_preserve_thinking ... ignored, requires local model weights and the mlxcel-server binary +test chat_accepts_extra_body_nested_chat_template_kwargs ... ignored, requires local model weights and the mlxcel-server binary +test chat_accepts_flattened_openai_extra_body_preserve_thinking ... ignored, requires local model weights and the mlxcel-server binary +test chat_accepts_top_level_chat_template_kwargs ... ignored, requires local model weights and the mlxcel-server binary +test server_default_chat_template_kwargs_applies_without_override ... ignored, requires local model weights and the mlxcel-server binary +test server_refuses_malformed_chat_template_kwargs_json ... ignored, requires the mlxcel-server binary + +test result: ok. 0 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/cli_help_consistency.rs (target/test-fast/deps/cli_help_consistency-2e4bdd7019e4ac9f) + +running 27 tests +test accepted_spellings_and_description_split_an_entry_correctly ... ok +test cli_binaries_resolve_to_the_path_cargo_built_them_at ... ok +test documented_aliases_ignores_alias_names_that_only_appear_in_prose ... ok +test drafter_flag_aliases_are_documented_on_both_binaries ... ok +test dropping_a_shared_flag_alias_would_fail_the_spelling_parity_assertion ... ok +test every_flag_named_in_command_source_exists_in_some_help ... ok +test flag_help_entry_ignores_hyphen_bulleted_prose ... ok +test flag_help_entry_stops_at_the_next_flag ... ok +test long_flags_extracts_flag_tokens_and_ignores_separators_and_values ... ok +test mlxcel_generate_help_lists_all_speculative_flags_and_kinds ... ok +test mlxcel_generate_help_lists_all_turbo_flags_and_modes ... ok +test mlxcel_run_help_lists_all_turbo_flags_and_modes ... ok +test mlxcel_run_help_lists_shared_flags_and_default_model ... ok +test mlxcel_serve_help_lists_all_speculative_flags_and_kinds ... ok +test mlxcel_serve_help_lists_all_turbo_flags_and_modes ... ok +test mlxcel_server_help_lists_all_speculative_flags_and_kinds ... ok +test mlxcel_server_help_lists_all_turbo_flags_and_modes ... ok +test removing_the_rendered_alias_annotation_leaves_the_alias_undocumented ... ok +test resolve_repo_binary_derives_the_path_for_a_binary_the_compile_time_case_does_not_name ... ok +test shared_server_flags_accept_the_same_spellings_on_both_binaries ... ok +test shared_server_flags_are_described_identically_on_both_binaries ... ok +test signature_long_name_accepts_clap_signatures_and_rejects_prose ... ok +test speculative_flag_signatures_match_across_binaries ... ok +test surface_collection_and_annotation_extraction_are_exact ... ok +test the_two_server_binaries_accept_the_same_flag_surface ... ok +test top_level_help_cuts_at_a_flattened_subcommand_heading ... ok +test turbo_flag_signatures_match_across_binaries ... ok + +test result: ok. 27 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.02s + + Running tests/cpu_device_custom_kernel_gates.rs (target/test-fast/deps/cpu_device_custom_kernel_gates-219ccab8fff654e1) + +running 1 test +test custom_kernel_gates_decline_on_the_cpu_device ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.31s + + Running tests/cpu_device_sdpa.rs (target/test-fast/deps/cpu_device_sdpa-e846797475f02825) + +running 1 test +test sdpa_takes_the_fallback_on_the_cpu_device ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.25s + + Running tests/cuda_qmm_determinism.rs (target/test-fast/deps/cuda_qmm_determinism-0580441a9e835343) + +running 1 test +test temp0_quantized_forward_is_bitwise_deterministic ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.66s + + Running tests/cuda_sdpa_determinism.rs (target/test-fast/deps/cuda_sdpa_determinism-11feef284e612c65) + +running 3 tests +test cudnn_decode_sdpa_over_a_padded_kv_cache_is_bitwise_deterministic ... ok +test temp0_qwen3_decode_past_the_cudnn_sdpa_threshold_is_bitwise_deterministic ... ok +test two_pass_vector_decode_sdpa_is_bitwise_deterministic ... ok + +test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.89s + + Running tests/dead_doc_pointers.rs (target/test-fast/deps/dead_doc_pointers-ca67affaaac25f60) + +running 2 tests +test no_reference_to_the_nonexistent_docs_model_tests_md ... ok +test no_reference_to_the_nonexistent_docs_testing_md ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/deepseek_v2_greedy_parity.rs (target/test-fast/deps/deepseek_v2_greedy_parity-d173298dd0dfe794) + +running 2 tests +test deepseek_v2_greedy_parity_matches_mlx_lm ... ok +test deepseek_v2_prefill_is_causal ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/deepseek_v4_real_model.rs (target/test-fast/deps/deepseek_v4_real_model-c15e8bbf4b076998) + +running 6 tests +test deepseek_v4_real_config_parses_and_validates ... ok +test deepseek_v4_real_model_decode_crosses_pooling_windows ... ignored, real-model heavy (~151 GB checkpoint on disk; needs a high-memory Apple Silicon host) +test deepseek_v4_real_model_hisa_decode_cost_scaling ... ignored, real-model heavy (~151 GB checkpoint on disk; needs a high-memory Apple Silicon host) +test deepseek_v4_real_model_loads_and_generates_coherently ... ignored, real-model heavy (~151 GB checkpoint on disk; needs a high-memory Apple Silicon host) +test deepseek_v4_real_model_long_context_engages_hisa_hierarchy ... ignored, real-model heavy (~151 GB checkpoint on disk; needs a high-memory Apple Silicon host) +test deepseek_v4_real_model_long_context_hits_sparse_and_compressed_paths ... ignored, real-model heavy (~151 GB checkpoint on disk; needs a high-memory Apple Silicon host) + +test result: ok. 1 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/deepseek_vl_v2_parity.rs (target/test-fast/deps/deepseek_vl_v2_parity-c0ccf4da9d490ca0) + +running 4 tests +test detects_deepseek_vl_v2_model_type ... ok +test image_forward_produces_finite_logits ... ok +test processor_square_fixture_is_one_global_one_tile_421_tokens ... ok +test text_only_forward_produces_finite_logits ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 15.66s + + Running tests/deepseekocr_2_resampler.rs (target/test-fast/deps/deepseekocr_2_resampler-ad3501f1d9ed4877) + +running 2 tests +test mixed_mask_blocks_image_to_query_but_allows_query_to_image ... ok +test resampler_selects_query_bank_and_slices_queries ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.52s + + Running tests/deepseekocr_encoder_parity.rs (target/test-fast/deps/deepseekocr_encoder_parity-9e87576af190a9b5) + +running 1 test +test sam_and_clip_encoders_match_reference ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/disaggregated_e2e.rs (target/test-fast/deps/disaggregated_e2e-4848b86f61cec466) + +running 51 tests +test e2e_1p1d_decode_scheduler_basic_flow ... ok +test e2e_1p1d_handoff_and_acknowledgment ... ok +test e2e_1p1d_prefill_scheduler_basic_flow ... ok +test e2e_1p1d_request_router_full_lifecycle ... ok +test e2e_1p1d_stream_bridge_full_flow ... ok +test e2e_1p2d_decode_scheduler_multi_sequence ... ok +test e2e_1p2d_routing_distributes_across_decode_nodes ... ok +test e2e_2p2d_concurrent_prefills ... ok +test e2e_2p2d_full_pipeline_multiple_requests ... ok +test e2e_2p2d_routing_uses_both_prefill_nodes ... ok +test e2e_benchmark_1p1d_basic ... ok +test e2e_benchmark_1p2d_basic ... ok +test e2e_benchmark_2p2d_basic ... ok +test e2e_benchmark_cache_transfer_throughput_measurable ... ok +test e2e_benchmark_crossover_analysis ... ok +test e2e_benchmark_prompt_length_scaling ... ok +test e2e_benchmark_report_generation ... ok +test e2e_chunked_prefill_coordinator ... ok +test e2e_chunked_prefill_short_prompt_skips_chunking ... ok +test e2e_ci_benchmark_completes_quickly ... ok +test e2e_ci_no_external_dependencies ... ok +test e2e_concurrent_requests_stress ... ok +test e2e_decode_only_guard ... ok +test e2e_decode_scheduler_backpressure_ingestion_queue_full ... ok +test e2e_decode_scheduler_memory_pressure_rejects ... ok +test e2e_decode_scheduler_statistics ... ok +test e2e_disaggregated_metrics_recording ... ok +test e2e_disaggregated_server_hybrid_ready ... ok +test e2e_disaggregated_server_prefill_only ... ok +test e2e_handoff_failure_with_retry ... ok +test e2e_handoff_timeout_collection ... ok +test e2e_hybrid_guard_zero_overhead ... ok +test e2e_node_failure_no_candidates_marks_failed ... ok +test e2e_node_failure_reroutes_decoding_requests ... ok +test e2e_node_failure_reroutes_prefilling_requests ... ok +test e2e_prefill_only_guard ... ok +test e2e_prefill_scheduler_concurrency_limit ... ok +test e2e_prefill_scheduler_memory_pressure_rejects ... ok +test e2e_prefill_scheduler_statistics ... ok +test e2e_router_backpressure_at_capacity ... ok +test e2e_router_guard ... ok +test e2e_router_metrics_snapshot ... ok +test e2e_serving_config_from_cli_decode_only_no_peers_fails ... ok +test e2e_serving_config_from_cli_none_returns_none ... ok +test e2e_serving_config_from_cli_prefill_only ... ok +test e2e_serving_mode_from_node_role ... ok +test e2e_stream_bridge_detects_sequence_gap ... ok +test e2e_stream_bridge_handoff_timeout ... ok +test e2e_stream_bridge_rejects_decode_before_prefill ... ok +test e2e_stream_bridge_rejects_out_of_order_first_token ... ok +test e2e_stream_bridge_ttft_measurement ... ok + +test result: ok. 51 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.65s + + Running tests/disaggregated_router_e2e.rs (target/test-fast/deps/disaggregated_router_e2e-7e3e5b706b1b110e) + +running 7 tests +test disaggregated_router_balances_and_survives_node_failure ... ignored, spawns five real mlxcel-server processes (2 prefill + 2 decode + router); run with --ignored +test disaggregated_router_chat_usage_matches_single_node_byte_fallback ... ignored, spawns four real mlxcel-server processes loading minicpm-2b-4bit; run with --ignored +test disaggregated_router_completions_match_single_node ... ignored, spawns four real mlxcel-server processes loading qwen3-0.6b-4bit; run with --ignored +test disaggregated_router_completions_match_single_node_byte_fallback ... ignored, spawns four real mlxcel-server processes loading minicpm-2b-4bit; run with --ignored +test disaggregated_router_filters_thinking_output ... ignored, spawns four real mlxcel-server processes loading qwen3-0.6b-4bit; run with --ignored +test disaggregated_router_rejects_model_owned_family_and_keeps_serving ... ignored, spawns three real mlxcel-server processes loading gemma-3-1b-it-4bit; run with --ignored +test disaggregated_router_streams_correct_output ... ignored, spawns three real mlxcel-server processes loading qwen3-0.6b-4bit; run with --ignored + +test result: ok. 0 passed; 0 failed; 7 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/disaggregated_serving_e2e.rs (target/test-fast/deps/disaggregated_serving_e2e-1e4b34efeb44049f) + +running 1 test +test disaggregated_two_process_handoff_matches_single_node ... ignored, spawns two real mlxcel-server processes loading qwen3-0.6b-4bit; run with --ignored + +test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/dots_ocr_parity.rs (target/test-fast/deps/dots_ocr_parity-67cba3b161e4505a) + +running 2 tests +test vision_tower_handles_multi_image_block_diagonal ... ok +test vision_tower_merges_non_square_grid_to_text_width ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.57s + + Running tests/embedding_pooling_normalize_real.rs (target/test-fast/deps/embedding_pooling_normalize_real-d10955dd8b9aaa7e) + +running 2 tests +test a_real_reranker_orders_documents_and_breaks_ties_by_index ... ok +test pooling_and_normalization_hold_on_real_checkpoints ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.66s + + Running tests/ernie4_5_moe_vl_parity.rs (target/test-fast/deps/ernie4_5_moe_vl_parity-c5a44a881cbb174d) + +running 5 tests +test debug_image_greedy_ids ... ignored, diagnostic; needs a real ERNIE-4.5 MoE VL checkpoint on disk +test detects_ernie4_5_moe_vl_model_type ... ok +test image_forward_produces_finite_logits ... ok +test processor_emits_merge_window_rows ... ok +test text_only_forward_produces_finite_logits ... ok + +test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.24s + + Running tests/falcon_ocr_parity.rs (target/test-fast/deps/falcon_ocr_parity-7fc0e6d322316955) + +running 6 tests +test a_forward_pass_actually_runs_every_decoder_layer ... ok +test a_text_only_prefill_is_causal_without_being_handed_a_mask ... ok +test incremental_decode_matches_a_full_sequence_pass ... ok +test the_declared_sequence_state_layout_is_a_dense_cache_per_layer ... ok +test the_hybrid_mask_differs_from_a_plain_causal_prefill ... ok +test the_per_head_sinks_change_the_attention_output ... ok + +test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.57s + + Running tests/fastvlm_parity.rs (target/test-fast/deps/fastvlm_parity-2042aa80ba2a521c) + +running 4 tests +test detects_fastvlm_model_type ... ok +test image_forward_produces_finite_logits ... ok +test processor_emits_1024_square_channels_first ... ok +test text_only_forward_produces_finite_logits ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.64s + + Running tests/florence2_fusion_parity.rs (target/test-fast/deps/florence2_fusion_parity-2583c03819278165) + +running 2 tests +test florence2_fusion_config_parses_real_checkpoint ... ok +test florence2_fusion_matches_mlx_vlm_reference ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/florence2_postprocess_parity.rs (target/test-fast/deps/florence2_postprocess_parity-19db236ea85faf3c) + +running 6 tests +test boxes_match_upstream ... ok +test open_vocabulary_detection_matches_upstream ... ok +test polygons_match_upstream ... ok +test pure_text_matches_upstream ... ok +test quad_boxes_match_upstream ... ok +test the_parity_tables_cover_every_result_variant ... ok + +test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/florence2_processor_parity.rs (target/test-fast/deps/florence2_processor_parity-4b74746a8bc1f78d) + +running 4 tests +test detection_and_ocr_parse_into_reference_coordinates ... ok +test preprocessing_matches_the_checkpoint_processor ... ok +test task_prompts_tokenize_exactly_as_the_reference ... ok +test task_runs_match_the_reference_end_to_end ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/florence2_quantized_parity.rs (target/test-fast/deps/florence2_quantized_parity-918e1afbf870f2d1) + +running 4 tests +test florence2_other_quantized_bit_widths_load ... ok +test florence2_quantization_cost_matches_mlx_vlm ... ok +test florence2_quantized_checkpoint_loads ... ok +test florence2_quantized_matches_mlx_vlm_reference ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/florence2_text_parity.rs (target/test-fast/deps/florence2_text_parity-9dce19252589f2a1) + +running 1 test +test florence2_text_core_matches_mlx_vlm_reference ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/florence2_vision_parity.rs (target/test-fast/deps/florence2_vision_parity-9ab1c5fcb66e84b1) + +running 2 tests +test florence2_davit_matches_mlx_vlm_reference ... ok +test florence2_vision_config_parses_real_checkpoint ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/gcp_predict_real_model.rs (target/test-fast/deps/gcp_predict_real_model-ad2470a51cd171da) + +running 1 test +test predict_serves_a_chat_completions_batch_against_a_real_model ... ignored, requires local model weights and a built mlxcel-server binary + +test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/glm4v_moe_parity.rs (target/test-fast/deps/glm4v_moe_parity-58a3c5aaa3117dc7) + +running 4 tests +test detects_and_loads_real_model_as_vlm ... ok +test detects_glm4v_moe_model_type_from_config ... ok +test parses_shared_vision_config ... ok +test text_only_forward_produces_finite_logits ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 39.60s + + Running tests/glm4v_parity.rs (target/test-fast/deps/glm4v_parity-6de5375d410ba9a4) + +running 5 tests +test detects_and_loads_real_model_as_vlm ... ok +test detects_glm4v_model_type_from_config ... ok +test parses_glm4v_vision_config ... ok +test text_only_forward_produces_finite_logits ... ok +test vision_config_applies_defaults ... ok + +test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.11s + + Running tests/glm_ocr_parity.rs (target/test-fast/deps/glm_ocr_parity-420214652985ebca) + +running 4 tests +test detects_and_loads_real_model_as_vlm ... ok +test detects_glm_ocr_model_type_from_config ... ok +test parses_glm_ocr_vision_config ... ok +test text_only_forward_produces_finite_logits ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.38s + + Running tests/got_ocr_prompt_parity.rs (target/test-fast/deps/got_ocr_prompt_parity-767e02b0997a5a04) + +running 3 tests +test got_format_mode_prompt_ids_match_the_reference_tokenizer ... ignored, needs a GOT-OCR 2.0 checkpoint on disk +test got_prompt_ids_match_the_reference_tokenizer ... ignored, needs a GOT-OCR 2.0 checkpoint on disk +test server_render_and_cli_instruction_tokenize_identically ... ignored, needs a GOT-OCR 2.0 checkpoint on disk + +test result: ok. 0 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/got_ocr_real_model.rs (target/test-fast/deps/got_ocr_real_model-4359125e618e9ca2) + +running 1 test +test got_greedy_decode_matches_the_reference_on_both_layouts ... ignored, requires a real checkpoint + +test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/granite4_vision_parity.rs (target/test-fast/deps/granite4_vision_parity-c95852f9d741c413) + +running 3 tests +test detects_and_loads_real_model_as_vlm ... ok +test detects_granite4_vision_model_type ... ok +test text_only_forward_produces_finite_logits ... ok + +test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.45s + + Running tests/granite_vision_parity.rs (target/test-fast/deps/granite_vision_parity-f1608c43da7d0138) + +running 4 tests +test anyres_token_math_is_self_consistent ... ok +test detects_and_loads_real_model_as_vlm ... ok +test detects_both_granite_vision_spellings ... ok +test text_only_forward_produces_finite_logits ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.46s + + Running tests/hunyuan_vl_parity.rs (target/test-fast/deps/hunyuan_vl_parity-b2021063bb475f35) + +running 4 tests +test detects_hunyuan_vl_model_type ... ok +test image_forward_produces_finite_logits ... ok +test processor_emits_raster_rows_and_count ... ok +test text_only_forward_produces_finite_logits ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.26s + + Running tests/internvl_parity.rs (target/test-fast/deps/internvl_parity-06fe5da83044d70e) + +running 4 tests +test detects_internvl_chat_model_type ... ok +test image_forward_produces_finite_logits ... ok +test processor_tiles_square_fixture_into_one_tile ... ok +test text_only_forward_produces_finite_logits ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.16s + + Running tests/iquestloopcoder_parity.rs (target/test-fast/deps/iquestloopcoder_parity-660c85f48d3b81fa) + +running 1 test +test iquestloopcoder_matches_the_float32_oracle ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/kimi_vl_parity.rs (target/test-fast/deps/kimi_vl_parity-26ed5217c0889d9c) + +running 3 tests +test detects_kimi_vl_and_kimi_k25_model_types ... ok +test kimi_vl_metadata_is_registered ... ok +test moonvit_encoder_and_connector_shapes_match_reference ... ok + +test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.63s + + Running tests/lang_bias.rs (target/test-fast/deps/lang_bias-b5d7e56713d0931b) + +running 5 tests +test latency_lang_bias_overhead_below_5_percent ... ignored, requires local model weights and the mlxcel binary +test scenario_a_baseline_records_script_composition ... ignored, requires local model weights and the mlxcel binary +test scenario_b_suppresses_ja_zh ... ignored, requires local model weights and the mlxcel binary +test scenario_c_promotes_ko ... ignored, requires local model weights and the mlxcel binary +test scenario_d_strict_ko_suppress_preserves_han ... ignored, requires local model weights and the mlxcel binary + +test result: ok. 0 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/llama_chat_template_cli.rs (target/test-fast/deps/llama_chat_template_cli-ba7b27b2422e142c) + +running 10 tests +test a_bool_pair_environment_value_reaches_the_resolution ... ok +test a_builtin_chat_template_name_is_refused_rather_than_taken_literally ... ok +test actual_template_text_is_still_accepted ... ok +test an_unparseable_bool_pair_environment_value_stops_startup_like_upstream ... ok +test every_b10621_chat_short_spelling_reaches_its_own_option ... ok +test every_b10621_chat_template_spelling_reaches_mlxcels_own_classification ... ok +test inert_values_fail_only_for_the_missing_model ... ok +test no_compatibility_only_chat_option_appears_in_help ... ok +test the_reasoning_format_environment_variable_is_llama_arg_think ... ok +test unsupported_values_are_rejected_with_the_option_and_the_accepted_set ... ok + +test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 44.45s + + Running tests/llama_compat_manifest.rs (target/test-fast/deps/llama_compat_manifest-fcd85f2b5b6009a5) + +running 4 tests +test manifest_matches_official_b10621_archive_when_available ... ok +test manifest_option_claims_hold_on_both_server_binaries ... ok +test the_flag_surface_sentinel_never_appears_in_help ... ok +test unclaimed_option_entries_are_accepted_by_neither_server_binary ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.45s + + Running tests/llama_compat_rope_freq_base.rs (target/test-fast/deps/llama_compat_rope_freq_base-52ae5c644ce3d347) + +running 1 test +test rope_freq_base_replaces_the_checkpoints_rope_theta_in_the_table ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.25s + + Running tests/llama_compat_rope_scaling_override.rs (target/test-fast/deps/llama_compat_rope_scaling_override-634e4027e5826a68) + +running 1 test +test rope_scaling_none_replaces_the_checkpoints_banded_table_and_is_verified ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.25s + + Running tests/llama_compat_utility_routes.rs (target/test-fast/deps/llama_compat_utility_routes-47e5d7c8f7329113) + +running 3 tests +test deepseek_coder_resolves_its_fullwidth_fim_markers ... ok +test llama_tokenizer_serves_the_tokenize_schema ... ok +test qwen_tokenizer_serves_the_tokenize_schema_and_declares_fim ... ok + +test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.42s + + Running tests/llama_compat_yarn_override.rs (target/test-fast/deps/llama_compat_yarn_override-d0f6c02aebc9d4ba) + +running 1 test +test rope_scaling_yarn_with_knobs_reaches_the_rotation_and_is_verified ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.26s + + Running tests/llama_ggml_runtime_cli.rs (target/test-fast/deps/llama_ggml_runtime_cli-3053a09c56967f3f) + +running 11 tests +test a_bool_pair_environment_value_reaches_the_classifier ... ok +test a_ggml_kv_cache_quantizer_is_rejected_with_the_mlxcel_vocabulary ... ok +test a_partial_gpu_layer_budget_is_rejected_and_a_full_one_is_not ... ok +test a_value_less_flag_fires_from_the_environment_only_on_the_truthy_set ... ok +test an_unparseable_bool_pair_environment_value_stops_startup_like_upstream ... ok +test every_b10621_ggml_spelling_reaches_mlxcels_own_classification ... ok +test every_b10621_short_spelling_reaches_its_own_option ... ok +test inert_values_fail_only_for_the_missing_model ... ok +test no_ggml_runtime_option_appears_in_help ... ok +test no_short_spelling_shadows_an_mlxcel_option ... ok +test unsupported_values_are_rejected_with_option_value_limitation_and_alternative ... ok + +test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 127.24s + + Running tests/llama_logging_presets.rs (target/test-fast/deps/llama_logging_presets-8a4f2177a9edd8e6) + +running 16 tests +test a_directory_as_the_log_destination_fails_at_startup ... ok +test a_log_file_from_a_real_run_contains_no_api_key_or_repository_token ... ok +test a_log_file_from_a_real_run_is_created_owner_only ... ok +test a_preset_is_refused_before_the_model_reference_is_resolved ... ok +test an_unknown_log_colors_value_is_refused ... ok +test an_unwritable_log_destination_fails_at_startup_rather_than_falling_back ... ok +test cache_list_needs_no_model_argument ... ok +test cache_list_reports_the_store_in_b10621s_format ... ok +test every_preset_is_refused_on_both_binaries_with_a_download_example ... ok +test log_prompts_dir_is_refused_and_never_creates_the_directory ... ok +test no_canary_leaks_when_the_run_fails_before_the_subscriber_exists ... ok +test the_completion_script_hides_the_compatibility_surface_that_is_hidden ... ok +test the_completion_script_is_syntactically_valid_bash ... ok +test the_completion_script_offers_visible_compatibility_options ... ok +test the_completion_script_registers_against_the_invoked_command ... ok +test the_llama_server_short_spelling_of_cache_list_is_accepted ... ok + +test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 19.38s + + Running tests/llama_model_source_cli.rs (target/test-fast/deps/llama_model_source_cli-ccb97ca32c61fd40) + +running 16 tests +test a_gguf_model_path_is_refused_on_both_binaries ... ok +test a_split_gguf_shard_is_refused_on_both_binaries ... ok +test a_value_that_spells_a_short_option_survives_the_pre_pass ... ok +test always_rejected_model_source_flags_are_hidden_from_help ... ok +test an_hf_repo_quant_suffix_is_refused_on_both_binaries ... ok +test both_server_binaries_are_resolvable ... ok +test docker_repo_is_refused_on_both_binaries ... ok +test every_llama_short_model_source_spelling_reaches_its_option ... ok +test help_never_presents_gguf_as_something_mlxcel_loads ... ok +test help_never_renders_a_resolved_credential_from_the_environment ... ok +test hf_file_is_refused_on_both_binaries ... ok +test model_url_is_refused_and_translates_a_huggingface_url ... ok +test naming_no_model_source_at_all_lists_every_way_to_supply_one ... ok +test offline_mode_refuses_an_uncached_repo_without_downloading ... ok +test the_hf_short_spelling_does_not_silently_render_help ... ok +test the_hf_token_short_spelling_is_accepted_as_a_value_taking_option ... ok + +test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 15.21s + + Running tests/mamba2_hybrid_decode_finite.rs (target/test-fast/deps/mamba2_hybrid_decode_finite-add021fce9fc603e) + +running 2 tests +test falcon_h1_decode_is_finite ... ignored, M5-only: the guarded failure cannot occur on the M1/M4 CI runners +test granitemoehybrid_decode_is_finite ... ignored, M5-only: the guarded failure cannot occur on the M1/M4 CI runners + +test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/mamba2_hybrid_finite.rs (target/test-fast/deps/mamba2_hybrid_finite-967483ae9fbb74dc) + +running 2 tests +test mamba2_hybrid_decode_is_finite ... ok +test mamba2_hybrid_decode_is_finite_tiny ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 17.60s + + Running tests/max_kv_size_dense_e2e.rs (target/test-fast/deps/max_kv_size_dense_e2e-51bbe6daacbce4e6) + +running 1 test +test dense_max_kv_size_prompt_over_cap_stays_coherent ... ignored, requires the mlxcel-server binary and a local checkpoint (MLXCEL_MAXKV_E2E_MODEL) + +test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/metal_block_vs_chain_op_parity.rs (target/test-fast/deps/metal_block_vs_chain_op_parity-bf79e9600bd70b8e) + +running 2 tests +test matmul_block_width_sweep ... ok +test per_op_block_vs_chain_parity_at_block_three ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/mllama_parity.rs (target/test-fast/deps/mllama_parity-801c7c3c25a7c428) + +running 8 tests +test detects_mllama_model_type ... ok +test full_tile_count_states_are_byte_identical_to_legacy ... ok +test nonzero_gate_cross_attention_consults_vision_features ... ok +test prepare_stashes_real_tile_states ... ok +test processor_packs_tower_contract ... ok +test ragged_multi_image_states_concatenate_real_rows ... ok +test sub_max_real_tiles_keep_the_legacy_real_rows_byte_identical ... ok +test zero_gate_cross_attention_is_pass_through ... ok + +test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.78s + + Running tests/model_loader_stdout_guard.rs (target/test-fast/deps/model_loader_stdout_guard-0872d345b83daea5) + +running 2 tests +test matcher_distinguishes_stderr_comments_and_identifiers ... ok +test model_loaders_do_not_write_to_stdout ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s + + Running tests/model_loading.rs (target/test-fast/deps/model_loading-51125a9d94a8a1e6) + +running 2 tests +test test_detect_llama_model_type ... ok +test test_detect_moondream3_model_type ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/molmo_parity.rs (target/test-fast/deps/molmo_parity-78a82be660460062) + +running 4 tests +test detects_molmo_model_type ... ok +test image_forward_produces_finite_logits ... ok +test processor_produces_consistent_crop_and_token_shapes ... ok +test text_only_forward_produces_finite_logits ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.39s + + Running tests/moondream2_parity.rs (target/test-fast/deps/moondream2_parity-64de1e4a812c5df6) + +running 8 tests +test detects_moondream2_from_checkpoint ... ok +test detects_moondream2_model_type_from_config ... ok +test image_forward_produces_finite_logits ... ignored, requires real checkpoint; orchestrator validates +test processor_emits_channels_first_crops_for_fixture ... ok +test real_checkpoint_is_starmie_era ... ok +test real_checkpoint_tokenizer_resolves_to_starmie ... ignored, resolves the starmie tokenizer from the Hub (network or hf-hub cache) +test text_config_matches_phi_style_reference ... ok +test text_only_forward_produces_finite_logits ... ignored, requires real checkpoint; orchestrator validates + +test result: ok. 5 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 0.01s + + Running tests/nemotron_parse_real_model.rs (target/test-fast/deps/nemotron_parse_real_model-70ad37b9f5b06003) + +running 3 tests +test eight_bit_checkpoint_matches_reference_greedy_tokens ... ignored, requires mlx-community/Nemotron-Parse-2.0-8bit +test four_bit_checkpoint_reads_the_page ... ignored, requires mlx-community/Nemotron-Parse-2.0-4bit +test hub_checkpoint_matches_reference_greedy_tokens ... ignored, requires the nvidia/NVIDIA-Nemotron-Parse-2.0 checkpoint + +test result: ok. 0 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/nemotron_voicechat_codec_real.rs (target/test-fast/deps/nemotron_voicechat_codec_real-a611132170248ea5) + +running 1 test +test nemotron_voicechat_codec_matches_reference ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/nemotron_voicechat_front_real.rs (target/test-fast/deps/nemotron_voicechat_front_real-973fbeb950daea0e) + +running 1 test +test voicechat_front_matches_reference ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/nemotron_voicechat_llm_real.rs (target/test-fast/deps/nemotron_voicechat_llm_real-a8c1e68664c3d216) + +running 1 test +test duplex_llm_matches_reference_tokens ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/nemotron_voicechat_offline_real.rs (target/test-fast/deps/nemotron_voicechat_offline_real-d41233eca36885fd) + +running 1 test +test offline_turn_matches_reference ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/nemotron_voicechat_stream_real.rs (target/test-fast/deps/nemotron_voicechat_stream_real-88bd5a8555f1dc8c) + +running 1 test +test voicechat_stream_perception_matches_reference ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/nemotron_voicechat_streaming_real.rs (target/test-fast/deps/nemotron_voicechat_streaming_real-e64bfda065b15f86) + +running 1 test +test streaming_first_frame_matches_offline ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/nemotron_voicechat_tts_real.rs (target/test-fast/deps/nemotron_voicechat_tts_real-cf2d97a8b12f84a2) + +running 1 test +test ear_tts_matches_reference ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/paddleocr_vl_parity.rs (target/test-fast/deps/paddleocr_vl_parity-699fcb2a45b1b72c) + +running 8 tests +test compute_grid_thw_uses_smart_resized_patch_counts ... ok +test preprocess_emits_flat_per_patch_pixel_values ... ok +test projector_merges_spatial_blocks_to_text_hidden ... ok +test smart_resize_matches_reference_formula ... ok +test text_model_forward_produces_vocab_logits ... ok +test vision_encoder_forward_handles_mixed_dynamic_resolution_batch ... ok +test vision_encoder_forward_handles_unique_variable_resolution_batch ... ok +test vision_encoder_forward_produces_per_token_hidden_states ... ok + +test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.27s + + Running tests/paged_decode_v2_greedy_parity.rs (target/test-fast/deps/paged_decode_v2_greedy_parity-35b27959d4a264c3) + +running 3 tests +test paged_decode_v2_greedy_parity_llama3 ... ignored, loads a real checkpoint and runs long real GPU forwards; run with --ignored +test paged_decode_v2_greedy_parity_qwen25 ... ignored, loads a real checkpoint and runs long real GPU forwards; run with --ignored +test paged_decode_v2_greedy_parity_qwen3 ... ignored, loads a real checkpoint and runs long real GPU forwards; run with --ignored + +test result: ok. 0 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/paged_kv_serialize_parity.rs (target/test-fast/deps/paged_kv_serialize_parity-f358287d400f4c09) + +running 2 tests +test paged_serialize_handoff_matches_single_node_llama3 ... ignored, loads llama-3.2-1b-4bit and runs real GPU forwards; run with --ignored +test paged_serialize_handoff_matches_single_node_qwen3 ... ignored, loads qwen3-0.6b-4bit and runs real GPU forwards; run with --ignored + +test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/paged_prefix_share_parity.rs (target/test-fast/deps/paged_prefix_share_parity-931ca02c63f47cbd) + +running 7 tests +test paged_clone_and_pin_share_matches_cold_runs_llama3 ... ignored, loads llama-3.2-1b-4bit and runs real GPU forwards; run with --ignored +test paged_clone_and_pin_share_matches_cold_runs_qwen3 ... ignored, loads qwen3-0.6b-4bit and runs real GPU forwards; run with --ignored +test paged_clone_whole_entry_unaligned_floors_and_matches_cold_llama3 ... ignored, loads llama-3.2-1b-4bit and runs real GPU forwards; run with --ignored +test paged_partial_prefix_share_matches_cold_run_llama3 ... ignored, loads llama-3.2-1b-4bit and runs real GPU forwards; run with --ignored +test paged_partial_prefix_share_matches_cold_run_qwen3 ... ignored, loads qwen3-0.6b-4bit and runs real GPU forwards; run with --ignored +test paged_prefix_share_matches_cold_run_llama3 ... ignored, loads llama-3.2-1b-4bit and runs real GPU forwards; run with --ignored +test paged_prefix_share_matches_cold_run_qwen3 ... ignored, loads qwen3-0.6b-4bit and runs real GPU forwards; run with --ignored + +test result: ok. 0 passed; 0 failed; 7 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/paged_real_model_parity.rs (target/test-fast/deps/paged_real_model_parity-79904217e6718907) + +running 1 test +test paged_kvcache_matches_dense_qwen3_06b ... ignored, loads qwen3-0.6b-4bit and runs a real GPU forward; run with --ignored + +test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/paged_scheduler_parity.rs (target/test-fast/deps/paged_scheduler_parity-7d111b8f3d81ed82) + +running 5 tests +test cuda_paged_scheduler_qwen3_matches_dense_within_logit_contract ... ignored, loads qwen3-0.6b-4bit and runs the CUDA paged/dense logit contract +test paged_scheduler_batched_decode_matches_dense_llama3 ... ignored, loads llama-3.2-1b-4bit and runs a real GPU forward; run with --ignored +test paged_scheduler_batched_decode_matches_dense_qwen3 ... ignored, loads qwen3-0.6b-4bit and runs a real GPU forward; run with --ignored +test paged_scheduler_single_sequence_matches_dense_llama3 ... ignored, loads llama-3.2-1b-4bit and runs a real GPU forward; run with --ignored +test paged_scheduler_single_sequence_matches_dense_qwen3 ... ignored, loads qwen3-0.6b-4bit and runs a real GPU forward; run with --ignored + +test result: ok. 0 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/phi4mm_audio_parity.rs (target/test-fast/deps/phi4mm_audio_parity-5eb0a15b0d76628e) + +running 1 test +test pinned_phi4mm_audio_intermediates_kv_and_greedy_tokens_match ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/pipeline_auto_partition_real_models.rs (target/test-fast/deps/pipeline_auto_partition_real_models-8db47da5a21d9350) + +running 2 tests +test gemma4_auto_partition_two_stage_no_manual_layers ... ignored, requires local gemma-4-e2b-it-4bit weights and the mlxcel binary +test gemma4_manual_partition_still_works ... ignored, requires local gemma-4-e2b-it-4bit weights and the mlxcel binary + +test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/pipeline_ci_multi_stage_real_models.rs (target/test-fast/deps/pipeline_ci_multi_stage_real_models-a43a41029bda035a) + +running 4 tests +test pipeline_heterogeneous_memory_admission_rejects_oom ... ok +test pipeline_heterogeneous_memory_partition_is_stable ... ok +test pipeline_multi_stage_three_host_real_model_parity ... ignored, requires local model weights and is driven by the on-demand self-hosted 3-host CI job +test pipeline_multi_stage_two_host_logical_smoke ... ignored, requires local model weights; CI drives with --ignored + +test result: ok. 2 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/pipeline_cli_real_models.rs (target/test-fast/deps/pipeline_cli_real_models-207e16982539c7fe) + +running 1 test +test pipeline_cli_llama_real_model_parity ... ignored, requires local model weights and the mlxcel binary + +test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/pipeline_elastic_repartition_real_models.rs (target/test-fast/deps/pipeline_elastic_repartition_real_models-d66be1191ccd53d2) + +running 1 test +test elastic_repartition_completes_and_preserves_continued_serving ... ignored, requires local llama-3.2-1b-4bit weights and the mlxcel binary + +test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/pipeline_lora_composition_real_models.rs (target/test-fast/deps/pipeline_lora_composition_real_models-ead36b0820d00cfa) + +running 1 test +test pipeline_cli_llama_real_model_lora_parity ... ignored, requires local model weights, a paired LoRA adapter, and the mlxcel binary + +test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/pipeline_observability_real_models.rs (target/test-fast/deps/pipeline_observability_real_models-d0030065f08d8806) + +running 1 test +test pp_observability_populates_all_four_metric_families ... ignored, requires local llama-3.2-1b-4bit weights and the mlxcel binary + +test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/pipeline_remote_real_models.rs (target/test-fast/deps/pipeline_remote_real_models-33a14d3d4e098b14) + +running 11 tests +test pipeline_remote_runtime_gemma3_real_model_parity_and_cleanup ... ignored, requires local model weights and TCP-bound remote pipeline stages +test pipeline_remote_runtime_gemma4_real_model_parity_and_cleanup ... ignored, requires local model weights and TCP-bound remote pipeline stages +test pipeline_remote_runtime_glm4_real_model_parity_and_cleanup ... ignored, requires local model weights and TCP-bound remote pipeline stages +test pipeline_remote_runtime_glm_moe_dsa_real_model_parity_and_cleanup ... ignored, requires local model weights and TCP-bound remote pipeline stages +test pipeline_remote_runtime_gpt_oss_real_model_parity_and_cleanup ... ignored, requires local model weights and TCP-bound remote pipeline stages +test pipeline_remote_runtime_llama_drain_and_shutdown_transition ... ignored, requires local model weights and TCP-bound remote pipeline stages +test pipeline_remote_runtime_llama_rdma_real_model_parity_and_cleanup ... ignored, requires local model weights and RDMA-capable or fallback-enabled loopback +test pipeline_remote_runtime_llama_real_model_parity_and_cleanup ... ignored, requires local model weights and TCP-bound remote pipeline stages +test pipeline_remote_runtime_llama_thunderbolt_bridge_parity ... ignored, requires local model weights and an active Thunderbolt Bridge interface +test pipeline_remote_runtime_qwen35_real_model_parity_and_cleanup ... ignored, requires local model weights and TCP-bound remote pipeline stages +test pipeline_remote_runtime_qwen3_real_model_parity_and_cleanup ... ignored, requires local model weights and TCP-bound remote pipeline stages + +test result: ok. 0 passed; 0 failed; 11 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/pipeline_server_real_models.rs (target/test-fast/deps/pipeline_server_real_models-2e5a52c9f63f50ba) + +running 2 tests +test pipeline_server_llama_dense_baseline_smoke ... ignored, requires local model weights and the mlxcel-server binary +test pipeline_server_llama_multi_request_smoke ... ignored, requires local model weights and the mlxcel-server binary + +test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/pipeline_server_remote_real_models.rs (target/test-fast/deps/pipeline_server_remote_real_models-1868bd067b6d0b68) + +running 8 tests +test pipeline_server_remote_coordinator_gemma3_matches_dense_baseline ... ignored, requires local model weights and TCP-bound remote stage services +test pipeline_server_remote_coordinator_gemma4_matches_dense_baseline ... ignored, requires local model weights and TCP-bound remote stage services +test pipeline_server_remote_coordinator_glm4_matches_dense_baseline ... ignored, requires local model weights and TCP-bound remote stage services +test pipeline_server_remote_coordinator_glm_moe_dsa_matches_dense_baseline ... ignored, requires local model weights and TCP-bound remote stage services +test pipeline_server_remote_coordinator_gpt_oss_matches_dense_baseline ... ignored, requires local model weights and TCP-bound remote stage services +test pipeline_server_remote_coordinator_llama_matches_dense_baseline ... ignored, requires local model weights and TCP-bound remote stage services +test pipeline_server_remote_coordinator_qwen35_matches_dense_baseline ... ignored, requires local model weights and TCP-bound remote stage services +test pipeline_server_remote_coordinator_qwen3_matches_dense_baseline ... ignored, requires local model weights and TCP-bound remote stage services + +test result: ok. 0 passed; 0 failed; 8 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/pipeline_stage_executor_real_models.rs (target/test-fast/deps/pipeline_stage_executor_real_models-14babd2449fe0997) + +running 28 tests +test pipeline_stage_executor_deepseek_v3_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_executor_gemma3_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_executor_gemma4_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_executor_glm4_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_executor_glm_moe_dsa_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_executor_gpt_oss_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_executor_jamba_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_executor_llama4_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_executor_llama_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_executor_mistral_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_executor_mixtral_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_executor_nemotron_h_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_executor_qwen35_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_executor_qwen3_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_worker_loop_deepseek_v3_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_worker_loop_gemma3_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_worker_loop_gemma4_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_worker_loop_glm4_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_worker_loop_glm_moe_dsa_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_worker_loop_gpt_oss_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_worker_loop_jamba_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_worker_loop_llama4_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_worker_loop_llama_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_worker_loop_mistral_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_worker_loop_mixtral_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_worker_loop_nemotron_h_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_worker_loop_qwen35_real_model_parity ... ignored, requires local model weights and extended real-model generation +test pipeline_stage_worker_loop_qwen3_real_model_parity ... ignored, requires local model weights and extended real-model generation + +test result: ok. 0 passed; 0 failed; 28 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/plamo2_parity.rs (target/test-fast/deps/plamo2_parity-30d11583853e1554) + +running 1 test +test plamo2_greedy_parity_matches_mlx_lm ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/pp_tp_2d_real_models.rs (target/test-fast/deps/pp_tp_2d_real_models-281cb6ff4d54681c) + +running 2 tests +test pp_tp_2d_flag_combination_is_accepted_by_the_parser ... ok +test pp_tp_2x2_llama_real_model_parity ... ignored, requires local model weights and a 2×2 PP×TP capable environment + +test result: ok. 1 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.05s + + Running tests/pre_ampere_f16_quality.rs (target/test-fast/deps/pre_ampere_f16_quality-1fe282cf39704a90) + +running 6 tests +test test_pre_ampere_f16_ppl ... ignored, requires Meta-Llama-3.1-8B-Instruct-bf16 weights and a CUDA device — run with --release --features cuda -- --ignored test_pre_ampere_f16_ppl --nocapture +test test_pre_ampere_f16_ppl_apertus ... ignored, requires Apertus-8B-Instruct-2509-4bit weights and a CUDA device — run with --release --features cuda -- --ignored test_pre_ampere_f16_ppl_apertus --nocapture +test test_pre_ampere_f16_ppl_cohere ... ignored, requires c4ai-command-r7b-12-2024-4bit weights and a CUDA device — run with --release --features cuda -- --ignored test_pre_ampere_f16_ppl_cohere --nocapture +test test_pre_ampere_f16_ppl_gpt_oss ... ignored, requires gpt-oss-20b-MXFP4-Q8 weights and a CUDA device — run with --release --features cuda -- --ignored test_pre_ampere_f16_ppl_gpt_oss --nocapture +test test_pre_ampere_f16_ppl_moe ... ignored, requires gemma-4-26b-a4b-4bit weights and a CUDA device — run with --release --features cuda -- --ignored test_pre_ampere_f16_ppl_moe --nocapture +test test_pre_ampere_f16_ppl_quantized ... ignored, requires qwen3.8-27B-4bit weights and a CUDA device — run with --release --features cuda -- --ignored test_pre_ampere_f16_ppl_quantized --nocapture + +test result: ok. 0 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/prompt_cache_compat_e2e.rs (target/test-fast/deps/prompt_cache_compat_e2e-00ac992017fb509a) + +running 5 tests +test a_positive_cache_reuse_refuses_to_start ... ignored, requires local model weights (qwen3-0.6b-4bit) and the mlxcel-server binary +test cache_reuse_zero_starts_normally ... ignored, requires local model weights (qwen3-0.6b-4bit) and the mlxcel-server binary +test concurrent_requests_of_mixed_widths_match_their_solo_runs ... ignored, requires local model weights (qwen3-0.6b-4bit) and the mlxcel-server binary +test prompt_cache_hit_and_per_request_disable_match_a_cold_evaluation ... ignored, requires local model weights (qwen3-0.6b-4bit) and the mlxcel-server binary +test raw_prompt_routes_hit_the_cache_and_honor_the_per_request_disable ... ignored, requires local model weights (qwen3-0.6b-4bit) and the mlxcel-server binary + +test result: ok. 0 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/prompt_cache_e2e.rs (target/test-fast/deps/prompt_cache_e2e-34178c8f531b2f8b) + +running 3 tests +test identical_prompt_replay_restores_all_but_the_last_token ... ignored, requires local model weights (qwen3-0.6b-4bit) and the mlxcel-server binary +test multi_turn_chat_reports_cached_tokens_and_lowers_prefill_latency ... ignored, requires local model weights (qwen3-0.6b-4bit) and the mlxcel-server binary +test multi_turn_chat_with_cache_disabled_never_reports_cached_tokens ... ignored, requires local model weights (qwen3-0.6b-4bit) and the mlxcel-server binary + +test result: ok. 0 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/prompt_cache_prefill_bench.rs (target/test-fast/deps/prompt_cache_prefill_bench-5eb81d5890c52e5d) + +running 1 test +test prompt_cache_prefill_sweep ... ignored, prompt-cache prefill benchmark; requires local model weights (qwen3-0.6b-4bit) and the mlxcel-server binary + +test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/qwen2_5_vl_parity.rs (target/test-fast/deps/qwen2_5_vl_parity-e606f3d0324be489) + +running 3 tests +test qwen2_5_vl_describes_the_solid_color_fixture_as_a_solid_color ... ignored, requires the local qwen2.5-vl-3b-4bit checkpoint +test qwen2_5_vl_names_every_object_at_a_non_involution_window_grid ... ignored, requires the local qwen2.5-vl-3b-4bit checkpoint +test qwen2_5_vl_names_every_object_in_the_three_shape_image ... ignored, requires the local qwen2.5-vl-3b-4bit checkpoint + +test result: ok. 0 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/qwen35_mtp_verify_parity.rs (target/test-fast/deps/qwen35_mtp_verify_parity-85d8b5eeb0993e08) + +running 1 test +test qwen35_verify_block_argmax_matches_single_token_decode ... ignored, real-model heavy (loads a Qwen 3.5 4-bit checkpoint); runs in CI hardware lane only + +test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/qwen38_mtp_chain_parity.rs (target/test-fast/deps/qwen38_mtp_chain_parity-2b7368b6d660a1b9) + +running 7 tests +test adapter_chain_with_perfect_drafts_matches_classic_chain ... ignored, real-model heavy; needs a Qwen 3.5-family checkpoint on disk +test adapter_chain_with_rejected_drafts_matches_classic_chain ... ignored, real-model heavy; needs a Qwen 3.5-family checkpoint on disk +test block_verify_chain_matches_single_token_chain ... ignored, real-model heavy +test parity_kernel_block_is_bitwise_equal_to_single_token_chain ... ok +test parity_kernel_cost_vs_standard ... ignored, real-model heavy +test the_exactness_probe_never_passes_where_the_block_chain_diverges ... ignored, real-model heavy +test verify_forward_cost_scaling ... ignored, real-model heavy + +test result: ok. 1 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/qwen3_omni_moe_parity.rs (target/test-fast/deps/qwen3_omni_moe_parity-5c97750f1b386f79) + +running 4 tests +test audio_out_len_formula ... ok +test debug_templated_image_greedy_ids ... ignored, diagnostic; needs a real Qwen3-Omni checkpoint on disk +test detects_qwen3_omni_moe_model_type ... ok +test image_forward_produces_finite_logits ... ok + +test result: ok. 3 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 20.57s + + Running tests/rdma_transport_bench.rs (target/test-fast/deps/rdma_transport_bench-c463b6f5edd9aa14) + +running 1 test +test rdma_vs_tcp_activation_transfer ... ignored, 2-node loopback micro-benchmark, run manually for docs_internal/performance/ + +test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/realtime_ws.rs (target/test-fast/deps/realtime_ws-8d448b6b3978e98e) + +running 11 tests +test abrupt_disconnect_releases_reservation ... ok +test append_before_update_errors ... ok +test append_streams_events_per_1280_sample_slice ... ok +test cancel_emits_cancelled_and_releases ... ok +test commit_emits_committed_then_done ... ok +test disallowed_origin_is_rejected_before_session ... ok +test localhost_policy_gates_and_default_policy_accepts_any_origin ... ok +test second_connection_gets_server_busy_1013 ... ok +test session_created_then_updated ... ok +test whole_float_sample_rate_is_accepted ... ok +test wrong_sample_rate_is_inference_error ... ok + +test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.40s + + Running tests/rocm_cpu_blas_finegrained.rs (target/test-fast/deps/rocm_cpu_blas_finegrained-9e01e7eebb932ea8) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/rocm_custom_kernel_jit_key.rs (target/test-fast/deps/rocm_custom_kernel_jit_key-429b78588e3ab20b) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/rocm_device_map_concurrency.rs (target/test-fast/deps/rocm_device_map_concurrency-b0d502a30461e028) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/rocm_fft_cache_env.rs (target/test-fast/deps/rocm_fft_cache_env-faaf2c4c2ea56be6) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/rocm_fft_plan_cache.rs (target/test-fast/deps/rocm_fft_plan_cache-2933c1432fc8f46b) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/rocm_gather_qmm_expert_batched.rs (target/test-fast/deps/rocm_gather_qmm_expert_batched-5e7629804b2127c0) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/rocm_gpu_faults.rs (target/test-fast/deps/rocm_gpu_faults-8ac74879aac2f38e) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/rocm_hipblaslt_concurrency.rs (target/test-fast/deps/rocm_hipblaslt_concurrency-a06938cd1f47570e) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/rocm_inflight_bound.rs (target/test-fast/deps/rocm_inflight_bound-ea64ea44d6ab13f8) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/rocm_jit_module_concurrency.rs (target/test-fast/deps/rocm_jit_module_concurrency-afd0e4ddc966b3ab) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/rocm_mxfp4_quant.rs (target/test-fast/deps/rocm_mxfp4_quant-d8f2ed54547ef957) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/rocm_qmm_batched_rows.rs (target/test-fast/deps/rocm_qmm_batched_rows-7c063f30782f80bb) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/rocm_qmm_dequant_cache.rs (target/test-fast/deps/rocm_qmm_dequant_cache-f197b575a8ab5792) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/rocm_qmm_env.rs (target/test-fast/deps/rocm_qmm_env-45bdba43a2258fda) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/rocm_rocblas_handle_concurrency.rs (target/test-fast/deps/rocm_rocblas_handle_concurrency-46a5fa727df46606) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/rocm_scalar_pool_concurrency.rs (target/test-fast/deps/rocm_scalar_pool_concurrency-3d0b3a76087317b6) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/rocm_slice_update_reduce.rs (target/test-fast/deps/rocm_slice_update_reduce-317c5ec53f6e80a5) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/rocm_slice_update_source.rs (target/test-fast/deps/rocm_slice_update_source-35e750a3d8e272d9) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/rocm_strided_copy_grid.rs (target/test-fast/deps/rocm_strided_copy_grid-907df35d74ec26a1) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/rocm_strided_scan.rs (target/test-fast/deps/rocm_strided_scan-f9cd902ec831070b) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/rocm_wave64_port_refusal.rs (target/test-fast/deps/rocm_wave64_port_refusal-c314586229ba53d2) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/rocm_wave_size.rs (target/test-fast/deps/rocm_wave_size-f5a9c5a45bf7fdab) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/sampling_gumbel_kill_switch.rs (target/test-fast/deps/sampling_gumbel_kill_switch-9e6224e7dbb2fa87) + +running 1 test +test falsy_env_restores_the_categorical_sampling_path ... Compiling CUDA kernels (first run on this host; cached for later runs)... +ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.03s + + Running tests/sampling_rejection_kill_switch.rs (target/test-fast/deps/sampling_rejection_kill_switch-12d3b1f579f8baf7) + +running 1 test +test falsy_env_restores_the_argpartition_filter_chain ... Compiling CUDA kernels (first run on this host; cached for later runs)... +ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.25s + + Running tests/sampling_top_k_above_vocab_e2e.rs (target/test-fast/deps/sampling_top_k_above_vocab_e2e-75e0f7228af789de) + +running 1 test +test chat_completion_with_top_k_above_vocab_returns_a_normal_response ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/smolvlm_parity.rs (target/test-fast/deps/smolvlm_parity-608d4f1820d455e5) + +running 6 tests +test detects_smolvlm_model_type ... ok +test image_forward_produces_finite_logits ... ok +test processor_honors_checkpoint_normalization_stats ... ok +test processor_single_global_tile_shape ... ok +test prompt_expansion_matches_reference_token_stream ... ok +test text_only_forward_produces_finite_logits ... ok + +test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.09s + + Running tests/speculative_dispatch.rs (target/test-fast/deps/speculative_dispatch-d6380ee4637988e7) + +running 23 tests +test dflash_drafter_directory_is_structurally_identifiable ... ok +test dflash_drafter_passed_to_dash_m_is_rejected_as_not_a_standalone_model ... ok +test dispatch_block_size_override_propagates_to_burst ... ok +test dispatch_classic_fallback_is_not_burstable ... ok +test dispatch_classifies_the_target_not_the_drafter ... ok +test dispatch_dflash_carries_path_and_block_size_for_burst_construction ... ok +test dispatch_dflash_with_block_size_override_honors_override ... ok +test dispatch_dflash_with_explicit_kind_resolves_to_dflash_variant ... ok +test dispatch_disabled_does_not_construct_drafter_kind ... ok +test dispatch_disabled_never_routes_to_burst ... ok +test dispatch_disabled_when_no_drafter_configured ... ok +test dispatch_kind_specific_accessor_distinguishes_variants ... ok +test dispatch_mtp_auto_detected_from_config_resolves_to_mtp_variant ... ok +test dispatch_mtp_carries_path_and_block_size_for_burst_construction ... ok +test dispatch_mtp_with_block_size_override_honors_override ... ok +test dispatch_mtp_with_explicit_kind_resolves_to_mtp_variant ... ok +test dispatch_rejects_internal_mtp_from_cli ... ok +test dispatch_rejects_unparseable_draft_kind ... ok +test dispatch_reports_drafter_kind_for_kind_specific_variants ... ok +test dispatch_summary_includes_drafter_kind_and_block_size ... ok +test ordinary_full_model_is_not_mistaken_for_a_dflash_drafter ... ok +test ordinary_full_model_still_detects_as_a_standalone_model ... ok +test server_dispatch_still_accepts_a_real_dflash_drafter_directory ... ok + +test result: ok. 23 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.26s + + Running tests/speculative_parity.rs (target/test-fast/deps/speculative_parity-4de814b818ad16b5) + +running 11 tests +test b1_batched_baseline_probe ... ignored, real-model heavy diagnostic (Gemma-4-31B and 12B targets + drafters) +test divergent_hidden_probe_31b ... ignored, real-model heavy diagnostic (Gemma-4-31B target) +test gemma4_batched::greedy_parity_mtp_gemma4_batched_matches_classic ... ignored, real-model heavy (Gemma-4-31B and 12B targets + drafters, B=2/B=4 batched runs); CI hardware lane only +test greedy_parity_dflash_qwen35_4b ... ignored, real-model heavy (loads Qwen3.5-4B target + drafter, spawns mlxcel-server); runs in CI hardware lane only +test greedy_parity_mtp_gemma4_31b ... ignored, real-model heavy (loads Gemma-4-31B target + drafter, spawns mlxcel-server); runs in CI hardware lane only +test greedy_parity_mtp_gemma4_batched_b4_matches_b1 ... ignored, real-model heavy (Gemma-4-31B target + drafter, B=4 batched run); CI hardware lane only +test greedy_parity_mtp_gemma4_batched_b4_ragged_matches_b1 ... ignored, real-model heavy (Gemma-4-31B target + drafter, ragged B=4 batched run); CI hardware lane only +test greedy_parity_mtp_gemma4_unified_12b ... ignored, real-model heavy (loads Gemma-4-Unified-12B target + drafter, spawns mlxcel-server); runs in CI hardware lane only +test mtp_gemma4_ragged_throughput_probe ... ignored, real-model heavy throughput probe; run manually with --nocapture +test pairing_kind_resolution_matches_declaration ... ok +test reachable_pairing_discovery_reports_status ... ok + +test result: ok. 2 passed; 0 failed; 9 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/step3p7_parity.rs (target/test-fast/deps/step3p7_parity-129d3f4377a92c12) + +running 7 tests +test clamped_swiglu_matches_precomputed_formula ... ok +test connector_collapses_base_grid_52_to_13_giving_169_tokens ... ok +test connector_collapses_patch_grid_36_to_9_giving_81_tokens ... ok +test encoder_base_pass_produces_2704_grid_tokens ... ok +test full_wrapper_orders_patches_first_and_forwards_to_logits ... ok +test sigmoid_moe_gate_weights_come_from_uncorrected_scores ... ok +test token_feature_count_mismatch_is_a_hard_error ... ok + +test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.45s + + Running tests/structured_outputs.rs (target/test-fast/deps/structured_outputs-a032780570696018) + +running 23 tests +test a_gbnf_grammar_masks_every_byte_the_grammar_forbids ... ok +test a_gbnf_grammar_rejects_a_non_conforming_token ... ok +test a_lazy_grammar_constrains_nothing_until_its_trigger_fires ... ok +test a_malformed_gbnf_grammar_is_refused_with_upstreams_wording ... ok +test apply_mask_covers_the_qwen3_8_padded_lm_head ... ok +test apply_mask_produces_bias_at_disallowed_positions ... ok +test apply_mask_returns_error_when_no_reachable_token_is_allowed ... ok +test apply_mask_with_model_vocab_larger_than_matcher_vocab ... ok +test apply_mask_with_model_vocab_smaller_than_matcher_vocab ... ok +test build_constraint_rejects_garbage_schema_cleanly ... ok +test build_constraint_with_byte_level_tokenizer_succeeds ... ok +test chat_completions_long_uniform_array_succeeds_end_to_end ... ignored, requires local Gemma 4 weights and the mlxcel-server binary +test deeply_nested_schema_rejected_with_clean_depth_error ... ok +test end_to_end_constrained_chat_completion_emits_schema_conforming_json ... ignored, requires local model weights at models/qwen3-0.6b-4bit/ +test extract_response_format_helper_round_trips ... ok +test gbnf_repetition_bounds_are_enforced_at_decode_time ... ok +test invalid_schema_error_does_not_leak_parser_state ... ok +test long_uniform_integer_array_reaches_a_clean_terminal_state ... ok +test many_refs_schema_rejected_with_clean_ref_error ... ok +test matcher_consume_then_recompute_succeeds ... ok +test matcher_initial_mask_is_non_empty ... ok +test oversized_schema_rejected_with_clean_size_error ... ok +test structured_output_error_display_is_concise ... ok + +test result: ok. 21 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.88s + + Running tests/surgery_cli.rs (target/test-fast/deps/surgery_cli-273e8e62ee5e122c) + +running 3 tests +test empty_surgery_pipeline_matches_baseline_output ... ok +test malformed_surgery_yaml_fails_fast ... ok +test missing_surgery_yaml_fails_fast ... ok + +test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.89s + + Running tests/tensor_parallel_real_models.rs (target/test-fast/deps/tensor_parallel_real_models-a2e9a51b730af924) + +running 24 tests +test ernie45_tp2_matches_single_rank_greedy_long_generation ... ignored, requires local model weights and extended real-model generation +test ernie45_tp4_matches_single_rank_greedy_long_generation ... ignored, requires local model weights and extended real-model generation +test gemma3_tp2_matches_single_rank_greedy_long_generation ... ignored, requires local model weights and extended real-model generation +test gemma3_tp4_matches_single_rank_greedy_long_generation ... ignored, requires local model weights and extended real-model generation +test gemma4_26b_a4b_tp4_matches_single_rank_stepwise ... ignored, requires local model weights and extended real-model generation +test gemma4_31b_tp4_matches_single_rank_stepwise ... ignored, requires local model weights and extended real-model generation +test gemma4_e2b_tp2_matches_single_rank_stepwise ... ignored, requires local model weights and extended real-model generation +test gemma4_e4b_tp4_matches_single_rank_stepwise ... ignored, requires local model weights and extended real-model generation +test hunyuan_v1_dense_tp2_matches_single_rank_greedy_long_generation ... ignored, requires local model weights and extended real-model generation +test hunyuan_v1_dense_tp4_matches_single_rank_greedy_long_generation ... ignored, requires local model weights and extended real-model generation +test llama31_8b_tp4_matches_single_rank_greedy_long_generation ... ignored, requires local model weights and extended real-model generation +test llama_tp2_matches_single_rank_greedy_long_generation ... ignored, requires local model weights and extended real-model generation +test llama_tp4_matches_single_rank_greedy_long_generation ... ignored, requires local model weights and extended real-model generation +test qwen2_5_7b_tp4_matches_single_rank_greedy_long_generation ... ignored, requires local model weights and extended real-model generation +test qwen2_5_tp2_matches_single_rank_greedy_long_generation ... ignored, requires local model weights and extended real-model generation +test qwen3_4b_tp4_matches_single_rank_greedy_long_generation ... ignored, requires local model weights and extended real-model generation +test qwen3_5_27b_tp4_matches_single_rank_stepwise ... ignored, requires local model weights and extended real-model generation +test qwen3_5_4b_tp4_matches_single_rank_greedy_long_generation ... ignored, requires local model weights and extended real-model generation +test qwen3_5_9b_tp2_matches_single_rank_stepwise ... ignored, requires local model weights and extended real-model generation +test qwen3_5_9b_tp4_matches_single_rank_stepwise ... ignored, requires local model weights and extended real-model generation +test qwen3_5_tp2_matches_single_rank_greedy_long_generation ... ignored, requires local model weights and extended real-model generation +test qwen3_8_27b_tp4_matches_single_rank_stepwise ... ignored, requires local model weights and extended real-model generation +test qwen3_tp2_matches_single_rank_greedy_long_generation ... ignored, requires local model weights and extended real-model generation +test qwen3_tp4_matches_single_rank_greedy_long_generation ... ignored, requires local model weights and extended real-model generation + +test result: ok. 0 passed; 0 failed; 24 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/thinking_budget.rs (target/test-fast/deps/thinking_budget-c2847a4d7ba0bc6e) + +running 8 tests +test alias_thinking_budget_is_honored ... ignored, requires local model weights and the mlxcel-server binary +test alias_thinking_token_budget_is_honored ... ignored, requires local model weights and the mlxcel-server binary +test chat_nonstream_budget_enforced_end_to_end ... ignored, requires local model weights and the mlxcel-server binary +test chat_streaming_budget_enforced_end_to_end ... ignored, requires local model weights and the mlxcel-server binary +test invalid_budget_returns_400 ... ignored, requires local model weights and the mlxcel-server binary +test native_completion_budget_enforced_end_to_end ... ignored, requires local model weights and the mlxcel-server binary +test per_request_minus_one_reverts_server_default ... ignored, requires local model weights and the mlxcel-server binary +test server_cli_default_applies_to_every_request ... ignored, requires local model weights and the mlxcel-server binary + +test result: ok. 0 passed; 0 failed; 8 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/tp_e2e.rs (target/test-fast/deps/tp_e2e-dfb4b082e3ffd928) + +running 36 tests +test e2e_allgather_single_rank ... ok +test e2e_allreduce_data_volume ... ok +test e2e_allreduce_sum_tp2_f32 ... ok +test e2e_benchmark_allreduce_overhead_increases_with_tp_size ... ok +test e2e_benchmark_per_rank_memory_inversely_proportional ... ok +test e2e_benchmark_tp1_throughput ... ok +test e2e_benchmark_tp2_faster_than_tp1_with_heavy_compute ... ok +test e2e_benchmark_tp2_throughput ... ok +test e2e_benchmark_tp4_throughput ... ok +test e2e_benchmark_ttft_scales_with_seq_length ... ok +test e2e_ci_benchmark_completes_quickly ... ok +test e2e_ci_no_external_dependencies ... ok +test e2e_crossover_analysis_basic ... ok +test e2e_crossover_larger_models_benefit_more ... ok +test e2e_lockstep_tp2_barrier_and_shutdown ... ok +test e2e_lockstep_tp2_multi_sequence ... ok +test e2e_lockstep_tp4_multi_sequence ... ok +test e2e_reduce_scatter_single_rank ... ok +test e2e_report_generation_comprehensive ... ok +test e2e_scaling_analysis_basic ... ok +test e2e_scaling_analysis_display ... ok +test e2e_shard_plan_all_architectures_tp2 ... ok +test e2e_shard_plan_all_architectures_tp4 ... ok +test e2e_tp2_ffn_coverage ... ok +test e2e_tp2_gqa_head_assignment ... ok +test e2e_tp2_mha_head_assignment ... ok +test e2e_tp2_mqa_head_assignment ... ok +test e2e_tp2_scheduler_executor_lockstep ... ok +test e2e_tp2_shard_plan_llama ... ok +test e2e_tp4_ffn_coverage ... ok +test e2e_tp4_gqa_head_assignment ... ok +test e2e_tp4_mha_head_assignment ... ok +test e2e_tp4_moe_expert_parallel ... ok +test e2e_tp4_mqa_replicated_kv ... ok +test e2e_tp4_scheduler_executor_lockstep ... ok +test e2e_tp4_shard_plan_qwen ... ok + +test result: ok. 36 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.62s + + Running tests/turbo_kv_e2e.rs (target/test-fast/deps/turbo_kv_e2e-5724d8a936e28028) + +running 7 tests +test test_aya_vision_8b_quality_gate ... ignored, requires aya-vision-8b weights — run with --release -- --ignored test_aya_vision_8b_quality_gate --nocapture +test test_gemma3_4b_quality_gate ... ignored, requires gemma-3-4b-it-4bit weights — run with --release -- --ignored test_gemma3_4b_quality_gate --nocapture +test test_llama31_8b_quality_gate ... ignored, requires meta-llama-3.1-8b-instruct-4bit weights — run with --release -- --ignored test_llama31_8b_quality_gate --nocapture +test test_qwen25_15b_quality_gate ... ignored, requires qwen2.5-1.5b-4bit weights (base, non-instruct variant) — run with --release -- --ignored test_qwen25_15b_quality_gate --nocapture +test test_qwen2_vl_2b_quality_gate ... ignored, requires qwen2-vl-2b-4bit weights — run with --release -- --ignored test_qwen2_vl_2b_quality_gate --nocapture +test test_rotation_kurtosis_sanity ... ignored, requires at least one non-quantized (bf16/fp16) model checkout: qwen2.5-0.5b-bf16 preferred. Quantized 4bit models are rejected because their K-projection weights are packed integers, not floats. Soft-skips if no candidate model is present. +test test_vlm_image_token_kurtosis ... ignored, requires at least one VLM checkpoint locally — run with --release -- --ignored test_vlm_image_token_kurtosis --nocapture + +test result: ok. 0 passed; 0 failed; 7 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/vlm_concurrency.rs (target/test-fast/deps/vlm_concurrency-620f8b1cfff030af) + +running 4 tests +test gemma3n_vlm_single_row_bench_prefill_accepts_m5_tile_padding ... ignored, requires local Gemma 3n VLM weights and the mlxcel-bench-decode binary +test gemma3n_vlm_two_concurrent_image_requests_do_not_cross_contaminate_state ... ignored, requires local Gemma 3n VLM weights and the mlxcel-server binary +test qwen2_5_vl_single_row_bench_prefill_succeeds_with_m5_warmup ... ignored, requires local Qwen2.5-VL weights and the mlxcel-bench-decode binary +test qwen2_vl_single_row_bench_prefill_generates_nonempty_image_output ... ignored, requires local Qwen2-VL weights and the mlxcel-bench-decode binary + +test result: ok. 0 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/vlm_wrapper_capability_delegation.rs (target/test-fast/deps/vlm_wrapper_capability_delegation-d1ec0017ac51192e) + +running 3 tests +test a_vision_wrapper_delegates_padded_prefill_when_its_backbone_refuses_it ... ok +test every_tile_aligned_prefill_is_guarded_on_the_model_predicate ... ok +test shared_can_pad_alias_requires_the_model_predicate ... ok + +test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s + + Running tests/wht_op.rs (target/test-fast/deps/wht_op-8a3cfea2f7d8fb0c) + +running 6 tests +test wht_drives_distribution_toward_gaussian_kurtosis ... ok +test wht_fp16_round_trip_within_tolerance ... ok +test wht_is_publicly_exported_and_runs ... ok +test wht_preserves_l2_norm ... ok +test wht_round_trip_all_head_dims ... ok +test wht_scaled_is_publicly_exported_and_applies_the_scale ... ok + +test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.35s + + Running tests/xla_gemma3n_prefill.rs (target/test-fast/deps/xla_gemma3n_prefill-b926285baa265003) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/youtu_vl_parity.rs (target/test-fast/deps/youtu_vl_parity-a6076273912211e5) + +running 3 tests +test youtu_vl_describes_the_solid_color_fixture_as_a_solid_color ... ignored, requires the local youtu-vl-4b-instruct checkpoint +test youtu_vl_names_every_object_at_a_multi_window_grid ... ignored, requires the local youtu-vl-4b-instruct checkpoint +test youtu_vl_names_every_object_in_the_three_shape_image ... ignored, requires the local youtu-vl-4b-instruct checkpoint + +test result: ok. 0 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/zero_config_cluster_init.rs (target/test-fast/deps/zero_config_cluster_init-42f8f650c529fe07) + +running 3 tests +test zero_config_plan_is_consumable_by_existing_cluster_loader ... ok +test zero_config_plan_is_deterministic_across_rerender ... ok +test zero_config_two_stage_cluster_matches_dense_baseline ... ignored, requires local model weights and TCP-bound remote stage services + +test result: ok. 2 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/test-fast/deps/mlxcel_core-a9c9e3c743946c6b) + +running 2074 tests +test autotune::autotune_tests::bucket_display_and_accessors ... ok +test autotune::autotune_tests::interleaving_gives_every_candidate_its_full_target ... ok +test autotune::autotune_tests::keys_that_differ_in_any_field_hash_differently ... ok +test autotune::autotune_tests::median_absolute_deviation_ignores_a_single_outlier ... ok +test autotune::autotune_tests::median_handles_nan_without_panicking ... ok +test autotune::autotune_tests::median_is_robust_to_a_single_outlier ... ok +test autotune::autotune_tests::median_odd_even_and_empty ... ok +test autotune::autotune_tests::mode_defaults_to_off ... ok +test autotune::autotune_tests::mode_parses_tune_and_cache_only ... ok +test autotune::autotune_tests::mode_rejects_an_unrecognized_value ... ok +test autotune::autotune_tests::nearby_shapes_share_one_bucket ... ok +test autotune::autotune_tests::paged_decode_split_candidates_cover_the_budget_ceiling ... ok +test autotune::autotune_tests::powers_of_two_up_to_is_inclusive_and_bounded ... ok +test autotune::autotune_tests::profile_config_bounds_warmup_by_the_rep_ceiling ... ok +test autotune::autotune_tests::profile_config_sanitizes_degenerate_values ... ok +test autotune::autotune_tests::profile_drops_failing_candidates_without_aborting ... ok +test autotune::autotune_tests::profile_keeps_the_default_inside_the_noise_band ... ok +test autotune::autotune_tests::profile_picks_the_min_latency_candidate ... ok +test autotune::autotune_tests::profile_records_the_spread_behind_every_measurement ... ok +test autotune::autotune_tests::profile_returns_none_when_every_candidate_fails ... ok +test autotune::autotune_tests::profile_returns_none_without_candidates ... ok +test autotune::autotune_tests::profile_runs_warmup_plus_reps_per_candidate ... ok +test autotune::autotune_tests::profile_selection_changes_when_synthetic_costs_are_inverted ... ok +test autotune::autotune_tests::qmm_tile_candidates_stop_at_the_arch_cap ... ok +test autotune::autotune_tests::qmm_tile_default_mirrors_the_kernel_formula ... ok +test autotune::autotune_tests::qmv_multirow_candidates_span_the_documented_window ... ok +test autotune::autotune_tests::relative_spread_is_zero_when_every_sample_agrees ... ok +test autotune::autotune_tests::resolve_discards_a_cached_tactic_that_is_no_longer_feasible ... ok +test autotune::autotune_tests::resolve_falls_back_to_default_on_a_cache_only_miss ... ok +test autotune::autotune_tests::resolve_is_inert_when_the_mode_is_off ... ok +test autotune::autotune_tests::resolve_lets_an_explicit_env_override_win_over_a_cached_tactic ... ok +test autotune::autotune_tests::resolve_memoizes_so_a_hot_path_reads_the_cache_once ... ok +test autotune::autotune_tests::resolve_never_lazily_profiles_a_process_wide_op ... ok +test autotune::autotune_tests::resolve_profiles_and_persists_under_tune_mode ... ok +test autotune::autotune_tests::resolve_reports_out_of_bucket_when_there_are_no_candidates ... ok +test autotune::autotune_tests::resolve_retunes_over_an_infeasible_cached_tactic ... ok +test autotune::autotune_tests::resolve_uses_a_cached_tactic_without_profiling ... ok +test autotune::autotune_tests::round_up_pow2_rounds_up_never_down ... ok +test autotune::autotune_tests::round_up_pow2_saturates_instead_of_overflowing ... ok +test autotune::autotune_tests::saturated_bucket_is_flagged ... ok +test autotune::autotune_tests::select_collapses_a_statistical_tie_toward_the_default ... ok +test autotune::autotune_tests::select_falls_back_to_the_default_when_the_pick_is_not_actually_faster ... ok +test autotune::autotune_tests::select_keeps_the_default_when_the_win_is_inside_the_measured_spread ... ok +test autotune::autotune_tests::select_switches_when_the_win_clears_the_measured_spread ... ok +test autotune::autotune_tests::store_ignores_a_corrupt_file_instead_of_failing ... ok +test autotune::autotune_tests::store_ignores_a_truncated_but_valid_json_file ... ok +test autotune::autotune_tests::store_rejects_a_different_mlx_pin ... ok +test autotune::autotune_tests::store_rejects_a_different_mlxcel_version ... ok +test autotune::autotune_tests::store_rejects_a_key_field_mismatch ... ok +test autotune::autotune_tests::store_rejects_a_stale_schema_version ... ok +test autotune::autotune_tests::store_round_trips_a_record ... ok +test autotune::autotune_tests::store_without_a_directory_is_a_silent_no_op ... ok +test autotune::autotune_tests::timed_repetitions_scale_inversely_with_launch_cost ... ok +test autotune::ops::paged_decode_v2_chunk::tests::candidates_never_empty_for_a_degenerate_range ... ok +test autotune::ops::paged_decode_v2_chunk::tests::candidates_respect_a_raised_floor ... ok +test autotune::ops::paged_decode_v2_chunk::tests::candidates_span_the_feasible_range_and_include_the_heuristic ... ok +test autotune::ops::paged_decode_v2_chunk::tests::the_bucket_separates_shapes_that_are_not_comparable ... ok +test bench_rotation::bench_rotation_tests::a_nonsense_env_override_is_ignored ... ok +test bench_rotation::bench_rotation_tests::a_rotating_set_reports_the_cold_mode_tag ... ok +test bench_rotation::bench_rotation_tests::a_single_buffer_rotation_is_the_warm_mode ... ok +test bench_rotation::bench_rotation_tests::a_working_set_larger_than_the_window_needs_no_rotation ... ok +test bench_rotation::bench_rotation_tests::a_zero_count_degrades_to_one_buffer ... ok +test bench_rotation::bench_rotation_tests::a_zero_working_set_is_not_a_division_by_zero ... ok +test bench_rotation::bench_rotation_tests::apple_slc_grows_with_the_performance_core_tier ... ok +test bench_rotation::bench_rotation_tests::cuda_l2_is_an_explicitly_unimplemented_stub ... ok +test bench_rotation::bench_rotation_tests::env_override_wins_over_the_detected_estimate ... ok +test bench_rotation::bench_rotation_tests::rotation_covers_twice_the_cache ... ok +test bench_rotation::bench_rotation_tests::rotation_cycles_round_robin ... ok +test bench_rotation::bench_rotation_tests::rotation_is_capped_so_a_tiny_working_set_cannot_explode ... ok +test bench_rotation::bench_rotation_tests::rotation_reset_restarts_the_cycle ... ok +test bench_rotation::bench_rotation_tests::rotation_rounds_up_so_the_set_always_exceeds_the_window ... ok +test bench_rotation::bench_rotation_tests::unknown_silicon_falls_back_to_the_conservative_floor ... ok +test cache::attend::attend_tests::batched_attend_rejects_an_empty_batch - should panic ... ok +test cache::attend::attend_tests::batched_dense_matches_per_row_attend ... ok +test cache::attend::attend_tests::batched_dense_one_row_matches_attend ... ok +test cache::attend::attend_tests::batched_masked_rows_get_their_own_mask_row ... ok +test cache::attend::attend_tests::batched_mixed_storage_runs_each_row_on_its_own_route ... ok +test cache::attend::attend_tests::batched_paged_decode_is_one_pooled_launch ... ok +test cache::attend::attend_tests::batched_paged_one_row_is_one_pooled_launch ... ok +test cache::attend::attend_tests::batched_rows_over_rotating_caches_match_per_row_attend ... ok +test cache::attend::attend_tests::batched_turbo4_asym_rows_match_single_sequence_dequant_first ... ok +test cache::attend::attend_tests::chunked_attend_matches_update_and_fetch_plus_sdpa ... ok +test cache::attend::attend_tests::dense_masked_step_matches_masked_sdpa ... ok +test cache::attend::attend_tests::dense_prefill_then_decode_matches_update_and_fetch_plus_sdpa ... ok +test cache::attend::attend_tests::is_dense_fp16_names_the_stackable_layout ... ok +test cache::attend::attend_tests::paged_cache_single_token_goes_through_the_pooled_entry ... ok +test cache::attend::attend_tests::rotating_attend_logs_the_speculative_writes_for_rewind ... ok +test cache::attend::attend_tests::rotating_attend_masked_step_matches_masked_sdpa ... ok +test cache::attend::attend_tests::rotating_attend_matches_update_and_fetch_plus_windowed_sdpa ... ok +test cache::attend::attend_tests::rotating_multi_token_attend_clears_the_undo_log ... ok +test cache::batch_quant::tests::batch_quantized_extend_concatenates_metadata ... ok +test cache::batch_quant::tests::batch_quantized_extend_rejects_config_mismatch ... ok +test cache::batch_quant::tests::batch_quantized_extend_rejects_layer_count_mismatch ... ok +test cache::batch_quant::tests::batch_quantized_extend_takes_max_idx ... ok +test cache::batch_quant::tests::batch_quantized_filter_keeps_selected_rows ... ok +test cache::batch_quant::tests::batch_quantized_filter_no_trim_preserves_idx ... ok +test cache::batch_quant::tests::batch_quantized_filter_rejects_duplicates ... ok +test cache::batch_quant::tests::batch_quantized_filter_rejects_out_of_range ... ok +test cache::batch_quant::tests::batch_quantized_filter_trims_idx_with_min_padding ... ok +test cache::batch_quant::tests::batch_quantized_make_mask_none_when_no_padding_single_token ... ok +test cache::batch_quant::tests::batch_quantized_make_mask_returns_some_when_padding_present_metadata_check ... ok +test cache::batch_quant::tests::batch_quantized_new_initializes_offsets ... ok +test cache::batch_quant::tests::batch_quantized_per_layer_modes_reflect_skip_last ... ok +test cache::batch_quant::tests::batch_quantized_update_after_decode_advances_idx ... ok +test cache::batch_quant::tests::batch_quantized_update_after_decode_advances_offsets ... ok +test cache::batch_quant::tests::batch_quantized_update_rejects_negative_steps ... ok +test cache::batch_quant::tests::batch_turboquant_extend_takes_max_idx ... ok +test cache::batch_quant::tests::batch_turboquant_filter_extend_round_trip ... ok +test cache::batch_quant::tests::batch_turboquant_filter_trims_idx_with_min_padding ... ok +test cache::batch_quant::tests::batch_turboquant_make_mask_none_for_no_padding_single_token_metadata ... ok +test cache::batch_quant::tests::batch_turboquant_make_mask_none_when_no_padding_single_token ... ok +test cache::batch_quant::tests::batch_turboquant_new_initializes_offsets ... ok +test cache::batch_quant::tests::batch_turboquant_per_layer_modes_reflect_skip_last ... ok +test cache::batch_quant::tests::batch_turboquant_rejects_disabled_config ... ok +test cache::batch_quant::tests::batch_turboquant_rejects_uniform_scheme ... ok +test cache::batch_quant::tests::batch_turboquant_update_after_decode_advances_idx ... ok +test cache::batch_quant::tests::batch_turboquant_update_after_decode_advances_offsets ... ok +test cache::batch_quant::tests::config_default_is_disabled ... ok +test cache::batch_quant::tests::config_rejects_invalid_turboquant_bits ... ok +test cache::batch_quant::tests::config_rejects_invalid_uniform_bits ... ok +test cache::batch_quant::tests::config_rejects_negative_bits ... ok +test cache::batch_quant::tests::config_rejects_non_positive_group_size ... ok +test cache::batch_quant::tests::config_turboquant_4bit_maps_to_turbo4_asym ... ok +test cache::batch_quant::tests::config_uniform_4bit_is_rejected_at_validation_time ... ok +test cache::batch_quant::tests::config_uniform_8bit_maps_to_int8 ... ok +test cache::batch_quant::tests::resolve_layer_modes_handles_zero_layers ... ok +test cache::batch_quant::tests::scheme_parses_turboquant_aliases ... ok +test cache::batch_quant::tests::scheme_parses_uniform_aliases ... ok +test cache::batch_quant::tests::scheme_rejects_unknown_string ... ok +test cache::batch_quant::tests::skip_last_layer_disabled_keeps_uniform_modes ... ok +test cache::batch_quant::tests::skip_last_layer_inert_when_nominal_is_fp16 ... ok +test cache::batch_quant::tests::skip_last_layer_keeps_final_layer_fp16_for_int8 ... ok +test cache::batch_quant::tests::skip_last_layer_keeps_final_layer_fp16_for_turbo4_asym ... ok +test cache::batch_quant::tests::validate_rejects_negative_bits_directly ... ok +test cache::decode_undo_tests::flushed_rows_still_restore_exactly ... ok +test cache::decode_undo_tests::multi_token_appends_clear_the_log ... ok +test cache::decode_undo_tests::overwrites_outside_the_lookahead_scope_copy_nothing_and_are_not_rewindable ... ok +test cache::decode_undo_tests::plain_trim_after_wrap_leaves_the_speculative_row_behind ... ok +test cache::decode_undo_tests::refusals_leave_the_cache_untouched ... ok +test cache::decode_undo_tests::rewind_of_the_reslicing_write_decodes_like_the_prefill_state ... ok +test cache::decode_undo_tests::rewind_spanning_the_warmup_boundary_is_exact ... ok +test cache::decode_undo_tests::rewinds_after_an_over_window_prefill ... ok +test cache::decode_undo_tests::rewinds_one_and_two_writes_after_the_ring_wrapped ... ok +test cache::detach::tests::adopt_parked_flows_through_prepare_sequence_state ... ok +test cache::detach::tests::cache_pool_adopt_rejects_paged_set ... ok +test cache::detach::tests::cache_pool_adopt_respects_capacity_and_returns_preserving_set ... ok +test cache::detach::tests::cache_pool_detach_adopt_preserves_int8_round_trip ... ok +test cache::detach::tests::cache_pool_detach_adopt_round_trip_preserves_contents ... ok +test cache::detach::tests::cache_pool_detach_rejects_paged_backend ... ok +test cache::detach::tests::cache_pool_detach_returns_none_for_unknown_seq ... ok +test cache::detach::tests::cache_pool_model_owned_recurrent_sequence_is_never_detachable ... ok +test cache::detach::tests::clone_handle_install_detached_round_trip_preserves_contents ... ok +test cache::detach::tests::clone_handle_leaves_source_empty_and_transfers_tensors ... ok +test cache::detach::tests::clone_handle_round_trip_preserves_int8_scales ... ok +test cache::detach::tests::detached_cache_set_truncate_to_above_seq_len_returns_error ... ok +test cache::detach::tests::detached_cache_set_truncate_to_full_length_is_noop ... ok +test cache::detach::tests::detached_cache_set_truncate_to_int8_preserves_dequantization ... ok +test cache::detach::tests::detached_cache_set_truncate_to_negative_returns_error ... ok +test cache::detach::tests::detached_cache_set_truncate_to_partial_shrinks_every_layer ... ok +test cache::detach::tests::detached_cache_set_truncate_to_then_adopt_then_decode_matches_partial_prefill ... ok +test cache::detach::tests::detached_cache_set_truncate_to_zero_drops_every_layer ... ok +test cache::detach::tests::detached_kvcache_trim_to_exact_offset_is_noop ... ok +test cache::detach::tests::detached_kvcache_trim_to_int8_preserves_per_token_scales ... ok +test cache::detach::tests::detached_kvcache_trim_to_mid_buffer_resets_offset_and_visible_keys ... ok +test cache::detach::tests::detached_kvcache_trim_to_negative_returns_error ... ok +test cache::detach::tests::detached_kvcache_trim_to_past_offset_returns_error_without_mutation ... ok +test cache::detach::tests::detached_kvcache_trim_to_zero_drops_storage_and_keeps_mode ... ok +test cache::detach::tests::gather_positions_carries_the_int8_scale_sidecars ... ok +test cache::detach::tests::gather_positions_keeps_a_scattered_subset_and_compacts_it ... ok +test cache::detach::tests::gather_positions_of_a_prefix_matches_trim_to ... ok +test cache::detach::tests::gather_positions_of_everything_is_a_no_op ... ok +test cache::detach::tests::gather_positions_refuses_the_split_delegated_cache ... ok +test cache::detach::tests::gather_positions_reindexes_every_turbo_sidecar ... ok +test cache::detach::tests::gather_positions_rejects_shapes_it_cannot_serve ... ok +test cache::detach::tests::gather_within_tail_agrees_with_the_whole_window_form ... ok +test cache::detach::tests::gather_within_tail_keeps_a_scattered_subset_of_the_block ... ok +test cache::detach::tests::gather_within_tail_of_a_prefix_matches_trim ... ok +test cache::detach::tests::gather_within_tail_of_the_whole_block_is_a_no_op ... ok +test cache::detach::tests::gather_within_tail_rejects_selections_it_cannot_serve ... ok +test cache::detach::tests::install_detached_rejects_non_empty_target ... ok +test cache::detach::tests::park_and_take_round_trip_tracks_bytes ... ok +test cache::detach::tests::property_detach_adopt_decode_matches_fresh_prefill_fp16 ... ok +test cache::detach::tests::property_detach_adopt_decode_matches_fresh_prefill_int8_within_tolerance ... ok +test cache::detach::tests::rotating_gather_within_tail_compacts_the_block ... ok +test cache::detach::tests::rotating_gather_within_tail_matches_trim_in_the_buffered_regime ... ok +test cache::detach::tests::rotating_gather_within_tail_of_a_prefix_matches_trim ... ok +test cache::detach::tests::rotating_gather_within_tail_refuses_a_wrapped_ring ... ok +test cache::detach::tests::rotating_gather_within_tail_serves_the_buffered_speculative_regime ... ok +test cache::detach::tests::take_parked_returns_none_for_unknown_handle ... ok +test cache::detach::tests::trim_to_exact_offset_is_noop ... ok +test cache::detach::tests::trim_to_mid_buffer_keeps_buffer_and_resets_visible_length ... ok +test cache::detach::tests::trim_to_negative_returns_error ... ok +test cache::detach::tests::trim_to_past_offset_returns_error_without_mutation ... ok +test cache::detach::tests::trim_to_zero_drops_storage_and_preserves_mode ... ok +test cache::paged_append_need_tests::boundary_append_needs_one_block_per_layer ... ok +test cache::paged_append_need_tests::mid_block_append_needs_no_block ... ok +test cache::paged_append_need_tests::reaching_a_prompt_length_charges_only_the_suffix ... ok +test cache::paged_append_need_tests::shared_partial_tail_counts_the_copy_on_write_fork ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::a_batched_launch_just_under_a_nominal_1k_prompt_fuses ... Compiling CUDA kernels (first run on this host; cached for later runs)... +ok +test cache::paged_batch_decode::paged_batch_decode_tests::a_below_floor_launch_reports_both_numbers ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::a_dense_batch_is_declined ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::a_fused_launch_reports_its_shape ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::a_mixed_dense_and_paged_batch_is_declined ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::a_multi_slab_layer_falls_back_to_gather ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::a_multi_slab_layer_reports_the_knob_that_would_fix_it ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::a_multi_token_step_declines_without_touching_the_pool ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::a_short_single_sequence_stays_on_gather ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::a_single_sequence_above_its_floor_takes_the_fused_path ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::a_softcap_batch_is_declined ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::a_steady_step_reuses_the_page_table ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::an_empty_batch_is_declined ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::an_unservable_batch_declines_without_touching_the_pool ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::batched_decode_matches_the_gather_path_above_the_floor ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::batched_decode_matches_the_gather_path_at_gqa_one ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::batched_decode_matches_the_gather_path_with_ragged_lengths ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::below_the_floor_the_batch_still_answers_correctly ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::caches_from_two_layers_are_declined ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::caches_from_two_pools_are_declined ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::shape_checks_require_a_single_query_token ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::the_step_is_written_exactly_once ... ok +test cache::paged_batch_decode::paged_batch_decode_tests::trim_drops_padded_prefill_rows_from_a_pool_backed_cache ... ok +test cache::paged_batch_decode::paged_pool_offset_tests::every_fused_body_computes_the_pool_base_in_64_bits ... ok +test cache::paged_batch_decode::paged_pool_offset_tests::merge_refuses_inputs_or_outputs_past_u32_elements ... ok +test cache::paged_batch_decode::paged_pool_offset_tests::paged_pool_past_u32_elements_matches_gather ... ignored, allocates two 8 GiB f16 pools; run with --ignored on a device with ~20 GiB free +test cache::paged_csr::paged_csr_tests::a_full_final_page_reports_page_size_not_zero ... ok +test cache::paged_csr::paged_csr_tests::a_fully_trimmed_request_is_empty_but_keeps_its_rope_offset ... ok +test cache::paged_csr::paged_csr_tests::a_trimmed_window_drops_retired_pages_and_offsets_into_the_first ... ok +test cache::paged_csr::paged_csr_tests::all_empty_batch_reports_no_visible_tokens ... ok +test cache::paged_csr::paged_csr_tests::an_empty_request_contributes_no_pages ... ok +test cache::paged_csr::paged_csr_tests::an_unwritten_block_is_rejected_rather_than_read ... ok +test cache::paged_csr::paged_csr_tests::full_pages_produce_a_dense_csr ... ok +test cache::paged_csr::paged_csr_tests::geometry_identity_holds_across_a_randomized_sweep ... ok +test cache::paged_csr::paged_csr_tests::len_outrunning_the_block_table_is_rejected ... ok +test cache::paged_csr::paged_csr_tests::partial_last_page_reports_its_valid_entries ... ok +test cache::paged_csr::paged_csr_tests::pool_view_after_a_trim_drops_retired_pages ... ok +test cache::paged_csr::paged_csr_tests::pool_view_rejects_an_out_of_range_layer ... ok +test cache::paged_csr::paged_csr_tests::pool_view_resolves_physical_rows_in_block_table_order ... ok +test cache::paged_csr::paged_csr_tests::pool_view_shares_rows_between_prefix_sharing_sequences ... ok +test cache::paged_csr::paged_csr_tests::shared_blocks_appear_in_every_owner ... ok +test cache::paged_csr::paged_csr_tests::validate_rejects_a_hand_corrupted_view ... ok +test cache::paged_csr::paged_csr_tests::zero_page_size_is_rejected ... ok +test cache::paged_detach::tests::adopt_paged_reconstructs_pool_backed_caches_and_shares_prefix ... ok +test cache::paged_detach::tests::adopt_paged_rejects_incompatible_layout ... ok +test cache::paged_detach::tests::adopt_paged_releases_detach_pins ... ok +test cache::paged_detach::tests::adopt_paged_respects_capacity_and_cleans_up_pins ... ok +test cache::paged_detach::tests::block_budget_allows_reuse_of_freed_blocks_at_cap ... ok +test cache::paged_detach::tests::block_budget_none_is_unbounded ... ok +test cache::paged_detach::tests::block_budget_refuses_new_blocks_beyond_cap ... ok +test cache::paged_detach::tests::block_pool_double_release_errors_cleanly ... ok +test cache::paged_detach::tests::block_pool_refuses_retain_of_released_block ... ok +test cache::paged_detach::tests::block_pool_retain_release_holds_block_when_pinned ... ok +test cache::paged_detach::tests::cache_pool_budget_set_before_pool_creation_applies_on_creation ... ok +test cache::paged_detach::tests::clone_detached_paged_prefix_rejects_bad_targets ... ok +test cache::paged_detach::tests::clone_detached_paged_prefix_shares_blocks_and_preserves_source ... ok +test cache::paged_detach::tests::clone_eligible_requires_dense_handles ... ok +test cache::paged_detach::tests::detach_paged_prevents_block_recycling_while_pinned ... ok +test cache::paged_detach::tests::detach_paged_refuses_shadow_sequence_without_handles ... ok +test cache::paged_detach::tests::detach_paged_rejects_dense_sequence ... ok +test cache::paged_detach::tests::detach_paged_returns_none_for_unknown_seq ... ok +test cache::paged_detach::tests::detach_paged_round_trip_preserves_layout_and_block_table ... ok +test cache::paged_detach::tests::detached_paged_set_accounts_real_pool_bytes ... ok +test cache::paged_detach::tests::detached_paged_set_without_pool_writes_falls_back_to_nominal_bytes ... ok +test cache::paged_detach::tests::free_block_budget_counts_per_layer_free_lists ... ok +test cache::paged_detach::tests::free_block_budget_on_diverged_free_lists_is_acquirable ... ok +test cache::paged_detach::tests::free_block_budget_on_uniform_free_lists_matches_budget_minus_live ... ok +test cache::paged_detach::tests::free_block_budget_rises_when_blocks_are_freed ... ok +test cache::paged_detach::tests::free_block_budget_tracks_allocation ... ok +test cache::paged_detach::tests::paged_int8_cache_round_trips_through_detach_adopt ... ok +test cache::paged_detach::tests::paged_partial_block_trim_keeps_block_updates_logical_length ... ok +test cache::paged_detach::tests::paged_trim_to_releases_whole_blocks_past_n ... ok +test cache::paged_detach::tests::park_paged_round_trip_accounts_bytes ... ok +test cache::paged_detach::tests::pool_backed_sharers_cow_keeps_other_prefix_intact ... ok +test cache::paged_detach::tests::property_paged_detach_adopt_append_matches_fresh_allocate_block_table ... ok +test cache::paged_detach::tests::release_detached_paged_is_safe_after_take_no_double_release ... ok +test cache::paged_detach::tests::release_detached_paged_returns_blocks_to_free_list ... ok +test cache::paged_detach::tests::stress_many_sequences_share_a_prefix_detach_refcount_is_correct ... ok +test cache::paged_detach::tests::take_parked_paged_with_dense_handle_returns_none_without_dropping ... ok +test cache::paged_detach::tests::trim_across_shared_blocks_releases_only_the_trimming_sequences_refs ... ok +test cache::paged_detach::tests::trim_detached_paged_to_enables_partial_prefix_adoption ... ok +test cache::paged_detach::tests::trim_detached_paged_to_rejects_bad_targets ... ok +test cache::paged_detach::tests::write_prefill_after_shared_prefix_adopt_allocates_only_suffix_blocks ... ok +test cache::paged_pool_tests::acquire_and_write_block_releases_on_write_failure ... ok +test cache::paged_pool_tests::contiguous_gather_is_byte_identical_to_dense ... ok +test cache::paged_pool_tests::extract_then_restore_with_contents_round_trips ... ok +test cache::paged_pool_tests::fp16_main_kv_round_trips_byte_identically ... ok +test cache::paged_pool_tests::fragmented_rows_gather_in_block_table_order ... ok +test cache::paged_pool_tests::gather_returns_none_for_empty_layer ... ok +test cache::paged_pool_tests::inplace_slab_writes_touch_only_the_writers_own_block ... ok +test cache::paged_pool_tests::int8_main_kv_round_trips_byte_identically ... ok +test cache::paged_pool_tests::logical_start_offset_gathers_correct_window ... ok +test cache::paged_pool_tests::paged_block_byte_roundtrip_preserves_bf16 ... ok +test cache::paged_pool_tests::paged_block_byte_roundtrip_preserves_fp16 ... ok +test cache::paged_pool_tests::partial_final_block_gathers_exactly_visible_len ... ok +test cache::paged_pool_tests::pool_tensor_bytes_tracks_allocation ... ok +test cache::paged_pool_tests::released_row_is_recycled_and_serves_fresh_data ... ok +test cache::paged_pool_tests::slab_growth_appends_without_copy_and_fragmented_gather_round_trips ... ok +test cache::paged_pool_tests::trim_preserves_visible_window_with_logical_start_past_block_boundary ... ok +test cache::paged_pool_tests::trim_to_logical_start_empties_the_layer ... ok +test cache::paged_pool_tests::turbo4_sidecars_coexist_with_main_kv_rows ... ok +test cache::paged_pool_tests::write_accepts_bare_3d_block_layout ... ok +test cache::paged_pool_tests::write_prefill_after_presize_grows_incrementally_and_round_trips ... ok +test cache::paged_pool_tests::write_prefill_block_aligned_prompt_round_trips ... ok +test cache::paged_pool_tests::write_prefill_cold_round_trip_is_byte_identical_to_dense ... ok +test cache::paged_pool_tests::write_prefill_cow_forks_shared_partial_tail_block ... ok +test cache::paged_pool_tests::write_prefill_presizes_pool_in_one_step_for_multi_chunk_span ... ok +test cache::paged_pool_tests::write_prefill_round_trips_with_logical_start ... ok +test cache::paged_pool_tests::write_rejects_geometry_mismatch_after_first_write ... ok +test cache::paged_pool_tests::write_rejects_unknown_block_and_oob_slot ... ok +test cache::paged_turbo_tests::cache_pool_memory_usage_includes_pool_sidecars ... ok +test cache::paged_turbo_tests::detach_adopt_round_trip_fp16_remains_bit_identical ... ok +test cache::paged_turbo_tests::detach_adopt_round_trip_turbo4_asym_preserves_sidecars ... ok +test cache::paged_turbo_tests::detach_adopt_round_trip_turbo4_delegated_preserves_cold_keys ... ok +test cache::paged_turbo_tests::detach_adopt_round_trip_turbo4_sym_preserves_k_sidecars ... ok +test cache::paged_turbo_tests::detach_paged_rejects_dense_sequence_in_turbo_mode ... ok +test cache::paged_turbo_tests::install_cold_keys_only_in_delegated_mode ... ok +test cache::paged_turbo_tests::install_k_sidecars_only_in_symmetric_mode ... ok +test cache::paged_turbo_tests::install_rejects_unknown_block_id ... ok +test cache::paged_turbo_tests::install_sidecars_rejects_fp16_mode ... ok +test cache::paged_turbo_tests::install_sidecars_succeeds_in_turbo_modes ... ok +test cache::paged_turbo_tests::layout_int8_does_not_allocate_sidecars ... ok +test cache::paged_turbo_tests::layout_rejects_sidecars_for_non_turbo_modes ... ok +test cache::paged_turbo_tests::layout_requires_sidecar_per_layer_for_turbo_modes ... ok +test cache::paged_turbo_tests::layout_sidecar_must_be_block_size_multiple ... ok +test cache::paged_turbo_tests::layout_turbo4_modes_carry_sidecar_bytes ... ok +test cache::paged_turbo_tests::layout_uniform_defaults_to_fp16 ... ok +test cache::paged_turbo_tests::nbytes_fp16_only_counts_main_bytes ... ok +test cache::paged_turbo_tests::nbytes_int8_only_counts_main_bytes ... ok +test cache::paged_turbo_tests::nbytes_turbo4_asym_includes_sidecar_per_block ... ok +test cache::paged_turbo_tests::nbytes_turbo4_delegated_includes_sidecar_per_block ... ok +test cache::paged_turbo_tests::nbytes_turbo4_sym_includes_sidecar_per_block ... ok +test cache::paged_turbo_tests::refcount_zero_drops_sidecars_so_recycle_is_safe ... ok +test cache::paged_turbo_tests::release_sequence_drops_all_sidecars ... ok +test cache::paged_turbo_tests::take_sidecars_clears_storage ... ok +test cache::paged_turbo_tests::trim_releases_sidecars_when_block_evicted ... ok +test cache::prefill_rewind_tests::rewind_of_a_padded_continuation_chunk_matches_unpadded_prefill ... ok +test cache::prefill_rewind_tests::rewind_of_an_over_window_padded_prefill_matches_unpadded_prefill ... ok +test cache::prefill_rewind_tests::rewind_refuses_a_wrapped_ring ... ok +test cache::prefill_rewind_tests::rewind_refuses_more_than_was_written_and_turbo4asym ... ok +test cache::prefill_rewind_tests::rewind_within_the_window_matches_unpadded_prefill ... ok +test cache::ring::tests::ring_matches_full_cache_until_eviction_begins ... ok +test cache::ring::tests::ring_reports_absolute_offset_and_prefill_boundary ... ok +test cache::ring::tests::ring_reset_clears_state ... ok +test cache::ring::tests::ring_retains_prefill_and_last_window_after_wraparound ... ok +test cache::rotating_ring_tests::malformed_ring_snapshots_are_rejected_without_mutating_cache ... ok +test cache::rotating_ring_tests::reference_ring_survives_prefill_chunking_rollback_compaction_and_snapshots ... ok +test cache::rotating_truncation_tests::a_wrapped_cache_is_refused_even_for_a_target_inside_the_live_window ... ok +test cache::rotating_truncation_tests::an_empty_cache_truncates_only_to_zero ... ok +test cache::rotating_truncation_tests::an_over_window_prefill_buffer_is_refused_despite_idx_matching_offset ... ok +test cache::rotating_truncation_tests::buffered_speculative_mode_is_excluded ... ok +test cache::rotating_truncation_tests::is_trimmable_tracks_the_live_cache_through_its_wrap ... ok +test cache::rotating_truncation_tests::non_fp16_storage_is_refused ... ok +test cache::rotating_truncation_tests::the_wrap_boundary_is_inclusive_at_offset_equal_to_the_window ... ok +test cache::rotating_truncation_tests::truncation_target_past_the_stored_offset_is_refused ... ok +test cache::rotating_truncation_tests::unwrapped_cache_truncates_to_any_earlier_boundary ... ok +test cache::sparse_csr::sparse_csr_tests::a_capacity_disagreement_is_declined ... ok +test cache::sparse_csr::sparse_csr_tests::a_position_past_the_live_window_is_rejected ... ok +test cache::sparse_csr::sparse_csr_tests::a_ragged_selection_is_rejected_rather_than_silently_padded ... ok +test cache::sparse_csr::sparse_csr_tests::a_selection_round_trips_through_the_encoding_unchanged ... ok +test cache::sparse_csr::sparse_csr_tests::a_wider_k_allocation_shares_a_mapping_only_at_batch_one ... ok +test cache::sparse_csr::sparse_csr_tests::an_empty_or_mis_sized_selection_is_rejected ... ok +test cache::sparse_csr::sparse_csr_tests::an_unordered_selection_is_legal_because_page_lists_are_arbitrary ... ok +test cache::sparse_csr::sparse_csr_tests::attention_heads_may_not_exceed_the_allocation ... ok +test cache::sparse_csr::sparse_csr_tests::block_expansion_gives_every_sequence_its_own_row_space ... ok +test cache::sparse_csr::sparse_csr_tests::block_expansion_names_exactly_the_selected_blocks_plus_the_tail ... ok +test cache::sparse_csr::sparse_csr_tests::block_expansion_rejects_a_tail_outside_the_live_window ... ok +test cache::sparse_csr::sparse_csr_tests::equal_shaped_k_and_v_allocations_share_a_row_mapping_at_any_batch ... ok +test cache::sparse_csr::sparse_csr_tests::the_csr_structure_is_derived_without_touching_the_rows ... ok +test cache::sparse_csr::sparse_csr_tests::the_csr_view_of_a_selection_passes_the_paged_invariants ... ok +test cache::sparse_csr::sparse_csr_tests::the_layout_is_read_off_the_allocation_shape_not_the_live_window ... ok +test cache::sparse_csr::sparse_csr_tests::the_pool_row_of_a_token_is_its_offset_in_the_flat_allocation ... ok +test cache::sparse_v_tests::alive_mask_aggregates_grouped_heads_via_max ... ok +test cache::sparse_v_tests::alive_mask_aggregates_q_axis_via_max ... ok +test cache::sparse_v_tests::alive_mask_shape_matches_kv_grid_grouped ... ok +test cache::sparse_v_tests::alive_mask_shape_matches_kv_grid_non_grouped ... ok +test cache::sparse_v_tests::alive_mask_threshold_one_kills_everything ... ok +test cache::sparse_v_tests::alive_mask_threshold_zero_keeps_everything_alive ... ok +test cache::sparse_v_tests::count_weights_below_threshold_counts_strictly_below ... ok +test cache::sparse_v_tests::sparse_v_attention_returns_none_when_not_available ... ok +test cache::sparse_v_tests::sparse_v_attention_threshold_default_keeps_quality ... ok +test cache::sparse_v_tests::sparse_v_attention_threshold_one_zeros_output ... ok +test cache::sparse_v_tests::sparse_v_attention_threshold_zero_matches_full_dequant ... ok +test cache::sparse_v_tests::sparse_v_attention_via_cache_matches_full_dequant_at_threshold_zero ... ok +test cache::sparse_v_tests::sparse_v_attention_with_grouped_heads ... ok +test cache::sparse_v_tests::sparse_v_available_returns_false_for_fp16_mode ... ok +test cache::sparse_v_tests::sparse_v_available_returns_false_for_int8_mode ... ok +test cache::sparse_v_tests::sparse_v_available_returns_false_for_turbo4_delegated ... ok +test cache::sparse_v_tests::sparse_v_kernel_enabled_default_macos ... ok +test cache::sparse_v_tests::turbo4_delegated_dequant_sdpa_enabled_default_on ... ok +test cache::sparse_v_tests::turbo4_delegated_fused_enabled_default_off ... ok +test cache::tests::batched_attention_metadata_rejects_mismatched_lengths ... ok +test cache::tests::batched_decode_metadata_tracks_heterogeneous_lengths ... ok +test cache::tests::batched_metadata_assert_consistent_catches_field_skew ... ok +test cache::tests::batched_metadata_extend_empty_uniform_offsets ... ok +test cache::tests::batched_metadata_extend_grow_then_shrink_preserves_per_row_state ... ok +test cache::tests::batched_metadata_extend_rejects_inconsistent_input ... ok +test cache::tests::batched_metadata_extend_uniform_single_item_offsets ... ok +test cache::tests::batched_metadata_filter_rejects_invalid_indices ... ok +test cache::tests::batched_metadata_filter_uniform_single_item_offsets ... ok +test cache::tests::batched_metadata_handles_mixed_mode_caches ... ok +test cache::tests::batched_metadata_uses_live_len_for_kv_lens_after_trim_front ... ok +test cache::tests::cache_pool_allocate_and_release ... ok +test cache::tests::cache_pool_allocates_paged_sequence_state ... ok +test cache::tests::cache_pool_can_override_dense_model_with_paged_sequence_state ... ok +test cache::tests::cache_pool_collects_batch_cache_slices ... ok +test cache::tests::cache_pool_extract_and_restore_with_contents_round_trips ... ok +test cache::tests::cache_pool_independent_state ... ok +test cache::tests::cache_pool_memory_usage ... ok +test cache::tests::cache_pool_paged_append_trim_release_and_reuse ... ok +test cache::tests::cache_pool_refuses_allocation_when_full ... ok +test cache::tests::cache_pool_rejects_non_batching_model ... ok +test cache::tests::cache_pool_release_nonexistent_is_noop ... ok +test cache::tests::cache_pool_release_reopens_slot ... ok +test cache::tests::cache_pool_restores_paged_sequence_state_into_allocator ... ok +test cache::tests::cache_pool_sequence_metadata ... ok +test cache::tests::chunked_cache_trim_front_advances_visible_window ... ok +test cache::tests::extract_paged_blocks_rejects_model_owned_shadow_sequence ... ok +test cache::tests::inplace_write_marker_tracks_own_writes_replacement_and_rollback ... ok +test cache::tests::inplace_writes_never_change_rows_a_shared_snapshot_holds ... ok +test cache::tests::int8_kv_fetch_recovers_values_within_one_quant_step ... ok +test cache::tests::int8_kv_prefill_grow_trim_then_decode_tracks_fp16 ... ok +test cache::tests::int8_kv_trim_front_then_fetch_matches_untrimmed_tail ... ok +test cache::tests::kv_cache_continuation_mask_sizes_from_live_len_not_offset_after_trim ... ok +test cache::tests::kv_cache_trim_clears_storage_when_fully_rewound ... ok +test cache::tests::kv_cache_trim_front_clamps_negative_and_zero ... ok +test cache::tests::kv_cache_trim_front_clamps_to_live_len_when_n_exceeds_size ... ok +test cache::tests::kv_cache_trim_front_clears_buffers_when_dropping_all_entries ... ok +test cache::tests::kv_cache_trim_front_drops_oldest_entries_fp16 ... ok +test cache::tests::kv_cache_trim_front_is_noop_for_turbo_modes ... ok +test cache::tests::kv_cache_trim_front_keep_sink_int8_slices_scales_in_lockstep ... ok +test cache::tests::kv_cache_trim_front_keep_sink_prefix_stable_across_repeated_trims ... ok +test cache::tests::kv_cache_trim_front_keep_sink_retains_prefix_and_tail ... ok +test cache::tests::kv_cache_trim_front_keep_sink_zero_matches_plain_front_trim ... ok +test cache::tests::kv_cache_trim_front_preserves_monotonic_offset_under_subsequent_writes ... ok +test cache::tests::kv_cache_trim_front_preserves_rope_relative_positions_under_attention ... ok +test cache::tests::kv_cache_trim_front_simulated_offset_decrement_breaks_rope_attention ... ok +test cache::tests::live_window_without_write_matches_the_cache_and_leaves_it_unchanged ... ok +test cache::tests::paged_layout_validates_block_geometry ... ok +test cache::tests::restore_paged_state_with_contents_releases_blocks_on_missing_remap ... ok +test cache::tests::rotating_cache_multi_token_append_after_trim_uses_visible_prefix ... ok +test cache::tests::rotating_cache_prefill_shapes_expose_exact_window_through_decode ... ok +test cache::tests::rotating_cache_speculative_buffer_conversion_keeps_last_window ... ok +test cache::tests::rotating_cache_speculative_buffer_conversion_reorders_wrapped_ring ... ok +test cache::tests::rotating_cache_speculative_buffer_preserves_temporal_prefix ... ok +test cache::tests::rotating_cache_wraps_single_token_updates_to_window_size ... ok +test cache::tests::rotating_inplace_warmup_and_wrap_keep_shared_snapshots_intact ... ok +test cache::tests::rotating_steady_state_snapshot_survives_the_next_wrap_write ... ok +test cache::tests::sequence_id_display ... ok +test cache::tests::sync_paged_state_with_dense_cache_offsets_tracks_rewinds ... ok +test cache::tests::sync_paged_state_with_dense_skips_pool_backed_sequences ... ok +test cache::tests::sync_paged_state_with_lengths_empty_is_benign_noop ... ok +test cache::turbo::allowlist::tests::allowlisted_family_passes ... ok +test cache::turbo::allowlist::tests::allowlisted_turbo4_keeps_symmetric ... ok +test cache::turbo::allowlist::tests::case_insensitive_lookup ... ok +test cache::turbo::allowlist::tests::deepseek_v2_is_not_treated_as_a_latent_family ... ok +test cache::turbo::allowlist::tests::empty_string_rejected ... ok +test cache::turbo::allowlist::tests::latent_family_keeps_fp16_without_a_warning ... ok +test cache::turbo::allowlist::tests::latent_family_resolves_every_quantized_mode_to_fp16 ... ok +test cache::turbo::allowlist::tests::latent_family_turbo4_lands_on_fp16_not_turbo4_asym ... ok +test cache::turbo::allowlist::tests::non_allowlisted_family_rejected ... ok +test cache::turbo::allowlist::tests::non_allowlisted_turbo4_falls_back_to_asym ... ok +test cache::turbo::allowlist::tests::other_modes_on_an_ordinary_family_pass_through ... ok +test cache::turbo::allowlist::tests::parent_family_does_not_match_child_entry ... ok +test cache::turbo::allowlist::tests::unknown_model_type_passes_non_turbo4_modes_through ... ok +test cache::turbo::allowlist::tests::warning_message_includes_model_type_and_fallback ... ok +test cache::turbo::allowlist::tests::whitespace_is_trimmed ... ok +test cache::turbo::boundary::tests::boundary_mode_passes_through_non_turbo ... ok +test cache::turbo::boundary::tests::boundary_mode_upgrades_turbo_to_fp16 ... ok +test cache::turbo::boundary::tests::is_boundary_layer_flags_first_and_last_n ... ok +test cache::turbo::boundary::tests::is_boundary_layer_handles_zero_boundary ... ok +test cache::turbo::boundary::tests::parse_default_when_unset_or_empty ... ok +test cache::turbo::boundary::tests::parse_explicit_value ... ok +test cache::turbo::boundary::tests::parse_explicit_zero_disables ... ok +test cache::turbo::boundary::tests::parse_garbage_falls_back_to_default ... ok +test cache::turbo::boundary::tests::parse_negative_clamps_to_zero ... ok +test cache::turbo::boundary::tests::resolve_boundary_count_clamps_to_half_layers ... ok +test cache::turbo::boundary::tests::resolve_boundary_count_handles_negative ... ok +test cache::turbo::boundary::tests::resolve_layer_mode_matches_resolve_layer_modes ... ok +test cache::turbo::boundary::tests::resolve_layer_modes_clamps_when_too_many_boundary ... ok +test cache::turbo::boundary::tests::resolve_layer_modes_empty_model ... ok +test cache::turbo::boundary::tests::resolve_layer_modes_no_op_for_fp16 ... ok +test cache::turbo::boundary::tests::resolve_layer_modes_no_op_for_int8 ... ok +test cache::turbo::boundary::tests::resolve_layer_modes_upgrades_boundary_for_turbo4_asym ... ok +test cache::turbo::boundary::tests::resolve_layer_modes_zero_boundary_keeps_all_layers_at_nominal ... ok +test cache::turbo::codebook::tests::b2_closed_form_all_dims ... ok +test cache::turbo::codebook::tests::b2_closed_form_d128 ... ok +test cache::turbo::codebook::tests::b2_closed_form_d64 ... ok +test cache::turbo::codebook::tests::b3_d128_vs_fixture ... ok +test cache::turbo::codebook::tests::b3_d64_vs_fixture ... ok +test cache::turbo::codebook::tests::b4_d128_vs_fixture ... ok +test cache::turbo::codebook::tests::b4_d64_vs_fixture ... ok +test cache::turbo::codebook::tests::centroids_are_antisymmetric ... ok +test cache::turbo::codebook::tests::centroids_are_sorted ... ok +test cache::turbo::codebook::tests::centroids_count_is_two_pow_b ... ok +test cache::turbo::codebook::tests::codebook_from_centroids_builds_correct_boundaries ... ok +test cache::turbo::codebook::tests::full_fixture_comparison_all_bit_width_head_dim_pairs ... ok +test cache::turbo::codebook::tests::gaussian_cdf_standard_values ... ok +test cache::turbo::codebook::tests::gaussian_ppf_roundtrip ... ok +test cache::turbo::codebook::tests::gaussian_ppf_symmetry ... ok +test cache::turbo::codebook::tests::nearest_centroid_indices_basic ... ok +test cache::turbo::codebook::tests::nearest_centroid_indices_matches_naive_nearest ... ok +test cache::turbo::codebook::tests::nearest_centroid_indices_midpoint_boundary ... ok +test cache::turbo::codebook::tests::nearest_centroid_indices_with_boundaries_matches_naive ... ok +test cache::turbo::codebook::tests::optimal_codebook_arc_is_shared ... ok +test cache::turbo::codebook::tests::optimal_codebook_returns_consistent_centroids ... ok +test cache::turbo::pack3::tests::out_of_range_indices_are_masked ... ok +test cache::turbo::pack3::tests::packed_bytes_matches_supported_head_dims ... ok +test cache::turbo::pack3::tests::packed_bytes_rejects_non_multiple_of_8 - should panic ... ok +test cache::turbo::pack3::tests::round_trip_max_indices ... ok +test cache::turbo::pack3::tests::round_trip_per_token_head_dim_128 ... ok +test cache::turbo::pack3::tests::round_trip_per_token_head_dim_80 ... ok +test cache::turbo::pack3::tests::round_trip_random_multi_group ... ok +test cache::turbo::pack3::tests::round_trip_staircase_indices ... ok +test cache::turbo::pack3::tests::round_trip_zero_indices ... ok +test cache::turbo::quant3::tests::packed_bytes_per_token_proxy_matches_pack3 ... ok +test cache::turbo::quant3::tests::packed_indices_stay_in_range ... ok +test cache::turbo::quant3::tests::quantize_dequantize_round_trip_recovers_v_within_bound ... ok +test cache::turbo::quant3::tests::quantize_is_deterministic ... ok +test cache::turbo::quant3::tests::stored_norms_match_input_l2 ... ok +test cache::turbo::quant3::tests::turbo_quant_params3_centroid_count_matches_bit_width ... ok +test cache::turbo::quant3::tests::zero_vector_dequantizes_to_zero ... ok +test cache::turbo::quant::tests::generate_signs_is_pm_one ... ok +test cache::turbo::quant::tests::k_and_v_packed_outputs_differ_for_same_input ... ok +test cache::turbo::quant::tests::k_and_v_sign_vectors_are_independent ... ok +test cache::turbo::quant::tests::k_side_quantize_dequantize_round_trip_bounded_error ... ok +test cache::turbo::quant::tests::lcg32_is_deterministic ... ok +test cache::turbo::quant::tests::nibble_packing_layout_is_documented ... ok +test cache::turbo::quant::tests::packed_bytes_per_token_matches_layout ... ok +test cache::turbo::quant::tests::quantize_dequantize_round_trip_recovers_v_within_bound ... ok +test cache::turbo::quant::tests::quantize_is_deterministic ... ok +test cache::turbo::quant::tests::rotated_dequant_then_inverse_matches_full_dequant ... ok +test cache::turbo::quant::tests::round_up_to_block_pads_correctly ... ok +test cache::turbo::quant::tests::small_norm_v_round_trip_recovers_within_bound ... ok +test cache::turbo::quant::tests::stored_norms_match_input_l2 ... ok +test cache::turbo::quant::tests::turbo_quant_params_centroid_count_matches_bit_width ... ok +test cache::turbo::quant::tests::zero_vector_dequantizes_to_zero ... ok +test cache::turbo::sparse_v::tests::default_threshold_value ... ok +test cache::turbo::sparse_v::tests::fused_bulk_dequant_rotated_matches_graph ... ok +test cache::turbo::sparse_v::tests::threshold_default_when_unset ... ok +test cache::turbo::sparse_v::tests::turbo4_delegated_dequant_sdpa_parse_logic ... ok +test cache::turbo::sparse_v::tests::turbo4_delegated_fused_parse_logic ... ok +test cache::turbo_tests::boundary_v::boundary_clamping_does_not_overprotect_shallow_models ... ok +test cache::turbo_tests::boundary_v::boundary_layer_caches_use_fp16_storage ... ok +test cache::turbo_tests::boundary_v::default_boundary_count_is_two ... ok +test cache::turbo_tests::boundary_v::detach_adopt_preserves_per_layer_mode ... ok +test cache::turbo_tests::boundary_v::fp16_mode_is_unaffected_by_boundary_policy ... ok +test cache::turbo_tests::boundary_v::int8_mode_is_unaffected_by_boundary_policy ... ok +test cache::turbo_tests::boundary_v::nbytes_reflects_per_layer_mode_mix ... ok +test cache::turbo_tests::boundary_v::single_layer_helper_matches_bulk_for_turbo_modes ... ok +test cache::turbo_tests::boundary_v::typical_32_layer_split_protects_first_two_and_last_two ... ok +test cache::turbo_tests::boundary_v::zero_boundary_disables_policy ... ok +test cache::turbo_tests::cache_pool_detach_adopt_preserves_turbo3_asym ... ok +test cache::turbo_tests::cache_pool_detach_adopt_preserves_turbo4_asym ... ok +test cache::turbo_tests::delegated_clone_handle_preserves_unified_k_data ... ok +test cache::turbo_tests::delegated_compressed_predecode_compaction_folds_prefill_once ... ok +test cache::turbo_tests::delegated_fp16_fast_path_keeps_unified_v_and_sidecars ... ok +test cache::turbo_tests::delegated_fp16_fast_path_predecode_compaction_folds_prefill_once ... ok +test cache::turbo_tests::delegated_fp16_fast_path_survives_detach_adopt ... ok +test cache::turbo_tests::delegated_fp16_lazy_sidecars_skip_decode_and_compact_on_detach ... ok +test cache::turbo_tests::delegated_fp16_sidecar_policy_parses_values ... ok +test cache::turbo_tests::delegated_nbytes_no_cold_k_buffer_after_fold ... ok +test cache::turbo_tests::delegated_per_token_v_budget_after_issue_528 ... ok +test cache::turbo_tests::delegated_unified_k_buffer_grows_with_offset ... ok +test cache::turbo_tests::delegated_unified_k_matches_fp16_reference ... ok +test cache::turbo_tests::quantize_k_turbo4_rejects_a_tensor_wider_than_its_params - should panic ... ok +test cache::turbo_tests::rotating_fp16_mode_unchanged_by_b9 ... ok +test cache::turbo_tests::rotating_install_detached_rejects_non_empty_target ... ok +test cache::turbo_tests::rotating_new_defaults_to_fp16_mode ... ok +test cache::turbo_tests::rotating_turbo4_accepts_canonical_window_sizes ... ok +test cache::turbo_tests::rotating_turbo4_clone_handle_clears_turbo_params_on_source ... ok +test cache::turbo_tests::rotating_turbo4_clone_handle_round_trip_preserves_sidecars ... ok +test cache::turbo_tests::rotating_turbo4_detach_preserves_idx_after_wraparound ... ok +test cache::turbo_tests::rotating_turbo4_prefill_populates_sidecars ... ok +test cache::turbo_tests::rotating_turbo4_rejects_misaligned_max_size - should panic ... ok +test cache::turbo_tests::rotating_turbo4_single_token_returns_fp16_v ... ok +test cache::turbo_tests::rotating_turbo4_wraparound_overwrites_oldest_slot ... ok +test cache::turbo_tests::rotating_turbo4_wraparound_preserves_other_block_data ... ok +test cache::turbo_tests::symmetric_turbo4_accepts_matching_head_dims ... ok +test cache::turbo_tests::symmetric_turbo4_rejects_mismatched_k_and_v_head_dims - should panic ... ok +test cache::turbo_tests::turbo3_asym_clone_handle_install_then_dequant_matches_pre_detach ... ok +test cache::turbo_tests::turbo3_asym_clone_handle_round_trip_preserves_sidecars ... ok +test cache::turbo_tests::turbo3_asym_display_round_trip ... ok +test cache::turbo_tests::turbo3_asym_distortion_is_bounded_and_worse_than_turbo4 ... ok +test cache::turbo_tests::turbo3_asym_keys_are_bit_identical_to_input ... ok +test cache::turbo_tests::turbo3_asym_layer_modes_apply_boundary_upgrade ... ok +test cache::turbo_tests::turbo3_asym_multi_token_growth_keeps_visible_window_correct ... ok +test cache::turbo_tests::turbo3_asym_packed_dim_matches_head_dim_grid ... ok +test cache::turbo_tests::turbo3_asym_parses_aliases ... ok +test cache::turbo_tests::turbo3_asym_parses_canonical_string ... ok +test cache::turbo_tests::turbo3_asym_parsing_is_case_insensitive ... ok +test cache::turbo_tests::turbo3_asym_partial_trim_shrinks_v_sidecars ... ok +test cache::turbo_tests::turbo3_asym_quantize_is_deterministic_across_caches ... ok +test cache::turbo_tests::turbo3_asym_trim_to_zero_clears_all_buffers_and_params ... ok +test cache::turbo_tests::turbo3_asym_update_returns_fp16_dequantized_v ... ok +test cache::turbo_tests::turbo3_asym_uses_fewer_bytes_than_turbo4_asym ... ok +test cache::turbo_tests::turbo3_asym_v_reconstruction_has_bounded_error ... ok +test cache::turbo_tests::turbo4_asym_clone_handle_clears_turbo_params_on_source ... ok +test cache::turbo_tests::turbo4_asym_clone_handle_install_then_dequant_matches_pre_detach ... ok +test cache::turbo_tests::turbo4_asym_clone_handle_round_trip_preserves_sidecars ... ok +test cache::turbo_tests::turbo4_asym_continuous_batching_grow_shrink_matches_sequential ... ok +test cache::turbo_tests::turbo4_asym_dequant_sdpa_matches_full_dequant_attention ... ok +test cache::turbo_tests::turbo4_asym_display_round_trip ... ok +test cache::turbo_tests::turbo4_asym_keys_are_bit_identical_to_input ... ok +test cache::turbo_tests::turbo4_asym_multi_token_growth_keeps_visible_window_correct ... ok +test cache::turbo_tests::turbo4_asym_nbytes_includes_v_sidecars_and_excludes_values ... ok +test cache::turbo_tests::turbo4_asym_parses_alias ... ok +test cache::turbo_tests::turbo4_asym_parses_canonical_string ... ok +test cache::turbo_tests::turbo4_asym_parsing_is_case_insensitive ... ok +test cache::turbo_tests::turbo4_asym_partial_trim_shrinks_v_sidecars ... ok +test cache::turbo_tests::turbo4_asym_trim_to_zero_clears_all_buffers ... ok +test cache::turbo_tests::turbo4_asym_trim_to_zero_clears_turbo_params ... ok +test cache::turbo_tests::turbo4_asym_update_returns_fp16_dequantized_v ... ok +test cache::turbo_tests::turbo4_asym_v_reconstruction_has_bounded_error ... ok +test cache::turbo_tests::turbo4_dequant_sdpa_matches_full_dequant_attention ... ok +test cache::turbo_tests::unknown_mode_string_errors ... ok +test command_buffer_budget::tests::guard_without_a_budget_leaves_the_slot_alone ... ok +test cpu_qmm_accum_tests::cpu_affine_qmm_plain_accumulates_in_f32 ... ok +test cpu_qmm_accum_tests::cpu_affine_qmm_t_accumulates_in_f32 ... ok +test cpu_qmm_accum_tests::cpu_affine_qmm_t_odd_widths_accumulate_in_f32 ... ok +test cpu_qmm_accum_tests::cpu_mxfp4_qmm_t_accumulates_in_f32 ... ok +test cuda_arch_tests::a_real_only_entry_offers_no_ptx_to_jit ... ok +test cuda_arch_tests::accepts_a_comma_separated_list_too ... ok +test cuda_arch_tests::an_empty_or_unparseable_list_covers_nothing ... ok +test cuda_arch_tests::arch_specific_entry_covers_only_its_exact_target ... ok +test cuda_arch_tests::constructed_entries_follow_the_same_rules_as_parsed_ones ... ok +test cuda_arch_tests::cubin_carries_forward_across_minor_revisions_but_not_backward ... ok +test cuda_arch_tests::cubin_does_not_carry_across_major_versions ... ok +test cuda_arch_tests::cubin_does_not_carry_backward_to_an_older_minor ... ok +test cuda_arch_tests::cubin_wins_over_ptx_when_the_list_offers_both ... ok +test cuda_arch_tests::drops_entries_the_parser_does_not_recognise ... ok +test cuda_arch_tests::entry_display_round_trips_through_the_parser ... ok +test cuda_arch_tests::exact_match_is_covered_by_a_cubin ... ok +test cuda_arch_tests::family_specific_entry_covers_forward_within_its_major_only ... ok +test cuda_arch_tests::older_generic_entry_covers_a_newer_device_by_ptx_jit ... ok +test cuda_arch_tests::parses_arch_and_family_suffixes ... ok +test cuda_arch_tests::parses_plain_entry_into_major_and_minor ... ok +test cuda_arch_tests::parses_real_and_virtual_qualifiers ... ok +test cuda_arch_tests::parses_the_release_matrices_completely ... ok +test cuda_arch_tests::parses_three_digit_entry_with_single_digit_minor ... ok +test cuda_arch_tests::the_build_records_the_architecture_list_it_compiled_for ... ok +test cuda_arch_tests::the_capability_probe_agrees_with_the_backend ... ok +test cuda_arch_tests::the_mismatch_message_names_both_sides_and_a_working_rebuild ... ok +test cuda_arch_tests::the_rejected_architecture_specific_blackwell_forms_still_parse_as_documented ... ok +test cuda_arch_tests::the_suggested_rebuild_matches_the_shipped_spelling ... ok +test cuda_arch_tests::this_build_can_run_on_the_host_running_its_tests ... ok +test cuda_arch_tests::x86_64_release_matrix_covers_the_devices_it_claims ... ok +test cuda_arch_tests::x86_64_release_matrix_does_not_cover_a_v100 ... ok +test cuda_graph_budget::tests::dense_and_malformed_configs_apply_nothing ... ok +test cuda_graph_budget::tests::every_measured_winner_is_listed_and_every_loser_is_not ... ok +test cuda_graph_budget::tests::gb10_budget_matches_mlx_blackwell_row ... ok +test cuda_graph_budget::tests::missing_model_dir_reads_as_unlisted ... ok +test cuda_graph_budget::tests::only_compute_capability_12_1_with_a_listed_family_is_raised ... ok +test cuda_graph_budget::tests::operator_set_variables_win_per_variable ... ok +test cuda_graph_budget::tests::shape_from_laguna_style_config ... ok +test cuda_graph_budget::tests::shape_reads_nested_text_config_and_alternate_expert_keys ... ok +test cuda_test_serialization_tests::tests::a_silent_invocation_falls_back_to_the_machines_parallelism ... ok +test cuda_test_serialization_tests::tests::an_invocation_that_says_nothing_reports_nothing ... ok +test cuda_test_serialization_tests::tests::both_spellings_of_the_command_line_flag_are_read ... ok +test cuda_test_serialization_tests::tests::the_command_line_flag_wins_over_the_environment ... ok +test cuda_test_serialization_tests::the_cuda_test_suite_must_run_single_threaded ... ok +test decode_finish::tests::a_non_eos_token_is_pushed_to_generated_and_history ... ok +test decode_finish::tests::a_stop_string_and_max_tokens_on_the_same_token_report_stop_sequence ... ok +test decode_finish::tests::checks_run_in_the_reference_order ... ok +test decode_finish::tests::disabled_loop_detection_never_ends_a_repeating_stream ... ok +test decode_finish::tests::enabled_loop_detection_ends_on_the_completing_repeat ... ok +test decode_finish::tests::eos_on_the_first_token_is_not_pushed_and_skips_every_hook ... ok +test decode_finish::tests::max_tokens_one_finishes_length_on_the_prefill_token ... ok +test decode_finish::tests::no_stop_hooks_never_fire ... ok +test decode_finish::tests::the_context_bound_sees_the_post_push_length ... ok +test drafter::dflash::attention::tests::cache_offset_advances_by_ctx_only_not_by_prop ... ok +test drafter::dflash::attention::tests::cache_offset_advances_only_by_ctx_across_multiple_rounds ... ok +test drafter::dflash::attention::tests::forward_output_shape_matches_proposal_shape ... ok +test drafter::dflash::attention::tests::rope_is_neox_style_false_selects_traditional_rope ... ok +test drafter::dflash::cache::tests::alias_constructs_default_cache_with_zero_offset ... ok +test drafter::dflash::cache::tests::alias_is_kvcache_type_at_compile_time ... ok +test drafter::dflash::config::dspark_tests::dflash_defaults_keep_neox_rope_and_no_markov_head ... ok +test drafter::dflash::config::dspark_tests::dspark_config_lifts_dflash_config_and_markov_rank ... ok +test drafter::dflash::config::dspark_tests::dspark_verify_width_is_block_size_plus_one ... ok +test drafter::dflash::config::dspark_tests::probe_accepts_the_dspark_architecture_marker ... ok +test drafter::dflash::config::tests::config_roundtrips_through_json ... ok +test drafter::dflash::config::tests::default_mask_token_id_fits_in_vocab_size ... ok +test drafter::dflash::config::tests::default_matches_upstream_z_lab_qwen35_4b_dflash ... ok +test drafter::dflash::config::tests::default_q_proj_out_dim_matches_n_heads_times_head_dim ... ok +test drafter::dflash::config::tests::default_target_layer_ids_are_in_bounds ... ok +test drafter::dflash::config::tests::from_json_flattens_nested_dflash_config_overrides ... ok +test drafter::dflash::config::tests::from_json_passes_through_top_level_when_no_nested_block ... ok +test drafter::dflash::config::tests::from_json_rejects_malformed_field_type ... ok +test drafter::dflash::config::tests::from_json_rejects_non_object_root ... ok +test drafter::dflash::config::tests::from_json_uses_defaults_when_unset ... ok +test drafter::dflash::config::tests::probe_accepts_either_marker_on_its_own ... ok +test drafter::dflash::config::tests::probe_accepts_the_muse_glimmer_assistant_markers ... ok +test drafter::dflash::config::tests::probe_accepts_the_published_dflash_drafter_config ... ok +test drafter::dflash::config::tests::probe_reads_config_json_from_a_directory ... ok +test drafter::dflash::config::tests::probe_rejects_an_ordinary_qwen3_full_model ... ok +test drafter::dflash::config::tests::probe_rejects_non_object_and_non_array_marker_shapes ... ok +test drafter::dflash::config::tests::probe_returns_false_for_missing_or_unparseable_config ... ok +test drafter::dflash::drafter::tests::a_dspark_config_cannot_put_an_absurd_verify_width_into_effect ... ok +test drafter::dflash::drafter::tests::convert_bf16_no_op_on_already_f16_weights ... ok +test drafter::dflash::drafter::tests::convert_bf16_skips_quantization_auxiliaries ... ok +test drafter::dflash::drafter::tests::dflash_drafter_is_object_safe ... ok +test drafter::dflash::drafter::tests::drafter_dtype_policy_mirrors_target_loaders ... ok +test drafter::dflash::drafter::tests::dspark_config_pairing_gate_bounds_the_mask_id_and_the_verify_width ... ok +test drafter::dflash::drafter::tests::dspark_config_pairing_gate_checks_layer_ids_and_fc_width ... ok +test drafter::dflash::drafter::tests::dspark_target_pairing_gate_rejects_a_mismatched_target ... ok +test drafter::dflash::drafter::tests::env_flag_parsing_matches_binary_spelling ... ok +test drafter::dflash::markov::tests::a_quantized_markov_factor_has_its_packed_width_checked ... ok +test drafter::dflash::markov::tests::dspark_draft_block_uses_all_positions ... ok +test drafter::dflash::markov::tests::markov_chain_feeds_previous_token_into_next_step ... ok +test drafter::dflash::markov::tests::markov_factors_are_measured_against_the_config ... ok +test drafter::dflash::markov::tests::markov_head_load_requires_both_factors ... ok +test drafter::dflash::model::tests::a_self_contained_dspark_checkpoint_has_its_vocab_axis_measured ... ok +test drafter::dflash::model::tests::bind_target_embedding_resolves_the_tombstone ... ok +test drafter::dflash::model::tests::bind_target_lm_head_resolves_the_tombstone ... ok +test drafter::dflash::model::tests::from_weights_allows_target_bound_lm_head_when_untied_head_missing ... ok +test drafter::dflash::model::tests::from_weights_builds_markov_head_for_dspark_config ... ok +test drafter::dflash::model::tests::from_weights_builds_tombstone_when_embed_tokens_absent ... ok +test drafter::dflash::model::tests::from_weights_eager_loads_when_embed_tokens_present ... ok +test drafter::dflash::model::tests::from_weights_requires_markov_tensors_only_for_dspark ... ok +test drafter::dflash::model::tests::lm_head_match_arms_are_exhaustive_compile_time ... ok +test drafter::dflash::model::tests::sanitize_is_idempotent ... ok +test drafter::dflash::model::tests::sanitize_preserves_non_prefixed_keys ... ok +test drafter::dflash::model::tests::sanitize_renames_model_lm_head_weight ... ok +test drafter::dflash::model::tests::sanitize_strips_model_prefix ... ok +test drafter::dflash::muse::drafter::pairing_tests::pairing_error_names_the_measured_mismatch ... ok +test drafter::dflash::muse::tests::bidirectional_sliding_mask_matches_reference_rows ... ok +test drafter::dflash::muse::tests::config_accepts_the_published_flat_layout ... ok +test drafter::dflash::muse::tests::config_flattens_dflash_config_and_validates_layer_types ... ok +test drafter::dflash::muse::tests::config_refuses_dimensions_that_would_wrap_an_i32 ... ok +test drafter::dflash::muse::tests::configured_block_size_peek_reads_the_runtime_minimum ... ok +test drafter::dflash::muse::tests::draft_block_caches_context_rows_only ... ok +test drafter::dflash::muse::tests::draft_is_deterministic_and_reads_the_context ... ok +test drafter::dflash::muse::tests::prompt_longer_than_window_skips_oldest_context ... ok +test drafter::dflash::muse::tests::validate_target_compat_rejects_a_target_of_another_width ... ok +test drafter::dflash::muse::tests::weights_without_embed_or_lm_head_bind_from_target ... ok +test drafter::dflash::round_loop::tests::dflash_round_loop_starts_at_the_configured_depth ... ok +test drafter::dflash::round_loop::tests::dspark_round_loop_greedy_parity_for_sixty_four_tokens ... ok +test drafter::dflash::round_loop::tests::greedy_parity_with_synthetic_target_for_thirty_two_tokens ... ok +test drafter::dflash::round_loop::tests::round_loop_accept_lens_progress_pins_three_rounds_at_block_size_8 ... ok +test drafter::dflash::round_loop::tests::round_loop_full_accept_every_round_skips_rollback ... ok +test drafter::dflash::round_loop::tests::round_loop_max_tokens_one_emits_nothing ... ok +test drafter::dflash::round_loop::tests::round_loop_partial_accept_invokes_rollback_with_correct_args ... ok +test drafter::dflash::round_loop::tests::round_loop_passes_drafter_target_layer_ids_to_verify ... ok +test drafter::dflash::round_loop::tests::round_loop_skips_rollback_on_full_accept_round ... ok +test drafter::dflash::round_loop::tests::round_loop_stops_on_eos_emission ... ok +test drafter::dflash::round_loop::tests::speculative_walk_accepts_full_prefix ... ok +test drafter::dflash::round_loop::tests::speculative_walk_empty_draft_returns_target_first_token ... ok +test drafter::dflash::round_loop::tests::speculative_walk_stops_at_first_mismatch ... ok +test drafter::dflash::round_loop::tests::speculative_walk_truncates_to_budget ... ok +test drafter::dflash::round_loop::tests::speculative_walk_zero_accept_returns_single_bonus ... ok +test drafter::dflash::round_loop_batched::tests::batched_b2_extreme_rollback_divergence_every_round ... ok +test drafter::dflash::round_loop_batched::tests::batched_full_accept_every_row_every_round_skips_rollback ... ok +test drafter::dflash::round_loop_batched::tests::batched_per_row_early_eos_freezes_in_place ... ok +test drafter::dflash::round_loop_batched::tests::batched_per_row_partial_accept_rollback_carries_per_row_slice ... ok +test drafter::dflash::round_loop_batched::tests::greedy_parity_against_single_row_run ... ok +test drafter::dflash::round_loop_batched::tests::speculative_walk_batched_full_prefix_each_row ... ok +test drafter::dflash::round_loop_batched::tests::speculative_walk_batched_per_row_budget_truncation ... ok +test drafter::dflash::round_loop_batched::tests::speculative_walk_batched_per_row_divergence ... ok +test drafter::dflash::round_loop_batched::tests::speculative_walk_batched_zero_budget_emits_empty ... ok +test drafter::draft_step_profile_tests::a_profile_with_no_steps_names_nothing_and_divides_by_nothing ... ok +test drafter::draft_step_profile_tests::an_unsynchronized_profile_refuses_to_name_a_dominant_component ... ok +test drafter::draft_step_profile_tests::components_sum_the_five_buckets ... ok +test drafter::draft_step_profile_tests::dominant_names_the_largest_bucket ... ok +test drafter::draft_step_profile_tests::merging_keeps_the_buckets_apart_and_weakens_synchronized ... ok +test drafter::draft_step_profile_tests::per_step_ms_divides_the_wall_clock_by_the_step_count ... ok +test drafter::gemma4_assistant::config::tests::deserialize_e4b_style_config_round_trips_defaults ... ok +test drafter::gemma4_assistant::config::tests::deserialize_gemma4_unified_assistant_config_parses_and_normalizes ... ok +test drafter::gemma4_assistant::config::tests::layer_type_helpers_match_layer_types_array ... ok +test drafter::gemma4_assistant::config::tests::normalize_rejects_missing_text_config ... ok +test drafter::gemma4_assistant::tests::bind_accepts_centroid_lm_head_via_masked_embedder ... ok +test drafter::gemma4_assistant::tests::bind_rejects_target_without_embed_tokens_override ... ok +test drafter::gemma4_assistant::tests::centroid_path_bind_set_shared_kv_draft_block_end_to_end ... ok +test drafter::gemma4_assistant::tests::draft_block_batched_rejects_block_size_zero_with_empty_rows ... ok +test drafter::gemma4_assistant::tests::draft_block_batched_rejects_call_before_set_shared_kv ... ok +test drafter::gemma4_assistant::tests::draft_block_batched_returns_b_rows_of_k_minus_one_proposals ... ok +test drafter::gemma4_assistant::tests::draft_block_rejects_call_before_bind ... ok +test drafter::gemma4_assistant::tests::draft_block_rejects_call_before_set_shared_kv ... ok +test drafter::gemma4_assistant::tests::drafter_kind_returns_mtp ... ok +test drafter::gemma4_assistant::tests::from_weights_errors_on_missing_pre_projection ... ok +test drafter::gemma4_assistant::tests::from_weights_loads_non_tied_drafter_with_explicit_lm_head ... ok +test drafter::gemma4_assistant::tests::from_weights_loads_tied_dense_drafter ... ok +test drafter::gemma4_assistant::tests::gemma4_assistant_drafter_is_object_safe_via_box_dyn ... ok +test drafter::gemma4_assistant::tests::make_cache_returns_empty_vec ... ok +test drafter::gemma4_assistant::tests::runner_up_names_the_second_best_token_and_its_margin ... ok +test drafter::gemma4_assistant::tests::sanitize_drops_lm_head_when_tied ... ok +test drafter::gemma4_assistant::tests::sanitize_keeps_lm_head_when_not_tied ... ok +test drafter::gemma4_assistant::tests::set_shared_kv_rejects_unexpected_tensor_count ... ok +test drafter::gemma4_assistant::tests::set_shared_kv_with_left_padding_routes_through_normalizer ... ok +test drafter::gemma4_assistant::tests::validate_target_compat_accepts_matching_hidden_size ... ok +test drafter::gemma4_assistant::tests::validate_target_compat_rejects_hidden_size_mismatch ... ok +test drafter::gemma4_assistant::tests::validate_target_compat_rejects_target_without_embed_tokens ... ok +test drafter::inkling_mtp::tests::actual_mtp_tensor_enables_detection ... ok +test drafter::inkling_mtp::tests::config_flag_without_mtp_tensors_does_not_enable_drafter ... ok +test drafter::inkling_mtp::tests::config_uses_mtp_layer_count_local_ids_and_default_block_size ... ok +test drafter::inkling_mtp::tests::drafter_forward_shape_is_finite_after_five_token_prompt ... ok +test drafter::inkling_mtp::tests::flat_snapshot_restores_kv_and_all_four_convolution_states_exactly ... ok +test drafter::inkling_mtp::tests::index_filter_opens_only_the_mtp_shard ... ok +test drafter::inkling_mtp::tests::sanitizer_maps_attention_and_splits_w13 ... ok +test drafter::laguna_dflash::tests::config_rejects_bad_contract ... ok +test drafter::laguna_dflash::tests::context_appends_continue_the_absolute_positions ... ok +test drafter::laguna_dflash::tests::context_trim_keeps_window_minus_one ... ok +test drafter::laguna_dflash::tests::draft_block_depends_on_rope ... ok +test drafter::laguna_dflash::tests::draft_block_is_causal_inside_the_proposal ... ok +test drafter::laguna_dflash::tests::draft_block_sees_the_context_within_its_window ... ok +test drafter::laguna_dflash::tests::from_weights_rejects_projection_rows_that_disagree_with_the_config ... ok +test drafter::laguna_dflash::tests::fused_qkv_rows_are_read_in_q_k_v_order ... ok +test drafter::laguna_dflash::tests::sanitize_fuses_split_qkv_and_rejects_mixed ... ok +test drafter::laguna_dflash::tests::xs_2_1_config_loads_and_defaults_sliding_windows ... ok +test drafter::masked_embedder::tests::argmax_never_picks_masked_token_with_argmax_sampling ... ok +test drafter::masked_embedder::tests::default_constants_match_canonical_gemma4_e2b_e4b_drafter ... ok +test drafter::masked_embedder::tests::degenerate_dense_equivalence_when_top_k_equals_num_centroids ... ok +test drafter::masked_embedder::tests::fixture_top_k_indices_match_hand_computed_reference ... ok +test drafter::masked_embedder::tests::forward_handles_2d_hidden_input ... ok +test drafter::masked_embedder::tests::forward_preserves_dtype_for_f16_hidden ... ok +test drafter::masked_embedder::tests::forward_returns_correct_output_shape ... ok +test drafter::masked_embedder::tests::mask_value_strictly_less_than_min_selected ... ok +test drafter::masked_embedder::tests::new_caches_vocab_size_per_centroid ... ok +test drafter::masked_embedder::tests::new_rejects_top_k_too_large ... ok +test drafter::masked_embedder::tests::new_rejects_top_k_zero ... ok +test drafter::masked_embedder::tests::new_rejects_vocab_not_divisible ... ok +test drafter::masked_embedder::tests::sanitize_casts_i64_token_ordering_to_i32 ... ok +test drafter::masked_embedder::tests::sanitize_is_noop_when_already_i32 ... ok +test drafter::masked_embedder::tests::sanitize_is_noop_when_key_missing ... ok +test drafter::masks::tests::full_mask_dtype_matches_request_bfloat16 ... ok +test drafter::masks::tests::full_mask_dtype_matches_request_float16 ... ok +test drafter::masks::tests::full_mask_key_offset_uses_absolute_key_positions ... ok +test drafter::masks::tests::full_mask_per_row_short_prefix_produces_expected_bias ... ok +test drafter::masks::tests::full_mask_returns_none_when_no_padding ... ok +test drafter::masks::tests::full_mask_returns_none_when_scalar_valid_covers_full_kv ... ok +test drafter::masks::tests::full_mask_scalar_short_prefix_produces_expected_bias ... ok +test drafter::masks::tests::layer_type_canonical_strings_match_upstream ... ok +test drafter::masks::tests::make_drafter_masks_returns_none_for_both_layer_types_in_fast_path ... ok +test drafter::masks::tests::make_drafter_masks_with_valid_len_maps_swa_to_local_window ... ok +test drafter::masks::tests::make_drafter_masks_wrapper_matches_valid_len_query_offset_plus_one ... ok +test drafter::masks::tests::normalize_no_op_when_left_padding_is_none ... ok +test drafter::masks::tests::normalize_per_row_roll_zeros_tail_beyond_kv_valid_len ... ok +test drafter::masks::tests::normalize_preserves_dtype_bfloat16 ... ok +test drafter::masks::tests::swa_mask_dtype_matches_request_bfloat16 ... ok +test drafter::masks::tests::swa_mask_handcoded_fixture_query_len_1_kv_8_window_4 ... ok +test drafter::masks::tests::swa_mask_query_offset_shifts_window ... ok +test drafter::masks::tests::swa_mask_ragged_left_padding_attends_short_rows_valid_keys ... ok +test drafter::masks::tests::swa_mask_returns_none_when_window_covers_everything ... ok +test drafter::qwen3_5_mtp::config::tests::block_size_defaults_to_mtp_depth_plus_two ... ok +test drafter::qwen3_5_mtp::config::tests::head_dim_resolved_does_not_divide_by_zero ... ok +test drafter::qwen3_5_mtp::config::tests::normalize_rejects_absurd_mtp_layer_count ... ok +test drafter::qwen3_5_mtp::config::tests::normalize_rejects_missing_text_config ... ok +test drafter::qwen3_5_mtp::config::tests::normalize_rejects_moe_text_config ... ok +test drafter::qwen3_5_mtp::config::tests::normalize_rejects_non_divisible_gqa_head_counts ... ok +test drafter::qwen3_5_mtp::config::tests::normalize_rejects_zero_attention_heads ... ok +test drafter::qwen3_5_mtp::config::tests::parses_published_qwen38_drafter_config_shape ... ok +test drafter::qwen3_5_mtp::tests::block_size_flags_match_upstream ... ok +test drafter::qwen3_5_mtp::tests::draft_block_requires_bind_then_hidden ... ok +test drafter::qwen3_5_mtp::tests::from_weights_accepts_the_published_inventory ... ok +test drafter::qwen3_5_mtp::tests::from_weights_rejects_missing_tensor ... ok +test drafter::qwen3_5_mtp::tests::from_weights_rejects_unknown_extra_tensor ... ok +test drafter::qwen3_5_mtp::tests::prefill_draft_accept_keeps_positions_in_sync ... ok +test drafter::qwen3_5_mtp::tests::reset_clears_state_and_rebinds ... ok +test drafter::qwen3_5_mtp::tests::sanitize_leaves_already_stripped_layout_unshifted ... ok +test drafter::qwen3_5_mtp::tests::sanitize_strips_mtp_prefix_and_shifts_norms ... ok +test drafter::qwen3_5_mtp::tests::set_shared_kv_anchors_empty_cache_and_drafts_without_history ... ok +test drafter::qwen3_5_mtp::tests::set_shared_kv_clears_stale_state_on_position_mismatch ... ok +test drafter::qwen3_5_mtp::tests::validate_target_compat_accepts_matching_mock ... ok +test drafter::test_log_capture::tests::drafter_tests_reach_the_resolver_only_through_the_install_guard ... ok +test drafter::tests::auto_detect_emits_info_log_for_default_fallback ... ok +test drafter::tests::auto_detect_gemma4_assistant_resolves_to_mtp ... ok +test drafter::tests::auto_detect_gemma4_unified_assistant_resolves_to_mtp ... ok +test drafter::tests::auto_detect_malformed_config_falls_back_to_dflash_default ... ok +test drafter::tests::auto_detect_missing_config_falls_back_to_dflash_default ... ok +test drafter::tests::auto_detect_qwen3_5_mtp_resolves_to_mtp ... ok +test drafter::tests::auto_detect_unknown_model_type_falls_back_to_dflash_default ... ok +test drafter::tests::auto_detect_unrecognised_model_type_falls_back_to_dflash_default ... ok +test drafter::tests::default_drafter_kind_matches_upstream_dflash ... ok +test drafter::tests::default_no_op_methods_are_safe_to_call ... ok +test drafter::tests::drafter_kind_by_model_type_maps_gemma4_assistant_to_mtp ... ok +test drafter::tests::drafter_kind_from_str_rejects_unknown ... ok +test drafter::tests::drafter_kind_string_roundtrip_for_all_variants ... ok +test drafter::tests::drafter_trait_is_object_safe ... ok +test drafter::tests::explicit_kind_passes_through_when_model_type_agrees ... ok +test drafter::tests::explicit_kind_passes_through_when_model_type_is_unmapped ... ok +test drafter::tests::glm4_moe_lite_mtp_resolves_to_mtp_kind ... ok +test drafter::tests::known_drafter_kinds_match_canonical_strings ... ok +test drafter::tests::load_drafter_dflash_fails_without_weights_with_typed_load_error ... ok +test drafter::tests::load_drafter_refuses_glm4_moe_lite_mtp_by_name ... ok +test drafter::tests::load_drafter_returns_typed_not_yet_implemented_for_internal_mtp ... ok +test drafter::tests::load_drafter_routes_mtp_to_gemma4_assistant ... ok +test drafter::tests::load_drafter_routes_qwen3_5_mtp_to_qwen_loader ... ok +test drafter::tests::peek_configured_block_size_ignores_other_model_types ... ok +test drafter::tests::peek_configured_block_size_is_none_when_absent_missing_or_unparseable ... ok +test drafter::tests::peek_configured_block_size_reads_the_glm4_moe_lite_mtp_value ... ok +test drafter::tests::peek_configured_block_size_reads_the_qwen35_mtp_value ... ok +test drafter::tests::warn_also_fires_when_explicit_mtp_disagrees_against_unmapped_inverse ... ok +test drafter::tests::warn_and_honor_explicit_kind_when_disagreeing_with_model_type ... ok +test engine::direct_decode_rows_tests::a_penalty_request_takes_the_per_row_pipeline ... ok +test engine::direct_decode_rows_tests::draw_row_rejects_rows_that_need_the_host_token ... ok +test engine::direct_decode_rows_tests::eos_length_and_callback_finishes_match_the_synchronous_loop ... ok +test engine::direct_decode_rows_tests::model_owned_families_pipeline_penalty_requests_with_the_same_teardowns ... ok +test engine::direct_decode_rows_tests::penalized_streams_match_the_synchronous_loop_token_for_token ... ok +test engine::direct_decode_rows_tests::the_per_row_pipeline_takes_only_what_the_fused_one_turns_away ... ok +test engine::direct_decode_tests::a_pipelined_client_is_reusable ... ok +test engine::direct_decode_tests::a_zero_budget_emits_nothing ... ok +test engine::direct_decode_tests::callback_stop_matches_the_synchronous_loop ... ok +test engine::direct_decode_tests::eos_finish_matches_the_synchronous_loop ... ok +test engine::direct_decode_tests::history_penalties_are_not_fused_eligible ... ok +test engine::direct_decode_tests::length_finish_matches_the_synchronous_loop_with_no_extra_forward ... ok +test engine::direct_decode_tests::lookahead_feedback_input_matches_a_host_input ... ok +test engine::direct_decode_tests::model_owned_families_pipeline_with_an_exact_or_a_discarding_teardown ... ok +test engine::direct_decode_tests::stop_id_finish_matches_the_synchronous_loop ... ok +test engine::direct_decode_tests::token_bias_is_folded_into_the_pipelined_draw ... ok +test engine::eval_fault_tests::discard_failures_release_the_sequence ... ok +test engine::eval_fault_tests::failed_draws_unwind_before_synchronous_fallback ... ok +test engine::eval_fault_tests::failed_in_loop_submits_preserve_seeded_adaptive_stream ... ok +test engine::eval_fault_tests::failed_in_loop_submits_preserve_seeded_fused_stream ... ok +test engine::eval_fault_tests::failed_in_loop_submits_preserve_seeded_mirostat_stream ... ok +test engine::eval_fault_tests::failed_in_loop_submits_preserve_seeded_penalty_stream ... ok +test engine::eval_fault_tests::failed_readbacks_unwind_to_the_committed_prefix ... ok +test engine::eval_fault_tests::failed_submit_commits_pending_eos_and_callback_stop ... ok +test engine::eval_fault_tests::failed_submit_commits_seeded_pending_callback_stop ... ok +test engine::eval_fault_tests::failed_submit_commits_seeded_pending_eos ... ok +test engine::eval_fault_tests::readback_helpers_return_errors ... ok +test engine::eval_fault_tests::rng_snapshots_restore_only_the_owning_threads_key_sequence ... ok +test engine::eval_fault_tests::sampler_reads_report_eval_errors_and_failed_draws_restore_feedback ... ok +test engine::speculative_plain_tests::a_drafter_that_does_not_pipeline_stays_synchronous ... ok +test engine::speculative_plain_tests::a_proposal_during_a_pipelined_run_is_verified_next_round ... ok +test engine::speculative_plain_tests::a_short_scoring_forward_is_an_error_not_a_panic ... ok +test engine::speculative_plain_tests::a_short_verify_forward_is_an_error_not_a_panic ... ok +test engine::speculative_plain_tests::an_eos_inside_a_verify_block_leaves_the_offset_where_the_step_does ... ok +test engine::speculative_plain_tests::failed_plain_readback_unwinds_to_the_committed_prefix ... ok +test engine::speculative_plain_tests::logits_vocab_accepts_only_a_single_row_of_enough_positions ... ok +test engine::speculative_plain_tests::pipelined_plain_rounds_match_the_synchronous_rounds ... ok +test engine::speculative_plain_tests::stop_and_callback_inside_a_pipelined_run_match_the_synchronous_rounds ... ok +test engine::tests::a_batch_of_one_runs_the_per_row_chain ... ok +test engine::tests::a_failed_row_never_touches_its_neighbours ... ok +test engine::tests::direct_engine_announces_the_whole_prompt_to_every_prefill_piece ... ok +test engine::tests::direct_engine_honors_the_callback_and_withholds_eos ... ok +test engine::tests::direct_engine_injects_the_resolved_kv_modes_into_the_model ... ok +test engine::tests::direct_engine_matches_a_hand_driven_sequence_and_closes_it ... ok +test engine::tests::direct_engine_token_bias_composition ... ok +test engine::tests::finish_rows_fails_every_row_on_a_token_count_mismatch ... ok +test engine::tests::fused_and_per_row_paths_agree_for_greedy_rows ... ok +test engine::tests::fused_readback_token_count_mismatch_fails_every_row ... ok +test engine::tests::mask_override_and_matcher_run_in_the_per_row_chain ... ok +test engine::tests::open_allocates_and_close_releases ... ok +test engine::tests::prefill_cohort_covers_every_row ... ok +test engine::tests::prefill_pieces_match_a_single_pass_for_every_partition ... ok +test engine::tests::prefill_returns_last_real_logits_and_trims_padding ... ok +test engine::tests::shared_fused_params_needs_every_row ... ok +test engine::tests::speculative_step_is_undone_by_unwind_appends ... ok +test engine::tests::step_names_the_missing_row ... ok +test engine::tests::step_of_many_runs_the_batched_forward_in_row_order ... ok +test engine::tests::step_of_one_runs_the_single_row_forward ... ok +test engine::tests::step_refuses_a_row_count_that_differs_from_the_batch ... ok +test engine::tests::submit_then_finish_rows_is_one_pipelined_step ... ok +test engine::verify_round_tests::a_failed_round_unwinds_every_append ... ok +test engine::verify_round_tests::a_round_commits_the_accepted_prefix_and_unwinds_the_rest ... ok +test engine::verify_round_tests::the_predicate_refuses_a_model_a_trim_cannot_roll_back ... ok +test eval_faults::tests::plans_are_one_shot_scoped_and_thread_local ... ok +test ffi_tests::activation_helpers_return_the_input_dtype ... ok +test ffi_tests::bench_compiled_vs_uncompiled_swiglu ... ok +test ffi_tests::compiled_qgelu_mlp_forward_4bit_legacy_path_matches_reference ... ok +test ffi_tests::compiled_qgelu_mlp_forward_8bit_decode_matches_reference ... ok +test ffi_tests::compiled_qgelu_mlp_forward_8bit_multi_token_takes_fallback_and_matches_reference ... ok +test ffi_tests::compiled_qgelu_mlp_global_scale_all_present_single_token_matches_reference ... ok +test ffi_tests::compiled_qgelu_mlp_global_scale_mixed_down_only_matches_reference ... ok +test ffi_tests::compiled_qgelu_mlp_global_scale_native_nvfp4_prefill_matches_reference ... ok +test ffi_tests::compiled_qgelu_mlp_global_scale_no_sidecar_matches_unscaled ... ok +test ffi_tests::compiled_qgelu_mlp_global_scale_non_nvfp4_multi_token_fallback_matches_reference ... ok +test ffi_tests::compiled_qgelu_mlp_small_block_rows_match_single_token_bitwise ... ok +test ffi_tests::dequantize_commutes_with_output_axis_slice_on_strided_inputs ... ok +test ffi_tests::from_bytes_round_trips_16bit_floats_bit_exactly ... ok +test ffi_tests::item_f32_converts_from_the_arrays_own_dtype ... ok +test ffi_tests::item_readers_convert_across_widths ... ok +test ffi_tests::paged_decode_pooled_fallback_rejects_an_empty_batch ... ok +test ffi_tests::qmm_naive_output_is_identical_across_cta_tile_widths ... ok +test ffi_tests::qmv_matches_qmm_across_bits_and_group_sizes ... ok +test ffi_tests::qmv_multirow_matches_per_row_qmv_bitwise ... ok +test ffi_tests::qmv_multirow_matches_per_row_qmv_bitwise_gemma4_12b_mlp_shapes ... ok +test ffi_tests::quantized_linear_forward_global_scale_matches_manual_sidecar_path ... ok +test ffi_tests::shapeless_compile_audit_harness ... ignored, run with scripts/audit_shapeless_compile.sh on a reachable GPU +test ffi_tests::steel_gemm_edge_tile_safe_load_matches_reference ... ok +test ffi_tests::test_add_multiply ... ok +test ffi_tests::test_argmax ... ok +test ffi_tests::test_attention_masks_intentionally_remain_float32 ... ok +test ffi_tests::test_batch_quantized_kv_cache_make_mask_no_padding_multi_token ... ok +test ffi_tests::test_batch_quantized_kv_cache_make_mask_none_for_single_token_no_padding ... ok +test ffi_tests::test_batch_quantized_kv_cache_make_mask_uses_idx_not_offset ... ok +test ffi_tests::test_batch_turboquant_kv_cache_make_mask_uses_idx_not_offset ... ok +test ffi_tests::test_clip_residual_f16_eager_regression_clips_overflow_and_matches_reference ... ok +test ffi_tests::test_clip_residual_f16_widens_and_returns_f16 ... ok +test ffi_tests::test_compiled_clip_residual ... ok +test ffi_tests::test_compiled_geglu_activation ... ok +test ffi_tests::test_compiled_geglu_approx_preserves_bf16_and_f16_dtype ... ok +test ffi_tests::test_compiled_geglu_matches_manual ... ok +test ffi_tests::test_compiled_geglu_preserves_bf16_and_f16_dtype ... ok +test ffi_tests::test_compiled_gelu ... ok +test ffi_tests::test_compiled_gelu_approx ... ok +test ffi_tests::test_compiled_gelu_approx_preserves_bf16_and_f16_dtype ... ok +test ffi_tests::test_compiled_gelu_matches_gelu ... ok +test ffi_tests::test_compiled_gelu_preserves_bf16_and_f16_dtype ... ok +test ffi_tests::test_compiled_gelu_topk_preserves_bf16_and_f16_dtype ... ok +test ffi_tests::test_compiled_gpt_oss_swiglu_activation_preserves_input_dtype ... ok +test ffi_tests::test_compiled_softcap ... ok +test ffi_tests::test_compiled_softcap_preserves_bf16_and_f16_dtype ... ok +test ffi_tests::test_compiled_softcap_sdpa_gqa_decode_matches_repeated_reference ... ok +test ffi_tests::test_compiled_softcap_sdpa_gqa_preserves_v_dtype ... ok +test ffi_tests::test_compiled_softcap_sdpa_gqa_shape ... ok +test ffi_tests::test_compiled_softcap_sdpa_preserves_v_dtype ... ok +test ffi_tests::test_compiled_softcap_sdpa_shape ... ok +test ffi_tests::test_compiled_softcap_zero_input ... ok +test ffi_tests::test_compiled_swiglu_activation ... ok +test ffi_tests::test_conv_state_slice_is_contiguous_after_fix ... ok +test ffi_tests::test_create_causal_mask_with_left_padding_masks_padding_positions ... ok +test ffi_tests::test_create_causal_mask_with_left_padding_no_padding_matches_causal_mask ... ok +test ffi_tests::test_fast_rope_batched_matches_per_sequence_offsets ... ok +test ffi_tests::test_fast_rope_batched_mixed_offsets_take_per_row_path ... ok +test ffi_tests::test_fast_rope_batched_non_contiguous_t1_symmetric ... ok +test ffi_tests::test_fast_rope_batched_single_row_matches_scalar_fast_rope ... ok +test ffi_tests::test_fast_rope_batched_uniform_offsets_match_per_row_path ... ok +test ffi_tests::test_fast_rope_batched_uniform_zero_offsets_match_per_row_path ... ok +test ffi_tests::test_fast_rope_batched_with_freqs_matches_per_row ... ok +test ffi_tests::test_fast_rope_batched_with_freqs_single_row_matches_scalar ... ok +test ffi_tests::test_from_bytes_bf16_bit_pattern_roundtrip ... ok +test ffi_tests::test_from_bytes_bf16_native_dtype ... ok +test ffi_tests::test_from_bytes_fp16_bit_pattern_roundtrip ... ok +test ffi_tests::test_from_bytes_fp16_native_dtype ... ok +test ffi_tests::test_fused_paged_decode_gqa_and_batched ... ok +test ffi_tests::test_fused_paged_decode_matches_gather_over_200_steps ... ok +test ffi_tests::test_fused_paged_decode_native_vs_fallback_matrix ... ok +test ffi_tests::test_gather_mm ... ok +test ffi_tests::test_gegelu_preserves_bf16_and_f16_dtype ... ok +test ffi_tests::test_gelu_approx_bf16_negative_values ... ok +test ffi_tests::test_layer_norm_bf16_dtype_preserved ... ok +test ffi_tests::test_matmul ... ok +test ffi_tests::test_memory_functions ... ok +test ffi_tests::test_new_ops ... ok +test ffi_tests::test_ones ... ok +test ffi_tests::test_pooled_paged_decode_batch_of_two ... ok +test ffi_tests::test_pooled_paged_decode_matches_dense_over_200_steps ... ok +test ffi_tests::test_pooled_paged_decode_sliding_window_via_logical_start ... ok +test ffi_tests::test_pooled_prefill_then_decode_matches_dense ... ok +test ffi_tests::test_rms_norm ... ok +test ffi_tests::test_rms_norm_bf16_dtype_preserved ... ok +test ffi_tests::test_runtime_memory_apis_smoke ... ok +test ffi_tests::test_scalar_helpers_preserve_bf16_and_f16_dtype ... ok +test ffi_tests::test_softcap_eager_regression_changes_large_logits_and_matches_reference ... ok +test ffi_tests::test_softcap_helper_preserves_bf16_and_f16_dtype ... ok +test ffi_tests::test_softcap_sdpa_eager_regression_matches_nonuniform_reference ... ok +test ffi_tests::test_softcap_sdpa_gqa_eager_regression_matches_repeated_kv_reference ... ok +test ffi_tests::test_softmax ... ok +test ffi_tests::test_swiglu_mlp ... ok +test ffi_tests::test_unified_linear_quantized_weight_accessor ... ok +test ffi_tests::test_unified_linear_regular_has_no_quantized_weight ... ok +test ffi_tests::test_wht_fp16_preserves_dtype ... ok +test ffi_tests::test_wht_matches_h4_reference ... ok +test ffi_tests::test_wht_preserves_shape_and_dtype ... ok +test ffi_tests::test_wht_round_trip_power_of_two ... ok +test ffi_tests::test_wht_scaled_orthonormal_matches_default ... ok +test ffi_tests::test_wht_scaled_rejects_nan_scale - should panic ... ok +test ffi_tests::test_wht_scaled_rejects_non_power_of_two - should panic ... ok +test ffi_tests::test_wht_scaled_unscaled_grows_norm_by_sqrt_n ... ok +test ffi_tests::test_zeros ... ok +test ffi_tests::try_array_to_raw_bytes_round_trips_f32 ... ok +test ffi_tests::try_async_eval_ok_matches_async_eval ... ok +test ffi_tests::try_conv1d_ok_matches_conv1d ... ok +test ffi_tests::try_conv1d_returns_err_on_channel_mismatch ... ok +test ffi_tests::try_conv2d_ok_matches_conv2d ... ok +test ffi_tests::try_conv2d_returns_err_on_channel_mismatch ... ok +test ffi_tests::try_matmul_ok_matches_matmul ... ok +test ffi_tests::try_matmul_returns_err_on_shape_mismatch ... ok +test fused_moe_parity_tests::fused_moe_geglu_kernel_bitwise_deterministic_across_reruns ... ok +test fused_moe_parity_tests::fused_moe_geglu_kernel_bitwise_invariant_across_sgy ... ok +test fused_moe_parity_tests::fused_moe_geglu_kernel_matches_references_gemma4_shape ... ok +test fused_moe_parity_tests::fused_moe_kernel_source_structure ... ok +test fused_moe_parity_tests::fused_moe_swiglu_kernel_matches_references_every_down_width ... ok +test fused_moe_relu2_parity_tests::fused_moe_relu2_kernel_matches_references_nemotron_shape ... ok +test fused_norm_parity_tests::fused_add_rms_norm_gemma_matches_graph_with_surgery_scaled_weight ... ok +test fused_norm_parity_tests::fused_add_rms_norm_gemma_weight_bias_matches_precomputed_one_plus_w ... ok +test fused_norm_parity_tests::fused_add_rms_norm_greedy_argmax_parity_over_steps ... ok +test fused_norm_parity_tests::fused_add_rms_norm_helper_respects_the_kill_switch ... ok +test fused_norm_parity_tests::fused_add_rms_norm_is_byte_identical_to_the_rocm_graph ... ok +test fused_norm_parity_tests::fused_add_rms_norm_keeps_the_rocm_graph_sign_of_zero ... ok +test fused_norm_parity_tests::fused_add_rms_norm_matches_graph_across_dtypes_and_shapes ... ok +test fused_norm_parity_tests::fused_add_rms_norm_matches_graph_with_lora_scaled_weight ... ok +test fused_norm_parity_tests::fused_add_rms_norm_residual_output_is_the_plain_sum ... ok +test fused_norm_parity_tests::gemma_rms_norm_layer_agrees_with_weight_bias_one ... ok +test fused_rope_parity_tests::fused_rope_append_gate_follows_the_kill_switch ... ok +test fused_rope_parity_tests::fused_rope_append_is_byte_identical_to_the_rocm_graph ... ok +test fused_rope_parity_tests::fused_rope_append_leaves_v_bit_identical ... ok +test fused_rope_parity_tests::fused_rope_append_matches_graph_rope_across_offsets ... ok +test fused_rope_parity_tests::fused_rope_append_matches_graph_rope_batched ... ok +test fused_rope_parity_tests::fused_rope_append_matches_graph_rope_every_dtype ... ok +test fused_rope_parity_tests::fused_rope_append_matches_graph_with_scaled_projection ... ok +test fused_rope_parity_tests::fused_rope_append_multi_token_positions_are_absolute ... ok +test fused_rope_parity_tests::fused_rope_append_paged_layout_is_the_dense_layout_transposed ... ok +test fused_rope_parity_tests::fused_rope_append_partial_rope_dims_copies_the_tail ... ok +test fused_rope_parity_tests::fused_rope_append_traditional_matches_graph_rope ... ok +test generate::finish_tests::a_repetition_loop_withholds_its_looping_token ... ok +test generate::finish_tests::a_zero_budget_emits_nothing ... ok +test generate::finish_tests::eos_ends_the_cli_loop_without_storing_or_emitting_it ... ok +test generate::finish_tests::stop_strings_bounds_and_the_context_bound_never_fire_on_the_cli ... ok +test generate::finish_tests::the_finish_step_records_history_only_when_handed_one ... ok +test generate::finish_tests::the_token_that_spends_the_budget_is_emitted_then_the_loop_ends ... ok +test generate::history_tests::every_decode_loop_counts_the_token_it_just_read_for_frequency_and_presence ... ok +test generate::history_tests::every_decode_loop_extends_the_dry_match_with_the_token_it_just_read ... ok +test generate::history_tests::every_decode_loop_feeds_the_incremental_penalty_state_the_token_it_just_read ... ok +test generate::history_tests::every_decode_loop_is_plain_decoding_without_a_penalty ... ok +test generate::history_tests::every_decode_loop_penalizes_the_token_it_just_read ... ok +test generate::tests::forward_batched_default_matches_sequential ... ok +test generate::tests::forward_batched_single_sequence_no_overhead ... ok +test generate::tests::forward_last_logits_default_matches_forward_slice ... ok +test generate::tests::greedy_config_has_zero_temperature_and_no_history_needed ... ok +test generate::tests::needs_token_history_false_for_default_config ... ok +test generate::tests::needs_token_history_false_for_greedy_config ... ok +test generate::tests::needs_token_history_false_when_dry_multiplier_zero ... ok +test generate::tests::needs_token_history_false_when_repetition_penalty_is_one ... ok +test generate::tests::needs_token_history_true_when_dry_multiplier_positive ... ok +test generate::tests::needs_token_history_true_when_frequency_penalty_negative ... ok +test generate::tests::needs_token_history_true_when_frequency_penalty_nonzero ... ok +test generate::tests::needs_token_history_true_when_multiple_penalties_enabled ... ok +test generate::tests::needs_token_history_true_when_presence_penalty_nonzero ... ok +test generate::tests::needs_token_history_true_when_repetition_penalty_enabled ... ok +test generate::tests::non_batching_model_uses_default_loop_fallback ... ok +test generate::tests::padded_prefill_can_skip_array_mask_for_opted_in_models ... ok +test generate::tests::padded_prefill_keeps_array_mask_by_default ... ok +test generate::tests::periodic_clear_disabled_when_interval_zero ... ok +test generate::tests::periodic_clear_gate_respects_interval ... ok +test generate::tests::sampling_config_with_temperature_only_changes_temperature ... ok +test generate::tests::supports_batched_prefill_can_opt_in ... ok +test generate::tests::supports_batched_prefill_defaults_false ... ok +test generate::tests::supports_chunked_prefill_default_and_override ... ok +test generate::tests::supports_maskless_padded_prefill_can_opt_in ... ok +test generate::tests::supports_maskless_padded_prefill_defaults_false ... ok +test generate::tests::trim_state_default_is_noop_for_fallback_and_refuses_batched_sequences ... ok +test generate::tests::trim_state_override_receives_the_target_and_excess ... ok +test generation_policy::tests::initial_token_history_only_clones_when_needed ... ok +test generation_policy::tests::merged_eos_token_ids_appends_only_missing_stop_tokens ... ok +test generation_policy::tests::seed_rng_if_needed_accepts_absent_seed ... ok +test gpu_exclusivity_tests::no_other_mlxcel_core_test_binary_is_sharing_the_gpu ... ok +test gpu_exclusivity_tests::tests::the_current_process_is_excluded_from_the_scan ... ok +test gpu_exclusivity_tests::tests::the_marker_matches_a_cargo_test_binary_path_and_not_the_library ... ok +test grouped_gemm_arch_tests::arch_mapping_table ... ok +test grouped_gemm_arch_tests::only_the_pre_ampere_arm_changed ... ok +test grouped_gemm_arch_tests::turing_shares_the_pre_ampere_arm ... ok +test grouped_gemm_arch_tests::volta_selects_sm70_not_sm75 ... ok +test grouped_gemm_numeric_tests::gather_mm_half_precision_matches_reference ... ok +test grouped_gemm_numeric_tests::gather_mm_matches_dense_per_expert_reference ... ok +test grouped_gemm_numeric_tests::gather_mm_selects_the_indexed_expert ... ok +test hardware::tests::cuda_graph_cache_default_matches_build_feature ... ok +test hardware::tests::cuda_sdpa_cache_default_matches_build_feature ... ok +test hardware::tests::decode_mb_per_buffer_default_follows_the_ops_default_gate ... ok +test hardware::tests::decode_mb_per_buffer_env_overrides_and_disables ... ok +test hardware::tests::detect_hardware_does_not_panic ... ok +test hardware::tests::get_hardware_returns_same_instance ... ok +test hardware::tests::gpu_vendor_does_not_imply_apple_silicon ... ok +test hardware::tests::kv_cache_256_token_rounding ... ok +test hardware::tests::kv_cache_dense_mha ... ok +test hardware::tests::kv_cache_from_params_fp16 ... ok +test hardware::tests::kv_cache_from_params_int8 ... ok +test hardware::tests::kv_cache_gqa_fewer_kv_heads ... ok +test hardware::tests::kv_cache_int8_half_memory ... ok +test hardware::tests::kv_cache_long_context_128k ... ok +test hardware::tests::kv_cache_new_constructor ... ok +test hardware::tests::macos_na_threshold ... ok +test hardware::tests::metal_version_by_gen ... ok +test hardware::tests::neural_accelerator_flag ... ok +test hardware::tests::operator_mlx_max_mb_per_buffer_disables_the_decode_switch ... ok +test hardware::tests::ops_per_buffer_default_gates_on_hardware_class ... ok +test hardware::tests::parse_brand_strings ... ok +test hardware::tests::parse_macos_versions ... ok +test hardware::tests::prefill_dense_gemm_default_is_m1_only ... ok +test hardware::tests::prefill_dense_gemm_env_overrides_and_disables ... ok +test hardware::tests::quant_mode_names_match_the_mlx_mode_allowlist ... ok +test hardware::tests::quant_mode_support_reads_the_running_backend ... ok +test hardware::tests::quant_table_conversions_land_on_native_modes ... ok +test hardware::tests::quant_table_keeps_metal_cuda_and_cpu_native ... ok +test hardware::tests::quant_table_rocm_row ... ok +test hardware::tests::reason_accessor_works ... ok +test hardware::tests::recommend_quant_long_context_tightens_headroom ... ok +test hardware::tests::recommend_quant_uses_computed_kv_headroom ... ok +test hardware::tests::recommends_fp16_on_m4_with_small_model ... ok +test hardware::tests::recommends_int4_on_m4_with_large_model ... ok +test hardware::tests::recommends_int4_on_m5_when_8bit_too_large ... ok +test hardware::tests::recommends_int4_on_m5_without_na_os_support ... ok +test hardware::tests::recommends_int4_on_memory_constrained_m5 ... ok +test hardware::tests::recommends_int8_on_m5_with_sufficient_memory ... ok +test hardware::tests::the_architecture_string_is_never_empty_and_never_a_gfx_claim ... ok +test hardware::tests::the_detected_vendor_agrees_with_the_resolved_backend ... ok +test hardware::tests::unified_memory_stays_apple_only ... ok +test hardware::tests::wide_quantized_projection_flag_splits_at_generation_15 ... ok +test hardware::tests::wide_quantized_projections_is_weaker_than_neural_accelerator ... ok +test kernel_port_tests::rocm_device_warp_size_is_zero_off_rocm ... ok +test kernel_port_tests::rocm_port_allowed_holds_wave32_only_ports_to_32_lanes ... ok +test lang_analyzer::cache::tests::cache_corrupted_moves_aside_and_none ... ok +test lang_analyzer::cache::tests::cache_load_or_build_hits_disk_second_time ... ok +test lang_analyzer::cache::tests::cache_load_or_build_real_tokenizer_smoke ... ok +test lang_analyzer::cache::tests::cache_path_uses_mlxcel_cache_dir_override ... ok +test lang_analyzer::cache::tests::cache_rebuild_flag_forces_rebuild ... ok +test lang_analyzer::cache::tests::cache_roundtrip ... ok +test lang_analyzer::cache::tests::cache_v2_auto_rebuilds_to_v3 ... ok +test lang_analyzer::cache::tests::cache_version_mismatch_returns_none ... ok +test lang_analyzer::tests::byte_fragment_build_tags_real_byte_level_tokenizer ... ok +test lang_analyzer::tests::byte_fragment_classify_byte_start_anchor_ranges ... ok +test lang_analyzer::tests::byte_fragment_default_excluded_from_language_sets ... ok +test lang_analyzer::tests::byte_fragment_does_not_override_phase1_classification ... ok +test lang_analyzer::tests::byte_fragment_include_flag_catches_kana_leak ... ok +test lang_analyzer::tests::byte_fragment_include_flag_catches_start_byte_leak ... ok +test lang_analyzer::tests::byte_fragment_no_op_on_non_byte_level_tokenizer ... ok +test lang_analyzer::tests::byte_fragment_reverse_map_is_bijection ... ok +test lang_analyzer::tests::byte_fragment_strict_policy_does_not_bleed_cross_script ... ok +test lang_analyzer::tests::classify_arabic ... ok +test lang_analyzer::tests::classify_bpe_prefix_alone_returns_empty ... ok +test lang_analyzer::tests::classify_bpe_prefix_only_counts_suffix ... ok +test lang_analyzer::tests::classify_deduplicates_scripts ... ok +test lang_analyzer::tests::classify_devanagari ... ok +test lang_analyzer::tests::classify_gpt2_bpe_prefix ... ok +test lang_analyzer::tests::classify_greek ... ok +test lang_analyzer::tests::classify_hangul_and_han ... ok +test lang_analyzer::tests::classify_hebrew ... ok +test lang_analyzer::tests::classify_hiragana_and_han ... ok +test lang_analyzer::tests::classify_pure_cyrillic ... ok +test lang_analyzer::tests::classify_pure_han ... ok +test lang_analyzer::tests::classify_pure_hangul ... ok +test lang_analyzer::tests::classify_pure_hiragana ... ok +test lang_analyzer::tests::classify_pure_katakana ... ok +test lang_analyzer::tests::classify_pure_latin ... ok +test lang_analyzer::tests::classify_pure_numeric_returns_empty ... ok +test lang_analyzer::tests::classify_pure_punctuation_returns_empty ... ok +test lang_analyzer::tests::classify_pure_whitespace_returns_empty ... ok +test lang_analyzer::tests::classify_thai ... ok +test lang_analyzer::tests::integration_smoke_to_token_bias_consumable ... ok +test lang_analyzer::tests::is_numeric_empty_string_returns_false ... ok +test lang_analyzer::tests::is_numeric_with_bpe_prefix_and_digits ... ok +test lang_analyzer::tests::is_numeric_with_digits ... ok +test lang_analyzer::tests::is_numeric_with_mixed_fails ... ok +test lang_analyzer::tests::is_numeric_with_only_whitespace_returns_false ... ok +test lang_analyzer::tests::is_punctuation_empty_returns_false ... ok +test lang_analyzer::tests::is_punctuation_only_whitespace_returns_false ... ok +test lang_analyzer::tests::is_punctuation_with_ascii_punct ... ok +test lang_analyzer::tests::is_punctuation_with_mixed_fails ... ok +test lang_analyzer::tests::is_whitespace_bpe_prefix_only ... ok +test lang_analyzer::tests::is_whitespace_empty_string_returns_true ... ok +test lang_analyzer::tests::is_whitespace_with_content_fails ... ok +test lang_analyzer::tests::is_whitespace_with_spaces ... ok +test lang_analyzer::tests::language_code_from_str_unknown_errors ... ok +test lang_analyzer::tests::resolve_token_bias_empty_returns_empty ... ok +test lang_analyzer::tests::resolve_token_bias_populates_from_cache ... ok +test lang_analyzer::tests::to_token_bias_first_language_wins ... ok +test lang_analyzer::tests::to_token_bias_neg_inf_literal ... ok +test lang_analyzer::tests::to_token_bias_sign_mix ... ok +test lang_analyzer::tests::tokens_for_language_exceptions_default_excludes_special ... ok +test lang_analyzer::tests::tokens_for_language_exceptions_include_numeric ... ok +test lang_analyzer::tests::tokens_for_language_ja_conservative_includes_han ... ok +test lang_analyzer::tests::tokens_for_language_ko_strict_excludes_han ... ok +test lang_bias_counters::tests::override_is_scoped_nested_and_thread_local ... ok +test language_model_ref::tests::reference_forwards_overridden_provided_methods ... ok +test layers::metal4_attention_switch_tests::the_route_never_engages_without_the_hardware ... ok +test layers::residual_add3_layer_norm_tests::residual_add3_layer_norm_matches_the_unfused_pair ... ok +test layers::tests::a_partially_quantized_triple_falls_through_to_the_fused_path ... ok +test layers::tests::a_split_layer_offers_no_fused_packed_weight ... ok +test layers::tests::affine_group_size_allowlist_matches_mlx_ops_cpp ... ok +test layers::tests::attention_softcap_gqa_shape ... ok +test layers::tests::auto_defers_to_selector_and_respects_native_request ... ok +test layers::tests::causal_attention_multi_token_over_window_uses_full_windowed_mask ... ok +test layers::tests::causal_attention_single_query_matches_explicit_mask ... ok +test layers::tests::causal_attention_single_query_softcap_matches_explicit_mask ... ok +test layers::tests::causal_attention_single_query_window_matches_explicit_mask ... ok +test layers::tests::causal_attention_single_query_window_respects_mask_when_needed ... ok +test layers::tests::causal_attention_wrapper_matches_fast_causal_shape ... ok +test layers::tests::chunked_causal_attention_matches_fast_causal ... ok +test layers::tests::chunked_query_attention_matches_unchunked_broadcast_mask ... ok +test layers::tests::chunked_query_attention_matches_unchunked_softcap_gqa ... ok +test layers::tests::chunked_query_attention_matches_unchunked_with_mask ... ok +test layers::tests::declared_mode_must_agree_with_bias_presence ... ok +test layers::tests::dispatch_cache_cuda_pack_key_roundtrips_without_collision ... ok +test layers::tests::dispatch_cache_cuda_tag_does_not_alias_metal_or_other ... ok +test layers::tests::dispatch_cache_returns_selector_decision_across_keys ... ok +test layers::tests::embedding_clone_shared_matches_original_forward ... ok +test layers::tests::explicit_mode_loaders_reject_a_config_declared_bad_mode ... ok +test layers::tests::fused_905_defaults_are_on_for_rocm_builds_only ... ok +test layers::tests::fused_905_flags_follow_the_default_and_respect_explicit_values ... ok +test layers::tests::fused_add_rms_norm_spec_reports_the_right_convention ... ok +test layers::tests::fused_flag_explicit_value_separates_a_setting_from_the_default ... ok +test layers::tests::fused_qk_norm_enabled_defaults_off_and_respects_enable_values ... ok +test layers::tests::fused_qkv_norm_variant_selects_one_plus_weight ... ok +test layers::tests::fused_qkv_quantized_preserves_linear_bias ... ok +test layers::tests::fused_qkv_split_norm_rope_applies_position_scale ... ok +test layers::tests::fused_qkv_split_norm_rope_gemma_unchanged ... ok +test layers::tests::fused_qkv_split_norm_rope_standard_rmsnorm_applies_position_scale ... ok +test layers::tests::fused_qkv_split_norm_rope_standard_rmsnorm_matches_graph ... ok +test layers::tests::hand_built_quantized_layers_bound_their_declared_params ... ok +test layers::tests::hand_built_quantized_weight_bounds_its_declared_mode ... ok +test layers::tests::infer_bits_detects_8bit_embedding_under_4bit_config ... ok +test layers::tests::infer_bits_detects_per_layer_8bit_override ... ok +test layers::tests::infer_bits_handles_3d_moe_experts ... ok +test layers::tests::infer_bits_pass_through_on_empty ... ok +test layers::tests::infer_bits_pass_through_when_consistent ... ok +test layers::tests::infer_bits_rejects_non_canonical_widths ... ok +test layers::tests::max_abs_attention_score_matches_hand_computed_products ... ok +test layers::tests::metal4_attention_does_not_panic ... ok +test layers::tests::metal4_attention_gqa_shape ... ok +test layers::tests::metal4_attention_output_matches_fast_sdpa ... ok +test layers::tests::metal4_detection_uses_canonical_na_check ... ok +test layers::tests::mixed_bit_width_qkv_forward_matches_independent_projections ... ok +test layers::tests::mixed_bit_width_qkv_keeps_its_three_planes_separate ... ok +test layers::tests::mixed_bit_width_qkv_planes_are_numerically_exact ... ok +test layers::tests::mla_param_inference_checks_every_divisor_before_dividing ... ok +test layers::tests::multi_linear_loader_bounds_its_declared_params ... ok +test layers::tests::multi_linear_loader_cannot_store_a_mode_that_contradicts_its_planes ... ok +test layers::tests::multi_linear_loader_infers_its_quantization_mode_from_the_biases_plane ... ok +test layers::tests::named_lora_selection_is_reversible_and_validated ... ok +test layers::tests::native_override_parses_force_on_off_and_auto ... ok +test layers::tests::native_route_line_only_where_a_route_was_chosen ... ok +test layers::tests::override_pins_dispatch_both_ways_bypassing_selector ... ok +test layers::tests::paged_decode_backend_names_the_resolved_backend ... ok +test layers::tests::plan_bucket_eligibility_mirrors_the_patched_cudnn_gate ... ok +test layers::tests::plan_bucketing_is_off_by_default_so_1799_dispatch_ships ... ok +test layers::tests::planes_that_reconcile_alike_are_still_split_when_their_packings_differ ... ok +test layers::tests::prefill_dense_gemm_matches_qmm_bytes_where_eligible ... ok +test layers::tests::qkv_fusability_is_decided_by_the_packed_shapes ... ok +test layers::tests::quantization_mode_allowlist_mirrors_mlx_exactly ... ok +test layers::tests::quantization_mode_inference_is_shared_by_the_linear_and_embedding_loaders ... ok +test layers::tests::quantization_mode_runnable_follows_the_capability_table ... ok +test layers::tests::quantized_loaders_reject_hostile_params_at_load_not_at_the_first_forward ... ok +test layers::tests::quantized_packing_check_compares_the_weight_side_too ... ok +test layers::tests::quantized_packing_check_reconstructs_the_width_mlx_will_compute ... ok +test layers::tests::query_chunk_len_splits_evenly_within_budget ... ok +test layers::tests::reconcile_affine_consistent_is_noop ... ok +test layers::tests::reconcile_affine_group_size_mismatch_is_flagged_not_silent ... ok +test layers::tests::reconcile_affine_invalid_bit_width_is_hard_error ... ok +test layers::tests::reconcile_affine_non_integer_bits_is_hard_error ... ok +test layers::tests::reconcile_affine_nvfp4_fallback_recovers_group_size ... ok +test layers::tests::reconcile_affine_nvfp4_fallback_recovers_group_size_64 ... ok +test layers::tests::reconcile_affine_per_layer_bit_override_flags_reconciled ... ok +test layers::tests::reconcile_block_float_consistent_is_noop ... ok +test layers::tests::reconcile_block_float_group_size_override_flags_reconciled ... ok +test layers::tests::reconcile_block_float_inconsistent_shapes_are_flagged ... ok +test layers::tests::reconcile_ignores_degenerate_shapes ... ok +test layers::tests::reconcile_rejects_quantization_params_that_no_layout_can_describe ... ok +test layers::tests::reconciler_rejects_a_mode_mlx_cannot_parse ... ok +test layers::tests::selector_b1_long_context_is_gather ... ok +test layers::tests::selector_batch_and_context_boundaries ... ok +test layers::tests::selector_batched_long_context_is_gather ... ok +test layers::tests::selector_batched_moderate_context_single_slab_is_native ... ok +test layers::tests::selector_cuda_backend_native_on_single_slab_only ... ok +test layers::tests::selector_multi_slab_is_gather ... ok +test layers::tests::selector_non_metal_backend_is_gather ... ok +test layers::tests::selector_rocm_backend_follows_the_cuda_rule ... ok +test layers::tests::shared_loader_refuses_nvfp4_where_the_backend_cannot_run_it ... ok +test layers::tests::single_query_maskless_matches_masked_gemma4_large_scale ... ok +test layers::tests::slice_mask_query_rows_slices_and_broadcasts ... ok +test layers::tests::small_query_fallback_mirrors_the_patched_cudnn_gate ... ok +test layers::tests::softcap_gqa_decode_matches_explicit_repeat_kv_reference ... ok +test layers::tests::split_and_fused_projections_agree_on_uniform_weights ... ok +test layers::tests::split_project_concat_reproduces_the_fused_activation ... ok +test layers::tests::unified_embedding_clone_shared_preserves_regular_variant ... ok +test layers::tests::uniform_precision_qkv_still_fuses_into_one_plane ... ok +test loop_detection::tests::cap_bounds_detected_pattern_length ... ok +test loop_detection::tests::default_is_disabled ... ok +test loop_detection::tests::disabled_config_never_fires_even_on_obvious_loop ... ok +test loop_detection::tests::empty_and_short_streams_do_not_fire ... ok +test loop_detection::tests::huge_max_pattern_size_still_fires_and_terminates ... ok +test loop_detection::tests::markdown_alignment_row_does_not_fire_at_the_server_threshold ... ok +test loop_detection::tests::min_count_below_two_disables ... ok +test loop_detection::tests::min_pattern_size_above_cap_does_not_panic ... ok +test loop_detection::tests::min_pattern_size_above_one_skips_single_token_loop ... ok +test loop_detection::tests::min_pattern_size_clamped_to_max ... ok +test loop_detection::tests::min_pattern_size_zero_treated_as_one ... ok +test loop_detection::tests::natural_short_repeats_below_threshold_do_not_fire ... ok +test loop_detection::tests::non_repeating_stream_does_not_fire ... ok +test loop_detection::tests::observed_cjk_collapse_shape_fires ... ok +test loop_detection::tests::repeated_cell_block_still_fires_at_the_server_threshold ... ok +test loop_detection::tests::single_token_collapse_fires_at_the_server_threshold ... ok +test loop_detection::tests::single_token_loop_fires_at_exactly_min_count ... ok +test loop_detection::tests::single_token_loop_requires_consecutive_tail ... ok +test loop_detection::tests::three_token_loop_fires_with_prefix ... ok +test loop_detection::tests::two_token_loop_fires ... ok +test mamba1_scan_parity_tests::bf16_kernel_is_no_less_accurate_than_the_graph_scan ... ok +test mamba1_scan_parity_tests::cuda_kernel_declines_mixed_dtype_inputs ... ok +test mamba1_scan_parity_tests::cuda_kernel_is_bit_identical_to_the_graph_scan ... ok +test mamba1_scan_parity_tests::f32_kernel_matches_scalar_reference ... ok +test mamba1_scan_parity_tests::float_state_kernel_is_available_where_ported ... ok +test memory::tests::active_memory_increases_after_allocation ... ok +test memory::tests::cache_limit_bounds_the_free_buffer_cache ... ok +test memory::tests::clear_cache_does_not_panic ... ok +test memory::tests::crossing_gate_fires_when_cumulative_count_crosses_boundary ... ok +test memory::tests::parse_cache_clear_interval_falls_back_on_garbage ... ok +test memory::tests::periodic_clear_disabled_when_interval_zero ... ok +test memory::tests::periodic_clear_gate_respects_interval ... ok +test memory::tests::reset_peak_memory_lowers_or_holds_peak ... ok +test memory::tests::set_cache_limit_round_trip ... ok +test memory::tests::set_memory_limit_round_trip_restores_previous ... ok +test memory::tests::snapshot_returns_consistent_values ... ok +test metal_backend_build_policy::tests::any_single_gpu_backend_enables_the_gpu_bridge_paths ... ok +test metal_backend_build_policy::tests::cpu_only_build_has_no_gpu_backend ... ok +test metal_backend_build_policy::tests::explicit_macos_backend_override_controls_both_consumers ... ok +test metal_backend_build_policy::tests::invalid_macos_override_retains_the_named_build_error ... ok +test metal_backend_build_policy::tests::macos_default_enables_metal_without_a_cargo_feature ... ok +test metal_backend_build_policy::tests::macos_with_metal_disabled_and_no_other_backend_is_cpu_only ... ok +test metal_backend_build_policy::tests::non_macos_never_enables_metal_even_with_an_override ... ok +test mla::absorb::absorb_tests::fold_accepts_an_unquantized_kv_b_proj_layer ... ok +test mla::absorb::absorb_tests::fold_refuses_a_biased_kv_b_proj ... ok +test mla::absorb::absorb_tests::fold_refuses_a_geometry_that_does_not_describe_the_matrix ... ok +test mla::absorb::absorb_tests::fold_refuses_a_non_matrix_weight ... ok +test mla::absorb::absorb_tests::fold_reports_the_weight_memory_it_costs ... ok +test mla::absorb::absorb_tests::fold_splits_kv_b_proj_into_the_two_identity_operands ... ok +test mla::cache::tests::a_latent_cache_stays_trimmable_for_speculative_decode ... ok +test mla::cache::tests::absorption_reduces_the_per_token_cache_by_the_head_count_ratio ... ok +test mla::cache::tests::decompressed_bytes_per_token_scales_with_head_count ... ok +test mla::cache::tests::latent_bytes_per_token_is_the_issue_s_576_floats ... ok +test mla::cache::tests::latent_family_lookup_is_exact_and_case_insensitive ... ok +test mla::cache::tests::latent_layout_accepts_fp16_and_nothing_else ... ok +test mla::cache::tests::only_the_fallback_less_families_are_latent_families ... ok +test mla::cache::tests::the_dsa_families_are_listed_in_their_own_right ... ok +test mla::cache::tests::wrap_accepts_the_default_fp16_cache ... ok +test mla::cache::tests::wrap_declines_a_quantized_kv_cache ... ok +test mla::decode::decode_tests::absorbed_attention_respects_an_additive_causal_mask ... ok +test mla::decode::decode_tests::absorbed_decode_matches_the_decompressed_reference_in_f16 ... ok +test mla::decode::decode_tests::absorbed_decode_matches_the_decompressed_reference_in_f32 ... ok +test mla::decode::decode_tests::expand_latent_reproduces_the_up_projection ... ok +test mla::decode::decode_tests::latent_cache_attend_matches_the_decompressed_reference ... ok +test mla::decode::decode_tests::latent_cache_round_trips_the_two_asymmetric_streams ... ok +test mla::decode::decode_tests::stage_1_records_the_path_it_took ... ok +test mla::kv_b_split::tests::decomposes_a_dense_kv_b_proj_into_the_stored_pair ... ok +test mla::kv_b_split::tests::leaves_a_predecomposed_prefix_and_a_missing_prefix_alone ... ok +test mla::kv_b_split::tests::rejects_a_shape_that_disagrees_with_the_geometry ... ok +test mla::kv_b_split::tests::rejects_scales_without_biases ... ok +test mla::split_kv::split_kv_tests::heuristic_stops_splitting_once_the_batch_fills_the_device ... ok +test mla::split_kv::split_kv_tests::merge_rejects_natural_log_lse_units ... ok +test mla::split_kv::split_kv_tests::plan_covers_the_range_and_groups_request_major ... ok +test mla::split_kv::split_kv_tests::plan_rejects_an_empty_range ... ok +test mla::split_kv::split_kv_tests::plan_with_one_chunk_skips_the_merge ... ok +test mla::split_kv::split_kv_tests::split_kv_agrees_with_the_unsplit_stage_1_path ... ok +test mla::split_kv::split_kv_tests::split_kv_declines_a_multi_token_step ... ok +test mla::split_kv::split_kv_tests::split_kv_matches_the_decompressed_reference_at_every_chunk_length ... ok +test mla::split_kv::split_kv_tests::split_kv_records_its_own_path ... ok +test mla::stats::tests::labels_are_distinct_and_stable ... ok +test mla::stats::tests::summary_names_every_path_so_a_zero_is_visible ... ok +test mla::tests::absorption_accepts_the_usual_on_spellings ... ok +test mla::tests::absorption_is_off_unless_explicitly_enabled ... ok +test mla::tests::geometry_derives_the_two_composite_widths ... ok +test mla::tests::geometry_rejects_a_zero_dimension ... ok +test multimodal::tests::owned_tensor_checks_each_supported_model_dtype ... ok +test multimodal::tests::owned_tensor_rejects_wrong_byte_count ... ok +test multimodal::tests::prepared_prefill_is_owned_send_data ... ok +test multimodal::tests::prepared_prefill_keeps_mrope_mode_and_signed_delta_explicit ... ok +test multimodal::tests::prepared_prefill_rejects_floating_point_explicit_positions ... ok +test multimodal::tests::prepared_prefill_rejects_missing_or_extra_mrope_axes ... ok +test multimodal::tests::prepared_prefill_rejects_shape_drift ... ok +test one_bit_tests::bridge_quantized_matmul_routes_one_bit_both_layouts ... ok +test one_bit_tests::fused_qkv_declines_one_bit ... ok +test one_bit_tests::one_bit_declared_under_another_width_is_reconciled ... ok +test one_bit_tests::one_bit_dequantize_matches_host_formula ... ok +test one_bit_tests::one_bit_embedding_as_linear_matches_reference ... ok +test one_bit_tests::one_bit_embedding_gather_matches_dequant_rows ... ok +test one_bit_tests::one_bit_kernel_available_on_metal ... ok +test one_bit_tests::one_bit_kill_switch_routes_to_dequant ... ok +test one_bit_tests::one_bit_layout_validator ... ok +test one_bit_tests::one_bit_matmul_rejects_inconsistent_triple ... ok +test one_bit_tests::one_bit_qmm_matches_reference_m16_m33 ... ok +test one_bit_tests::one_bit_qmv_group_sizes_32_64_128 ... ok +test one_bit_tests::one_bit_qmv_matches_reference_m1_m7 ... ok +test one_bit_tests::one_bit_qmv_unaligned_rows_and_short_k ... ok +test one_bit_tests::one_bit_without_biases_is_rejected ... ok +test one_bit_tests::quantized_multi_linear_rejects_one_bit_with_prefix ... ok +test one_bit_tests::unified_linear_routes_one_bit ... ok +test paged_v2::cascade::cascade_tests::a_mid_page_window_start_is_excluded_from_every_group ... ok +test paged_v2::cascade::cascade_tests::a_mixed_batch_gives_non_members_a_group_of_one ... ok +test paged_v2::cascade::cascade_tests::a_shared_prompt_across_the_whole_batch_is_detected ... ok +test paged_v2::cascade::cascade_tests::an_empty_or_single_request_batch_never_cascades ... ok +test paged_v2::cascade::cascade_tests::both_thresholds_are_enforced ... ok +test paged_v2::cascade::cascade_tests::requests_that_merely_look_similar_do_not_group ... ok +test paged_v2::cascade::cascade_tests::the_builder_refuses_a_group_the_detector_would_never_produce ... ok +test paged_v2::cascade::cascade_tests::the_env_gate_honours_both_spellings_and_falls_back_to_the_default ... ok +test paged_v2::cascade::cascade_tests::the_plan_splits_the_same_pages_the_flat_view_would_have_read ... ok +test paged_v2::cascade::cascade_tests::the_span_stops_one_page_short_of_the_shortest_member ... ok +test paged_v2::cascade::cascade_tests::the_subgroup_that_saves_the_most_reads_wins ... ok +test paged_v2::cascade::cascade_tests::the_whole_batch_case_skips_the_member_gather ... ok +test paged_v2::cascade::cascade_tests::thresholds_parse_only_non_negative_integers ... ok +test paged_v2::cascade_launch::cascade_launch_tests::a_non_sharing_request_rides_along_unchanged ... ok +test paged_v2::cascade_launch::cascade_launch_tests::cascade_matches_the_flat_launch_on_an_exact_f32_pool ... ok +test paged_v2::cascade_launch::cascade_launch_tests::cascade_matches_the_flat_launch_with_an_f16_pool ... ok +test paged_v2::cascade_launch::cascade_launch_tests::member_major_head_stacking_reads_the_wrong_kv_head ... ok +test paged_v2::cascade_launch::cascade_launch_tests::merge_rejects_natural_log_lse_units_on_the_cascade_path ... ok +test paged_v2::cascade_launch::cascade_launch_tests::the_shared_blocks_really_are_shared_in_the_pool ... ok +test paged_v2::dispatch::tests::a_batched_launch_just_under_a_nominal_1k_prompt_still_dispatches ... ok +test paged_v2::dispatch::tests::a_single_request_is_not_helped_by_the_batched_floor ... ok +test paged_v2::dispatch::tests::a_tiny_batched_launch_is_still_declined ... ok +test paged_v2::dispatch::tests::an_empty_batch_stays_on_gather ... ok +test paged_v2::dispatch::tests::every_measured_win_is_dispatched ... ok +test paged_v2::dispatch::tests::the_env_overrides_parse_only_non_negative_integers ... ok +test paged_v2::dispatch::tests::the_floor_scales_with_the_request_count ... ok +test paged_v2::dispatch::tests::the_only_measured_loss_is_declined ... ok +test paged_v2::launch::launch_tests::a_trimmed_window_attends_only_to_visible_tokens ... ok +test paged_v2::launch::launch_tests::an_empty_request_yields_zeros_without_poisoning_its_neighbours ... ok +test paged_v2::launch::launch_tests::chunk_size_does_not_change_the_answer ... ok +test paged_v2::launch::launch_tests::f16_pools_match_the_gather_reference ... ok +test paged_v2::launch::launch_tests::gqa_groups_read_the_right_kv_head ... ok +test paged_v2::launch::launch_tests::many_chunks_merge_to_the_same_answer ... ok +test paged_v2::launch::launch_tests::merge_is_associative_across_regroupings ... ok +test paged_v2::launch::launch_tests::merge_kernel_matches_the_closed_form ... ok +test paged_v2::launch::launch_tests::merge_kernel_returns_zeros_for_an_all_empty_row ... ok +test paged_v2::launch::launch_tests::single_chunk_matches_a_host_reference ... ok +test paged_v2::launch::launch_tests::the_entry_point_declines_a_batch_with_no_visible_tokens ... ok +test paged_v2::launch::launch_tests::two_pool_dtypes_at_one_geometry_do_not_share_a_compiled_kernel ... ok +test paged_v2::outcome::tests::a_cascade_launch_is_fused_and_says_which_span_it_hoisted ... ok +test paged_v2::outcome::tests::kind_indices_are_distinct_and_in_range ... ok +test paged_v2::outcome::tests::only_the_fused_variant_reports_a_fused_launch ... ok +test paged_v2::outcome::tests::the_floor_message_carries_both_numbers ... ok +test paged_v2::outcome::tests::the_multi_slab_message_names_the_knob_that_fixes_it ... ok +test paged_v2::plan::plan_tests::chunk_count_is_non_increasing_in_chunk_size ... ok +test paged_v2::plan::plan_tests::every_request_owns_at_least_one_chunk ... ok +test paged_v2::plan::plan_tests::heuristic_plan_records_its_target_and_source ... ok +test paged_v2::plan::plan_tests::matches_tracks_page_growth_across_decode_steps ... ok +test paged_v2::plan::plan_tests::min_pages_per_chunk_bounds_the_chunk_count ... ok +test paged_v2::plan::plan_tests::num_warps_stays_inside_the_threadgroup_budget ... ok +test paged_v2::plan::plan_tests::one_chunk_per_request_needs_no_merge ... ok +test paged_v2::plan::plan_tests::plan_arrays_agree_with_the_merge_indptr ... ok +test paged_v2::plan::plan_tests::q_heads_per_cta_always_divides_n_rep ... ok +test paged_v2::plan::plan_tests::search_falls_back_to_the_finest_split_when_the_target_is_unreachable ... ok +test paged_v2::plan::plan_tests::search_is_exhaustively_maximal_over_a_sweep ... ok +test paged_v2::plan::plan_tests::search_never_exceeds_the_grid_bound ... ok +test paged_v2::plan::plan_tests::search_returns_the_largest_chunk_size_that_reaches_the_target ... ok +test paged_v2::plan::plan_tests::total_ctas_counts_every_kv_head_and_q_group ... ok +test paged_v2::plan::plan_tests::validate_rejects_a_geometry_the_kernel_cannot_serve ... ok +test paged_v2::plan::plan_tests::validate_rejects_a_merge_input_past_the_u32_index_range ... ok +test paged_v2::plan::plan_tests::validate_rejects_corrupted_plans ... ok +test paged_v2::plan::plan_tests::workspace_size_matches_the_kernel_outputs ... ok +test paged_v2::plan_cache::plan_cache_tests::a_batch_size_change_rebuilds ... ok +test paged_v2::plan_cache::plan_cache_tests::a_front_trim_inside_the_same_page_reuses_and_moves_the_offset ... ok +test paged_v2::plan_cache::plan_cache_tests::a_front_trim_that_retires_a_page_rebuilds ... ok +test paged_v2::plan_cache::plan_cache_tests::a_reused_view_is_identical_to_a_fresh_build ... ok +test paged_v2::plan_cache::plan_cache_tests::a_step_inside_the_current_pages_reuses_the_page_list ... ok +test paged_v2::plan_cache::plan_cache_tests::an_epoch_bump_rebuilds_even_when_the_fingerprints_match ... ok +test paged_v2::plan_cache::plan_cache_tests::clear_drops_every_layer ... ok +test paged_v2::plan_cache::plan_cache_tests::crossing_a_page_boundary_rebuilds ... ok +test paged_v2::plan_cache::plan_cache_tests::fingerprints_capture_the_visible_page_range ... ok +test paged_v2::plan_cache::plan_cache_tests::layers_are_cached_independently ... ok +test paged_v2::plan_cache::plan_cache_tests::the_plan_is_rebuilt_when_a_request_needs_another_chunk ... ok +test paged_v2::plan_cache::plan_cache_tests::the_plan_is_rebuilt_when_the_geometry_changes ... ok +test paged_v2::plan_cache::plan_cache_tests::the_plan_is_reused_while_the_chunk_grouping_holds ... ok +test paged_v2::sparse::sparse_tests::a_batched_side_head_layout_is_declined_rather_than_mis_addressed ... ok +test paged_v2::sparse::sparse_tests::a_k_allocation_with_a_side_head_is_addressed_by_the_same_row_list ... ok +test paged_v2::sparse::sparse_tests::a_selection_covering_too_much_of_the_window_is_declined_by_the_sparsity_gate ... ok +test paged_v2::sparse::sparse_tests::a_selection_whose_request_count_disagrees_with_the_launch_is_rejected ... ok +test paged_v2::sparse::sparse_tests::a_small_selection_is_declined_by_the_dispatch_floor ... ok +test paged_v2::sparse::sparse_tests::an_f16_cache_matches_the_reference_within_its_own_precision ... ok +test paged_v2::sparse::sparse_tests::changing_one_selected_position_changes_the_output ... ok +test paged_v2::sparse::sparse_tests::every_outcome_kind_has_a_distinct_index_and_a_message ... ok +test paged_v2::sparse::sparse_tests::reporting_a_kind_twice_emits_once_and_counts_twice ... ok +test paged_v2::sparse::sparse_tests::the_floor_message_carries_both_numbers ... ok +test paged_v2::sparse::sparse_tests::the_fused_output_differs_from_full_dense_attention ... ok +test paged_v2::sparse::sparse_tests::the_fused_output_matches_a_dense_reference_restricted_to_the_selection ... ok +test paged_v2::sparse::sparse_tests::the_kill_switch_names_the_variable_that_set_it ... ok +test paged_v2::sparse::sparse_tests::the_plan_splits_and_merges_without_changing_the_answer ... ok +test paged_v2::sparse::sparse_tests::the_selected_rows_decode_back_to_the_intended_positions ... ok +test paged_v2::sparse::sparse_tests::the_sparsity_gate_is_a_pure_ratio_test ... ok +test paged_v2::sparse::sparse_tests::the_sparsity_message_names_the_ratio_it_fell_short_of ... ok +test paged_v2::tests::v2_accepts_the_usual_on_spellings ... ok +test paged_v2::tests::v2_is_off_unless_explicitly_enabled ... ok +test prefill_plan::tests::a_hit_reproduces_the_miss_only_from_a_split_point ... ok +test prefill_plan::tests::adopted_prefix_is_never_forwarded_and_chunks_start_after_it ... ok +test prefill_plan::tests::boundary_segment_is_one_unpadded_piece_and_chunks_restart_there ... ok +test prefill_plan::tests::chunk_policy_default_is_the_adr_0007_value ... ok +test prefill_plan::tests::chunk_policy_resolves_adaptive_defaults_and_explicit_overrides ... ok +test prefill_plan::tests::chunking_applies_only_when_configured_supported_and_useful ... ok +test prefill_plan::tests::chunks_cover_the_prompt_in_order_without_overlap ... ok +test prefill_plan::tests::embedding_input_is_never_chunked_and_padded_only_where_the_executor_pads ... ok +test prefill_plan::tests::next_piece_matches_resumed_plan_across_boundaries_cursors_chunks_and_padding ... ok +test prefill_plan::tests::padding_follows_alignment_model_support_and_input_kind ... ok +test prefill_plan::tests::piece_lookup_by_cursor_drives_a_stepping_scheduler ... ok +test prefill_plan::tests::prefill_chunk_override_is_read_once_in_a_fresh_process ... ok +test prefill_plan::tests::resume_at_matches_the_fixed_chunk_suffix_at_every_split_point ... ok +test prefill_plan::tests::resume_at_repartitions_from_the_cursor_when_the_chunk_changes ... ok +test prefill_plan::tests::resumed_last_piece_still_reports_the_active_chunk ... ok +test prefill_plan::tests::short_prompt_is_one_piece_and_one_token_gets_no_padding ... ok +test prefill_plan::tests::unparseable_chunk_env_warns_once_and_falls_back_to_the_default ... ok +test prefill_span::tests::a_nested_announcement_restores_the_outer_one ... ok +test prefill_span::tests::a_non_positive_length_announces_nothing ... ok +test prefill_span::tests::an_announcement_does_not_reach_another_thread ... ok +test prefill_span::tests::an_announcement_is_visible_and_ends_with_its_guard ... ok +test prefill_span::tests::nothing_is_announced_outside_a_prefill ... ok +test qmm_naive_tile_tests::an_oversized_tile_is_rejected_rather_than_launched ... ok +test qmm_naive_tile_tests::the_f32_group128_tile_crosses_the_opt_in_ceiling ... ok +test qmm_naive_tile_tests::the_fit_flag_tracks_the_budget ... ok +test qmm_naive_tile_tests::the_forced_tile_n_override_pins_the_width_but_not_the_fit_check ... ok +test qmm_naive_tile_tests::the_reserve_is_enforced_exactly ... ok +test qmm_naive_tile_tests::the_selected_tile_is_upstreams_on_every_architecture ... ok +test qmm_naive_tile_tests::the_smem_model_is_itemsize_times_tile_k_times_tile_m_plus_tile_n ... ok +test qmm_naive_tile_tests::the_widest_volta_tile_is_24_kb_and_needs_no_opt_in ... ok +test rms_norm_small_axis_tests::rms_norm_small_axis_band_16bit_matches_f64_reference ... ok +test rms_norm_small_axis_tests::rms_norm_small_axis_band_f32_matches_f64_reference ... ok +test rocm_arch::tests::a_generic_target_makes_the_check_decline_rather_than_refuse ... ok +test rocm_arch::tests::a_mismatch_names_both_targets_and_the_cpu_bypass ... ok +test rocm_arch::tests::an_empty_or_unrecognized_side_never_answers_not_covered ... ok +test rocm_arch::tests::an_unrecorded_architecture_list_never_manufactures_a_refusal ... ok +test rocm_arch::tests::coverage_is_set_membership_and_not_an_ordering ... ok +test rocm_arch::tests::target_features_are_stripped_from_the_target_name ... ok +test rocm_arch::tests::the_list_parser_accepts_both_separators_and_normalizes ... ok +test rocm_arch::tests::the_probe_agrees_with_the_backend ... ok +test rocm_arch::tests::this_rocm_build_can_run_on_the_host_running_its_tests ... ok +test rocm_arch::tests::whitespace_separated_lists_do_not_manufacture_a_refusal ... ok +test rocm_qmm_cache::tests::stats_are_zero_off_rocm ... ok +test rope_proportional::tests::proportional_rope_freqs_match_python_formula ... ok +test rope_proportional::tests::proportional_rope_full_head_matches_packed_reference ... ok +test rope_proportional::tests::proportional_rope_nontrivial_offset_produces_nonidentity_rotation ... ok +test rope_proportional::tests::proportional_rope_preserves_non_rotated_tail ... ok +test rope_proportional::tests::proportional_rope_zero_partial_factor_is_identity ... ok +test runtime_lora::tests::fused_qkv_applies_the_q_term_to_the_q_slice_only ... ok +test runtime_lora::tests::linear_claims_terms_and_scale_zero_is_byte_identical ... ok +test runtime_lora::tests::unclaimed_terms_drain_with_their_prefixes ... ok +test runtime_lora::tests::unified_linear_dense_claims_terms ... ok +test sampling::tests::adaptive_p_disabled_target_stays_on_the_fused_path ... ok +test sampling::tests::adaptive_p_state_accept_updates_ema_only_on_matching_token ... ok +test sampling::tests::adaptive_p_transform_prefers_tokens_near_the_target ... ok +test sampling::tests::apply_dry_penalty_penalizes_followup_token_after_suffix_match ... ok +test sampling::tests::apply_frequency_presence_penalty_accumulates_by_token_count ... ok +test sampling::tests::apply_repetition_penalty_modifies_selected_logits ... ok +test sampling::tests::apply_row_filters_disabled_returns_input_pointer_unchanged ... ok +test sampling::tests::apply_row_filters_greedy_skips_active_filter ... ok +test sampling::tests::apply_row_filters_treats_negative_sentinel_as_disabled ... ok +test sampling::tests::apply_token_bias_empty_noop ... ok +test sampling::tests::apply_token_bias_multiple_entries ... ok +test sampling::tests::apply_token_bias_neg_inf_forces_zero_prob ... ok +test sampling::tests::apply_token_bias_negative_index_ignored ... ok +test sampling::tests::apply_token_bias_out_of_range_ignored ... ok +test sampling::tests::apply_token_bias_positive_adds ... ok +test sampling::tests::apply_token_bias_rows_biases_each_row_independently ... ok +test sampling::tests::apply_token_bias_rows_ignores_out_of_range_ids ... ok +test sampling::tests::apply_token_bias_rows_is_a_noop_without_bias ... ok +test sampling::tests::apply_token_bias_rows_matches_single_row_helper ... ok +test sampling::tests::apply_token_bias_rows_rejects_a_row_count_mismatch - should panic ... ok +test sampling::tests::apply_xtc_filter_allowlist_tokens_survive_removal ... ok +test sampling::tests::apply_xtc_filter_is_noop_with_fewer_than_two_candidates ... ok +test sampling::tests::apply_xtc_filter_is_noop_with_zero_candidates ... ok +test sampling::tests::apply_xtc_filter_keeps_least_probable_above_threshold_token ... ok +test sampling::tests::apply_xtc_step_gate_at_one_always_fires ... ok +test sampling::tests::apply_xtc_step_gate_at_zero_never_fires ... ok +test sampling::tests::apply_xtc_step_mid_probability_is_reproducible_for_the_same_seed ... ok +test sampling::tests::batched_fused_sample_accepts_2d_logits ... ok +test sampling::tests::batched_fused_sample_greedy_matches_per_row ... ok +test sampling::tests::batched_fused_sample_honors_p_less ... ok +test sampling::tests::batched_fused_sample_honors_top_n_sigma ... ok +test sampling::tests::batched_fused_sample_honors_typical_p ... ok +test sampling::tests::batched_fused_sample_single_row_no_regression ... ok +test sampling::tests::batched_sample_greedy_selects_argmax_per_sequence ... ok +test sampling::tests::batched_sample_single_sequence_matches_unbatched ... ok +test sampling::tests::compute_logprobs_returns_none_when_disabled ... ok +test sampling::tests::compute_logprobs_returns_selected_token_logprob ... ok +test sampling::tests::compute_logprobs_returns_top_k_alternatives_sorted_descending ... ok +test sampling::tests::compute_logprobs_selected_token_bf16_matches_f32 ... ok +test sampling::tests::compute_logprobs_selected_token_f16_matches_f32 ... ok +test sampling::tests::compute_logprobs_top_k_bf16_no_panic_matches_f32 ... ok +test sampling::tests::compute_logprobs_top_k_capped_at_vocab_size ... ok +test sampling::tests::compute_logprobs_top_k_f16_matches_f32 ... ok +test sampling::tests::compute_logprobs_top_k_f32_values_correct ... ok +test sampling::tests::compute_logprobs_top_k_zero_fast_path_f16_matches_full_softmax ... ok +test sampling::tests::compute_logprobs_top_k_zero_fast_path_matches_full_softmax ... ok +test sampling::tests::config_supports_fused_batch_false_for_penalties ... ok +test sampling::tests::config_supports_fused_batch_false_for_token_bias ... ok +test sampling::tests::config_supports_fused_batch_false_for_xtc ... ok +test sampling::tests::config_supports_fused_batch_true_for_plain_configs ... ok +test sampling::tests::config_supports_fused_batch_true_for_top_n_sigma ... ok +test sampling::tests::cpp_xtc_gate_decides_the_removal ... ok +test sampling::tests::cpp_xtc_greedy_draw_is_the_argmax_of_the_filtered_row ... ok +test sampling::tests::cpp_xtc_matches_the_rust_reference_filter ... ok +test sampling::tests::dry_breaker_head_with_empty_tail_breaks_matching ... ok +test sampling::tests::dry_breaker_head_with_tail_requires_the_full_sequence ... ok +test sampling::tests::dry_full_history_sentinel_scans_everything ... ok +test sampling::tests::dry_penalizes_at_exactly_the_allowed_length ... ok +test sampling::tests::dry_penalty_last_n_zero_disables_dry ... ok +test sampling::tests::dynatemp_keeps_temperature_zero_config_off_the_greedy_path ... ok +test sampling::tests::dynatemp_matches_host_reference_on_peaked_row ... ok +test sampling::tests::dynatemp_single_candidate_passes_through ... ok +test sampling::tests::dynatemp_uniform_row_scales_by_max_temp ... ok +test sampling::tests::effective_token_distribution_zeroes_top_n_sigma_masked_tokens ... ok +test sampling::tests::effective_token_distribution_zeroes_typical_p_masked_tokens ... ok +test sampling::tests::fused_sample_params_match_detects_each_difference ... ok +test sampling::tests::fused_sample_params_matches_compares_p_less ... ok +test sampling::tests::fused_sample_params_matches_compares_top_n_sigma ... ok +test sampling::tests::fused_sample_params_matches_compares_typical_p ... ok +test sampling::tests::fused_sample_params_normalizes_inert_top_n_sigma ... ok +test sampling::tests::fused_sample_params_normalizes_inert_typical_p ... ok +test sampling::tests::fused_sample_probs_equals_softmax_of_filtered_over_t ... ok +test sampling::tests::greedy_path_unchanged ... ok +test sampling::tests::inert_new_fields_keep_the_fused_path_and_identical_bytes ... ok +test sampling::tests::min_p_min_keep_forces_floor_in_probability_order ... ok +test sampling::tests::min_p_support_is_temperature_invariant ... ok +test sampling::tests::mirostat_ignores_penalties_and_truncation_filters ... ok +test sampling::tests::mirostat_temperature_zero_draws_the_argmax ... ok +test sampling::tests::mirostat_v1_peaked_row_truncates_to_the_argmax ... ok +test sampling::tests::mirostat_v2_tiny_mu_selects_the_argmax_and_updates_mu ... ok +test sampling::tests::p_less_filter_argmax_always_survives ... ok +test sampling::tests::p_less_filter_higher_temp_keeps_more ... ok +test sampling::tests::p_less_filter_ignores_neg_inf_entries ... ok +test sampling::tests::p_less_filter_matches_host_reference ... ok +test sampling::tests::p_less_filter_peaked_keeps_top_only ... ok +test sampling::tests::p_less_filter_rows_independent ... ok +test sampling::tests::p_less_skipped_on_greedy_and_disabled_returns_input_pointer ... ok +test sampling::tests::penalty_last_n_zero_disables_the_stage_and_stays_fused_eligible ... ok +test sampling::tests::penalty_window_sentinels ... ok +test sampling::tests::post_sampling_probs_reports_linear_probabilities_and_drops_zeros ... ok +test sampling::tests::repetition_penalty_windowed_ignores_tokens_outside_the_window ... ok +test sampling::tests::row_supports_fused_batch_gate_off_for_incompatible_config ... ok +test sampling::tests::row_supports_fused_batch_gate_off_for_per_row_obligations ... ok +test sampling::tests::row_supports_fused_batch_gate_on_for_plain_row ... ok +test sampling::tests::sample_token_optimized_respects_greedy_argmax_path ... ok +test sampling::tests::sample_token_optimized_with_state_dry_only_allocates_no_state ... ok +test sampling::tests::sample_token_optimized_with_state_greedy_parity_over_sequence ... ok +test sampling::tests::sample_token_optimized_with_state_no_penalty_allocates_no_state ... ok +test sampling::tests::sampler_state_frequency_presence_matches_rebuild_f16 ... ok +test sampling::tests::sampler_state_frequency_presence_matches_rebuild_over_sequence ... ok +test sampling::tests::sampler_state_repetition_matches_rebuild_f16 ... ok +test sampling::tests::sampler_state_repetition_matches_rebuild_over_sequence ... ok +test sampling::tests::sampler_state_skips_aggregates_outside_the_full_history_window ... ok +test sampling::tests::sampler_state_sync_handles_append_shrink_and_divergence ... ok +test sampling::tests::suppress_tokens_empty_slice_is_noop ... ok +test sampling::tests::suppress_tokens_forces_neg_inf_and_drives_probability_to_zero ... ok +test sampling::tests::temperature_one_support_unchanged ... ok +test sampling::tests::top_n_sigma_filter_f16_large_vocab_does_not_overflow ... ok +test sampling::tests::top_n_sigma_filter_ignores_neg_inf_entries ... ok +test sampling::tests::top_n_sigma_filter_keeps_within_n_std ... ok +test sampling::tests::top_n_sigma_filter_nan_entry_does_not_mask_the_row ... ok +test sampling::tests::top_n_sigma_filter_rows_independent ... ok +test sampling::tests::top_n_sigma_skipped_on_greedy ... ok +test sampling::tests::top_p_filter_batched_equals_per_row ... ok +test sampling::tests::top_p_filter_single_row_all_pass_at_one ... ok +test sampling::tests::top_p_filter_single_row_nucleus_boundary ... ok +test sampling::tests::top_p_min_keep_floor_never_resurrects_masked_entries ... ok +test sampling::tests::top_p_min_keep_forces_floor_in_probability_order ... ok +test sampling::tests::top_p_support_is_temperature_invariant ... ok +test sampling::tests::typical_p_filter_can_drop_argmax ... ok +test sampling::tests::typical_p_filter_ignores_neg_inf_entries ... ok +test sampling::tests::typical_p_filter_matches_host_reference ... ok +test sampling::tests::typical_p_filter_nan_entry_does_not_mask_the_row ... ok +test sampling::tests::typical_p_filter_preserves_dtype ... ok +test sampling::tests::typical_p_filter_smaller_keeps_fewer ... ok +test sampling::tests::typical_p_min_keep_forces_floor_in_typicality_order ... ok +test sampling::tests::typical_p_one_disables_via_hook ... ok +test sampling::tests::typical_p_runs_on_the_renormalized_top_k_survivors ... ok +test sampling::tests::typical_p_skipped_on_greedy ... ok +test sampling::tests::typical_p_top_k_premask_skips_oversized_k ... ok +test sampling::tests::uniform_fused_batch_params_still_rejects_token_bias ... ok +test sampling::tests::windowed_penalties_match_full_history_when_the_window_covers_it ... ok +test sampling::tests::xtc_min_keep_skips_removal_when_too_few_would_survive ... ok +test sampling::tests::xtc_runs_on_renormalised_filtered_row ... ok +test sampling_dispatch::tests::draining_an_empty_queue_is_a_no_op ... ok +test sampling_dispatch::tests::the_production_round_cap_is_the_documented_value ... ok +test sampling_dispatch::tests::the_reset_clears_both_cap_overflow_counters ... ok +test sampling_dispatch::tests::the_threadgroup_size_is_a_power_of_two ... ok +test sampling_fixed_key_tests::gumbel_kernel_and_graph_categorical_draw_one_distribution ... ok +test sampling_fixed_key_tests::gumbel_kernel_matches_the_keyed_graph_argmax ... ok +test sampling_fixed_key_tests::rejection_kernel_and_graph_chain_draw_one_distribution ... ok +test sampling_fixed_key_tests::rejection_kernel_draws_stay_inside_the_filtered_support ... ok +test sampling_fixed_key_tests::rejection_kernel_draws_the_keyed_token_under_min_p ... ok +test sampling_gumbel_tests::filtered_configs_never_reach_the_gumbel_kernel ... ok +test sampling_gumbel_tests::fused_sample_routes_the_no_filter_path_to_the_gumbel_kernel ... ok +test sampling_gumbel_tests::greedy_sampling_is_byte_identical_to_argmax ... ok +test sampling_gumbel_tests::gumbel_noise_stays_inside_its_finite_range ... ok +test sampling_gumbel_tests::gumbel_sample_index_does_not_depend_on_the_launch_split ... ok +test sampling_gumbel_tests::gumbel_sample_is_reproducible_for_a_fixed_seed ... ok +test sampling_gumbel_tests::gumbel_sample_matches_softmax_on_bimodal_logits ... ok +test sampling_gumbel_tests::gumbel_sample_matches_softmax_on_flat_logits ... ok +test sampling_gumbel_tests::gumbel_sample_matches_softmax_on_peaked_logits ... ok +test sampling_gumbel_tests::gumbel_sample_matches_softmax_over_a_large_vocabulary ... ok +test sampling_gumbel_tests::gumbel_sample_matches_softmax_with_masked_entries ... ok +test sampling_gumbel_tests::gumbel_sample_never_selects_masked_tokens ... ok +test sampling_gumbel_tests::gumbel_sample_temperature_scaling_matches_reference ... ok +test sampling_gumbel_tests::split_heuristic_stays_within_its_documented_range ... ok +test sampling_rejection_tests::a_failed_stashed_launch_is_dropped_without_throwing_or_consuming_its_error ... ok +test sampling_rejection_tests::a_fixed_seed_reproduces_the_stream ... ok +test sampling_rejection_tests::a_large_vocabulary_sends_the_joint_config_back_to_the_stock_chain ... ok +test sampling_rejection_tests::a_near_uniform_152k_row_converges_inside_the_round_cap ... ok +test sampling_rejection_tests::a_starved_round_cap_falls_back_and_the_event_is_counted ... ok +test sampling_rejection_tests::all_three_filters_compose_into_one_threshold ... ok +test sampling_rejection_tests::cap_overflow_is_detected_without_waiting_on_the_production_path ... ok +test sampling_rejection_tests::fused_sample_routes_only_the_configurations_that_measured_faster ... ok +test sampling_rejection_tests::greedy_and_no_filter_paths_report_that_they_bypass_the_rejection_kernel ... ok +test sampling_rejection_tests::joint_top_k_top_p_support_is_a_superset_of_the_stock_chain ... ok +test sampling_rejection_tests::masked_entries_are_never_sampled_and_do_not_shift_the_support ... ok +test sampling_rejection_tests::min_p_filters_the_stock_chain ... ok +test sampling_rejection_tests::min_p_needs_no_rejection_round ... ok +test sampling_rejection_tests::min_p_support_and_frequencies_match_the_stock_filter ... ok +test sampling_rejection_tests::per_row_parameters_reach_the_kernel_from_one_launch ... ok +test sampling_rejection_tests::rejection_kernel_filter_on_untempered_draw_on_tempered ... ok +test sampling_rejection_tests::subnormal_scale_probabilities_do_not_break_the_shrinking_interval ... ok +test sampling_rejection_tests::the_forced_entry_point_is_the_one_that_synchronizes ... ok +test sampling_rejection_tests::the_joint_vocab_cap_is_the_measured_crossover ... ok +test sampling_rejection_tests::the_production_sampling_call_never_synchronizes ... ok +test sampling_rejection_tests::the_reference_arm_stays_on_the_argpartition_chain ... ok +test sampling_rejection_tests::the_reported_distribution_matches_what_the_sampler_draws ... ok +test sampling_rejection_tests::the_routing_policy_matches_the_measured_matrix ... ok +test sampling_rejection_tests::the_two_filter_orderings_really_do_differ_for_top_k_plus_top_p ... ok +test sampling_rejection_tests::top_k_frequencies_match_the_renormalised_truncated_distribution ... ok +test sampling_rejection_tests::top_k_holds_under_temperature_scaling ... ok +test sampling_rejection_tests::top_k_support_matches_the_argpartition_mask_including_ties ... ok +test sampling_rejection_tests::top_p_frequencies_match_the_renormalised_truncated_distribution ... ok +test sampling_rejection_tests::top_p_support_matches_the_stock_nucleus_filter ... ok +test sampling_row_step::fused_tests::fused_eligible_is_false_for_every_stage_the_dispatch_cannot_run ... ok +test sampling_row_step::fused_tests::fused_eligible_matches_the_pre_2169_gate ... ok +test sampling_row_step::tests::cli_loops_and_server_row_step_emit_identical_streams ... ok +test sampling_row_step::tests::cli_loops_carry_feedback_state_across_steps ... ok +test sampling_row_step::tests::resolve_returns_sampled_and_final_and_confirms_only_the_final_token ... ok +test sampling_row_step::tests::state_is_created_for_history_and_feedback_samplers_only ... ok +test sampling_row_step::tests::the_mask_runs_before_the_chain_and_its_error_aborts_the_draw ... ok +test sampling_token_bias::tests::byte_fragment_tags_survive_the_language_fallback ... ok +test sampling_token_bias::tests::empty_sources_compose_to_an_empty_map ... ok +test sampling_token_bias::tests::language_bias_applies_only_without_a_request_bias ... ok +test sampling_token_bias::tests::output_suppression_always_wins ... ok +test sampling_token_bias::tests::output_suppression_beats_non_finite_request_bias ... ok +test sampling_top_k_vocab_tests::top_k_at_or_above_vocab_is_no_top_k ... ok +test sampling_top_k_vocab_tests::top_k_at_or_above_vocab_is_no_top_k_with_xtc_active ... ok +test sdpa_plan_bucket_tests::sdpa_plan_bucket_last_verify_row_is_unaffected_by_the_padded_tail ... ok +test sdpa_plan_bucket_tests::sdpa_plan_bucket_verify_block_matches_explicit_score_matrix ... ok +test session::tests::mlx_session_advertises_single_sequence_plus_multimodal ... ok +test session::tests::mlx_session_default_bias_is_empty ... ok +test session::tests::mlx_session_step_primitives_are_reserved_for_compiler_backend ... ok +test session::tests::mlx_session_with_token_bias_caches_map ... ok +test session::tests::single_sequence_caps_are_the_conservative_floor ... ok +test speculative::distribution_tests::a_fully_accepted_round_owes_its_last_proposal_and_the_next_round_pays_it ... ok +test speculative::distribution_tests::acceptance_accounting_is_exact_in_both_deterministic_regimes ... ok +test speculative::distribution_tests::chi_square_rejects_known_wrong_acceptance_rules ... ok +test speculative::distribution_tests::cli_summary_line_carries_the_rule_id_and_mean_accepted_len ... ok +test speculative::distribution_tests::closed_form_acceptance_matches_the_hand_computed_values ... ok +test speculative::distribution_tests::draft_cache_tracks_the_emitted_sequence_in_every_acceptance_regime ... ok +test speculative::distribution_tests::filtered_target_support_is_never_violated ... ok +test speculative::distribution_tests::kv_cache_length_is_exact_in_both_termination_regimes ... ok +test speculative::distribution_tests::kv_cache_stays_consistent_across_mixed_accept_reject_rounds ... ok +test speculative::distribution_tests::speculative_stream_matches_the_target_distribution ... ok +test speculative::distribution_tests::speculative_stream_matches_the_target_distribution_at_block_size_one ... ok +test speculative::distribution_tests::stochastic_accept_uses_untempered_support ... ok +test speculative::distribution_tests::stochastic_runs_report_the_stochastic_rule_and_a_longer_accepted_run ... ok +test speculative::distribution_tests::temperature_zero_stream_is_byte_identical_to_greedy_target_only ... ok +test speculative::distribution_tests::the_default_sampler_match_rule_also_matches_the_target_distribution ... ok +test speculative::distribution_tests::the_mixed_draft_model_agrees_on_exactly_one_token_in_six ... ok +test speculative::mtp::adaptive::tests::a_lead_inside_the_margin_stays_configured ... ok +test speculative::mtp::adaptive::tests::adopts_the_requested_width_when_it_measures_faster ... ok +test speculative::mtp::adaptive::tests::budget_caps_the_width_and_capped_rounds_are_ignored ... ok +test speculative::mtp::adaptive::tests::caps_by_remaining_budget ... ok +test speculative::mtp::adaptive::tests::expands_to_requested_when_recent_prefix_hit_rate_is_high ... ok +test speculative::mtp::adaptive::tests::inert_at_or_below_the_configured_depth ... ok +test speculative::mtp::adaptive::tests::refuses_a_requested_width_that_collapses ... ok +test speculative::mtp::adaptive::tests::stays_at_requested_when_not_above_configured ... ok +test speculative::mtp::adaptive::tests::stays_configured_when_recent_prefix_hit_rate_is_low ... ok +test speculative::mtp::adaptive::tests::warms_up_at_configured_depth_before_history_threshold ... ok +test speculative::mtp::round_loop_batched::tests::batched_b2_extreme_rollback_divergence_every_round ... ok +test speculative::mtp::round_loop_batched::tests::batched_max_tokens_one_emits_only_seed_bonus ... ok +test speculative::mtp::round_loop_batched::tests::batched_per_row_early_eos_freezes_in_place ... ok +test speculative::mtp::round_loop_batched::tests::batched_per_row_partial_accept_carries_per_row_rollback_slice ... ok +test speculative::mtp::round_loop_batched::tests::batched_round_loop_full_accept_two_rows ... ok +test speculative::mtp::round_loop_batched::tests::batched_round_loop_rebinds_drafter_per_round ... ok +test speculative::mtp::round_loop_batched::tests::batched_round_loop_rejects_bad_drafter_row_count ... ok +test speculative::mtp::round_loop_batched::tests::batched_round_loop_rejects_empty_batch ... ok +test speculative::mtp::round_loop_batched::tests::batched_seed_bonus_eos_freezes_only_that_row ... ok +test speculative::mtp::round_loop_batched::tests::batched_variable_prompt_lengths_threads_left_padding_through_rebind ... ok +test speculative::mtp::round_loop_batched::tests::greedy_parity_against_single_row_run ... ok +test speculative::mtp::round_loop_batched::tests::rebind_count_smoke ... ok +test speculative::mtp::tests::a_linear_tree_round_lands_where_the_chain_round_lands ... ok +test speculative::mtp::tests::a_target_claims_no_tree_round_until_it_says_so ... ok +test speculative::mtp::tests::a_target_without_a_tree_path_refuses_a_tree ... ok +test speculative::mtp::tests::a_target_without_a_tree_rollback_refuses_one ... ok +test speculative::mtp::tests::an_overridden_block_request_is_not_reported_as_the_width_used ... ok +test speculative::mtp::tests::greedy_parity_perfect_drafter_matches_no_drafter_baseline_32_tokens ... ok +test speculative::mtp::tests::mtp_generator_rejects_block_size_below_two - should panic ... ok +test speculative::mtp::tests::round_loop_first_bonus_eos_short_circuits_seed ... ok +test speculative::mtp::tests::round_loop_full_accept_emits_all_proposals_plus_bonus_per_round ... ok +test speculative::mtp::tests::round_loop_max_tokens_one_emits_only_seed_bonus ... ok +test speculative::mtp::tests::round_loop_partial_accept_rolls_back_by_block_size_minus_accepted_minus_one ... ok +test speculative::mtp::tests::round_loop_probe_rounds_emit_one_greedy_token_and_stay_out_of_acceptance ... ok +test speculative::mtp::tests::round_loop_rebinds_drafter_after_each_round ... ok +test speculative::mtp::tests::round_loop_respects_max_tokens_cap_on_full_accept ... ok +test speculative::mtp::tests::round_loop_stops_on_eos_token ... ok +test speculative::mtp::tests::session_cancel_between_rounds_finishes_without_drafting ... ok +test speculative::mtp::tests::session_first_bonus_eos_finishes_at_begin ... ok +test speculative::mtp::tests::session_step_after_finish_is_a_noop ... ok +test speculative::mtp::tests::session_steps_match_generate_eos_mid_round ... ok +test speculative::mtp::tests::session_steps_match_generate_full_accept ... ok +test speculative::mtp::tests::session_steps_match_generate_partial_accept ... ok +test speculative::mtp::tests::session_steps_match_generate_probe_rounds_first ... ok +test speculative::mtp::tests::walk_full_accept_three_round_progression_matches_hand_computed ... ok +test speculative::mtp::tree::tree_tests::a_branch_the_target_rejected_contributes_nothing ... ok +test speculative::mtp::tree::tree_tests::a_history_mask_at_zero_offset_is_the_plain_mask ... ok +test speculative::mtp::tree::tree_tests::a_history_mask_opens_the_cache_and_keeps_the_tree_shape ... ok +test speculative::mtp::tree::tree_tests::a_linear_history_mask_matches_a_causal_mask_with_the_same_offset ... ok +test speculative::mtp::tree::tree_tests::a_linear_tree_masks_exactly_as_a_causal_mask ... ok +test speculative::mtp::tree::tree_tests::a_linear_tree_walks_exactly_as_the_chain_walk ... ok +test speculative::mtp::tree::tree_tests::attaching_under_a_nonexistent_parent_is_rejected - should panic ... ok +test speculative::mtp::tree::tree_tests::budget_clamps_the_emission_without_changing_the_path ... ok +test speculative::mtp::tree::tree_tests::depths_are_the_positions_a_flattened_block_gets_wrong ... ok +test speculative::mtp::tree::tree_tests::path_and_ancestry_agree ... ok +test speculative::mtp::tree::tree_tests::siblings_cannot_see_each_other ... ok +test speculative::mtp::tree::tree_tests::the_accepted_set_is_a_path_even_when_two_branches_could_match ... ok +test speculative::mtp::tree::tree_tests::the_walk_descends_the_branch_the_target_agreed_with ... ok +test speculative::mtp::walk::tests::budget_clamps_full_accept ... ok +test speculative::mtp::walk::tests::budget_clamps_partial_accept_dropping_bonus ... ok +test speculative::mtp::walk::tests::budget_exactly_one_emits_first_bonus_or_first_accepted ... ok +test speculative::mtp::walk::tests::first_mismatch_truncates_emission ... ok +test speculative::mtp::walk::tests::full_accept_emits_all_draft_plus_bonus ... ok +test speculative::mtp::walk::tests::mid_block_mismatch_three_position_progression ... ok +test speculative::mtp::walk::tests::single_draft_token_full_accept ... ok +test speculative::mtp::walk::tests::single_draft_token_mismatch ... ok +test speculative::mtp::walk::tests::walk_batched_all_rows_full_accept ... ok +test speculative::mtp::walk::tests::walk_batched_equivalent_to_per_row_speculative_walk ... ok +test speculative::mtp::walk::tests::walk_batched_per_row_budget_truncation ... ok +test speculative::mtp::walk::tests::walk_batched_per_row_divergence ... ok +test speculative::mtp::walk::tests::walk_batched_zero_budget_emits_empty ... ok +test speculative::mtp::walk::tests::zero_accept_emits_only_target_bonus ... ok +test speculative::prompt_lookup::tests::config_validation ... ok +test speculative::prompt_lookup::tests::config_validation_bounds_the_index_and_the_verify_block ... ok +test speculative::prompt_lookup::tests::default_ngram_min_skips_single_token_matches ... ok +test speculative::prompt_lookup::tests::default_policy_follows_the_build ... ok +test speculative::prompt_lookup::tests::draft_is_capped_by_max_draft_and_context_end ... ok +test speculative::prompt_lookup::tests::falls_back_to_shorter_ngrams ... ok +test speculative::prompt_lookup::tests::gated_block_never_uses_the_widths_between_narrow_and_full ... ok +test speculative::prompt_lookup::tests::gated_block_widens_after_a_whole_narrow_block_and_narrows_after_misses ... ok +test speculative::prompt_lookup::tests::gated_governor_starts_narrow_on_probation ... ok +test speculative::prompt_lookup::tests::gated_pause_has_no_length_and_ends_on_a_confirmed_proposal ... ok +test speculative::prompt_lookup::tests::gated_probation_ends_only_on_a_whole_narrow_block ... ok +test speculative::prompt_lookup::tests::gated_respects_a_max_draft_below_the_narrow_block ... ok +test speculative::prompt_lookup::tests::gated_shadow_probe_confirms_exactly_the_resumed_copy ... ok +test speculative::prompt_lookup::tests::generate_refuses_a_model_without_external_caches ... ok +test speculative::prompt_lookup::tests::generate_refuses_a_sampler_with_feedback_state ... ok +test speculative::prompt_lookup::tests::governor_backoff_is_capped ... ok +test speculative::prompt_lookup::tests::governor_backoff_resets_once_a_round_lands ... ok +test speculative::prompt_lookup::tests::governor_keeps_the_full_block_while_blocks_land ... ok +test speculative::prompt_lookup::tests::governor_pauses_after_repeated_misses_and_backs_off ... ok +test speculative::prompt_lookup::tests::governor_shortens_the_block_when_few_tokens_land ... ok +test speculative::prompt_lookup::tests::governor_starts_with_the_full_block ... ok +test speculative::prompt_lookup::tests::index_matches_the_scan_at_every_length ... ok +test speculative::prompt_lookup::tests::index_matches_the_scan_when_extended_in_blocks ... ok +test speculative::prompt_lookup::tests::loop_guard_stops_mid_block_where_plain_decoding_stops ... ok +test speculative::prompt_lookup::tests::model_owned_sequence_state_is_refused_even_when_other_flags_allow_it ... ok +test speculative::prompt_lookup::tests::never_matches_the_suffix_against_itself ... ok +test speculative::prompt_lookup::tests::non_adaptive_governor_always_proposes_max_draft ... ok +test speculative::prompt_lookup::tests::prefers_the_longest_matching_suffix ... ok +test speculative::prompt_lookup::tests::prefers_the_most_recent_occurrence_of_a_given_length ... ok +test speculative::prompt_lookup::tests::proposes_the_tokens_after_an_earlier_occurrence ... ok +test speculative::prompt_lookup::tests::repeated_run_proposes_the_run ... ok +test speculative::prompt_lookup::tests::rollback_keeps_a_cache_dependent_target_identical_to_plain_decoding ... ok +test speculative::prompt_lookup::tests::rollback_matches_plain_decoding_under_a_repetition_penalty ... ok +test speculative::prompt_lookup::tests::shadow_confirmation_is_ignored_unless_paused_and_gated ... ok +test speculative::prompt_lookup::tests::shadow_probe_settles_on_the_first_two_emitted_tokens ... ok +test speculative::prompt_lookup::tests::short_and_empty_contexts_propose_nothing ... ok +test speculative::prompt_lookup::tests::tokens_per_forward_excludes_the_prefill_token ... ok +test speculative::prompt_lookup::tests::warmup_runs_every_verify_width_and_rolls_each_back ... ok +test speculative::prompt_lookup::tests::without_the_loop_guard_lookup_runs_to_max_tokens ... ok +test speculative::prompt_lookup_drafter::tests::graded_cooldown_counts_down_and_records_paused_rounds ... ok +test speculative::prompt_lookup_drafter::tests::the_index_is_built_on_the_first_lookup ... ok +test speculative::stochastic_accept::stochastic_accept_tests::acceptance_probability_matches_the_min_one_ratio ... ok +test speculative::stochastic_accept::stochastic_accept_tests::default_rule_at_positive_temperature_is_sampler_match ... ok +test speculative::stochastic_accept::stochastic_accept_tests::effective_distribution_is_one_hot_for_a_greedy_config ... ok +test speculative::stochastic_accept::stochastic_accept_tests::effective_distribution_is_the_temperature_scaled_softmax ... ok +test speculative::stochastic_accept::stochastic_accept_tests::effective_distribution_zeroes_the_filtered_tail ... ok +test speculative::stochastic_accept::stochastic_accept_tests::every_selectable_rule_is_distribution_preserving ... ok +test speculative::stochastic_accept::stochastic_accept_tests::greedy_target_always_selects_argmax_rule ... ok +test speculative::stochastic_accept::stochastic_accept_tests::identical_distributions_take_the_degenerate_residual_fallback ... ok +test speculative::stochastic_accept::stochastic_accept_tests::log_latches_are_per_kind_and_one_shot ... ok +test speculative::stochastic_accept::stochastic_accept_tests::measured_acceptance_rate_reaches_the_sum_min_optimum ... ok +test speculative::stochastic_accept::stochastic_accept_tests::missing_proposal_distribution_falls_back_to_argmax ... ok +test speculative::stochastic_accept::stochastic_accept_tests::residual_draw_follows_the_normalized_relu_difference ... ok +test speculative::stochastic_accept::stochastic_accept_tests::sampler_is_greedy_matches_fused_sampler_short_circuit ... ok +test speculative::stochastic_accept::stochastic_accept_tests::stochastic_acceptance_is_opt_in_not_opt_out ... ok +test speculative::stochastic_accept::stochastic_accept_tests::tokens_outside_the_target_support_are_never_accepted ... ok +test speculative::stochastic_accept::stochastic_accept_tests::tokens_the_target_likes_at_least_as_much_are_always_accepted ... ok +test speculative::stochastic_accept::stochastic_accept_tests::underflowed_proposal_mass_does_not_bypass_the_target_support ... ok +test speculative::stochastic_accept::stochastic_accept_tests::verify_draft_token_composes_accept_and_residual ... ok +test speculative::tests::can_trim_prompt_cache_all_standard ... ok +test speculative::tests::can_trim_prompt_cache_empty_slice ... ok +test speculative::tests::kv_cache_is_trimmable_always_true ... ok +test speculative::tests::kv_cache_trim_then_append_matches_untrimmed_reference ... ok +test speculative::tests::prefill_step_size_matches_upstream_default ... ok +test speculative::tests::speculative_generate_max_tokens_one_emits_first_non_eos_token ... ok +test speculative::tests::speculative_generator_caller_bias_wins ... ok +test speculative::tests::speculative_generator_default_bias_is_empty ... ok +test speculative::tests::speculative_generator_empty_bias_is_bit_exact ... ok +test speculative::tests::speculative_generator_passes_bias_to_target_only ... ok +test speculative::tests::test_kv_cache_trim_all ... ok +test speculative::tests::test_kv_cache_trim_basic ... ok +test speculative::tests::test_kv_cache_trim_more_than_available ... ok +test speculative::tests::test_kv_cache_trim_zero ... ok +test speculative::tests::test_trim_caches_helper ... ok +test ssm_update_parity_tests::ssm_kernel_kill_switches_turn_predicate_off ... ok +test ssm_update_parity_tests::ssm_update_kernel_keys_on_a_log_dtype ... ok +test ssm_update_parity_tests::ssm_update_kernel_matches_graph_step_bf16 ... ok +test ssm_update_parity_tests::ssm_update_kernel_matches_graph_step_f32 ... ok +test ssm_update_parity_tests::ssm_update_kernel_refuses_unsupported_shapes ... ok +test streams::tests::default_device_guard_capture_restores_without_moving ... ok +test streams::tests::default_device_guard_restores_while_unwinding ... ok +test streams::tests::default_device_guards_nest_and_restore_in_order ... ok +test streams::tests::deprecated_is_gpu_available_keeps_the_default_device_meaning ... ok +test streams::tests::gpu_backend_available_does_not_track_the_default_device ... ok +test streams::tests::gpu_device_count_is_at_least_one ... ok +test streams::tests::install_and_synchronize_round_trip_works ... ok +test streams::tests::install_thread_local_default_stream_is_noop_on_none ... ok +test streams::tests::invalid_gpu_index_display_is_actionable ... ok +test streams::tests::legacy_new_generation_stream_is_total ... ok +test streams::tests::live_device_guards_are_counted_until_the_device_is_restored ... ok +test streams::tests::new_stream_on_gpu_accepts_every_valid_index ... ok +test streams::tests::new_stream_on_gpu_rejects_out_of_range ... ok +test streams::tests::new_thread_local_generation_stream_is_total ... ok +test streams::tests::new_thread_local_stream_on_gpu_validates_index ... ok +test streams::tests::resolved_stream_wrappers_are_independent_allocations ... ok +test streams::tests::set_default_gpu_device_validates_index ... ok +test streams::tests::shared_generation_stream_resolves_to_one_stream_per_thread ... ok +test streams::tests::trivial_op_runs_on_non_default_gpu_index ... ok +test tf32_pin_tests::f32_gemm_runs_at_full_precision_in_the_test_process ... ok +test ttft_profile_tests::default_phases_are_all_zero ... ok +test ttft_profile_tests::in_prefill_excludes_setup ... ok +test ttft_profile_tests::line_names_every_phase_and_the_prompt_length ... ok +test ttft_profile_tests::residual_is_the_unattributed_remainder ... ok +test ttft_profile_tests::residual_saturates_instead_of_wrapping ... ok +test ttft_profile_tests::total_includes_setup ... ok +test utils::embedding_mask_tests::bidirectional_padding_mask_blocks_only_padding_keys ... ok +test utils::embedding_mask_tests::bidirectional_window_mask_blocks_beyond_window ... ok +test utils::embedding_mask_tests::causal_padding_mask_keeps_diagonal_for_fully_padded_rows ... ok +test utils::embedding_mask_tests::causal_padding_mask_matches_create_causal_mask_when_unpadded ... ok +test utils::embedding_mask_tests::masks_stay_finite_after_f16_cast ... ok +test utils::tests::create_causal_mask_roster_count_matches_repo ... ok +test utils::tests::full_windowed_mask_over_window_has_no_all_masked_row ... ok +test utils::tests::full_windowed_mask_within_window_matches_capped ... ok +test utils::tests::left_padding_mask_every_query_row_has_an_attended_cell ... ok +test utils::tests::left_padding_mask_masks_padding_in_verify_round_with_large_gap ... ok +test utils::tests::left_padding_mask_padding_query_rows_attend_exactly_self_column ... ok +test utils::tests::left_padding_mask_real_query_rows_match_causal_and_padding ... ok +test utils::tests::mask_stale_key_gap_excludes_only_the_per_row_gap ... ok +test utils::tests::mask_stale_key_gap_preserves_4d_base_outside_gap ... ok +test utils::tests::sliding_window_prefill_mask_clamps_when_rolled_over ... ok +test utils::tests::sliding_window_prefill_mask_dense_full_when_rolled_over_window ... ok +test utils::tests::sliding_window_prefill_mask_dense_full_when_within_window_over_total ... ok +test utils::tests::sliding_window_prefill_mask_dense_matches_fresh_over_window ... ok +test utils::tests::sliding_window_prefill_mask_dense_within_window_byte_identical ... ok +test utils::tests::sliding_window_prefill_mask_selects_full_when_fresh_over_window ... ok +test utils::tests::sliding_window_prefill_mask_within_window_matches_capped_builder ... ok +test utils::tests::test_align_to_na_tile_cross_boundary ... ok +test utils::tests::test_align_to_na_tile_exact ... ok +test utils::tests::test_align_to_na_tile_short ... ok +test utils::tests::test_align_to_na_tile_zero ... ok +test utils::tests::test_create_padded_prefill_mask_no_padding ... ok +test utils::tests::test_create_padded_prefill_mask_shape ... ok +test utils::tests::test_repeat_kv ... ok +test utils::tests::test_repeat_kv_no_repeat ... ok +test utils::tests::test_slice_axis_basic ... ok +test utils::tests::test_slice_axis_end_minus_one ... ok +test utils::tests::test_sliding_window_mask_shape_at_window_boundary ... ok +test utils::tests::test_sliding_window_mask_shape_capped_when_seq_exceeds_window ... ok +test utils::tests::test_sliding_window_mask_shape_uncapped_when_seq_within_window ... ok +test utils::tests::test_sliding_window_mask_values_when_capped ... ok +test utils::tests::windowed_left_padding_mask_masks_padding_and_band_when_buffered_over_window ... ok +test utils::tests::windowed_left_padding_mask_masks_padding_columns ... ok +test utils::tests::windowed_left_padding_mask_matches_plain_left_padding_when_uncapped ... ok +test utils::tests::windowed_left_padding_mask_nan_safe_rescue_trio ... ok +test utils::tests::windowed_left_padding_mask_no_padding_matches_windowed ... ok +test weights::tests::filtered_loader_skips_nonmatching_shard_before_native_load ... ok +test weights::tests::test_check_symlink_broken ... ok +test weights::tests::test_check_symlink_regular_file ... ok +test weights::tests::test_collect_shard_paths_falls_back_when_index_stale ... ok +test weights::tests::test_collect_shard_paths_returns_index_error_when_dir_empty ... ok +test weights::tests::test_collect_shard_paths_uses_index_when_valid ... ok +test weights::tests::test_extract_shards_deduplicates ... ok +test weights::tests::test_extract_shards_from_index_json_basic ... ok +test weights::tests::test_extract_shards_missing_weight_map ... ok +test weights::tests::test_extract_shards_rejects_path_traversal_in_json ... ok +test weights::tests::test_parse_shard_index_no_file ... ok +test weights::tests::test_parse_shard_index_valid_file ... ok +test weights::tests::test_parse_shard_index_with_total_size_absent ... ok +test weights::tests::test_parse_shard_index_with_total_size_no_file ... ok +test weights::tests::test_parse_shard_index_with_total_size_present ... ok +test weights::tests::test_safetensors_dtype_itemsize ... ok +test weights::tests::test_validate_index_shards_rejects_path_traversal ... ok +test weights::tests::test_weight_footprint_bytes_from_sharded_index ... ok +test weights::tests::test_weight_footprint_bytes_from_single_file_header ... ok +test weights::tests::test_weight_footprint_bytes_ignores_stale_index_total_size ... ok +test weights::tests::test_weight_footprint_bytes_index_without_total_size_falls_to_header ... ok +test weights::tests::test_weight_footprint_bytes_index_without_total_size_sums_valid_shards ... ok +test weights::tests::test_weight_footprint_bytes_missing_no_file ... ok +test weights::tests::test_weight_footprint_bytes_rejects_non_numeric_shape_dim ... ok +test weights::tests::test_weight_footprint_bytes_scalar_tensor ... ok +test weights::tests::test_weight_map_operations ... ok + +test result: ok. 2072 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 104.38s + + Running unittests src/lib.rs (target/test-fast/deps/mlxcel_mlx_pin-7bbde732c345a80b) + +running 26 tests +test mlx_pin::tests::a_branch_name_is_rejected ... ok +test mlx_pin::tests::a_file_without_an_mlx_declaration_is_an_error ... ok +test mlx_pin::tests::a_marker_equal_to_the_pin_keeps_the_cache ... ok +test mlx_pin::tests::a_marker_from_another_pin_makes_the_cache_stale ... ok +test mlx_pin::tests::a_missing_directory_is_unavailable ... ok +test mlx_pin::tests::a_short_sha_is_rejected ... ok +test mlx_pin::tests::a_tree_without_git_metadata_is_unavailable_not_a_mismatch ... ok +test mlx_pin::tests::an_absent_marker_makes_the_cache_stale ... ok +test mlx_pin::tests::an_unreadable_file_is_an_error ... ok +test mlx_pin::tests::an_uppercase_sha_is_rejected ... ok +test mlx_pin::tests::another_dependency_with_its_own_git_tag_is_not_picked_up ... ok +test mlx_pin::tests::error_messages_name_the_file_and_what_was_expected ... ok +test mlx_pin::tests::head_differing_from_the_pin_is_a_mismatch ... ok +test mlx_pin::tests::head_matching_the_pin_passes ... ok +test mlx_pin::tests::ignores_a_commented_out_declaration ... ok +test mlx_pin::tests::marker_whitespace_is_ignored ... ok +test mlx_pin::tests::missing_git_tag_is_an_error ... ok +test mlx_pin::tests::parses_a_pin_preceded_by_a_comment_inside_the_block ... ok +test mlx_pin::tests::parses_a_quoted_pin ... ok +test mlx_pin::tests::parses_the_pin_from_a_well_formed_declaration ... ok +test mlx_pin::tests::the_check_does_not_walk_up_into_an_enclosing_repository ... ok +test mlx_pin::tests::the_head_probe_clears_gits_repository_redirection_variables ... ok +test mlx_pin::tests::the_mismatch_message_says_how_to_recover ... ok +test mlx_pin::tests::the_real_cmakelists_resolves_to_a_full_sha ... ok +test mlx_pin::tests::two_git_tags_in_one_declaration_are_ambiguous ... ok +test mlx_pin::tests::two_mlx_declarations_are_ambiguous ... ok + +test result: ok. 26 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s + + Running tests/cross_parser.rs (target/test-fast/deps/cross_parser-6f5e8642504955cf) + +running 1 test +test shell_acceptance_implies_rust_agreement_on_the_same_commit ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s + + Running unittests src/lib.rs (target/test-fast/deps/mlxcel_surgery-9d678b028e2c884a) + +running 143 tests +test config::tests::add_op_alpha_defaults_to_one_when_omitted ... ok +test config::tests::add_op_resolves_relative_source ... ok +test config::tests::add_rejects_missing_source_file ... ok +test config::tests::empty_operations_yields_empty_pipeline ... ok +test config::tests::full_schema_parses_with_all_op_types ... ok +test config::tests::interpolate_op_parses_with_slerp ... ok +test config::tests::interpolate_rejects_out_of_range_ratio ... ok +test config::tests::malformed_glob_pattern_is_rejected ... ok +test config::tests::missing_required_field_is_rejected ... ok +test config::tests::omitted_operations_field_defaults_to_empty ... ok +test config::tests::prune_attention_head_accepts_head_ids ... ok +test config::tests::prune_attention_head_requires_head_ids ... ok +test config::tests::prune_layer_requires_layer_ids ... ok +test config::tests::prune_mlp_channel_requires_channel_ids ... ok +test config::tests::prune_rejects_empty_id_list ... ok +test config::tests::replace_op_resolves_source ... ok +test config::tests::replace_rejects_empty_source_key ... ok +test config::tests::scale_op_materializes_to_real_implementation ... ok +test config::tests::scale_op_parses_and_validates_factor ... ok +test config::tests::scale_rejects_non_finite_factor ... ok +test config::tests::unknown_op_is_rejected ... ok +test config::tests::unsupported_version_is_rejected ... ok +test config::tests::wrong_field_type_is_rejected ... ok +test error::tests::from_anyhow_error_routes_to_other ... ok +test error::tests::from_io_error_is_transparent ... ok +test error::tests::shape_mismatch_display_includes_both_shapes ... ok +test error::tests::tensor_not_found_display ... ok +test ops::add_apply_tests::alpha_zero_is_a_no_op_and_skips_donor_load ... ok +test ops::add_apply_tests::alpha_zero_still_diagnoses_zero_match_patterns ... ok +test ops::add_apply_tests::applies_correct_value_with_alpha_half ... ok +test ops::add_apply_tests::applies_correct_value_with_default_alpha ... ok +test ops::add_apply_tests::applies_correct_value_with_negative_alpha ... ok +test ops::add_apply_tests::applies_to_multiple_matched_keys ... ok +test ops::add_apply_tests::donor_dtype_is_cast_to_base_dtype ... ok +test ops::add_tests::missing_source_file_errors ... ok +test ops::add_tests::missing_source_key_errors ... ok +test ops::add_tests::name_is_add ... ok +test ops::add_tests::new_rejects_bad_glob ... ok +test ops::add_tests::new_rejects_non_finite_alpha ... ok +test ops::add_tests::quantized_packed_base_returns_focused_error ... ok +test ops::add_tests::shape_mismatch_returns_structured_error ... ok +test ops::add_tests::zero_match_pattern_errors ... ok +test ops::interpolate::tests::bf16_inputs_produce_bf16_output ... ok +test ops::interpolate::tests::constructor_rejects_malformed_glob ... ok +test ops::interpolate::tests::constructor_rejects_out_of_range_ratio ... ok +test ops::interpolate::tests::dtype_mismatch_errors ... ok +test ops::interpolate::tests::glob_matches_multiple_tensors ... ok +test ops::interpolate::tests::lerp_matches_closed_form ... ok +test ops::interpolate::tests::lerp_ratio_one_returns_source_b ... ok +test ops::interpolate::tests::lerp_ratio_zero_returns_source_a ... ok +test ops::interpolate::tests::missing_donor_key_errors ... ok +test ops::interpolate::tests::quantized_dtype_is_rejected ... ok +test ops::interpolate::tests::shape_mismatch_errors ... ok +test ops::interpolate::tests::slerp_anti_parallel_vectors_falls_back_to_lerp ... ok +test ops::interpolate::tests::slerp_matches_closed_form_at_quarter ... ok +test ops::interpolate::tests::slerp_matches_closed_form_orthogonal_vectors ... ok +test ops::interpolate::tests::slerp_parallel_vectors_falls_back_to_lerp ... ok +test ops::interpolate::tests::slerp_ratio_one_returns_source_b ... ok +test ops::interpolate::tests::slerp_ratio_zero_returns_source_a ... ok +test ops::interpolate::tests::slerp_zero_magnitude_donor_falls_back_to_lerp ... ok +test ops::interpolate::tests::zero_match_pattern_errors ... ok +test ops::prune::tests::attention_head::attention_head_prune_errors_when_only_kv_matched ... ok +test ops::prune::tests::attention_head::attention_head_prune_rejects_out_of_range_head_id ... ok +test ops::prune::tests::attention_head::attention_head_prune_skips_kv_proj_under_gqa_policy ... ok +test ops::prune::tests::attention_head::attention_head_prune_zeros_o_proj_column_slice ... ok +test ops::prune::tests::attention_head::attention_head_prune_zeros_q_proj_row_slice ... ok +test ops::prune::tests::attention_head::attention_head_uses_text_config_for_vlm ... ok +test ops::prune::tests::attention_head::axis_alignment_aligned_o_proj_slice_succeeds ... ok +test ops::prune::tests::attention_head::quantized_attention_head_zeros_weight_scales_biases ... ok +test ops::prune::tests::classify_attention_key_recognizes_each_role ... ok +test ops::prune::tests::classify_mlp_key_recognizes_each_role ... ok +test ops::prune::tests::dotted_segment_matcher_avoids_substring_collisions ... ok +test ops::prune::tests::extract_layer_index_parses_dotted_keys ... ok +test ops::prune::tests::layer::config_missing_num_heads_is_reported ... ok +test ops::prune::tests::layer::layer_prune_errors_on_out_of_range_id ... ok +test ops::prune::tests::layer::layer_prune_errors_on_zero_match ... ok +test ops::prune::tests::layer::layer_prune_zeros_only_requested_layer ... ok +test ops::prune::tests::mlp_channel::mlp_channel_prune_rejects_combined_gate_up ... ok +test ops::prune::tests::mlp_channel::mlp_channel_prune_rejects_out_of_range_channel ... ok +test ops::prune::tests::mlp_channel::mlp_channel_prune_zeros_down_proj_column_in_float ... ok +test ops::prune::tests::mlp_channel::mlp_channel_prune_zeros_up_and_gate_proj_rows ... ok +test ops::prune::tests::mlp_channel::quantized_down_proj_single_channel_is_rejected ... ok +test ops::replace::quant_tests::non_quantized_base_with_no_siblings_does_not_require_donor_siblings ... ok +test ops::replace::quant_tests::quantized_layout_errors_on_scales_shape_mismatch ... ok +test ops::replace::quant_tests::quantized_layout_errors_when_donor_missing_scales ... ok +test ops::replace::quant_tests::quantized_layout_replaces_weight_and_siblings_atomically ... ok +test ops::replace::tests::apply_dtype_mismatch_errors ... ok +test ops::replace::tests::apply_missing_source_file_returns_io_error ... ok +test ops::replace::tests::apply_missing_source_key_returns_tensor_not_found ... ok +test ops::replace::tests::apply_multi_tensor_glob_replaces_every_match ... ok +test ops::replace::tests::apply_shape_mismatch_errors_and_leaves_weights_untouched ... ok +test ops::replace::tests::apply_single_tensor_replace_swaps_payload ... ok +test ops::replace::tests::apply_with_source_key_wildcard_substitution ... ok +test ops::replace::tests::apply_zero_match_pattern_errors ... ok +test ops::replace::tests::name_is_replace ... ok +test ops::replace::tests::replace_op_construction_rejects_wildcard_count_mismatch ... ok +test ops::replace::tests::replace_op_rejects_empty_pattern ... ok +test ops::replace::wildcard::tests::double_star_is_treated_as_single_wildcard_with_empty_gap ... ok +test ops::replace::wildcard::tests::leading_star_captures_prefix ... ok +test ops::replace::wildcard::tests::match_with_recurring_interior_literal_backtracks ... ok +test ops::replace::wildcard::tests::match_with_repeated_interior_literal_picks_first_valid ... ok +test ops::replace::wildcard::tests::multiple_stars_capture_in_order ... ok +test ops::replace::wildcard::tests::no_stars_is_exact_match ... ok +test ops::replace::wildcard::tests::render_substitutes_captures_in_order ... ok +test ops::replace::wildcard::tests::render_with_zero_wildcards_is_verbatim ... ok +test ops::replace::wildcard::tests::single_star_captures_middle ... ok +test ops::replace::wildcard::tests::trailing_star_captures_suffix ... ok +test ops::scale::tests::factor_one_is_a_value_preserving_pass ... ok +test ops::scale::tests::from_spec_accepts_scale_variant_only ... ok +test ops::scale::tests::glob_wildcard_matches_multiple_layers ... ok +test ops::scale::tests::pattern_matching_scales_directly_is_pass_through ... ok +test ops::scale::tests::preserves_dtype_and_shape_for_f16_tensor ... ok +test ops::scale::tests::quantized_affine_routes_to_scales_and_biases_not_packed_codes ... ok +test ops::scale::tests::quantized_mxfp4_layer_without_biases_scales_only_scales ... ok +test ops::scale::tests::rejects_malformed_glob ... ok +test ops::scale::tests::rejects_non_finite_factor ... ok +test ops::scale::tests::scaleop_is_send_and_sync_for_pipeline_sharing ... ok +test ops::scale::tests::scales_matched_tensors_and_leaves_others_alone ... ok +test ops::scale::tests::wildcard_matching_quantized_triplet_does_not_double_scale ... ok +test ops::scale::tests::zero_match_returns_error ... ok +test ops::split_mtp::split_mtp_tests::split_accepts_block_sizes_up_to_the_ceiling ... ok +test ops::split_mtp::split_mtp_tests::split_accepts_every_supported_affine_bit_width ... ok +test ops::split_mtp::split_mtp_tests::split_accepts_every_supported_affine_group_size ... ok +test ops::split_mtp::split_mtp_tests::split_dir_refuses_an_index_without_the_nextn_layer ... ok +test ops::split_mtp::split_mtp_tests::split_dir_refuses_an_output_that_aliases_the_source ... ok +test ops::split_mtp::split_mtp_tests::split_dir_writes_a_loadable_drafter_directory ... ok +test ops::split_mtp::split_mtp_tests::split_flattens_nextn_layer ... ok +test ops::split_mtp::split_mtp_tests::split_quantizes_projections_but_not_the_router_or_norms ... ok +test ops::split_mtp::split_mtp_tests::split_refuses_a_foreign_family ... ok +test ops::split_mtp::split_mtp_tests::split_refuses_a_quantized_nextn_layer ... ok +test ops::split_mtp::split_mtp_tests::split_refuses_an_oversized_block_size ... ok +test ops::split_mtp::split_mtp_tests::split_refuses_an_unsupported_q_bits ... ok +test ops::split_mtp::split_mtp_tests::split_refuses_an_unsupported_q_group_size ... ok +test ops::split_mtp::split_mtp_tests::split_refuses_checkpoint_without_nextn_tensors ... ok +test pipeline::tests::clone_shares_ops_via_arc ... ok +test pipeline::tests::debug_lists_op_names_in_order ... ok +test pipeline::tests::empty_pipeline_apply_returns_ok_unit ... ok +test pipeline::tests::from_iter_and_from_vec_preserve_order ... ok +test pipeline::tests::new_pipeline_is_empty_and_default_matches ... ok +test tests::empty_pipeline_is_no_op ... ok +test tests::pipeline_applies_ops_in_registration_order ... ok +test tests::pipeline_short_circuits_on_error ... ok +test tests::weight_transform_signature_matches_a1 ... ok + +test result: ok. 143 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.52s + + Running tests/add_integration.rs (target/test-fast/deps/add_integration-546b1ff68c8c3742) + +running 3 tests +test empty_pipeline_is_bit_exact_no_op ... ok +test programmatic_pipeline_applies_add_op_end_to_end ... ok +test yaml_driven_pipeline_applies_add_op_end_to_end ... ok + +test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.31s + + Running tests/interpolate_integration.rs (target/test-fast/deps/interpolate_integration-51776ac318944ce5) + +running 5 tests +test direct_interpolate_op_via_pipeline_loads_safetensors_from_disk ... ok +test interpolate_op_surfaces_missing_donor_file_error ... ok +test parse_yaml_and_apply_interpolate_via_pipeline ... ok +test pipeline_without_interpolate_op_leaves_weights_untouched ... ok +test yaml_parser_rejects_nonexistent_donor_at_parse_time ... ok + +test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.31s + + Running tests/prune_integration.rs (target/test-fast/deps/prune_integration-150bd6435c018dab) + +running 7 tests +test baseline_with_empty_pipeline_is_bit_exact_no_op ... ok +test end_to_end_prune_then_inspect_yields_no_nan_inf ... ok +test programmatic_pipeline_builder_works_without_yaml ... ok +test yaml_file_with_donor_resolved_relative ... ok +test yaml_prune_attention_head_runs_through_pipeline_apply ... ok +test yaml_prune_layer_zeroes_listed_layer_only ... ok +test yaml_prune_mlp_channel_runs_through_pipeline_apply ... ok + +test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.34s + + Running tests/replace_integration.rs (target/test-fast/deps/replace_integration-ab6e6ee969a83bd6) + +running 2 tests +test replace_yaml_missing_tensor_in_base_errors_through_pipeline ... ok +test replace_yaml_replaces_targeted_tensor_through_pipeline ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.27s + + Running tests/scale_integration.rs (target/test-fast/deps/scale_integration-e62651ee478e81ff) + +running 4 tests +test yaml_multi_layer_glob_scales_every_matched_layer_once ... ok +test yaml_pipeline_with_real_scale_preserves_dtype_and_shape ... ok +test yaml_scale_config_mutates_matched_tensor_through_pipeline ... ok +test yaml_zero_match_surfaces_actionable_error ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.28s + + Running unittests src/lib.rs (target/test-fast/deps/mlxcel_xla-202b6bbdaef2e90c) + +running 291 tests +test batch::tests::a_request_larger_than_every_bucket_is_refused ... ok +test batch::tests::a_single_bucket_routes_exactly_like_one_engine ... ok +test batch::tests::adapter_mode_is_request_scoped_and_cleared_on_slot_reuse ... ok +test batch::tests::cancel_active_slot_frees_it ... ok +test batch::tests::cancel_each_input_form_before_and_after_admit_reuses_slots ... ok +test batch::tests::commit_token_emits_a_length_terminated_final_token ... ok +test batch::tests::commit_token_withholds_the_terminating_eos_id ... ok +test batch::tests::deepstack_side_tensors_are_dropped_on_cancel_and_slot_can_be_reused ... ok +test batch::tests::finish_reason_eos_wins_over_length ... ok +test batch::tests::gemma3n_ple_is_removed_immediately_on_cancel_and_slot_can_be_reused ... ok +test batch::tests::idle_only_when_drained ... ok +test batch::tests::mixed_pending_inputs_keep_logical_history_and_effective_length_distinct ... ok +test batch::tests::pop_next_pending_skips_cancelled ... ok +test batch::tests::prepared_capacity_rejection_is_atomic ... ok +test batch::tests::public_deepstack_deltas_survive_pending_slots_and_zero_on_reuse ... ok +test batch::tests::rejected_request_does_not_mutate_queue_or_live_slot ... ok +test batch::tests::request_admission_checks_prompt_plus_generation_budget ... ok +test batch::tests::routing_counts_the_generation_budget_not_just_the_prompt ... ok +test batch::tests::routing_picks_the_smallest_bucket_that_admits_the_whole_budget ... ok +test batch::tests::scheduler_ids_do_not_collide_across_buckets ... ok +test batch::tests::submit_assigns_increasing_ids_and_queues ... ok +test context::tests::a_bucket_list_is_sorted_deduplicated_and_validated ... ok +test context::tests::a_derived_set_adds_an_image_bucket_only_when_it_is_larger ... ok +test context::tests::exact_fit_is_admitted ... ok +test context::tests::expanded_multimodal_length_uses_the_same_invariant ... ok +test context::tests::one_token_overflow_reports_all_values ... ok +test context::tests::overflowing_generation_budget_is_rejected ... ok +test context::tests::routing_by_whole_budget_is_what_makes_migration_unnecessary ... ok +test context::tests::zero_capacity_is_never_admitted ... ok +test diagnostic_flags::tests::native_helper_pins_bounded_host_thread_flags ... ok +test diagnostic_flags::tests::rust_wrapper_caches_the_process_global_parse_result ... ok +test emitter::builder::tests::bf16_dot_demotes_to_bf16 ... ok +test emitter::builder::tests::default_precision_is_f16_on_gpu_and_f32_on_cpu ... ok +test emitter::builder::tests::dequant_affine_4bit_unpacks_eight_lanes_to_f32 ... ok +test emitter::builder::tests::dequant_affine_8bit_unpacks_four_lanes ... ok +test emitter::builder::tests::f16_dot_demotes_inputs_and_keeps_f32_accumulate ... ok +test emitter::builder::tests::f32_dot_emits_no_convert ... ok +test emitter::builder::tests::native_dispatch_i32_preflight_rejects_dimensions_and_products ... ok +test emitter::builder::tests::packed_runs_on_rejects_only_active_packed_on_metal ... ok +test emitter::builder::tests::precision_lowers_on_rejects_only_bf16_on_metal ... ok +test emitter::config::tests::llava_wrapper_uses_nested_qwen2_text_config ... ok +test emitter::config::tests::parses_and_validates_explicit_mrope_sections ... ok +test emitter::config::tests::parses_exaone_alt_fields_and_scheme ... ok +test emitter::config::tests::parses_internlm3_dynamic_rope_as_plain ... ok +test emitter::config::tests::parses_mimo_qkv_bias_ignores_sliding_window ... ok +test emitter::config::tests::parses_seed_oss_as_qkv_bias_default_rope ... ok +test emitter::config::tests::phi4mm_pins_longrope_and_both_adapter_contracts ... ok +test emitter::config::tests::phi4mm_rejects_incomplete_lora_and_longrope_shapes ... ok +test emitter::config::tests::rejects_ernie4_5_interleaved_rope ... ok +test emitter::config::tests::rejects_out_of_scope_dense_deltas ... ok +test emitter::context_tests::graph_schema_is_consistent_at_compatibility_capacity ... ok +test emitter::context_tests::graph_schema_is_consistent_at_multimodal_capacity ... ok +test emitter::gemma3n::tests::dense_ple_metadata_checks_shape_dtype_and_bytes ... ok +test emitter::gemma3n::tests::invalid_context_numeric_and_quantization_contracts_fail_early ... ok +test emitter::gemma3n::tests::malformed_per_layer_arrays_and_shared_sources_fail_early ... ok +test emitter::gemma3n::tests::native_cuda_dispatch_preflight_rejects_each_signed_product_boundary ... ok +test emitter::gemma3n::tests::nested_text_quantization_overrides_multimodal_root ... ok +test emitter::gemma3n::tests::null_nested_quantization_falls_back_to_multimodal_root ... ok +test emitter::gemma3n::tests::omitted_and_null_optional_math_contracts_match_mlx_defaults ... ok +test emitter::gemma3n::tests::parses_nested_contract_and_maps_shared_kv_by_attention_kind ... ok +test emitter::gemma3n::tests::structural_options_change_artifact_identity ... ok +test emitter::gemma3n::tests::zero_altup_clip_is_a_valid_explicit_clamp ... ok +test emitter::gemma3n_emit::tests::absent_softcap_skips_only_the_final_logit_tanh ... ok +test emitter::gemma3n_emit::tests::emits_distinct_token_and_dense_ple_entries_with_physical_kv_count ... ok +test emitter::gemma3n_emit::tests::gemma3n_precision_is_local_and_keeps_altup_coefficients_f32 ... ok +test emitter::gemma3n_emit::tests::iree_compiles_tiny_token_and_dense_ple_graphs ... ignored, requires the pinned IREE compiler; run explicitly for the production target +test emitter::gemma3n_emit_ops::tests::absent_altup_clip_leaves_coefficients_unchanged ... ok +test emitter::gemma3n_emit_ops::tests::altup_correction_rounds_product_before_residual_add ... ok +test emitter::gemma3n_emit_ops::tests::bf16_projection_has_f32_island_boundary ... ok +test emitter::gemma3n_emit_ops::tests::bf16_rms_norm_rounds_before_and_after_weight ... ok +test emitter::gemma3n_emit_ops::tests::bf16_round_is_explicit_in_stablehlo ... ok +test emitter::gemma3n_emit_ops::tests::bf16_scalar_is_host_rounded_without_a_convert_pair ... ok +test emitter::gemma3n_emit_ops::tests::materialized_attention_pins_bf16_score_mask_and_probability_carriers ... ok +test emitter::gemma3n_emit_ops::tests::sparse_gelu_materializes_every_mlx_bf16_carrier ... ok +test emitter::gemma3n_math::tests::altup_prediction_and_correction_are_plane_isolated ... ok +test emitter::gemma3n_math::tests::dense_ple_projection_and_geglu_match_hand_computation ... ok +test emitter::gemma3n_math::tests::final_altup_mean_reduces_in_f32_before_bf16_rounding ... ok +test emitter::gemma3n_math::tests::full_and_sliding_masks_keep_padding_explicit ... ok +test emitter::gemma3n_math::tests::laurel_low_rank_residual_matches_hand_computation ... ok +test emitter::gemma3n_math::tests::magnitude_and_sparse_activation_are_stable_at_zero ... ok +test emitter::gemma3n_math::tests::per_layer_vocab_overflow_is_exact_zero_not_row_zero ... ok +test emitter::gemma3n_math::tests::ple_injection_collapse_and_softcap_pin_late_layer_math ... ok +test emitter::gemma3n_qmv::tests::metadata_identity_pins_numerical_abi ... ok +test emitter::gemma3n_qmv::tests::native_altup_source_pins_rne_and_tensor_core_schedule ... ok +test emitter::gemma3n_qmv::tests::native_geglu_pins_mlx_bf16_fma_boundary ... ok +test emitter::gemma3n_qmv::tests::synthetic_q4_group64_schedule_has_pinned_output_bits ... ok +test emitter::gemma3n_qmv::tests::tf32_halfway_rounds_to_nearest_even ... ok +test emitter::gemma3n_weights::tests::real_checkpoint_config_and_weight_index_cover_the_graph_schema ... ignored, requires GEMMA3N_MODEL_DIR pointing at a real local checkpoint +test emitter::gemma3n_weights::tests::shared_layers_do_not_add_physical_kv_projection_arguments ... ok +test emitter::gemma3n_weights::tests::uses_real_hugging_face_gemma3n_tensor_paths ... ok +test emitter::molmo2_config::tests::configured_layer_order_and_mixed_index_signs_are_mutation_sensitive ... ok +test emitter::molmo2_config::tests::rejects_noncanonical_vit_activation ... ok +test emitter::molmo2_config::tests::rejects_position_grid_and_selected_layer_drift ... ok +test emitter::molmo2_config::tests::resolves_pinned_layers_and_static_bucket_identity ... ok +test emitter::molmo2_config::tests::validates_runtime_crop_grid_relationship ... ok +test emitter::molmo2_vision::tests::diagnostic_graph_probes_the_first_selected_layer_failure_row ... ok +test emitter::molmo2_vision::tests::diagnostic_graph_shares_production_math_and_orders_first_divergence_stages ... ok +test emitter::molmo2_vision::tests::emitted_pooling_clamps_then_masks_and_keeps_additive_merge_outside_graph ... ok +test emitter::molmo2_vision::tests::projector_silu_preserves_mlx_sigmoid_multiply_rounding_order ... ok +test emitter::molmo2_vision::tests::selected_layers_keep_adapter_order_instead_of_encoder_order ... ok +test emitter::molmo2_vision::tests::unmasked_pooling_uses_full_window_denominator ... ok +test emitter::numeric_ops::tests::activation_projection_probes_pin_matmul_before_activation ... ok +test emitter::numeric_ops::tests::affine_q4_probe_pins_lane_and_evaluation_order ... ok +test emitter::numeric_ops::tests::affine_q4_probe_rejects_unaligned_shapes ... ok +test emitter::numeric_ops::tests::dense_matmul_probe_has_explicit_f32_contract ... ok +test emitter::numeric_ops::tests::dense_matmul_probe_rejects_zero_dimensions ... ok +test emitter::numeric_ops::tests::exact_gelu_uses_erf_not_tanh ... ok +test emitter::numeric_ops::tests::layer_norm_probe_pins_center_variance_affine_order ... ok +test emitter::numeric_ops::tests::prefix_sum_probe_pins_cuda_hierarchical_association ... ok +test emitter::numeric_ops::tests::prefix_sum_probe_rejects_multi_block_width ... ok +test emitter::numeric_ops::tests::residual_add_probe_is_one_explicit_f32_add ... ok +test emitter::numeric_ops::tests::rms_norm_probe_exposes_reduction_and_rsqrt_boundaries ... ok +test emitter::numeric_ops::tests::row_wise_probes_reject_invalid_parameters ... ok +test emitter::numeric_ops::tests::softmax_probe_uses_stable_row_wise_decomposition ... ok +test emitter::phi4_audio::tests::emitted_graph_rejects_invalid_attention_and_oversized_chunk ... ok +test emitter::phi4_audio::tests::emitted_graph_tracks_oracle_stages_projection_mode_and_length ... ok +test emitter::phi4_audio::tests::minimum_audio_graph_compiles_with_iree_cpu ... ignored, requires MLXCEL_XLA_IREE_COMPILE pointing at iree-compile +test emitter::phi4_audio::tests::pinned_full_audio_graph_compiles_with_iree_cpu ... ignored, requires MLXCEL_XLA_IREE_COMPILE pointing at iree-compile +test emitter::phi4_audio::tests::pinned_full_mixed_bf16_audio_graph_compiles_with_iree_cpu ... ignored, requires MLXCEL_XLA_IREE_COMPILE pointing at iree-compile +test emitter::phi4_audio::tests::pinned_schema_is_complete_and_propagates_exact_lengths ... ok +test emitter::phi4_audio::tests::real_checkpoint_has_exact_audio_schema_and_shapes ... ignored, requires PHI4MM_MODEL_DIR pointing at the pinned official checkpoint +test emitter::phi4_audio::tests::shape_validation_rejects_missing_and_drifted_weights ... ok +test emitter::qwen2_vl::tests::emitted_bucket_has_packed_bias_rope_and_merged_output_contract ... ok +test emitter::qwen2_vl::tests::host_inputs_preserve_packed_media_isolation_and_finite_padding_rows ... ok +test emitter::qwen2_vl::tests::static_buckets_bound_qwen2_vl_grids_without_per_shape_compilation ... ok +test emitter::qwen2_vl::tests::weight_schema_covers_patch_blocks_and_merger_in_checkpoint_order ... ok +test emitter::tests::cohere2_ropes_only_sliding_layers ... ok +test emitter::tests::deepstack_c_abi_pins_explicit_position_mode_rank_and_bytes ... ok +test emitter::tests::deepstack_prefill_is_distinct_sparse_and_leaves_ordinary_graph_byte_exact ... ok +test emitter::tests::dense_config_emits_no_moe_ops ... ok +test emitter::tests::dense_mlp_has_no_gate_and_uses_gelu_tanh ... ok +test emitter::tests::dump_dense_pack_graphs_for_execution_check ... ignored, opt-in: writes prefill/decode graphs to disk for the spike/openxla execution check +test emitter::tests::dump_moe_probe_for_execution_check ... ignored, opt-in: writes the MoE probe graph to disk for the spike/openxla execution check +test emitter::tests::dump_prefill_embeddings_parity_graphs ... ignored, opt-in: writes token and embeddings prefill graphs for IREE parity +test emitter::tests::dump_prefill_graph_for_execution_check ... ignored, opt-in: writes a graph to disk for the spike/openxla execution check +test emitter::tests::f16_precision_declares_the_projection_weight_args_f16 ... ok +test emitter::tests::f16_precision_demotes_only_matmuls_not_norm_or_softmax ... ok +test emitter::tests::from_json_accepts_untied_embeddings ... ok +test emitter::tests::from_json_defers_unsupported_moe_families ... ok +test emitter::tests::from_json_matches_hardcoded_reference_config ... ok +test emitter::tests::from_json_parses_dense_arch_pack ... ok +test emitter::tests::from_json_parses_gemma2 ... ok +test emitter::tests::from_json_parses_moe_architectures ... ok +test emitter::tests::from_json_parses_new_dense_families ... ok +test emitter::tests::from_json_parses_qwen2_architecture ... ok +test emitter::tests::from_json_parses_qwen3_moe_and_olmoe ... ok +test emitter::tests::from_json_parses_sliding_window ... ok +test emitter::tests::from_json_rejects_minicpm3_mla ... ok +test emitter::tests::from_json_rejects_unsupported_configs ... ok +test emitter::tests::from_json_rejects_yarn_olmo3 ... ok +test emitter::tests::from_json_reproduces_bundled_assets_byte_for_byte ... ok +test emitter::tests::gemma1_is_two_norm_geglu_with_embed_scale ... ok +test emitter::tests::gemma2_deltas_reach_every_shared_core_kind ... ok +test emitter::tests::gemma3_dual_rope_and_qk_norm_reach_the_shared_core ... ok +test emitter::tests::gemma3_local_rope_selected_on_sliding_layers ... ok +test emitter::tests::granite_scalars_are_emitted ... ok +test emitter::tests::is_sliding_layer_alternates_even_local ... ok +test emitter::tests::llama_graph_has_no_qkv_bias_args ... ok +test emitter::tests::local_and_global_layers_use_distinct_masks_alternating ... ok +test emitter::tests::minicpm_llama_config_detects_scalars ... ok +test emitter::tests::moe_expert_args_follow_attention_in_canonical_order ... ok +test emitter::tests::moe_replaces_dense_mlp_across_every_graph_kind ... ok +test emitter::tests::mrope_axis_selection_matches_qwen2_and_qwen3_layouts ... ok +test emitter::tests::mrope_graphs_have_explicit_position_shapes_and_dynamic_trig ... ok +test emitter::tests::mrope_qk_rotation_matches_independent_eager_oracle ... ok +test emitter::tests::norm_topk_prob_toggles_the_renormalization_divide ... ok +test emitter::tests::olmo2_flat_qk_norm_and_post_norm_structure ... ok +test emitter::tests::parallel_block_omits_post_attention_layernorm ... ok +test emitter::tests::partial_rope_shrinks_the_rope_table ... ok +test emitter::tests::phi4mm_graphs_carry_explicit_scalar_and_per_row_adapter_modes ... ok +test emitter::tests::phi4mm_rejects_uniform_batched_decode - should panic ... ok +test emitter::tests::plain_rope_inv_freq_is_theta_power_series ... ok +test emitter::tests::prefill_embeddings_metadata_and_bias_fail_closed ... ok +test emitter::tests::prefill_embeddings_preserves_tied_and_untied_head_weights ... ok +test emitter::tests::prefill_embeddings_schema_bypasses_lookup_and_embedding_scale ... ok +test emitter::tests::qkv_bias_adds_three_biases_per_layer_to_every_graph ... ok +test emitter::tests::qkv_bias_args_follow_wv_in_k_q_v_order ... ok +test emitter::tests::qwen3_moe_and_olmoe_compose_qk_norm_with_moe_ffn ... ok +test emitter::tests::qwen3_per_head_qk_norm_reaches_every_shared_core_kind ... ok +test emitter::tests::qwen_deepstack_config_parses_and_rejects_unstable_schema ... ok +test emitter::tests::shared_expert_args_only_when_configured ... ok +test emitter::tests::sliding_window_adds_one_local_mask_block_per_graph ... ok +test emitter::tests::sliding_window_size_is_emitted_into_the_graph ... ok +test emitter::tests::smollm3_nope_skips_rope_on_marked_layers ... ok +test emitter::tests::top_k_drives_the_number_of_argmax_reducers ... ok +test emitter::tests::untied_adds_one_lm_head_arg_after_final_norm ... ok +test emitter::vision::tests::pinned_siglip_graph_has_exact_unbatched_output_contract ... ok +test emitter::vision_config::tests::fingerprint_binds_every_graph_shape_and_semantic_field ... ok +test emitter::vision_config::tests::pinned_siglip_contract_has_exact_schema ... ok +test emitter::vision_config::tests::rejects_non_static_or_unqualified_contracts ... ok +test greedy_contract_tests::a_false_callback_stops_generation_keeping_that_token ... ok +test greedy_contract_tests::returns_nothing_when_the_prefill_token_is_eos ... ok +test greedy_contract_tests::streams_the_token_that_exhausts_the_budget ... ok +test greedy_contract_tests::withholds_the_terminating_eos_and_never_streams_it ... ok +test molmo2::tests::active_rows_are_rejected_before_native_invoke_when_cardinality_drifts ... ok +test molmo2::tests::additive_merge_rejects_count_mismatch_and_non_finite_values ... ok +test molmo2::tests::image_patch_features_are_added_in_scanned_position_order ... ok +test molmo2::tests::negative_pooling_sentinels_are_preserved_but_cannot_leak_patch_zero ... ok +test molmo2::tests::pooling_rejects_shape_and_positive_out_of_range_indices ... ok +test numeric_dtype_contract::tests::canonical_identity_is_stable ... ok +test numeric_dtype_contract::tests::every_numeric_field_changes_the_identity ... ok +test operator_numeric_contract::tests::canonical_identity_is_order_independent_and_stable ... ok +test operator_numeric_contract::tests::cuda_one_block_scan_association_is_explicit_identity ... ok +test operator_numeric_contract::tests::every_materialization_and_backend_field_is_identity_sensitive ... ok +test operator_numeric_contract::tests::invalid_and_ambiguous_identities_fail_closed ... ok +test prepared::tests::canonicalizes_mrope_axes_and_preserves_signed_delta ... ok +test prepared::tests::decode_coordinate_supports_signed_deltas_and_typed_failures ... ok +test prepared::tests::intentionally_canonicalizes_text_only_positions_for_mrope_bundles ... ok +test prepared::tests::materializes_static_shapes_and_causal_bias ... ok +test prepared::tests::ports_qwen_text_image_multi_image_video_and_padding_coordinates ... ok +test prepared::tests::rejects_invalid_real_len_slot_inputs_and_positions ... ok +test prepared::tests::rejects_mrope_payload_for_one_dimensional_bundle ... ok +test prepared::tests::rejects_overlong_host_buffer_without_touching_canary ... ok +test prepared::tests::rejects_wrong_dtype_rank_hidden_bytes_mask_and_capacity ... ok +test prepared_deepstack::tests::accepts_zero_visual_positions_without_special_dense_buffers ... ok +test prepared_deepstack::tests::compact_tensor_constructor_rejects_dtype_shape_and_storage_drift ... ok +test prepared_deepstack::tests::fixed_qwen3_vl_fixture_matches_every_post_hook_residual ... ok +test prepared_deepstack::tests::owns_compact_payload_and_materializes_only_static_runtime_padding ... ok +test prepared_deepstack::tests::public_deepstack_delta_commits_single_decode_coordinate_only_on_success ... ok +test prepared_deepstack::tests::public_deepstack_request_preserves_mrope_delta_and_rejects_wrong_mode ... ok +test prepared_deepstack::tests::request_validation_rejects_position_metadata_and_non_finite_features ... ok +test prepared_deepstack::tests::runtime_validation_rejects_schema_hidden_and_static_bound_mismatches ... ok +test prepared_gemma3n::tests::dense_ple_rejects_truncation_and_implicit_padding ... ok +test prepared_gemma3n::tests::pending_owner_drop_releases_dense_ple_on_cancel ... ok +test prepared_gemma3n::tests::prepared_request_rejects_nonzero_padding ... ok +test sampler::tests::dry_penalizes_followup_after_suffix_match ... ok +test sampler::tests::dry_sequence_breaker_stops_the_match ... ok +test sampler::tests::empty_logits_is_safe ... ok +test sampler::tests::frequency_presence_penalty_subtracts_count_and_presence ... ok +test sampler::tests::greedy_argmax_is_taken_over_penalized_logits ... ok +test sampler::tests::greedy_is_argmax ... ok +test sampler::tests::needs_penalties_matches_identity_values ... ok +test sampler::tests::no_penalty_ignores_history ... ok +test sampler::tests::repetition_penalty_divides_positive_seen_logit ... ok +test sampler::tests::repetition_penalty_multiplies_negative_seen_logit ... ok +test sampler::tests::seeded_sampling_is_deterministic ... ok +test sampler::tests::top_k_one_is_argmax ... ok +test sampler::tests::top_p_restricts_to_the_nucleus ... ok +test tests::capabilities_are_single_sequence ... ok +test tests::default_device_is_metal_on_apple_silicon_else_cpu ... ok +test tests::empty_prompt_is_rejected ... ok +test tests::explicit_context_capacity_is_recorded_and_validated ... ok +test tests::greedy_rejects_context_overflow_before_the_unwired_backend ... ok +test tests::greedy_surfaces_the_stub_error_not_a_panic ... ok +test tests::llava_device_memory_note_does_not_label_cpu_as_cuda ... ok +test tests::llava_diagnostics_share_the_production_embeddings_prefill ... ok +test tests::load_records_inputs ... ok +test tests::token_primitives_report_not_wired ... ok +test validation::tests::check_arch_detects_drift ... ok +test validation::tests::dense_pack_families_reuse_proven_graphs ... ok +test validation::tests::emit_all_reproduces_registered_goldens ... ok +test validation::tests::emit_graphs_drives_a_golden_less_arch ... ok +test validation::tests::freeze_goldens ... ok +test validation::tests::freeze_moe_goldens ... ok +test validation::tests::precision_default_detection ... ok +test validation::tests::registered_fixtures_are_byte_exact ... ok +test validation::tests::structural_families_emit_expected_signature ... ok +test weight_names::tests::exaone_scheme_maps_gpt2_style_names ... ok +test weight_names::tests::gemma_ff_adds_pre_then_post_feedforward_norm ... ok +test weight_names::tests::llama_scheme_matches_the_standard_hf_layout ... ok +test weight_names::tests::olmo_post_norm_drops_input_norm_and_pre_ff ... ok +test weight_names::tests::per_layer_counts_scale_with_the_deltas ... ok +test weight_names::tests::qk_norm_appends_q_then_k_norm_after_projections ... ok +test weight_names::tests::qkv_bias_appends_three_biases_in_k_q_v_order ... ok +test weight_names::tests::untied_inserts_lm_head_after_final_norm ... ok +test weights::tests::bf16_byte_buffer_widens ... ok +test weights::tests::dequantize_affine_8bit_recovers_hand_example ... ok +test weights::tests::dequantize_affine_accepts_bf16_scales ... ok +test weights::tests::dequantize_affine_accepts_molmo2_f32_metadata ... ok +test weights::tests::dequantize_affine_recovers_hand_example ... ok +test weights::tests::dequantize_affine_rejects_size_mismatch ... ok +test weights::tests::dequantize_affine_stacked_concatenates_expert_slabs ... ok +test weights::tests::dequantize_affine_stacked_rejects_size_mismatch ... ok +test weights::tests::f16_byte_buffer_widens_both_lanes ... ok +test weights::tests::f32_passthrough_reinterprets ... ok +test weights::tests::f32_to_f16_round_trips_every_finite_half ... ok +test weights::tests::f32_to_f16_rounds_ties_to_even_and_saturates ... ok +test weights::tests::gemma3n_bf16_affine_fuses_multiply_and_bias_before_rounding ... ok +test weights::tests::gemma3n_bf16_affine_lut_matches_scalar_reference_across_groups ... ok +test weights::tests::half_to_f32_handles_inf_and_nan ... ok +test weights::tests::half_to_f32_matches_reference_values ... ok +test weights::tests::molmo2_uses_olmo_names_and_reversed_fused_swiglu_halves ... ok +test weights::tests::phi4mm_weight_schema_uses_base_layers_and_complete_adapter_pairs ... ok +test weights::tests::real_phi4mm_index_covers_decoder_and_complete_lora_schema ... ignored, requires PHI4MM_MODEL_DIR pointing at the pinned official checkpoint +test weights::tests::slice_rows_extracts_the_row_band ... ok +test weights::tests::weight_specs_cohere_is_tied_parallel_no_post_norm ... ok +test weights::tests::weight_specs_llama_projections_are_proj_norms_are_whole ... ok +test weights::tests::weight_specs_phi3_row_slices_the_fused_projections ... ok +test weights::tests::weight_specs_q_packed_expands_projections_to_triples ... ok +test weights::tests::weight_specs_qwen3_moe_and_olmoe_name_the_expert_bank ... ok +test weights::tests::weight_specs_starcoder2_dense_mlp_and_biases ... ok + +test result: ok. 280 passed; 0 failed; 11 ignored; 0 measured; 0 filtered out; finished in 0.22s + + Doc-tests mlxcel + +running 4 tests +test src/distributed/correlation.rs - distributed::correlation (line 23) ... ignored +test src/multimodal/video.rs - multimodal::video::TempFile (line 482) - compile ... ok +test src/multimodal/video.rs - multimodal::video::load_video (line 1281) ... ignored +test src/server/prompt_cache/block_hash.rs - server::prompt_cache::block_hash (line 44) ... ignored + +test result: ok. 1 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 0.00s + +all doctests ran in 2.02s; merged doctests compilation took 1.93s + Doc-tests mlxcel_core + +running 7 tests +test src/lib/mlxcel-core/src/cache/turbo/mod.rs - cache::turbo (line 39) ... ignored +test src/lib/mlxcel-core/src/hardware.rs - hardware::kv_cache_bytes (line 1139) ... ok +test src/lib/mlxcel-core/src/hardware.rs - hardware::kv_cache_bytes_from_params (line 1212) ... ok +test src/lib/mlxcel-core/src/streams.rs - streams::DefaultDeviceGuard (line 211) ... ignored +test src/lib/mlxcel-core/src/streams.rs - streams::DefaultStreamGuard (line 147) ... ignored +test src/lib/mlxcel-core/src/utils.rs - utils::align_to_na_tile (line 1193) ... ignored +test src/lib/mlxcel-core/src/utils.rs - utils::slice_axis (line 36) ... ignored + +test result: ok. 2 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 0.11s + +all doctests ran in 1.02s; merged doctests compilation took 0.83s + Doc-tests mlxcel_mlx_pin + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests mlxcel_surgery + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests mlxcel_xla + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/restored-build.log b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/restored-build.log new file mode 100644 index 000000000..a237954ca --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/restored-build.log @@ -0,0 +1,262 @@ +warning: mlxcel-core@0.7.0: In file included from cpp/mlx_cxx_bridge.cpp:7: +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/test-fast/build/mlxcel-core-951f0822c2faa7cb/out/build/include/mlx/primitives.h: In member function 'std::pair mlx::core::AddMM::state() const': +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/test-fast/build/mlxcel-core-951f0822c2faa7cb/out/build/include/mlx/primitives.h:204:41: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 204 | std::pair state() const { +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp: In function 'mlx_cxx::{anonymous}::get_compiled_q_path_proportional(int, int, int, float)::&)>': +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3851:31: warning: '*(int*)((char*)&in_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 3851 | int B = in_shape[0]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3850:18: note: 'in_shape' declared here +warning: mlxcel-core@0.7.0: 3850 | auto in_shape = q_in.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3851:31: warning: '*(int*)((char*)&in_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 3851 | int B = in_shape[0]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:3850:18: note: 'in_shape' declared here +warning: mlxcel-core@0.7.0: 3850 | auto in_shape = q_in.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp: In lambda function: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2190:24: warning: '*(int*)((char*)&shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 2190 | int B = shape[0], H = shape[1], S = shape[2], D = shape[3]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2189:14: note: 'shape' declared here +warning: mlxcel-core@0.7.0: 2189 | auto shape = x.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2190:24: warning: '*(int*)((char*)&shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 2190 | int B = shape[0], H = shape[1], S = shape[2], D = shape[3]; +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_bridge.cpp:2189:14: note: 'shape' declared here +warning: mlxcel-core@0.7.0: 2189 | auto shape = x.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp: In lambda function: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3362:24: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 3362 | ref_rms); +warning: mlxcel-core@0.7.0: | ^ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp: At global scope: +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3792:24: warning: 'mlx_cxx::{anonymous}::ADD3_LN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 3792 | static const char* ADD3_LN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:3027:24: warning: 'mlx_cxx::{anonymous}::MOE_FC1_RELU2_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 3027 | static const char* MOE_FC1_RELU2_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2847:24: warning: 'mlx_cxx::{anonymous}::MOE_DOWN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2847 | static const char* MOE_DOWN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2708:24: warning: 'mlx_cxx::{anonymous}::MOE_GATEUP_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2708 | static const char* MOE_GATEUP_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:2129:24: warning: 'mlx_cxx::{anonymous}::MAMBA1_SCAN_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 2129 | static const char* MAMBA1_SCAN_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:752:24: warning: 'mlx_cxx::{anonymous}::SSM_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 752 | static const char* SSM_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:452:24: warning: 'mlx_cxx::{anonymous}::XIELU_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 452 | static const char* XIELU_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_kernels.cpp:159:24: warning: 'mlx_cxx::{anonymous}::BITLINEAR_HIP_SOURCE' defined but not used [-Wunused-variable] +warning: mlxcel-core@0.7.0: 159 | static const char* BITLINEAR_HIP_SOURCE = R"( +warning: mlxcel-core@0.7.0: | ^~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp: In function 'void mlx_cxx::nemotron_decode_step(uint64_t, const MlxArray&, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, rust::cxxbridge1::Slice, std::unique_ptr&, rust::cxxbridge1::Slice >, rust::cxxbridge1::Slice >)': +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:156:16: warning: '*(int*)((char*)&id_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 156 | h = reshape(h, {id_shape[0], id_shape[1], (int)h.shape().back()}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:155:10: note: 'id_shape' declared here +warning: mlxcel-core@0.7.0: 155 | auto id_shape = input_ids.inner.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:156:16: warning: '*(int*)((char*)&id_shape + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 156 | h = reshape(h, {id_shape[0], id_shape[1], (int)h.shape().back()}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:155:10: note: 'id_shape' declared here +warning: mlxcel-core@0.7.0: 155 | auto id_shape = input_ids.inner.shape(); +warning: mlxcel-core@0.7.0: | ^~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:244:28: warning: '*(int*)((char*)&ks + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 244 | k = reshape(k, {ks[0], ks[1], 1, ks[2], ks[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:243:22: note: 'ks' declared here +warning: mlxcel-core@0.7.0: 243 | auto ks = k.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:244:28: warning: '*(int*)((char*)&ks + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 244 | k = reshape(k, {ks[0], ks[1], 1, ks[2], ks[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:243:22: note: 'ks' declared here +warning: mlxcel-core@0.7.0: 243 | auto ks = k.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:248:28: warning: '*(int*)((char*)&vs + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 248 | v = reshape(v, {vs[0], vs[1], 1, vs[2], vs[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:247:22: note: 'vs' declared here +warning: mlxcel-core@0.7.0: 247 | auto vs = v.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:248:28: warning: '*(int*)((char*)&vs + offsetof(mlx::core::SmallVector >,mlx::core::SmallVector >::inline_storage_[0]))' may be used uninitialized [-Wmaybe-uninitialized] +warning: mlxcel-core@0.7.0: 248 | v = reshape(v, {vs[0], vs[1], 1, vs[2], vs[3]}); +warning: mlxcel-core@0.7.0: | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warning: mlxcel-core@0.7.0: cpp/mlx_cxx_nemotron.cpp:247:22: note: 'vs' declared here +warning: mlxcel-core@0.7.0: 247 | auto vs = v.shape(); +warning: mlxcel-core@0.7.0: | ^~ +warning: mlxcel-core@0.7.0: In file included from ../mlx-cpp/turbo/kv_inplace_write.cpp:23: +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/test-fast/build/mlxcel-core-951f0822c2faa7cb/out/build/include/mlx/primitives.h: In member function 'std::pair mlx::core::AddMM::state() const': +warning: mlxcel-core@0.7.0: /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227/target/test-fast/build/mlxcel-core-951f0822c2faa7cb/out/build/include/mlx/primitives.h:204:41: note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1 +warning: mlxcel-core@0.7.0: 204 | std::pair state() const { +warning: mlxcel-core@0.7.0: | ^ + Compiling mlxcel v0.7.0 (/home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227) + Finished `test-fast` profile [optimized] target(s) in 4m 06s + Executable unittests src/lib.rs (target/test-fast/deps/mlxcel-e4114342978c2f44) + Executable unittests src/main.rs (target/test-fast/deps/mlxcel-e029287206517e01) + Executable unittests src/bin/bench_decode.rs (target/test-fast/deps/mlxcel_bench_decode-d8d701711f5fa4db) + Executable unittests src/bin/bench_engine.rs (target/test-fast/deps/mlxcel_bench_engine-2ec930d264c4367a) + Executable unittests src/bin/engine_parity.rs (target/test-fast/deps/mlxcel_engine_parity-9ed786ceb5161668) + Executable unittests src/bin/mlx_server.rs (target/test-fast/deps/mlxcel_server-f103ed86e524be74) + Executable unittests src/bin/speculative_bench.rs (target/test-fast/deps/speculative_bench-873145a883391206) + Executable tests/apertus_parity.rs (target/test-fast/deps/apertus_parity-c44bfaf23ceb5f2a) + Executable tests/apply_template_tools_parity.rs (target/test-fast/deps/apply_template_tools_parity-b2007d5a95013a11) + Executable tests/attention_f16_range.rs (target/test-fast/deps/attention_f16_range-138269846d1237aa) + Executable tests/autotuner_outcome.rs (target/test-fast/deps/autotuner_outcome-4c20917d1b09d047) + Executable tests/cascade_decode_dispatch.rs (target/test-fast/deps/cascade_decode_dispatch-62f66eadbdb18eda) + Executable tests/causal_prefill_greedy_parity.rs (target/test-fast/deps/causal_prefill_greedy_parity-b24e4113b58bf5d0) + Executable tests/chat_template_kwargs.rs (target/test-fast/deps/chat_template_kwargs-e6294d8887f3dfd8) + Executable tests/cli_help_consistency.rs (target/test-fast/deps/cli_help_consistency-2e4bdd7019e4ac9f) + Executable tests/cpu_device_custom_kernel_gates.rs (target/test-fast/deps/cpu_device_custom_kernel_gates-219ccab8fff654e1) + Executable tests/cpu_device_sdpa.rs (target/test-fast/deps/cpu_device_sdpa-e846797475f02825) + Executable tests/cuda_qmm_determinism.rs (target/test-fast/deps/cuda_qmm_determinism-0580441a9e835343) + Executable tests/cuda_sdpa_determinism.rs (target/test-fast/deps/cuda_sdpa_determinism-11feef284e612c65) + Executable tests/dead_doc_pointers.rs (target/test-fast/deps/dead_doc_pointers-ca67affaaac25f60) + Executable tests/deepseek_v2_greedy_parity.rs (target/test-fast/deps/deepseek_v2_greedy_parity-d173298dd0dfe794) + Executable tests/deepseek_v4_real_model.rs (target/test-fast/deps/deepseek_v4_real_model-c15e8bbf4b076998) + Executable tests/deepseek_vl_v2_parity.rs (target/test-fast/deps/deepseek_vl_v2_parity-c0ccf4da9d490ca0) + Executable tests/deepseekocr_2_resampler.rs (target/test-fast/deps/deepseekocr_2_resampler-ad3501f1d9ed4877) + Executable tests/deepseekocr_encoder_parity.rs (target/test-fast/deps/deepseekocr_encoder_parity-9e87576af190a9b5) + Executable tests/disaggregated_e2e.rs (target/test-fast/deps/disaggregated_e2e-4848b86f61cec466) + Executable tests/disaggregated_router_e2e.rs (target/test-fast/deps/disaggregated_router_e2e-7e3e5b706b1b110e) + Executable tests/disaggregated_serving_e2e.rs (target/test-fast/deps/disaggregated_serving_e2e-1e4b34efeb44049f) + Executable tests/dots_ocr_parity.rs (target/test-fast/deps/dots_ocr_parity-67cba3b161e4505a) + Executable tests/embedding_pooling_normalize_real.rs (target/test-fast/deps/embedding_pooling_normalize_real-d10955dd8b9aaa7e) + Executable tests/ernie4_5_moe_vl_parity.rs (target/test-fast/deps/ernie4_5_moe_vl_parity-c5a44a881cbb174d) + Executable tests/falcon_ocr_parity.rs (target/test-fast/deps/falcon_ocr_parity-7fc0e6d322316955) + Executable tests/fastvlm_parity.rs (target/test-fast/deps/fastvlm_parity-2042aa80ba2a521c) + Executable tests/florence2_fusion_parity.rs (target/test-fast/deps/florence2_fusion_parity-2583c03819278165) + Executable tests/florence2_postprocess_parity.rs (target/test-fast/deps/florence2_postprocess_parity-19db236ea85faf3c) + Executable tests/florence2_processor_parity.rs (target/test-fast/deps/florence2_processor_parity-4b74746a8bc1f78d) + Executable tests/florence2_quantized_parity.rs (target/test-fast/deps/florence2_quantized_parity-918e1afbf870f2d1) + Executable tests/florence2_text_parity.rs (target/test-fast/deps/florence2_text_parity-9dce19252589f2a1) + Executable tests/florence2_vision_parity.rs (target/test-fast/deps/florence2_vision_parity-9ab1c5fcb66e84b1) + Executable tests/gcp_predict_real_model.rs (target/test-fast/deps/gcp_predict_real_model-ad2470a51cd171da) + Executable tests/glm4v_moe_parity.rs (target/test-fast/deps/glm4v_moe_parity-58a3c5aaa3117dc7) + Executable tests/glm4v_parity.rs (target/test-fast/deps/glm4v_parity-6de5375d410ba9a4) + Executable tests/glm_ocr_parity.rs (target/test-fast/deps/glm_ocr_parity-420214652985ebca) + Executable tests/got_ocr_prompt_parity.rs (target/test-fast/deps/got_ocr_prompt_parity-767e02b0997a5a04) + Executable tests/got_ocr_real_model.rs (target/test-fast/deps/got_ocr_real_model-4359125e618e9ca2) + Executable tests/granite4_vision_parity.rs (target/test-fast/deps/granite4_vision_parity-c95852f9d741c413) + Executable tests/granite_vision_parity.rs (target/test-fast/deps/granite_vision_parity-f1608c43da7d0138) + Executable tests/hunyuan_vl_parity.rs (target/test-fast/deps/hunyuan_vl_parity-b2021063bb475f35) + Executable tests/internvl_parity.rs (target/test-fast/deps/internvl_parity-06fe5da83044d70e) + Executable tests/iquestloopcoder_parity.rs (target/test-fast/deps/iquestloopcoder_parity-660c85f48d3b81fa) + Executable tests/kimi_vl_parity.rs (target/test-fast/deps/kimi_vl_parity-26ed5217c0889d9c) + Executable tests/lang_bias.rs (target/test-fast/deps/lang_bias-b5d7e56713d0931b) + Executable tests/llama_chat_template_cli.rs (target/test-fast/deps/llama_chat_template_cli-ba7b27b2422e142c) + Executable tests/llama_compat_manifest.rs (target/test-fast/deps/llama_compat_manifest-fcd85f2b5b6009a5) + Executable tests/llama_compat_rope_freq_base.rs (target/test-fast/deps/llama_compat_rope_freq_base-52ae5c644ce3d347) + Executable tests/llama_compat_rope_scaling_override.rs (target/test-fast/deps/llama_compat_rope_scaling_override-634e4027e5826a68) + Executable tests/llama_compat_utility_routes.rs (target/test-fast/deps/llama_compat_utility_routes-47e5d7c8f7329113) + Executable tests/llama_compat_yarn_override.rs (target/test-fast/deps/llama_compat_yarn_override-d0f6c02aebc9d4ba) + Executable tests/llama_ggml_runtime_cli.rs (target/test-fast/deps/llama_ggml_runtime_cli-3053a09c56967f3f) + Executable tests/llama_logging_presets.rs (target/test-fast/deps/llama_logging_presets-8a4f2177a9edd8e6) + Executable tests/llama_model_source_cli.rs (target/test-fast/deps/llama_model_source_cli-ccb97ca32c61fd40) + Executable tests/mamba2_hybrid_decode_finite.rs (target/test-fast/deps/mamba2_hybrid_decode_finite-add021fce9fc603e) + Executable tests/mamba2_hybrid_finite.rs (target/test-fast/deps/mamba2_hybrid_finite-967483ae9fbb74dc) + Executable tests/max_kv_size_dense_e2e.rs (target/test-fast/deps/max_kv_size_dense_e2e-51bbe6daacbce4e6) + Executable tests/metal_block_vs_chain_op_parity.rs (target/test-fast/deps/metal_block_vs_chain_op_parity-bf79e9600bd70b8e) + Executable tests/mllama_parity.rs (target/test-fast/deps/mllama_parity-801c7c3c25a7c428) + Executable tests/model_loader_stdout_guard.rs (target/test-fast/deps/model_loader_stdout_guard-0872d345b83daea5) + Executable tests/model_loading.rs (target/test-fast/deps/model_loading-51125a9d94a8a1e6) + Executable tests/molmo_parity.rs (target/test-fast/deps/molmo_parity-78a82be660460062) + Executable tests/moondream2_parity.rs (target/test-fast/deps/moondream2_parity-64de1e4a812c5df6) + Executable tests/nemotron_parse_real_model.rs (target/test-fast/deps/nemotron_parse_real_model-70ad37b9f5b06003) + Executable tests/nemotron_voicechat_codec_real.rs (target/test-fast/deps/nemotron_voicechat_codec_real-a611132170248ea5) + Executable tests/nemotron_voicechat_front_real.rs (target/test-fast/deps/nemotron_voicechat_front_real-973fbeb950daea0e) + Executable tests/nemotron_voicechat_llm_real.rs (target/test-fast/deps/nemotron_voicechat_llm_real-a8c1e68664c3d216) + Executable tests/nemotron_voicechat_offline_real.rs (target/test-fast/deps/nemotron_voicechat_offline_real-d41233eca36885fd) + Executable tests/nemotron_voicechat_stream_real.rs (target/test-fast/deps/nemotron_voicechat_stream_real-88bd5a8555f1dc8c) + Executable tests/nemotron_voicechat_streaming_real.rs (target/test-fast/deps/nemotron_voicechat_streaming_real-e64bfda065b15f86) + Executable tests/nemotron_voicechat_tts_real.rs (target/test-fast/deps/nemotron_voicechat_tts_real-cf2d97a8b12f84a2) + Executable tests/paddleocr_vl_parity.rs (target/test-fast/deps/paddleocr_vl_parity-699fcb2a45b1b72c) + Executable tests/paged_decode_v2_greedy_parity.rs (target/test-fast/deps/paged_decode_v2_greedy_parity-35b27959d4a264c3) + Executable tests/paged_kv_serialize_parity.rs (target/test-fast/deps/paged_kv_serialize_parity-f358287d400f4c09) + Executable tests/paged_prefix_share_parity.rs (target/test-fast/deps/paged_prefix_share_parity-931ca02c63f47cbd) + Executable tests/paged_real_model_parity.rs (target/test-fast/deps/paged_real_model_parity-79904217e6718907) + Executable tests/paged_scheduler_parity.rs (target/test-fast/deps/paged_scheduler_parity-7d111b8f3d81ed82) + Executable tests/phi4mm_audio_parity.rs (target/test-fast/deps/phi4mm_audio_parity-5eb0a15b0d76628e) + Executable tests/pipeline_auto_partition_real_models.rs (target/test-fast/deps/pipeline_auto_partition_real_models-8db47da5a21d9350) + Executable tests/pipeline_ci_multi_stage_real_models.rs (target/test-fast/deps/pipeline_ci_multi_stage_real_models-a43a41029bda035a) + Executable tests/pipeline_cli_real_models.rs (target/test-fast/deps/pipeline_cli_real_models-207e16982539c7fe) + Executable tests/pipeline_elastic_repartition_real_models.rs (target/test-fast/deps/pipeline_elastic_repartition_real_models-d66be1191ccd53d2) + Executable tests/pipeline_lora_composition_real_models.rs (target/test-fast/deps/pipeline_lora_composition_real_models-ead36b0820d00cfa) + Executable tests/pipeline_observability_real_models.rs (target/test-fast/deps/pipeline_observability_real_models-d0030065f08d8806) + Executable tests/pipeline_remote_real_models.rs (target/test-fast/deps/pipeline_remote_real_models-33a14d3d4e098b14) + Executable tests/pipeline_server_real_models.rs (target/test-fast/deps/pipeline_server_real_models-2e5a52c9f63f50ba) + Executable tests/pipeline_server_remote_real_models.rs (target/test-fast/deps/pipeline_server_remote_real_models-1868bd067b6d0b68) + Executable tests/pipeline_stage_executor_real_models.rs (target/test-fast/deps/pipeline_stage_executor_real_models-14babd2449fe0997) + Executable tests/plamo2_parity.rs (target/test-fast/deps/plamo2_parity-30d11583853e1554) + Executable tests/pp_tp_2d_real_models.rs (target/test-fast/deps/pp_tp_2d_real_models-281cb6ff4d54681c) + Executable tests/pre_ampere_f16_quality.rs (target/test-fast/deps/pre_ampere_f16_quality-1fe282cf39704a90) + Executable tests/prompt_cache_compat_e2e.rs (target/test-fast/deps/prompt_cache_compat_e2e-00ac992017fb509a) + Executable tests/prompt_cache_e2e.rs (target/test-fast/deps/prompt_cache_e2e-34178c8f531b2f8b) + Executable tests/prompt_cache_prefill_bench.rs (target/test-fast/deps/prompt_cache_prefill_bench-5eb81d5890c52e5d) + Executable tests/qwen2_5_vl_parity.rs (target/test-fast/deps/qwen2_5_vl_parity-e606f3d0324be489) + Executable tests/qwen35_mtp_verify_parity.rs (target/test-fast/deps/qwen35_mtp_verify_parity-85d8b5eeb0993e08) + Executable tests/qwen38_mtp_chain_parity.rs (target/test-fast/deps/qwen38_mtp_chain_parity-2b7368b6d660a1b9) + Executable tests/qwen3_omni_moe_parity.rs (target/test-fast/deps/qwen3_omni_moe_parity-5c97750f1b386f79) + Executable tests/rdma_transport_bench.rs (target/test-fast/deps/rdma_transport_bench-c463b6f5edd9aa14) + Executable tests/realtime_ws.rs (target/test-fast/deps/realtime_ws-8d448b6b3978e98e) + Executable tests/rocm_cpu_blas_finegrained.rs (target/test-fast/deps/rocm_cpu_blas_finegrained-9e01e7eebb932ea8) + Executable tests/rocm_custom_kernel_jit_key.rs (target/test-fast/deps/rocm_custom_kernel_jit_key-429b78588e3ab20b) + Executable tests/rocm_device_map_concurrency.rs (target/test-fast/deps/rocm_device_map_concurrency-b0d502a30461e028) + Executable tests/rocm_fft_cache_env.rs (target/test-fast/deps/rocm_fft_cache_env-faaf2c4c2ea56be6) + Executable tests/rocm_fft_plan_cache.rs (target/test-fast/deps/rocm_fft_plan_cache-2933c1432fc8f46b) + Executable tests/rocm_gather_qmm_expert_batched.rs (target/test-fast/deps/rocm_gather_qmm_expert_batched-5e7629804b2127c0) + Executable tests/rocm_gpu_faults.rs (target/test-fast/deps/rocm_gpu_faults-8ac74879aac2f38e) + Executable tests/rocm_hipblaslt_concurrency.rs (target/test-fast/deps/rocm_hipblaslt_concurrency-a06938cd1f47570e) + Executable tests/rocm_inflight_bound.rs (target/test-fast/deps/rocm_inflight_bound-ea64ea44d6ab13f8) + Executable tests/rocm_jit_module_concurrency.rs (target/test-fast/deps/rocm_jit_module_concurrency-afd0e4ddc966b3ab) + Executable tests/rocm_mxfp4_quant.rs (target/test-fast/deps/rocm_mxfp4_quant-d8f2ed54547ef957) + Executable tests/rocm_qmm_batched_rows.rs (target/test-fast/deps/rocm_qmm_batched_rows-7c063f30782f80bb) + Executable tests/rocm_qmm_dequant_cache.rs (target/test-fast/deps/rocm_qmm_dequant_cache-f197b575a8ab5792) + Executable tests/rocm_qmm_env.rs (target/test-fast/deps/rocm_qmm_env-45bdba43a2258fda) + Executable tests/rocm_rocblas_handle_concurrency.rs (target/test-fast/deps/rocm_rocblas_handle_concurrency-46a5fa727df46606) + Executable tests/rocm_scalar_pool_concurrency.rs (target/test-fast/deps/rocm_scalar_pool_concurrency-3d0b3a76087317b6) + Executable tests/rocm_slice_update_reduce.rs (target/test-fast/deps/rocm_slice_update_reduce-317c5ec53f6e80a5) + Executable tests/rocm_slice_update_source.rs (target/test-fast/deps/rocm_slice_update_source-35e750a3d8e272d9) + Executable tests/rocm_strided_copy_grid.rs (target/test-fast/deps/rocm_strided_copy_grid-907df35d74ec26a1) + Executable tests/rocm_strided_scan.rs (target/test-fast/deps/rocm_strided_scan-f9cd902ec831070b) + Executable tests/rocm_wave64_port_refusal.rs (target/test-fast/deps/rocm_wave64_port_refusal-c314586229ba53d2) + Executable tests/rocm_wave_size.rs (target/test-fast/deps/rocm_wave_size-f5a9c5a45bf7fdab) + Executable tests/sampling_gumbel_kill_switch.rs (target/test-fast/deps/sampling_gumbel_kill_switch-9e6224e7dbb2fa87) + Executable tests/sampling_rejection_kill_switch.rs (target/test-fast/deps/sampling_rejection_kill_switch-12d3b1f579f8baf7) + Executable tests/sampling_top_k_above_vocab_e2e.rs (target/test-fast/deps/sampling_top_k_above_vocab_e2e-75e0f7228af789de) + Executable tests/smolvlm_parity.rs (target/test-fast/deps/smolvlm_parity-608d4f1820d455e5) + Executable tests/speculative_dispatch.rs (target/test-fast/deps/speculative_dispatch-d6380ee4637988e7) + Executable tests/speculative_parity.rs (target/test-fast/deps/speculative_parity-4de814b818ad16b5) + Executable tests/step3p7_parity.rs (target/test-fast/deps/step3p7_parity-129d3f4377a92c12) + Executable tests/structured_outputs.rs (target/test-fast/deps/structured_outputs-a032780570696018) + Executable tests/surgery_cli.rs (target/test-fast/deps/surgery_cli-273e8e62ee5e122c) + Executable tests/tensor_parallel_real_models.rs (target/test-fast/deps/tensor_parallel_real_models-a2e9a51b730af924) + Executable tests/thinking_budget.rs (target/test-fast/deps/thinking_budget-c2847a4d7ba0bc6e) + Executable tests/tp_e2e.rs (target/test-fast/deps/tp_e2e-dfb4b082e3ffd928) + Executable tests/turbo_kv_e2e.rs (target/test-fast/deps/turbo_kv_e2e-5724d8a936e28028) + Executable tests/vlm_concurrency.rs (target/test-fast/deps/vlm_concurrency-620f8b1cfff030af) + Executable tests/vlm_wrapper_capability_delegation.rs (target/test-fast/deps/vlm_wrapper_capability_delegation-d1ec0017ac51192e) + Executable tests/wht_op.rs (target/test-fast/deps/wht_op-8a3cfea2f7d8fb0c) + Executable tests/xla_gemma3n_prefill.rs (target/test-fast/deps/xla_gemma3n_prefill-b926285baa265003) + Executable tests/youtu_vl_parity.rs (target/test-fast/deps/youtu_vl_parity-a6076273912211e5) + Executable tests/zero_config_cluster_init.rs (target/test-fast/deps/zero_config_cluster_init-42f8f650c529fe07) + Executable unittests src/lib.rs (target/test-fast/deps/mlxcel_core-a9c9e3c743946c6b) + Executable unittests src/lib.rs (target/test-fast/deps/mlxcel_mlx_pin-7bbde732c345a80b) + Executable tests/cross_parser.rs (target/test-fast/deps/cross_parser-6f5e8642504955cf) + Executable unittests src/lib.rs (target/test-fast/deps/mlxcel_surgery-9d678b028e2c884a) + Executable tests/add_integration.rs (target/test-fast/deps/add_integration-546b1ff68c8c3742) + Executable tests/interpolate_integration.rs (target/test-fast/deps/interpolate_integration-51776ac318944ce5) + Executable tests/prune_integration.rs (target/test-fast/deps/prune_integration-150bd6435c018dab) + Executable tests/replace_integration.rs (target/test-fast/deps/replace_integration-ab6e6ee969a83bd6) + Executable tests/scale_integration.rs (target/test-fast/deps/scale_integration-e62651ee478e81ff) + Executable unittests src/lib.rs (target/test-fast/deps/mlxcel_xla-202b6bbdaef2e90c) diff --git a/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/root-final-build.sh b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/root-final-build.sh new file mode 100644 index 000000000..6ba83fe02 --- /dev/null +++ b/docs/benchmark_results/data/b1-decode-overhead-gb10-2026-10-11/validation/root-final-build.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +set -euo pipefail +cd /home/inureyes/Development/backend.ai/wt-auto-20261011T0224-issue-2227 +git rev-parse HEAD > /tmp/mlxcel-auto-plan/2227-final-build-source.txt +echo release > /tmp/mlxcel-auto-plan/2227-final-build-phase.txt +cargo build --release --features cuda --bin mlxcel-bench-engine --bin mlxcel-engine-parity --bin mlxcel > /tmp/mlxcel-auto-plan/2227-final-release.log 2>&1 +echo test-build > /tmp/mlxcel-auto-plan/2227-final-build-phase.txt +cargo test --workspace --profile test-fast --features cuda --no-run > /tmp/mlxcel-auto-plan/2227-final-test-build.log 2>&1 +echo clippy > /tmp/mlxcel-auto-plan/2227-final-build-phase.txt +cargo clippy --workspace --all-targets --features cuda -- -D warnings > /tmp/mlxcel-auto-plan/2227-final-clippy.log 2>&1 +echo fmt > /tmp/mlxcel-auto-plan/2227-final-build-phase.txt +cargo fmt --all -- --check > /tmp/mlxcel-auto-plan/2227-final-fmt.log 2>&1 +echo contracts > /tmp/mlxcel-auto-plan/2227-final-build-phase.txt +make verify-kernel-dtype-keys verify-kernel-port-dispatch verify-llama-compat > /tmp/mlxcel-auto-plan/2227-final-contracts.log 2>&1 +echo complete > /tmp/mlxcel-auto-plan/2227-final-build-phase.txt diff --git a/src/server/batch/scheduler/config.rs b/src/server/batch/scheduler/config.rs index 4a9e4fa5e..e772cccff 100644 --- a/src/server/batch/scheduler/config.rs +++ b/src/server/batch/scheduler/config.rs @@ -193,6 +193,8 @@ impl BatchScheduler { // here (the server worker is long-lived, so a per-tick getenv would // be pure overhead). lookahead_force_sync: mlxcel_core::engine::force_sync_requested(), + #[cfg(test)] + decode_forward_calls: 0, } } diff --git a/src/server/batch/scheduler/decode_tick.rs b/src/server/batch/scheduler/decode_tick.rs index 01e4222bb..82e45452a 100644 --- a/src/server/batch/scheduler/decode_tick.rs +++ b/src/server/batch/scheduler/decode_tick.rs @@ -549,6 +549,10 @@ impl BatchScheduler { // appended yet, so the caller just decodes synchronously. let biases = biases?; let batch = StepBatch { seq_ids, input }; + #[cfg(test)] + { + self.decode_forward_calls += 1; + } match self.engine.submit(&batch, params, &biases) { Ok(tokens) => { // The schedule itself succeeded; the collect half evaluates @@ -587,14 +591,15 @@ impl BatchScheduler { /// /// 1. FIRST build and `async_eval` step n+1 from `la.tokens` fed back /// device-side (no host knowledge needed). The GPU starts the next - /// forward immediately. + /// forward immediately, except when a B=1 row's pending token is known + /// to exhaust its length budget. /// 2. THEN read step n's tokens to host (this blocks on the PREVIOUS tick's /// prime forward, which by now has finished, while step n+1 runs on the /// GPU) and run the finish pre-check. - /// 3. If a row finishes (EOS / length / cancel) or the shape is off, unwind - /// BOTH speculative appends (step n and the just-issued step n+1) and - /// re-run the tick synchronously, so completion / donation flows through - /// the untouched sync path from a clean cache state. + /// 3. Commit a known B=1 length token directly. For any other finish (EOS, + /// cancel) or a bad shape, unwind the speculative appends and re-run the + /// tick synchronously, so completion / donation flows through the + /// untouched sync path from a clean cache state. /// 4. Otherwise commit step n and keep the step n+1 prebuilt step. pub(super) fn pipelined_steady_decode( &mut self, @@ -602,13 +607,23 @@ impl BatchScheduler { seq_ids: &[SequenceId], params: &FusedSampleParams, ) { - // Step 1: speculatively build + schedule step n+1 FIRST. Feed la.tokens - // ([B]) back as the next [B, 1] input device-side (reshape + int32 cast - // to match the synchronous from_slice_i32 dtype), keeping the GPU busy - // through the host read below. This appends a second speculative KV - // position per sequence (the overshoot the issue accepts). - let next_input = mlxcel_core::engine::lookahead_feedback_input(&la.tokens); - let next = self.prime_lookahead_with_input(seq_ids, &next_input, params); + // Step 1: speculatively build + schedule step n+1 FIRST, except when a + // B=1 row's already-pending token is certain to spend its length + // budget. DirectEngine applies the same check before its submit. The + // old scheduler submitted n+1, discarded both n and n+1, then replayed + // n synchronously on that terminal tick: two whole forwards whose + // result could not affect the response. + let pending_spends_budget = self.b1_pending_spends_budget(seq_ids); + let next = if pending_spends_budget { + None + } else { + // Feed la.tokens ([B]) back as the next [B, 1] input device-side + // (reshape + int32 cast to match the synchronous from_slice_i32 + // dtype), keeping the GPU busy through the host read below. This + // appends a second speculative KV position per sequence. + let next_input = mlxcel_core::engine::lookahead_feedback_input(&la.tokens); + self.prime_lookahead_with_input(seq_ids, &next_input, params) + }; // Step 2: read step n's tokens to host (the sync point) and finish-check. let toks = match mlxcel_core::engine::try_tokens_to_host(&la.tokens) { @@ -618,6 +633,17 @@ impl BatchScheduler { Vec::new() } }; + + // The pending B=1 draw is the terminal length token. Commit it through + // the shared finish path exactly as DirectEngine does. A short/failed + // read still takes the guarded teardown and synchronous retry below. + if pending_spends_budget && toks.len() == 1 { + drop(la); + self.apply_fused_decode_tokens(seq_ids, &toks); + self.batch_observability.record_lookahead_step(); + return; + } + let mut finishing = toks.len() != seq_ids.len(); if !finishing { for (i, &seq_id) in seq_ids.iter().enumerate() { @@ -685,6 +711,17 @@ impl BatchScheduler { self.batch_observability.record_lookahead_step(); } + /// Whether the one pending lookahead token must exhaust a B=1 row's + /// length budget. B>1 keeps its existing all-row teardown/replay path. + fn b1_pending_spends_budget(&self, seq_ids: &[SequenceId]) -> bool { + let [seq_id] = seq_ids else { + return false; + }; + self.active_batch + .get(*seq_id) + .is_some_and(|seq| seq.generated_tokens.len().saturating_add(1) >= seq.max_tokens) + } + /// Batched decode: one engine step for all active sequences. /// /// # Null/empty-cache safety @@ -778,6 +815,10 @@ impl BatchScheduler { .into_iter() .map(|seq| step_rows::step_row(seq, tokenizer, context, false)) .collect(); + #[cfg(test)] + { + self.decode_forward_calls += 1; + } self.engine.step(&batch, &mut rows) }; match stepped { diff --git a/src/server/batch/scheduler/mod.rs b/src/server/batch/scheduler/mod.rs index a1b6aa9cb..d345558c3 100644 --- a/src/server/batch/scheduler/mod.rs +++ b/src/server/batch/scheduler/mod.rs @@ -737,6 +737,11 @@ pub struct BatchScheduler { /// never engages the lookahead pipeline and every decode tick runs /// synchronously, so the sync path stays available for A/B equivalence. lookahead_force_sync: bool, + + /// Decode forwards submitted by this scheduler, for tests that pin the + /// B=1 terminal lookahead cost to one forward per post-prefill token. + #[cfg(test)] + pub(super) decode_forward_calls: usize, } /// One prebuilt decode step held across ticks by the lookahead pipeline. diff --git a/src/server/batch/scheduler_muse_glimmer_parallel_tests.rs b/src/server/batch/scheduler_muse_glimmer_parallel_tests.rs index 44e9d6d65..a04a0db53 100644 --- a/src/server/batch/scheduler_muse_glimmer_parallel_tests.rs +++ b/src/server/batch/scheduler_muse_glimmer_parallel_tests.rs @@ -38,6 +38,15 @@ struct RequestSummary { finish_reason: String, } +#[derive(Debug, PartialEq, Eq)] +struct TerminalDecodeSummary { + generated_tokens: Vec, + finish_reason: FinishReason, + final_pool_offset: i32, + final_offsets: Vec<(bool, i32, i32)>, + stream: RequestSummary, +} + fn cases() -> (ImageCase, ImageCase) { ( ImageCase { @@ -197,6 +206,70 @@ fn run_isolated(case: &ImageCase, collect_tokens: bool) -> RequestSummary { } } +fn run_terminal_length_path(parallelism: usize) -> TerminalDecodeSummary { + let max_tokens = 3; + let mut sched = muse::scheduler(parallelism); + let target_rx = muse::enqueue( + &mut sched, + request_prompt(), + muse::image_bytes(2, 2, 41), + max_tokens, + ); + let sibling_rx = (parallelism > 1).then(|| { + muse::enqueue( + &mut sched, + request_prompt(), + muse::image_bytes(2, 2, 73), + max_tokens, + ) + }); + let target_id = SequenceId::from_raw(0); + execute_prefill_tick(&mut sched); + let active_ids = sched.active_batch.sequence_ids(); + assert!( + sched.lookahead_params(&active_ids).is_none(), + "Muse model-owned state deliberately stays on the synchronous path" + ); + + let mut terminal = None; + while sched.active_batch.get(target_id).is_some() { + let ids = sched.active_batch.sequence_ids(); + execute_decode_tick(&mut sched, &ids); + if let Some(seq) = sched.active_batch.get(target_id) + && let SequenceState::Finished(reason) = &seq.state + { + terminal = Some(( + seq.generated_tokens.clone(), + reason.clone(), + sched + .engine + .pool() + .get(target_id) + .expect("finished target retains its pool entry until finalization") + .current_offset, + muse::muse_state_offsets(&sched, target_id) + .expect("finished target retains its state until finalization"), + )); + } + sched.finalize_completed(); + } + + let (generated_tokens, finish_reason, final_pool_offset, final_offsets) = + terminal.expect("target reached a terminal decode tick"); + let stream = summarize(muse::collect_stream(&target_rx)); + if let Some(rx) = sibling_rx { + let sibling = summarize(muse::collect_stream(&rx)); + assert_eq!(sibling, stream); + } + TerminalDecodeSummary { + generated_tokens, + finish_reason, + final_pool_offset, + final_offsets, + stream, + } +} + fn assert_reuse_after_release(sched: &mut BatchScheduler) { let image = muse::image_bytes(2, 2, 17); let rx = muse::enqueue(sched, request_prompt(), image, 1); @@ -315,6 +388,19 @@ fn muse_scheduler_two_image_requests_parallelism_two_match_isolated_runs() { assert_eq!(wide_result.streamed, vec!["a", "a", "a"]); } +#[test] +fn b1_terminal_length_matches_the_unchanged_b2_path() { + let b1 = run_terminal_length_path(1); + let b2 = run_terminal_length_path(2); + + assert_eq!(b1, b2); + assert_eq!(b1.generated_tokens, vec![muse::GENERATED_TOKEN_ID; 3]); + assert_eq!(b1.finish_reason, FinishReason::Length); + assert_eq!(b1.final_pool_offset, 7); + assert_eq!(b1.final_offsets, vec![(true, 6, 6), (false, 6, 6)]); + assert_eq!(b1.stream.streamed, vec!["a", "a", "a"]); +} + #[test] fn muse_scheduler_streaming_and_result_only_collection_are_equivalent() { let (small, _) = cases(); diff --git a/src/server/batch/scheduler_prompt_lookup_tests.rs b/src/server/batch/scheduler_prompt_lookup_tests.rs index 347878c1e..d3ab0f99b 100644 --- a/src/server/batch/scheduler_prompt_lookup_tests.rs +++ b/src/server/batch/scheduler_prompt_lookup_tests.rs @@ -150,6 +150,23 @@ fn enqueue_with( prompt: &[i32], max_tokens: usize, stop_token_ids: &[i32], +) -> (mpsc::Receiver, Arc) { + enqueue_with_sampling( + sched, + prompt, + max_tokens, + SamplingConfig { + stop_token_ids: stop_token_ids.to_vec(), + ..SamplingConfig::greedy() + }, + ) +} + +fn enqueue_with_sampling( + sched: &mut BatchScheduler, + prompt: &[i32], + max_tokens: usize, + sampling: SamplingConfig, ) -> (mpsc::Receiver, Arc) { let options = ServerGenerateOptions { n_indent: 0, @@ -161,10 +178,7 @@ fn enqueue_with( logit_bias_texts: Vec::new(), post_sampling_probs: false, max_tokens, - sampling: SamplingConfig { - stop_token_ids: stop_token_ids.to_vec(), - ..SamplingConfig::greedy() - }, + sampling, stop_sequences: None, ignore_eos: false, priority: RequestPriority::Normal, @@ -271,6 +285,22 @@ fn assert_synchronous_state(sched: &mut BatchScheduler) { } } +/// Drain one request's stream and return its terminal result. +fn completion(rx: &mpsc::Receiver) -> crate::server::GenerationResult { + let mut completed = None; + while let Ok(event) = rx.try_recv() { + match event { + GenerateEvent::Done(result) => { + assert!(completed.is_none(), "request completed more than once"); + completed = Some(result); + } + GenerateEvent::Error(err) => panic!("request failed: {err}"), + _ => {} + } + } + completed.expect("request completed") +} + /// The Done result's prompt-lookup acceptance counters `(proposed, /// accepted)`, `None` when it reports no drafter. fn acceptance(rx: &mpsc::Receiver) -> Option<(usize, usize)> { @@ -400,6 +430,148 @@ fn a_concurrent_plain_row_gets_a_token_every_tick() { assert_eq!(tokens_of(&done, PLAIN_PROMPT), cycle_from(9, 10)); } +/// Issue #2227: every post-prefill B=1 token costs one decode forward, +/// including the terminal token. The `max_tokens >= 3` cases reach the +/// lookahead pipeline; without the terminal-budget guard they submit and +/// replay two forwards on the final tick. +#[test] +fn b1_length_boundary_submits_one_decode_forward_per_post_prefill_token() { + for (max_tokens, completion_tokens, decode_forwards) in + [(0, 1, 0), (1, 1, 0), (2, 2, 1), (3, 3, 2), (4, 4, 3)] + { + let mut sched = scheduler(None); + let mut done = Done::new(); + let rx = enqueue(&mut sched, PLAIN_PROMPT, max_tokens); + drain(&mut sched, &mut done); + let result = completion(&rx); + assert_eq!( + result.generated_token_ids, + cycle_from(9, completion_tokens), + "max_tokens={max_tokens}" + ); + assert_eq!(result.finish_reason, "length", "max_tokens={max_tokens}"); + assert_eq!( + sched.decode_forward_calls, decode_forwards, + "max_tokens={max_tokens} submitted an avoidable decode forward" + ); + } +} + +/// The terminal B=1 tick commits its pending draw without another submit or +/// replay. B=2 remains on the pre-existing two-append teardown and sync replay. +#[test] +fn b1_terminal_length_skips_two_forwards_and_leaves_b2_unchanged() { + let mut b1 = scheduler(None); + let mut b1_done = Done::new(); + let b1_rx = enqueue(&mut b1, PLAIN_PROMPT, 3); + assert_eq!(tick(&mut b1, &mut b1_done), Tick::Prefill); + let ids = vec![only_row(&b1)]; + assert!(b1.lookahead_params(&ids).is_some(), "dense B=1 is eligible"); + assert_eq!(tick(&mut b1, &mut b1_done), Tick::Decode); + assert!( + b1.decode_lookahead.is_some(), + "bootstrap decode primed the terminal token" + ); + assert_eq!(b1.decode_forward_calls, 2, "sync bootstrap plus prime"); + assert_eq!(tick(&mut b1, &mut b1_done), Tick::Decode); + assert_eq!( + b1.decode_forward_calls, 2, + "terminal B=1 commits the pending token without submit or replay" + ); + let b1_result = completion(&b1_rx); + assert_eq!(b1_result.generated_token_ids, cycle_from(9, 3)); + assert_eq!(b1_result.finish_reason, "length"); + + let sibling_prompt = [1, 3, 5, 7, 9]; + let mut b2 = scheduler(None); + let mut b2_done = Done::new(); + let target_rx = enqueue(&mut b2, PLAIN_PROMPT, 3); + let sibling_rx = enqueue(&mut b2, &sibling_prompt, 3); + assert_eq!(tick(&mut b2, &mut b2_done), Tick::Prefill); + assert_eq!(tick(&mut b2, &mut b2_done), Tick::Prefill); + let ids = b2.active_batch.sequence_ids(); + assert_eq!(ids.len(), 2, "both rows are active for B=2 decode"); + assert!(b2.lookahead_params(&ids).is_some(), "dense B=2 is eligible"); + assert_eq!(tick(&mut b2, &mut b2_done), Tick::Decode); + assert!( + b2.decode_lookahead.is_some(), + "B=2 bootstrap decode primed the terminal tokens" + ); + assert_eq!(b2.decode_forward_calls, 2, "batched bootstrap plus prime"); + assert_eq!(tick(&mut b2, &mut b2_done), Tick::Decode); + assert_eq!( + b2.decode_forward_calls, 4, + "B=2 keeps next submit, teardown, and synchronous replay" + ); + let target = completion(&target_rx); + let sibling = completion(&sibling_rx); + assert_eq!(target.generated_token_ids, b1_result.generated_token_ids); + assert_eq!(target.finish_reason, b1_result.finish_reason); + assert_eq!(sibling.generated_token_ids, cycle_from(10, 3)); + assert_eq!(sibling.finish_reason, "length"); +} + +/// An eligible stochastic row commits the device draw that was already +/// pending. It neither advances the RNG with a future submit nor re-draws the +/// terminal token synchronously. +#[test] +fn b1_stochastic_terminal_length_commits_the_pending_draw() { + let mut sched = scheduler(None); + let mut done = Done::new(); + let (rx, _cancelled) = enqueue_with_sampling( + &mut sched, + PLAIN_PROMPT, + 3, + SamplingConfig { + temperature: 1.0, + top_k: 0, + top_p: 1.0, + min_p: 0.0, + seed: Some(2227), + ..SamplingConfig::default() + }, + ); + assert_eq!(tick(&mut sched, &mut done), Tick::Prefill); + let ids = vec![only_row(&sched)]; + assert!( + sched.lookahead_params(&ids).is_some(), + "the seeded stochastic row stays fused-lookahead eligible" + ); + assert_eq!(tick(&mut sched, &mut done), Tick::Decode); + let pending = mlxcel_core::engine::try_tokens_to_host( + &sched + .decode_lookahead + .as_ref() + .expect("bootstrap decode primed the terminal stochastic draw") + .tokens, + ) + .expect("read pending stochastic draw")[0]; + assert_eq!(tick(&mut sched, &mut done), Tick::Decode); + assert_eq!(sched.decode_forward_calls, 2); + let result = completion(&rx); + assert_eq!(result.generated_token_ids.last(), Some(&pending)); + assert_eq!(result.finish_reason, "length"); +} + +/// EOS keeps precedence when the pending token also reaches `max_tokens`. +/// The optimized terminal branch still finishes through `Engine::finish_rows`. +#[test] +fn b1_terminal_token_eos_precedes_the_length_boundary() { + let mut sched = scheduler(None); + let mut done = Done::new(); + let (rx, _cancelled) = enqueue_with(&mut sched, PLAIN_PROMPT, 3, &[11]); + assert_eq!(tick(&mut sched, &mut done), Tick::Prefill); + let ids = vec![only_row(&sched)]; + assert!(sched.lookahead_params(&ids).is_some()); + assert_eq!(tick(&mut sched, &mut done), Tick::Decode); + assert!(sched.decode_lookahead.is_some()); + assert_eq!(tick(&mut sched, &mut done), Tick::Decode); + assert_eq!(sched.decode_forward_calls, 2); + let result = completion(&rx); + assert_eq!(result.generated_token_ids, cycle_from(9, 2)); + assert_eq!(result.finish_reason, "stop"); +} + /// Rules 2 and 4 (I3): with the flag on and no row proposing, the lookahead /// gate admits the batch and the ticks pipeline, as without the flag. #[test]