feat(KERNEL-QUANT-CIQ-GEMM-ROCM-IQUANT): port IQ4_XS/IQ3_XXS to ROCm - #3029
feat(KERNEL-QUANT-CIQ-GEMM-ROCM-IQUANT): port IQ4_XS/IQ3_XXS to ROCm#3029joral wants to merge 12 commits into
Conversation
…OCm keep-quant line The keep-quant enumeration went stale when this row's implementation added IQ4_XS/IQ3_XXS to ROCm's DeviceKeepQuantSupported but touched no docs file, a gap a fresh review of PR mudler#3029 found. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-sonnet-5 [Claude Code]
There was a problem hiding this comment.
Updated source review at 2280069 (2026-09-09): the requested IQ3_XXS loader regression is present. It calls RouteGgufTensor for matrix and stacked-expert roles and checks keep-quant, opt-out, CPU-reference, and misaligned-width behavior. The diff also adds a snapshot of all four device codebooks and byte comparisons with the CPU tables.
Correction to my earlier documentation feedback: latest main AGENTS.md makes public-document changes depend on their stated triggers; routine code/test edits do not require STATUS/BENCHMARKS updates. That blanket requirement is withdrawn. This head updates the quantization inventory, FEATURES and USAGE.
The remaining merge gate is the real-model reload and token/memory evidence identified in the PR body, bound to an accessible artifact revision or SHA256, plus applicable current-main regression validation. The reported four-target device gate does not establish those model results. I inspected the source changes but did not independently rerun HIP or model gates in this session.
Record the mudler#3029 conflict resolution and missing IQ3_XXS loader regression before changing code. Issue mudler#1940 retains its broader format debt. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GPT-6 [Codex]
…ution Merge main 415d178 into mudler#3029 while retaining IQ4_XS and IQ3_XXS admission and both target tests. Preserve Tenstorrent admission and pass the current KQuantGemmK tail arguments on every format. Keyed matrices remain byte-identical to the target. Issue mudler#1940 keeps its broader debt. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GPT-6 [Codex]
Direct kernel tests do not detect deleting IQ3_XXS from ROCm loader admission. Enter RouteGgufTensor for matrix and expert weights, retaining ragged-shape and switch checks. This closes the missing loader guarantee in mudler#3029 without closing the remaining formats owed by mudler#1940. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GPT-6 [Codex]
The contributor measured 19,333,564,672 bytes, which is about 18.01 GiB. Correct only the mislabeled conversion in mudler#3029 while preserving the raw measurement and all other evidence. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GPT-6 [Codex]
The operator landed mudler#3064 and selected main 08a34c3 for the final mudler#3029 integration. Record that exact target before merging it, retaining the first integration pin. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GPT-6 [Codex]
…aseline Integrate main 08a34c3 into mudler#3029 after mudler#3064 restored README scanner coverage. The merge is clean and changes no I-quant implementation or test guarantees. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GPT-6 [Codex]
The reconstructed provider served seven formats that the ROCm loader still expanded. Admit the exact provider set so matrix and expert weights retain their quantized blocks through the production GGUF route. Keep IQ4_XS with #3029 and preserve expansion for every unsupported format. The loader gate checks each supported format in both production roles. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GPT-5 [Codex]
Closes #2781. Closes #2927. Row: `BACKEND-ROCM` Merge the reconstructed ROCm keep-quant providers from external pull request #2782 at `9fcd5d7180bcda2ca7c5aed74d154999a8f59d9e`. This no-ff merge preserves Ghazni's authorship on the three contributor commits. The providers serve dense and grouped GEMMs for eleven ROCm block formats. They retain grouped Q8_0 delegation and use the established external registrar. The reconstruction keys grow-only scratch by queue identity. It refuses cold or growing allocations during graph capture and preserves warm replay storage. The GGUF loader admits exactly the formats that the ROCm providers serve. IQ4_XS remains separate work in #3029. Unsupported formats stay on the expansion path. Operator job `7d7fe3a1-9001-4fc3-9463-8e2854f71e33` used the exact source archive for `9fcd5d718`. Its product tree matches the tested `791519aeb` tree. The clean archive has SHA-256 `4771a58c553a6b5d0cd0c5332a1b604adbe90f86282d109b900dfa33afa716d7`. The job ran on `strix:gpu0`, an AMD Radeon 8060S at `gfx1151`, with ROCm 7.2.4 and HIP 7.2.53211. A fresh HIP configure and build completed. `test_rocm_quant_dot --no-skip` passed 5 cases and 145,327 assertions. `test_gguf_keep_quant` passed 54 cases and 11,970 assertions. The earlier 132,094-assertion result came from a stale binary and is not landing evidence. A broad CTest regex selected unbuilt unrelated targets, so this record does not use that invocation as evidence. No gfx1100 speed result is claimed by this merge. The device result establishes correctness only on the named board. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GPT-5 [Codex]
2280069 to
6841d62
Compare
…OCm keep-quant line The keep-quant enumeration went stale when this row's implementation added IQ4_XS/IQ3_XXS to ROCm's DeviceKeepQuantSupported but touched no docs file, a gap a fresh review of PR mudler#3029 found. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-sonnet-5 [Claude Code]
Record the mudler#3029 conflict resolution and missing IQ3_XXS loader regression before changing code. Issue mudler#1940 retains its broader format debt. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GPT-6 [Codex]
Direct kernel tests do not detect deleting IQ3_XXS from ROCm loader admission. Enter RouteGgufTensor for matrix and expert weights, retaining ragged-shape and switch checks. This closes the missing loader guarantee in mudler#3029 without closing the remaining formats owed by mudler#1940. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GPT-6 [Codex]
The contributor measured 19,333,564,672 bytes, which is about 18.01 GiB. Correct only the mislabeled conversion in mudler#3029 while preserving the raw measurement and all other evidence. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GPT-6 [Codex]
The operator landed mudler#3064 and selected main 08a34c3 for the final mudler#3029 integration. Record that exact target before merging it, retaining the first integration pin. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GPT-6 [Codex]
IQ4_NL reaches the GGUF reader, the CPU dequantizer and the CPU keep-quant dot, and no accelerator multiplies it. On ROCm the refusal is terminal, because the backend is discrete and an unsupported dtype cannot fall back to a host kernel that would follow device pointers. This blocks a shipped artifact rather than a hypothetical one. Every published unsloth/Qwen3.8-Flash-Next-GGUF quant stores 91,465,564,160 elements in IQ4_NL, read from the three shard headers over HTTP range requests: the 20M-entry n-gram table and the 48 ffn_down_exps. #3097 has since made the table readable on ROCm. The experts are still not multipliable, and that is now the whole gap for this encoding on gfx1151. The CUDA half is a variant and not a table entry. IQ4_NL is a 32-element block paired with a Q8_0 activation, where the resident device GEMM quantizes activations to Q8_K over 256-element super-blocks. cuda_quant_dot.cu already says so: DotMXFP4 sits there marked maybe_unused, awaiting the same Q8_0-activation GEMM variant that Q5_0 and Q4_0 also queue behind. The row understated the tree and now says what it does. The reader arm, the dequantizer and the CPU dot all landed under #1989 while the cell read INVENTORIED with every stage unset. Adds strix:gpu0 to the fleet table, which predates the box, with its memory measured under two rc leases. hipMallocManaged there is bounded by HOST memory rather than by the firmware carve: a bounded probe that stops at its first failure reached 76 GiB with plain hipMalloc and 27 GiB with hipMallocManaged, against 29.3 GiB host-available. That resolves an ambiguity #2518 could not, because its 58.000 GiB ceiling sat below both the 64.00 GiB carve and the 62 GiB host RAM of the time and so never said which bound it hit. Raising the carve to 96 GiB LOWERED the managed ceiling, because host RAM fell with it. The spec records two corrections against itself rather than applying them silently, because a scope that shrinks without a trace cannot be audited. It first planned a ROCm gather arm and first recorded #3029 as a hard dependency. #3097 landed both the gather and the ROCm codebook header while this was being drafted, so the arm is struck and the dependency is downgraded to a conflict surface. No product code lands here, and no throughput, latency or memory number is claimed. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5-1m [claude-code]
16fa196 to
228bf08
Compare
…OCm keep-quant line The keep-quant enumeration went stale when this row's implementation added IQ4_XS/IQ3_XXS to ROCm's DeviceKeepQuantSupported but touched no docs file, a gap a fresh review of PR mudler#3029 found. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-sonnet-5 [Claude Code]
Record the mudler#3029 conflict resolution and missing IQ3_XXS loader regression before changing code. Issue mudler#1940 retains its broader format debt. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GPT-6 [Codex]
Direct kernel tests do not detect deleting IQ3_XXS from ROCm loader admission. Enter RouteGgufTensor for matrix and expert weights, retaining ragged-shape and switch checks. This closes the missing loader guarantee in mudler#3029 without closing the remaining formats owed by mudler#1940. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GPT-6 [Codex]
The contributor measured 19,333,564,672 bytes, which is about 18.01 GiB. Correct only the mislabeled conversion in mudler#3029 while preserving the raw measurement and all other evidence. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GPT-6 [Codex]
The operator landed mudler#3064 and selected main 08a34c3 for the final mudler#3029 integration. Record that exact target before merging it, retaining the first integration pin. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GPT-6 [Codex]
IQ4_NL reaches the GGUF reader, the CPU dequantizer and the CPU keep-quant dot, and no accelerator multiplies it. On ROCm the refusal is terminal, because the backend is discrete and an unsupported dtype cannot fall back to a host kernel that would follow device pointers. This blocks a shipped artifact rather than a hypothetical one. Every published unsloth/Qwen3.8-Flash-Next-GGUF quant stores 91,465,564,160 elements in IQ4_NL, read from the three shard headers over HTTP range requests: the 20M-entry n-gram table and the 48 ffn_down_exps. #3097 has since made the table readable on ROCm. The experts are still not multipliable, and that is now the whole gap for this encoding on gfx1151. The CUDA half is a variant and not a table entry. IQ4_NL is a 32-element block paired with a Q8_0 activation, where the resident device GEMM quantizes activations to Q8_K over 256-element super-blocks. cuda_quant_dot.cu already says so: DotMXFP4 sits there marked maybe_unused, awaiting the same Q8_0-activation GEMM variant that Q5_0 and Q4_0 also queue behind. The row understated the tree and now says what it does. The reader arm, the dequantizer and the CPU dot all landed under #1989 while the cell read INVENTORIED with every stage unset. Adds strix:gpu0 to the fleet table, which predates the box, with its memory measured under two rc leases. hipMallocManaged there is bounded by HOST memory rather than by the firmware carve: a bounded probe that stops at its first failure reached 76 GiB with plain hipMalloc and 27 GiB with hipMallocManaged, against 29.3 GiB host-available. That resolves an ambiguity #2518 could not, because its 58.000 GiB ceiling sat below both the 64.00 GiB carve and the 62 GiB host RAM of the time and so never said which bound it hit. Raising the carve to 96 GiB LOWERED the managed ceiling, because host RAM fell with it. The spec records two corrections against itself rather than applying them silently, because a scope that shrinks without a trace cannot be audited. It first planned a ROCm gather arm and first recorded #3029 as a hard dependency. #3097 landed both the gather and the ROCm codebook header while this was being drafted, so the arm is struck and the dependency is downgraded to a conflict surface. No product code lands here, and no throughput, latency or memory number is claimed. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5-1m [claude-code]
Issue mudler#1940 says src/vt/rocm/ ports zero I-quant formats, so IQ4_XS and IQ3_XXS still expand to bf16 on a ROCm keep-quant load instead of staying compressed. This lands DotIQ4XS and DotIQ3XXS in rocm_grouped_gemm.hip, adapted from the existing CUDA bodies rather than freshly ported, on both the plain and grouped/MoE arms, and admits both dtypes in DeviceKeepQuantSupported's ROCm case. The spec's FMA-contraction risk is resolved by measurement, not assumption. CUDA's DotIQ4XS needed non-fused float intrinsics to stay bit-exact against the oracle, because nvcc's project-wide flag never reaches .cu files. HIP already compiles with -ffp-contract=off project-wide, and a new bit-exact gate over the same real checkpoint bytes and the same oracle bits CUDA's gate uses confirms plain arithmetic is sufficient on this toolchain, so the port carries no workaround CUDA needed. Three existing tests asserted the prior ROCm behavior by name and go red under the new routing, each for the reason it should: the cross-device table gains both dtypes and a new bit-exact case, the keep-quant loader's exhaustive per-device count moves from 8 to 10, and a residency pin that named issue mudler#1940 splits per-tensor now that one of its two towers keeps. Run on isravale (RX 9060 XT, gfx1200, ROCm 7.2.3) under the GPU file mutex: test_backend_cross_device 41/42 (the one failure, MoeSiluMul, is confirmed pre-existing and unrelated via an independent binary built from the sibling KERNEL-QUANT-CIQ-GEMM-ROCM-RDNA4-w1 worktree reproducing the identical mismatch); test_gguf_keep_quant 52/52; test_gguf_device_fit 24/24; every other ROCm suite green with zero regression. The row's actual acceptance criterion also landed: an end-to-end reload of the real motivating checkpoint, Nail-Qwen3.6-35B-A3B-MTP-IQ4_XS.gguf (19.39 GB, on isravale). Its own header histogram is IQ4_XS/Q5_K/Q6_K only, so it exercises exactly the dtypes this change adds plus the two already supported. It loads, generates coherent tokens, and its resident footprint (~19.33 GiB) matches the on-disk size instead of the ~70 GiB a bf16 expansion would produce -- the fix for the host-RAM SIGSEGV this checkpoint hit before this row, on the artifact that motivated it. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-sonnet-5 [Claude Code]
…OCm keep-quant line The keep-quant enumeration went stale when this row's implementation added IQ4_XS/IQ3_XXS to ROCm's DeviceKeepQuantSupported but touched no docs file, a gap a fresh review of PR mudler#3029 found. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-sonnet-5 [Claude Code]
Record the mudler#3029 conflict resolution and missing IQ3_XXS loader regression before changing code. Issue mudler#1940 retains its broader format debt. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GPT-6 [Codex]
Direct kernel tests do not detect deleting IQ3_XXS from ROCm loader admission. Enter RouteGgufTensor for matrix and expert weights, retaining ragged-shape and switch checks. This closes the missing loader guarantee in mudler#3029 without closing the remaining formats owed by mudler#1940. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GPT-6 [Codex]
The contributor measured 19,333,564,672 bytes, which is about 18.01 GiB. Correct only the mislabeled conversion in mudler#3029 while preserving the raw measurement and all other evidence. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GPT-6 [Codex]
The operator landed mudler#3064 and selected main 08a34c3 for the final mudler#3029 integration. Record that exact target before merging it, retaining the first integration pin. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GPT-6 [Codex]
The existing spec requires a device-byte seal, but the contribution only checks numerical samples. Define the missing gate for mudler#3067. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: Codex:GPT-5 [API]
Compare every byte of all four device tables, including their extents. The snapshot implementation is still missing at this test-first step (mudler#3067). FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: Codex:GPT-5 [API]
Copy each executing device symbol into the complete host snapshot for mudler#3067. Preserve table values and quantized dispatch. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: Codex:GPT-5 [API]
…Q3_XXS coverage A maintainer review found that this branch changes which GGUF formats a ROCm keep-quant load admits while updating no public document and no owning inventory row. The tree carried the capability and no record of it, so a reader asking whether ROCm keeps an IQ4_XS weight compressed had to read the admission switch to find out. The reviewer named `docs/STATUS.md` and `docs/BENCHMARKS.md`. This repository has no `docs/STATUS.md`, and AGENTS.md ties `docs/BENCHMARKS.md` to a benchmark identifier being added, removed, or changing disposition, which this change does not touch. The surface AGENTS.md ties to a quantization surface changing is `docs/FEATURES.md`, and the owning inventory rows are `QUANT-GGUF-IQ4_XS` and `QUANT-GGUF-IQ3_XXS` in `.agents/quantization-matrix.md`. `.agents/kernel-matrix.md` tracks no row for this work and is not an owning surface here. The two device gates are recorded separately because they measured different things. The contributor gate on `gfx1200` covers this landing. The later operator gate on `gfx1151` covers the device-table seal, which is a different scope. Neither reloads the real checkpoint on the repaired head, and the rows say so rather than rounding a historical weight-footprint calculation up to a measured peak RSS. The owed `ROCM-KQUANT-NWARPS-DECODE` re-measurement and the follow-on WMMA row are named rather than dropped. The `R`/`M`/`C`/`E`/`P` columns do not move. `C` already read `Y` from the CPU and CUDA arms, and it says only that native quantized compute is dispatched, without naming a backend. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [Claude Code]
…te reproduction The row's prior device-gate evidence was contributor-reported on an earlier head. Record the operator's independent rerun of the exact same four targets on isravale at the current head (fa39a45), so the row states what the operator itself verified rather than only what was reported to it. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [Claude Code] Claude-Session: https://claude.ai/code/session_01DmM255tHzVaY9VYum3qxLE
… before the IQ4_XS block The new IQ4_XS oracle-dot test cases were inserted inside the "fused MoE gate+up+SwiGLU grouped GEMM" TEST_CASE body, before its closing brace, so the file never compiled: every TEST_CASE after line 4108 was parsed as a nested function definition inside the outer one. Add the missing "}" that closes the fused-MoE case before the IQ4_XS comment block. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:regolo/glm5.2 [maki]
228bf08 to
3b5a7e7
Compare
Row:
KERNEL-QUANT-CIQ-GEMM-ROCM-IQUANT.Closes #3067. #1940 remains open for the owed formats.
Issue #1940 says
src/vt/rocm/ports zero I-quant formats, so an IQ4_XS orIQ3_XXS tensor still expands to bf16 on a ROCm keep-quant load instead of
staying compressed. This lands
DotIQ4XSandDotIQ3XXSinrocm_grouped_gemm.hip, adapted from the existing CUDA bodies rather thanfreshly ported, on both the plain and grouped/MoE arms, and admits both
dtypes in
DeviceKeepQuantSupported's ROCm case. Spec:.agents/specs/kernel-quant-ciq-gemm-rocm-iquant.md(#2996, merged).The spec's one named correctness risk is resolved by measurement, not
assumption: CUDA's
DotIQ4XSneeded non-fused float intrinsics to staybit-exact against the oracle, because nvcc's project-wide
-ffp-contract=offnever reaches
.cufiles. HIP already compiles with that flag project-wide,and a new bit-exact gate over the same real-checkpoint bytes and the same
oracle bits the CUDA gate uses confirms plain arithmetic is sufficient on
this toolchain, so the port carries no workaround CUDA needed.
The contributor reports an end-to-end reload of
the real motivating checkpoint,
Nail-Qwen3.6-35B-A3B-MTP-IQ4_XS.gguf(19.39 GB). It loads, generates coherent tokens, and its calculated weight footprint
(19,333,564,672 bytes, about 18.01 GiB) approximates the on-disk size instead of the ~70 GiB a bf16
expansion would produce — the fix for the host-RAM SIGSEGV this checkpoint
hit on ROCm before this row.
Contributor evidence on the original head, not operator reproduction:
gated on
isravale(RX 9060 XT, gfx1200, ROCm 7.2.3) under the GPU filemutex:
test_backend_cross_device41/42 (the one failure,MoeSiluMul, isthe pre-existing, already-tracked #1954 flake — confirmed unrelated);
test_gguf_keep_quant52/52;test_gguf_device_fit/test_gguf_device_fit_reachgreen; every other ROCm suite green with zero regression on the four
existing k-quant formats.
Owed, named rather than silently dropped: the
ROCM-KQUANT-NWARPS-DECODEre-measurement for these two formats (
PENDING, norocprofv3profilingsetup staged on this box yet — does not block this row, whose own scope is
coverage and correctness); a WMMA/tensor-core tile for these two formats
(follow-on row
KERNEL-QUANT-CIQ-GEMM-ROCM-IQUANT-RDNA4, spec drafted,depends on this PR merging first); the other six formats named in the same
ROCm refusal message (Q4_0/Q2_K/Q3_K/IQ2_XXS/IQ2_S/MXFP4, tracked by #1940).
Maintainer integration and device verification
Candidate
8a7cda269a7254dc849f6401a990c5f2bae98e36preserves thecontributor history and reconciles it with main
08a34c3a. It preservesTenstorrent admission, K-quant tail arguments, and both independent device
test blocks. A loader test now exercises IQ3_XXS matrix and expert admission
through
RouteGgufTensor.The repair for #3067 compares all four complete device codebooks against
their CPU tables. Static extent checks prevent a partial copy from appearing
complete. No quantization values, arithmetic, or dispatch policy changed.
The operator ran the repaired head under lease
886172b3-9d21-4435-a9db-cbf7b2f5dfb6onstrix:gpu0, gfx1151,ROCm 7.2.4. All four CTest targets passed:
test_backend_cross_device,test_gguf_keep_quant,test_gguf_device_fit, andtest_gguf_device_fit_reach.The focused dot and dispatch tests passed 61 assertions. The complete
codebook comparison passed nine assertions.
All eleven independent review mutations failed their intended tests:
six dispatch/codebook/scale mutations and five complete-table-seal mutations.
Every restored source rebuilt and passed its focused tests; zero mutations
survived. The operator also reran the three CPU loader/device-fit suites.
Full host preflight exited 0 with no failed gates, 4/4 changed host translation
units passing, and five disclosed architecture/classification skips.
Explicit path classification, style, and trailer checks supplement that run.
Remaining acceptance gates
The required real-model reload has not been reproduced on the repaired head.
The exact Nail GGUF lacks a recorded repository revision or SHA256 and an
accessible operator location. The contributor's private path is not an
operator-resolved artifact. The checkpoint binding has been requested.
The historical weight-footprint calculation is not measured peak RSS.
Coherent text alone is not a token-ID oracle comparison. Artifact identity,
production reload, token correctness and memory evidence remain pending;
the operator does not claim model acceptance or a speed result from the
four-target device gate. Wider ROCm regression checks and integration with
any newer main also remain to be completed before merge.
FOLLOWING_AGENTS_PROTOCOL
Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-sonnet-5 [Claude Code]
Assisted-by: AGENT:gpt-6 [codex]