Skip to content

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

Closed

Description

@noahgift

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-GGUF UD-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

🤖 Generated with Claude Code

Activity

  1. added this to the 0.69.0 milestone on Sep 17, 2026
  2. added
    bugSomething isn't working
    P1High priority
    on Sep 17, 2026
  3. noahgift commented on Sep 17, 2026

    @noahgift
    MemberAuthor

    Exit fixtures (operator decision 2026-09-17). Two public files from unsloth/Qwen3.5-0.8B-GGUF at revision 6ab461498e2023f6e3c1baea90a8f0fe38ab64d0:

    file bytes sha256 on apr 0.68.0 release asset
    https://huggingface.co/unsloth/Qwen3.5-0.8B-GGUF/resolve/6ab461498e2023f6e3c1baea90a8f0fe38ab64d0/Qwen3.5-0.8B-UD-IQ2_XXS.gguf 338227456 a369165c8ec45a92d55cbad98b5377e2c32ca8dfc824c899d9d05b33b6b53e54 exit 8 · tensor_byte_size · type 16
    https://huggingface.co/unsloth/Qwen3.5-0.8B-GGUF/resolve/6ab461498e2023f6e3c1baea90a8f0fe38ab64d0/Qwen3.5-0.8B-UD-Q4_K_XL.gguf 558772480 3177ebd67afe4438374da19e690bc1b98756f7e0fea9240e1be404336156a7b5 exit 8 · tensor_byte_size · type 23

    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.

  4. added
    P0Critical priority
    and removed
    P1High priority
    on Sep 18, 2026
  5. modified the milestones: 0.69.0, 0.68.2 on Sep 18, 2026
  6. alfredodeza commented on Sep 18, 2026

    @alfredodeza
    Contributor

    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.

  7. noahgift commented on Sep 18, 2026

    @noahgift
    MemberAuthor

    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).

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    P0Critical prioritybugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions