You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
PP-QUANT-001 M4: tensor_byte_size and ONE refusal site read TRAITS — closes the #3091-reopen / #3341 class for all 35 ids at once #3432
Parent:#3421 · Slot: 0.69.0 must-carry, after M1. Fixes the #3091 reopen. Mechanism (measured, a672677f4 + the v0.68.0 release asset):QuantizedGGUFTransformer::tensor_byte_size has 11 arms — no IQ*, and no Q3_K or Q5_1 although the crate defines both. Two more private copies exist (convert/q4k_conversion_stats.rs:6, convert/q4k_converter_helpers.rs:20). Public 338 MB repro: unsloth/Qwen3.5-0.8B-GGUFUD-IQ2_XXS → exit 8, type 16. Fix:byte_size(t, n) = n / blck_size(t) * type_size(t), precondition n % blck_size == 0, checked arithmetic, from TRAITS. A tensor whose type has no kernel yet is refused by exactly one function that names tensor, type name and id. Falsifier: byte-size functions keyed on a raw qtype 3 → 1; M3's mixed-qtype fixture loads past tensor_byte_size; contracts/quant-dispatch-v1.yaml ships in the same PR (pv validate 0 failed).
Ĵ: 24 turns [A] — borrowed; estimate.sh aprender pools 0 of 47 ledger rows today, so there is no measured basis.
Plan + evidence: #3427 · design discussion: #3418 · spec PR: #3420
Provenance: bytes and the first 16 hex of each sha256 were measured locally on the downloaded files [V]; the full digests are the Hugging Face LFS oids [X] and agree with the measured prefixes. URLs are pinned to the revision, not main.
Exit for this ticket: with M4 merged, apr run <file> --prompt "2+2=" --max-tokens 8 --no-gpu on both files no longer fails in tensor_byte_size. That is the first failure only: what happens after the byte size resolves (a type with no dequant kernel) must be the single typed refusal naming tensor, type name and id — not a second private list. Generating text from these files is not this ticket's exit; it depends on tier-0 dequant (#3441) and the Gated DeltaNet CPU work.
Pulled forward from 0.69.0 ("must-carry, after M1") to 0.68.2 / P0 (EPIC #3477). This is the concrete fix #3091 (now P0) needs to stop refusing real UD-IQ2_XXS/UD-IQ4_XS Qwen3.5 files — it can no longer wait for the rest of PP-QUANT-001 Phase 1 (#3421) to land first.
Measured 2026-09-18 (main 4a538dd and published 0.68.1, lambda-vector + gx10): after #3114 the loader honours qwen35, but three callers of realizar::gguf::unsupported_architecture_reason still refuse it with the pre-fix text — crates/apr-cli/src/commands/qa_capability.rs:98 (apr qa Capability Match FAIL, 8/12 gates SKIP), parity_refusal.rs:157, ptx_map.rs:441. "ONE refusal site" must mean these three collapse onto the same TRAITS predicate the loader reads, or apr qa keeps failing a model apr run serves. Falsifier: apr qa Qwen3.5-0.8B-Q4_K_M.gguf must not print "NEITHER the CPU nor the GPU backend" — add it to contracts/quant-dispatch-v1.yaml. Priority note: #3091's acceptance is gated on this too (its apr qa cell is red on both hosts).
Activity
noahgift commentedon Sep 17, 2026
Exit fixtures (operator decision 2026-09-17). Two public files from
unsloth/Qwen3.5-0.8B-GGUFat revision6ab461498e2023f6e3c1baea90a8f0fe38ab64d0:apr 0.68.0release assethttps://huggingface.co/unsloth/Qwen3.5-0.8B-GGUF/resolve/6ab461498e2023f6e3c1baea90a8f0fe38ab64d0/Qwen3.5-0.8B-UD-IQ2_XXS.ggufa369165c8ec45a92d55cbad98b5377e2c32ca8dfc824c899d9d05b33b6b53e54tensor_byte_size· type 16https://huggingface.co/unsloth/Qwen3.5-0.8B-GGUF/resolve/6ab461498e2023f6e3c1baea90a8f0fe38ab64d0/Qwen3.5-0.8B-UD-Q4_K_XL.gguf3177ebd67afe4438374da19e690bc1b98756f7e0fea9240e1be404336156a7b5tensor_byte_size· type 23Provenance: bytes and the first 16 hex of each sha256 were measured locally on the downloaded files
[V]; the full digests are the Hugging Face LFS oids[X]and agree with the measured prefixes. URLs are pinned to the revision, notmain.Exit for this ticket: with M4 merged,
apr run <file> --prompt "2+2=" --max-tokens 8 --no-gpuon both files no longer fails intensor_byte_size. That is the first failure only: what happens after the byte size resolves (a type with no dequant kernel) must be the single typed refusal naming tensor, type name and id — not a second private list. Generating text from these files is not this ticket's exit; it depends on tier-0 dequant (#3441) and the Gated DeltaNet CPU work.alfredodeza commentedon Sep 18, 2026
Pulled forward from 0.69.0 ("must-carry, after M1") to 0.68.2 / P0 (EPIC #3477). This is the concrete fix #3091 (now P0) needs to stop refusing real UD-IQ2_XXS/UD-IQ4_XS Qwen3.5 files — it can no longer wait for the rest of PP-QUANT-001 Phase 1 (#3421) to land first.
noahgift commentedon Sep 18, 2026
Measured 2026-09-18 (main 4a538dd and published 0.68.1, lambda-vector + gx10): after #3114 the loader honours
qwen35, but three callers ofrealizar::gguf::unsupported_architecture_reasonstill refuse it with the pre-fix text —crates/apr-cli/src/commands/qa_capability.rs:98(apr qaCapability Match FAIL, 8/12 gates SKIP),parity_refusal.rs:157,ptx_map.rs:441. "ONE refusal site" must mean these three collapse onto the sameTRAITSpredicate the loader reads, orapr qakeeps failing a modelapr runserves. Falsifier:apr qa Qwen3.5-0.8B-Q4_K_M.ggufmust not print "NEITHER the CPU nor the GPU backend" — add it tocontracts/quant-dispatch-v1.yaml. Priority note: #3091's acceptance is gated on this too (itsapr qacell is red on both hosts).test(quant): the loader and the dispatch must agree about every block…
feat(dogfood): model capability ladder — T-2 proves every (architectu…
fix(ladder): a rung that claims only the CPU is not asked whether the…
PMAT-3477: 0.68.2 — Qwen3 CUDA QK-norm restored in the graph and the …