v1.2.0
Added
analyze --capture-points: measured probing on plain dense backbones (MiniCPM5, Qwen3 dense,
Mistral, …) via--capture-points output; the default("output", "hidden")fails closed
with a hint on those layouts.refine --lm-head-floor, matchingplan; the governed8bitpath still requires measured
support.- Structured
mtp_sidecar_bitsruntime contracts in copied (byte-preserved) MTP sidecar
metadata. - New evaluation task categories: JSON, tool-use, multilingual, and long-context.
Changed
- Calibration evidence is checksum-bound end to end: AWQ/GPTQ analysis records the
activation-capture manifest digest, tokenized-cache manifest digest, cache key, and dataset
ID; the planner carries the bindings; conversion rejects a mismatched capture and packages
activation_capture_manifest.jsonwith the checkpoint; publication preparation and release
audit independently revalidate it. - Completed capture directories are immutable (
completion.jsonpresent → no overwrite), and
every committed resume chunk is validated against checkpoint row accounting. scripts/hf_to_mlx_bf16.pyrequires--revision <40-char SHA>, converts into a staging
directory, atomically renames on success, and writesaxquant_source.jsonwith the immutable
source identity.- Mixed-precision plans are labeled by target BPW instead of inheriting a flat storage-class
name.
Fixed
- Qwen3-Next adapter: fused
switch_mlp/switch_glu3-D weights now classify asexpert.
Pre-fix artifacts may have retained most expert weights at BF16 and must be regenerated. - Capture resume now fails closed on binding drift (model, cache,
--max-rows, segments, token
budget) instead of silently mixing runs. - AWQ/GPTQ convert-time refinement no longer crashes on bfloat16 module weights (the default
dtype of real checkpoints). - Affine/DWQ/AWQ quantizers build the per-group grid from the float16-stored scale (rounded
up, never down), restoring the documented ≤ scale/2 per-element round-trip bound. plan/refineinject BF16 for policy-preserved tensors (norms, LM head, vision) when 16 is
omitted from--bits, matching manual planning, instead of failing per tensor; manual
tied-weight harmonization now refreshes scale/outlier strategies and stored BPW.- Feasibility audits require MTP evidence only from MTP-declaring architectures, making the
Qwen3-Next direct-track N0 gate satisfiable with tool-produced reports. - Measured probe/KV-probe runs no longer abort when the calibration token count leaves a
single-token trailing replay batch. - The
kv-execruntime check now fails when executed per-layer KV bits differ from the plan
(previously reported but not enforced), and benchmark trial timeouts kill the whole
AX Engine process group instead of orphaning the generation. - MTP benchmark aggregates pair numerators and denominators over counter-reporting trials
only, instead of inflatingeffective_tokens_per_forwardwhen some trials lack counters. prepare_development_model_cardsanitizes the manifest's calibration reference along with
the plan's (local-path leak that also broke the release-audit M1 equality invariant).- Release audit records issues instead of crashing on wheels missing
axquant/__init__.py,
corrupt measurement-set or calibration files, and non-scalar benchmark metadata; hardware
registry checks record all-failed raw benchmarks instead of raising. --kv-default-bitsrejects sub-policy-floor values (2/3) at parse time instead of failing
late in planning.scripts/hf_to_mlx_bf16.pywrites the lm_head-synthesized shard aside and swaps atomically;
saving onto the mmap-backed source silently corrupted every tensor in the shard.- Ext4T scripts: union-sync verification compares content only (mtime-only differences no
longer deadlock syncs), empty-array expansions no longer crash stock macOS bash 3.2 under
set -u, shell-config marker blocks no longer corrupt an rc file lacking a trailing
newline, live log/publish directories are moved aside before migrate-and-delete, and
--status/argument handling exit correctly. - Architecture-gate errors and inventory warnings name the adapter registry instead of
hardcoding Qwen 3.6 (the checks were already registry-wide). - Ext4T planning treats
axquant/logspackages as host-local: layout moves only — no
cross-host mirroring, duplicate deletion, or fingerprint-driven renames of mutable log
trees; index loading reports the exact file and line for corrupt or incomplete records.
See the v1.1.x → v1.2.0 migration guide for action items.