Skip to content

apr parity exits 5 ("parity disproven") when CUDA init REFUSES the model's quant type (F16/IQ*, PMAT-785): a tool limit read as a model defect; turns pre-publish dogfood C14 NO-GO #3685

Closed

Description

@noahgift

Measured 2026-09-21 09:40Z (cop, pre-publish dogfood run early on the #3669 batch head 55b123f2f)

scripts/dogfood.sh --phase pre-publish → VERDICT NO-GO. Its only real FAIL:

[FAIL] model-parity   C14: FAIL qwen2.5-0.5b-instruct: apr parity exited non-zero (error: Validation failed: CUDA init failed: Capability mismatch for 'qwen2': missing GPU support for …)

Reproduced directly with the dogfood's cuda build (apr 0.68.2 (55b123f2f), --features cuda):

apr parity ~/models/Qwen2.5-0.5B-Instruct-f16.gguf    -> exit 5
error: Validation failed: CUDA init failed: Capability mismatch for 'qwen2': missing GPU support for [GPU GEMV kernel for the model's quantization type]. Model carries a quant type without a verified GPU kernel (e.g. Q5_1/Q8_1/Q2_K/Q3_K/Q8_K/F16/IQ*). It will use CPU inference to avoid silent Q4_K-decode garbage (PMAT-785). …

apr parity's own banner says: "Exit: 0 parity held · 5 parity disproven · 12 REFUSED (this build cannot measure that architecture)". Nothing was compared: the GPU side was refused before a single logit. Exit 5 claims a disproof that never happened. check_model_parity.sh (PMAT-1098) reads exit 12 plus parity: REFUSED architecture= as UNMEASURED-TOOL (a REPORT), and any other non-zero exit as a FAIL.

Why it surfaced today: ~/models/Qwen2.5-0.5B-Instruct-{IQ3_M,IQ4_XS}.gguf (06:05Z) and …-f16.gguf (07:45Z) were added for other rows' work. There's no Q4_K_M twin, so resolve_model_file picks a non-GPU quant. On 0.68.2 this manifest name had no file here (C14 REPORT, measured=5). The defect is older than the file. The file only made it observable, and the release-commit dogfood on this host will hit it.

done_when

  • apr parity <model> whose quant type the CUDA capability gate refuses (PMAT-785) prints ONE stderr line parity: REFUSED architecture=<arch> quant=<ggml type> reason=<the capability message> and exits 12, never 5. Exit 5 stays reserved for a comparison that ran and failed.
  • a test that RED-turns: a refused quant type gives 12 plus the mark; a supported one never takes that path. Mutation-proved (map the refusal back to 5 and the test fails)
  • bash scripts/check_model_parity.sh --manifest --apr <cuda build> on this host: the qwen2.5-0.5b-instruct row is UNMEASURED-TOOL (report), every Q4_K_M row still PASS, and the must-RED twin still turns C14 RED
  • scripts/dogfood.sh --phase pre-publish model-parity row is not FAIL on this host

Blocks the 0.69.0 T-2 preflight and the release-commit dogfood. Own small PR, not folded into #3669 (its CI is already running). — aprender-04 (cop)

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