Repository navigation
v0.4.1
hipfire v0.4.1
Released 2026-10-07. Measured on release candidate RC5 7dc9885eb0b2 (the release commit adds only documentation and the registry on top of it). Full detail: CHANGELOG.md.
Fixtures: Flash-Next = qwen3.8:flash-next, now the symmetric GPTQ3 requant; 27B = qwen3.8:27b-mq4-xts unless specified. Halo = Strix Halo (gfx1151); R9700 = Radeon AI PRO R9700 (gfx1201); XTX = 7900 XTX (gfx1100). Every number below names the build that produced it; cells that were not re-measured on RC5 say so. Synthetic pp8192 and Ciru prompt-file prefill are different workloads.
Highlights
- Flash-Next: architecture-sized prefill chunks, PeaceMaker QSA and MQ6 kernels, native MTP with n-gram takeovers and a same-request AR floor, an engine-owned multi-session prompt cache with live continuation (building on @fivetide's #825/#826), exact HF byte-BPE whitespace tokenization, and PLE read/lookahead changes.
- Flash-Next greedy MTP and AR now agree across the repaired Q8-state, HC-projection and conversation-history paths. Penalties-aware sampled native MTP applies repeat, presence and frequency penalties to the target and draft distributions, with a bit-exact GPU penalty prepass. Penalties are ~free on AR and cost at most ~1.5 % on sampled MTP (Halo). Sampled MTP preserves AR's sampling distribution, not its seeded token stream.
- 27B: exact XTX gate/up specialization and Halo A4 epilogue; R9700 split-KV DFlash verification remains opt-in.
- Serve: Flash-Next tools and OpenAI stops work with native MTP; reasoning budgets close the think span rather than fail the request. An optional browser UI is available.
- Kernel packs cover Flash-Next long prefill, AR, native and sampled MTP, and serve on Halo/R9700 without cold-cache device compilation. PeaceMaker builds code objects natively; the NPU work remains experimental and outside inference.
Integrated feature modes
| Feature | Release mode |
|---|---|
| Prompt reuse | Engine-owned session cache (default 8 GiB, HIPFIRE_SESSION_CACHE_BYTES=0 disables) plus live continuation inside a conversation, for AR and native MTP. Live continuation is session-exact, not cold-prefill identical; cross-session snapshots at prefill-chunk boundaries are cold-exact. The RC3 prefix and radix caches are removed. |
| MTP + n-gram | Default auto: on for native Flash-Next MTP on gfx1151/gfx1201, triple 5/3/3, cost-aware takeovers. HIPFIRE_MTP_NGRAM=0 opts out. This is not a universal greedy-token identity claim. |
| Same-request AR floor | Default-on. A measured calibration/probe compares speculative cost with ordinary AR and retires the request to head-free AR when no measured option wins. This bounds speculative probing, not total request wall time; HIPFIRE_MTP_AR_FLOOR=0 restores the pre-floor chooser. |
| R9700 VMM | Automatic Flash-Next QSA context/workspace demand mapping on certified gfx1201 as well as gfx1151; committed pages grow with touched context. memory.kv_backend = "legacy" / HIPFIRE_KV_BACKEND=legacy opts out. |
Flash-Next performance — Halo / R9700
Halo columns: RC5 7dc9885eb0b2 against the shipped beta 90d90306d8, medians of three fresh processes ([min–max]), same release-matrix cells, RC5 and RC3 interleaved on the same host. R9700 column: the RC3 d1faafea0c release-matrix lane, not re-measured on RC5 (RC5's card-B gates were correctness gates). Ciru 8K / 128K cold prefill were not re-run on RC5 on Halo; the beta numbers are shown for reference.
| Metric | Halo RC5 | Halo beta | R9700 RC3 lane |
|---|---|---|---|
| Synthetic pp8192, prompt tok/s | 2072.9 [2072.7–2076.9] | 2082.9 [2078.3–2084.9] | 3817.0 |
| Ciru cold prefill 8K, prompt tok/s | not re-run | 1559.7 [1526.5–1569.9] | 2082.6 |
| Ciru cold prefill 32K, prompt tok/s | 1776.5 [1776.3–1780.3] | 1788.2 [1772.6–1789.9] | 2051.3 |
| Ciru cold prefill 128K, prompt tok/s | not re-run | 1665.8 [1660.2–1670.8] | 1814.6 |
| Greedy AR decode, tok/s | 33.8 [33.8–33.9] | 33.8 [33.8–33.9] | 34.92 |
| Greedy native MTP decode, tok/s | 58.7 [58.5–58.8] | 56.7 [56.7–56.8] | 40.71 |
| Sampled native MTP decode, tok/s | 57.0 [45.5–57.2] (presence-penalty cell, one disturbed repetition) | 54.8 [54.8–55.0] (neutral sampling cell) | 41.09 |
Judged by the release rule (median at least 2 % lower and disjoint repetition ranges): no Halo cell regresses against beta. pp8192 (−0.5 %) and Ciru 32K (−0.7 %) are inside the rule; greedy AR is equal and MTP is +3.5 %. Against RC3 the same cells are equal or faster (pp8192 −0.0 %, Ciru 32K −0.5 %, AR 0.0 %, MTP +1.7 %, penalized sampled MTP +1.9 %). One prompt looked slower in the first sweep: greedy MTP on humaneval_0_has_close_elements read 57.1 [56.7–57.2] against RC3's 60.1 [59.5–60.2] tok/s (−5.0 %, disjoint ranges, identical token IDs). A re-run of that cell with fresh processes, beta, RC3 and RC5 interleaved (three each), did not reproduce it: RC5 57.5 [56.5–58.0], RC3 58.0 [57.7–59.9] (−0.9 %, ranges overlap), beta 53.5 [53.4–53.5] (RC5 +7.5 %, ranges disjoint in RC5's favor). Greedy AR emits the same token IDs as RC3 on six of eight prompts (the two others have whitespace runs that the tokenizer fix re-encodes), and MTP equals AR on every prompt. The penalty prepass is neutral-to-positive on penalized sampled MTP (57.0 on, 56.6 off). One penalized-sampled repetition of the first sweep (45.5 tok/s) coincided with a long pause in the sweep log; the median is unaffected.
Halo keeps F32 QSA state with PM score/select by default; q8 QSA stays opt-in (--kv-mode q8). R9700 keeps fp8 QSA. Large PLE reads use wider reader pools; lookahead retains the next chunk's materialized rows. The first chunk remains SSD-dependent, and prefix-checkpoint quiescing can cancel the final chunk's lookahead.
The MTP head is built with row-chunked requantization scratch instead of a full-vocabulary F32 temporary. On R9700, automatic placement can retain another expert layer with MTP attached. The default chunk remains 4096 on R9700 and 8192 on Halo; a larger R9700 chunk is not promoted because its scratch reduces expert residency and regresses decode.
Task evaluations (Halo, RC5 7dc9885eb0b2, release defaults, native MTP)
| Suite | Result | Board seconds |
|---|---|---|
| TC70–84, seed 123 / 124 / 125 | 23/30 (77) / 24/30 (80) / 21/30 (70) | 169.87 / 158.21 / 162.86 |
| TC70–84, 3-seed median | 23/30 at 162.86 s (mean 22.7 at 163.6 s) | |
| HermesAgent-20 pass 1 | 95 (18/20 binary), 89 primary tool calls | 729.79 |
| HermesAgent-20 pass 2 | 96 (18/20 binary), 117 primary tool calls | 782.03 |
| Hermes smoke | 100 (3/3) | 58.16 |
Board seconds follow Ciru's convention: TC is the sum of scenario durations; Hermes is the sum of case wall seconds. Sampled TC uses temperature 0.7, top-p 0.8, top-k 20, presence 1.5. Greedy TC panel ("Original TC70-84": T0, top-k 1, 8 turns, seed 123, release speculation; earlier candidates, not RC5): RC3 d1faafea0c 22/30 at 127.04 s and RC4c 486083f052 21/30 at 126.41 s.
Published reference results, quoted from Ciru's board (their numbers, their harness, not re-run here): Halogen TC recommended-sampler panel 80 (24/30) at 215.07 s; HermesAgent-20 99 at 673.02 s (pass 1) and 94 at 925.21 s (pass 2); greedy "Original TC70-84" panel 21/30 at 146.34 s; Gufo TC recommended panel 73 (22/30) at 240.07 s, greedy panel 22/30 at 162.47 s. Strata self-reports 23/30 in 183 s on TC (Niko1221/Strata; self-reported, not on Ciru's board and not verified here). Ciru's board is the comparison yardstick, not a controlled same-model A/B; no competing engine was run for these notes. Hermes results identify the harness and the served model id: GPT prompt injection and grading-rule differences make earlier local scores non-interchangeable.
Standing against those references: the TC median (162.86 s) is faster than Halogen's 215.07 s and than Strata's self-reported 183 s, at 23/30 against Halogen's 24/30; the greedy panel is faster than Halogen (126–127 s against 146.34 s) at 21–22/30 against its 21/30. Hermes pass 1 is slower than Halogen's published time (729.79 s against 673.02 s, 95 against 99); see Known issues.
27B
R9700 metric (RC2 cb1a90f90b lanes, cards A / C / E; not re-measured on RC5) |
Result |
|---|---|
| pp8192, prompt tok/s | 5125.5 / 5108.0 / 5133.7 |
| AR decode, tok/s | 40.88 / 40.82 / 40.84 |
| Native MTP and DFlash decode | not measured in this release matrix |
The 27B lanes ran on RC2; RC5 carries tokenizer, sampler and penalty edits in shared crates but no 27B kernel change, and the 27B lanes were not repeated. Against beta the RC2 lanes measured AR decode +0.3…+0.5 % and pp8192 −0.8…−1.0 %; a six-repetition bisect on all three cards found the pp8192 difference to be host noise (beta 5169 / 5162 / 5176 against RC 5162 / 5158 / 5176 tok/s).
- XTX MQ4V2 gate/up specializes the 27B K5120 shape without changing accumulation order or adding a weight copy.
- Halo dense IU4 prefill uses exact activation-producer twins and a fused gate/up-to-A4 epilogue on admitted shapes.
- R9700 DFlash rollback skips the DeltaNet restore copy by default, byte-identically. No end-to-end speedup is claimed for that change.
- Packed-Q8 split-KV DFlash verification is default-off:
HIPFIRE_GFX12_FA2_SPLIT_VERIFY=1, withHIPFIRE_GFX12_FA2_SPLIT_COUNT=2|4|8. It applies only to eligible eager sequential verification; AR, tree, independent-batch, graph and retained recording keep their established routes. It matches the measured long-prompt token IDs, not a universal bit-exactness claim. - Dense tensor-parallel Qwen MTP is opt-in (
--spec mtp); automatic TP serving remains AR. Flash-Next multi-card TP/EP is not part of this release.
Serve / API
- Flash-Next AR and native MTP support tools and answer-only OpenAI stop matching, including streamed partial matches. Tool argument strings retain the model's whitespace and JSON spelling, with conversion driven by the declared schema.
- EOS inside reasoning returns
stopwithreasoning_content, possibly no answer, rather than a stream error. Explicitmax_think_tokenscloses reasoning and leaves the remaining output budget for the answer. - Multi-slot thinking follows the rendered template;
reasoning_effortis accepted. Omitted sampling fields and context-fitted output budgets use the sequential route's rules.timings.decode_tok_sis omitted when no daemon-measured decode rate exists; wall rate remainshipfire.tok_s. - Invalid requests return typed 400 errors; missing models return 404.
n != 1is rejected rather than silently returning one choice. Vision and pipeline routes reportlengthwhen the output budget expires. /uiis opt-in (--ui,serve.ui, orHIPFIRE_SERVE_UI=1). Flash-Next local trunks appear in/v1/models.- Serve by tag:
hipfire serve qwen3.8:flash-next. Serving by a filename or path containing "gpt" makes Hermes inject GPT prompt blocks. Tag serving exposes the tag as the model id and avoids that confound. - CPU sampling now honors
top_kandmin_pon the repaired routes. Some other model routes still ignore these fields; standard serving still accepts but does not enforceresponse_format. See SERVE.md.
Fixes
- QSA threshold-tie counts no longer overflow at long context; gfx1151 GDN tail WMMAs stay outside partial-row EXEC masks.
- GDN LDS handoffs explicitly wait for stores before barriers. Scratch growth invalidates captured graphs/tapes; AR graph replay checks its bound device pointers. Effect-incomplete or unbindable Redline tapes fail closed to HIP.
- Flash-Next MTP stops at end-of-turn, respects per-token Q8 quantization, uses single-row HC accumulation order, and shares emitted-history token caching with AR.
- Serve now forwards Flash-Next's prior
reasoning_contentinto the thinking-history template, as it already did for Qwen3.5/3.6. Earlier reasoning is no longer replaced by an empty think block, repairing canonical prompt extension for prefix continuation. The shared history-reasoning architecture table is pinned by carrier tests. - Qwen3.x native MTP now applies repeat, presence and frequency penalties in sampled and greedy verification instead of silently dropping them; DFlash combinations that do not implement penalties route to penalty-aware AR. The pre-existing 27B greedy-plus-presence MTP/AR divergence is separate and is not claimed fixed here.
- VL mrope forwards grow the VMM mapped prefix before writes. Oversized Flash-Next context is rejected before allocation. Model switches unload the admitted prior model before construction; a subsequent load failure explicitly leaves no model loaded.
- Legacy 6-bit Qwen/MoE weights select the correct kernels, and their residual GEMV is recorded for retained replay. Uniform MQ6 MoE attention is admitted by multi-slot serving.
- gfx1201 oversized grid axes are split/folded or rejected instead of silently aliasing rows. gfx11 fused DeltaNet and RoPE decode use the unfused FMA operand order.
- Windows/WSL2 daemon startup and GPU identity/locking are repaired. WSL2 falls back to HIP and legacy KV unless explicitly overridden; native Linux is unchanged.
- Bench speculation no longer silently runs AR, and JSON records the resolved route, tau and power/memory state. Matrix loads size context to their requested shape.
- Release eval lanes install the matching kernel pack and check for zero new JIT objects, so a missing pack's cold compilation is not reported as model prefill performance. This complements the shipped long-prefill/native-MTP/serve pack coverage fix; it is not an invented startup-time discount.
- Quantize rejects unknown formats and unread flags, resolves HF snapshots deterministically, records supplied provenance, and fails writes atomically without partial output. Audited V2 Promote6 routes use MQ6V2; existing artifacts are unchanged.
Defaults that changed — exactness and opt-outs
The gfx1201 FN dense GDN scan and IU4-sym MoE on gfx1201/gfx1151 are KLD-gated, not bit-exact. IU4-sym trades increased BF16-reference KLD for prefill speed; task scores tie within seed spread. Dense GDN improves the code KLD result; the WikiText-2 change is not significant. Each switch below restores its corresponding previous route, not all previous-release numerics at once.
Numerical / sampling / artifact changes (not byte-exact)
| Default | Opt-out / previous behavior |
|---|---|
| gfx1201 FN dense GDN scan | HIPFIRE_FN_GDN_DENSE_SCAN=0 — prior pipe128 prefill, prior output exactly for this route. |
| Symmetric IU4 MoE on gfx1151/gfx1201, eligible symmetric expert headers only | HIPFIRE_QWEN4_MOE_SYM_IU4=0 — F16 MoE; KLD-gated, not bit-exact. |
| Gathered F16 WMMA QSA on gfx1151/gfx1201 | HIPFIRE_QWEN4_QSA_WMMA_GATHER=0 — previous attention; F16 operand rounding, admitted against an f64 reference/BF16-storage error bar, not bit-exact. Short-context near-tied argmax can flip. |
| gfx1201 F16 WMMA HC/projection route | HIPFIRE_QWEN4_F16_WMMA_GFX1201=0 — previous multirow/SIMT arms; KLD-gated, not bit-exact. |
| Architecture-sized FN chunks: Halo 8192 / R9700 4096 | HIPFIRE_PREFILL_CHUNK_ROWS=1536 — previous chunk ceiling; results are not bit-exact across chunk sizes. Admission may reduce the requested ceiling for memory. |
| Sampled native MTP | HIPFIRE_MTP_SAMPLED=0 — sampled AR. Distribution-exact, not byte-identical to AR for a seed. |
| Flash-Next prompt reuse: engine-owned session cache plus live continuation | HIPFIRE_SESSION_CACHE_BYTES=0 — no cache; every turn prefills cold (default 8 GiB). Live continuation inside a conversation is session-exact, not cold-prefill exact (its state descends from decode). Cold-exact snapshots at prefill-chunk boundaries serve other sessions. The RC3 prefix/radix caches are removed; HIPFIRE_QWEN_RADIX_CACHE is read by nothing. |
MTP + n-gram takeovers (default auto: on for native Flash-Next MTP on gfx1151/gfx1201) |
HIPFIRE_MTP_NGRAM=0 — native MTP without takeovers. Greedy output can differ; do not treat it as a byte-exact replacement. |
| Byte-level BPE tokenizer whitespace boundaries (all byte-BPE families) | No switch. Prompt token IDs change for text with whitespace runs before non-space characters (the Hugging Face \s+(?!\S) alternative); generation for the same text is not expected to match older releases. |
qwen3.8:flash-next resolves to GPTQ3 |
Keep an explicitly selected previous artifact/tag. No env switch changes the downloaded artifact; IU4 opt-out changes only its execution route. |
Gemma4 lowered full-attention KV uses Q8 for auto |
HIPFIRE_KV_MODE=legacy-asym3 — previous cache. Default greedy text changes; sliding attention stays Q8. |
Remaining performance defaults (exact replacements)
These replacements are byte-exact against their corresponding incumbent routes; this does not override the numerical, sampling, chunk-size or artifact exceptions above.
| Default / scope | Env opt-out |
|---|---|
| PM gathered QSA, gfx1151/gfx1201 | HIPFIRE_QWEN4_QSA_PM=0 |
| PM QSA score and select, gfx1151 (also the opt-in q8 state) | HIPFIRE_QWEN4_QSA_SCORE_PM=0; HIPFIRE_QWEN4_QSA_SELECT_PM=0 independently; score opt-out restores the fused q8 selector. |
| PM MQ6 trunk, gfx1201 and selectively large gfx1151 shapes | HIPFIRE_QWEN4_MQ6_X4_PM=0 |
| MQ6 X-LDS trunk / Halo tile table and region fold | HIPFIRE_QWEN4_MQ6_X4_GFX1201=0; HIPFIRE_QWEN4_MQ6_X4_TILE=0; HIPFIRE_QWEN4_MQ6_X4_REGIONS=0 |
| HC fuse (Halo level 3; R9700 level 1), up tile and down tile | HIPFIRE_QWEN4_HC_FUSE=0; HIPFIRE_QWEN4_HC_UP_TILE=0; HIPFIRE_QWEN4_HC_DOWN_TILE=0 |
| Halo HC row fold / GDN conv+QK norm | HIPFIRE_QWEN4_HC_ROW_FOLD=0; HIPFIRE_QWEN4_GDN_CONV_QKNORM=0 |
| MoE combine zero-init, fast router and fused PLE, gfx1151/gfx1201 | HIPFIRE_QWEN4_MOE_COMBINE_ZINIT=0; HIPFIRE_QWEN4_ROUTER_FAST=0; HIPFIRE_QWEN4_PLE_FUSE=0 |
| gfx1201 pipe128 GDN fallback recurrence | HIPFIRE_QWEN4_GDN_PIPE=0 (dense-scan opt-out is separate) |
| gfx1201 long-prefill expert staging | HIPFIRE_QWEN4_EXPERT_STAGE=0 |
| Wide PLE readers / Halo batched MTP fill | HIPFIRE_QWEN4_PLE_WIDE_READERS=0; HIPFIRE_QWEN4_MTP_BATCHED_FILL=0 |
| Halo / R9700 FN demand-mapped QSA VMM (certified gfx1151/gfx1201) | HIPFIRE_KV_BACKEND=legacy |
| Native FN MTP with gfx1201 host-mapped experts | HIPFIRE_MTP_MODE=off / HIPFIRE_SPECULATION=off |
| Retained PM4 for gfx1201 FN with MTP off | HIPFIRE_REPLAY_BACKEND=hip |
| gfx1100 K5120 MQ4V2 gate/up specialization | HIPFIRE_MQ4V2_GATEUP_K5120=0 |
| gfx1201 DFlash snapshot flip | HIPFIRE_DN_SNAPSHOT_FLIP=0 |
| Halo dense A4 epilogue / batched RMSNorm producers | HIPFIRE_V2B_A4_EPI=0; HIPFIRE_RMSNORM_P1A_BATCHED=0 (RMSNorm/fold symbols) |
| gfx1151 FA2 wide automatic envelope | HIPFIRE_GFX11_Q8_FA2_WIDE=0 |
| gfx1201 Gemma4 lowered graph replay | HIPFIRE_GEMMA4_GRAPH=0 |
| Flash-Next GPU penalty prepass (greedy AR rows and sampled-MTP verify rows) | HIPFIRE_QWEN4_PENALTY_PREPASS=0 — host penalties; emitted IDs bit-exact against the host path on both arches (24/24 prompts each). |
Known issues
- Flash-Next greedy chain: a turn can end inside its reasoning. In serve_harness's five-turn chain (greedy, T=0) turn 4 (the four-sentence story) emits
<|im_end|>instead of</think>, so the visible answer is empty and the story sits inreasoning_content. It is deterministic, identical with MTP on and off, and also occurs with the session cache disabled (HIPFIRE_SESSION_CACHE_BYTES=0), so it is the model's greedy trajectory at that prompt, not cache state; beta passes the same chain on a different trajectory. The server reportsstopwithreasoning_contentand no answer, as documented under Serve / API. Seen on gfx1151 and gfx1201. - R9700 hardware tests:
session_cache_hwandmtp_takeover_fill_hwrun out of memory at weight load on the 34 GB R9700 because the hw-test loader does not honour expert residency. This is a test-harness limit, not a product failure; both pass on Strix Halo. - Hermes pace vs Halogen on Halo: pass 1 scores 95 in 729.79 s against Halogen's published 99 in 673.02 s (4 points lower, 56.8 s / 8.4 % slower); pass 2 scores 96 in 782.03 s against its published 94 in 925.21 s (faster and higher). Single runs per pass (Ciru's convention); Hermes score noise between runs is several points. The pass-1 gap is generation volume, not decode speed.
- TC-75 and TC-76 score 0 on every sampled Halo seed of RC5 (presence 1.5), and TC-75/76 stayed at or near 0 in every arm since RC3, also with the session cache off; RC3's greedy panel scores TC-76 2.
- Tool-call conversations do not reuse the session cache. A turn whose history contains earlier tool calls is re-rendered differently from the committed live record, so it is not a strict extension and gets no live continuation (measured on RC4c: Halo TC prefill equals the cache-off count), and TC-shaped cross-session traffic gets no cross-session hits either (0 of 13 turns on R9700, RC5). Plain chat conversations and cross-session prefixes do hit (68–78 % of prompt tokens on R9700). The TC numbers above therefore carry no cache speedup.
Upgrade notes
hipfire stop
hipfire update
hipfire pull qwen3.8:flash-next
hipfire serve qwen3.8:flash-next- Reinstall matching release kernel packs for compiler-free use, including the new XTX specialization. Gemma4 and LFM2.5 still have documented pack gaps and need a device compiler; DeepSeek4 pack coverage was not traced.
- Review the numerical-route switches above if preserving prior output is required. Re-pulling Flash-Next selects a different artifact; disabling IU4 alone does not restore the old artifact.
- Unset Flash-Next expert placement now falls back to
autowhen a discrete card cannot fit everything.HIPFIRE_QWEN4_EXPERT_VRAM_LAYERS=Norautoexplicitly selects placement; use a full layer count only when it fits. Discrete FN startup also sets ROCm host-memory backing/copy defaults before HIP loads; explicitHSA_USERPTR_FOR_PAGED_MEMandGPU_PINNED_MIN_XFER_SIZEvalues override them. - PFlash and CASK/TriAttention remain deprecated, scheduled for removal in 0.5.0. Use the session cache rather than PFlash. MTP + n-gram is default-on for native Flash-Next MTP;
HIPFIRE_MTP_NGRAM=0disables takeovers. Its pool persists across requests and greedy text can differ. - q8 QSA, W4A8 MoE, GDN Q8-inline, naive sampled verification, and Flash-Next projection-region experiments are not new automatic defaults. ROCm 10.1 and FN multi-card mesh work are outside this release.
Contributors
External author credits below were collected from v0.4.0..90d90306d8 using the credits script's owner-exclusion convention; the release candidate's integrated feature owners and commits are recorded in the CHANGELOG.
- @fivetide / Bjoern Agent: Flash-Next/QSA series from #774, GDN tail fix #797, FA2 scratch guard #802, VL VMM growth #803, experimental NPU ring #818, and the engine-owned session cache and message-end snapshot work (#825 / #826), which this release's Flash-Next prompt reuse is built on.
- @HUSRCF: packed-Q8 split-KV verifier #760 and gfx1100 K5120 specialization #816.
- @ghazni101: decode timings #807, browser UI #808 and multi-slot reasoning #811.
- @aldrouil / Avery Drouillard: legacy 6-bit residual dispatch/recording #810 and model-discovery follow-up to #787.
- @alpineQ: dense-TP MTP #769, ported onto the current serving split with co-author credit.
#759's gfx1100 AWQ producer and #814's pageable staging are held, not release features. The range also contains maintainer/automation commits by Kaden Schutt, Claude, composer, FnTrunkIu4 and TeacherS4; these are not additional external PR authors.