Skip to content

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 05 Aug 04:37
· 55 commits to main since this release

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, matching plan; the governed 8bit path still requires measured
    support.
  • Structured mtp_sidecar_bits runtime 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.json with the checkpoint; publication preparation and release
    audit independently revalidate it.
  • Completed capture directories are immutable (completion.json present → no overwrite), and
    every committed resume chunk is validated against checkpoint row accounting.
  • scripts/hf_to_mlx_bf16.py requires --revision <40-char SHA>, converts into a staging
    directory, atomically renames on success, and writes axquant_source.json with 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_glu 3-D weights now classify as expert.
    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/refine inject 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-exec runtime 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 inflating effective_tokens_per_forward when some trials lack counters.
  • prepare_development_model_card sanitizes 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-bits rejects sub-policy-floor values (2/3) at parse time instead of failing
    late in planning.
  • scripts/hf_to_mlx_bf16.py writes 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/logs packages 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.