aprender 0.66.0 - the honest-GPU model release
Pre-built CUDA binaries (Linux)
Rebuilt 2026-09-10 14:38Z on the fleet's disposable GPU runners (gx10 aarch64, yoga x86_64) inside rust:1.93.0-bullseye: measured glibc floor GLIBC_2.30 on both assets (objdump -T), so they start on Ubuntu 22.04 (glibc 2.35) and newer; sha256 verified, apr --version → 0.66.0, --features cuda proven in the bytes (libcuda loader present). Earlier native builds needed GLIBC_2.43 and did not start on 22.04.
apr built with --features cuda, built on the fleet's own GPU boxes (aarch64 on gx10, x86_64 on yoga) and smoke-tested on both. The NVIDIA driver (libcuda.so.1) is loaded at runtime; the glibc floor of each asset is printed in its build job's summary.
| target | asset |
|---|---|
| x86_64-unknown-linux-gnu | apr-v0.66.0-x86_64-unknown-linux-gnu-cuda.tar.gz (+ .sha256) |
| aarch64-unknown-linux-gnu | apr-v0.66.0-aarch64-unknown-linux-gnu-cuda.tar.gz (+ .sha256) |
curl -LO https://github.com/paiml/aprender/releases/download/v0.66.0/apr-v0.66.0-x86_64-unknown-linux-gnu-cuda.tar.gz
curl -LO https://github.com/paiml/aprender/releases/download/v0.66.0/apr-v0.66.0-x86_64-unknown-linux-gnu-cuda.tar.gz.sha256
sha256sum -c apr-v0.66.0-x86_64-unknown-linux-gnu-cuda.tar.gz.sha256
tar xzf apr-v0.66.0-x86_64-unknown-linux-gnu-cuda.tar.gz && ./apr-v0.66.0-x86_64-unknown-linux-gnu-cuda/apr --version
From source instead: cargo install aprender --version 0.66.0 --features cuda (the default cargo install aprender is CPU only).
The honest-GPU model release. Milestone 0.66.0 was narrowed by the operator
on 2026-09-08 to the two P0 defects a user hits first, plus the CI change that
makes the GPU crates' default-feature tests part of the required check. The
PP-066 obligation rows (backend registry, release assets, installer, C0 gates)
moved to 0.68.0 on 2026-09-09; no speed number ships in 0.66 — instruments
and speed ship later (PP-066 claims ratchet).
Fixed
apr chatanswered with the toy demo model for a sharded SafeTensors
index (#3022, #3024; PP-066 row F-1, PMAT-1080, #3050).Path::extension()
onmodel.safetensors.index.json— the exact fileapr pullwrites and then
recommends — isjson, which matched no arm and fell through to the demo
model while the banner still printed the real path. One decision
(resolve_chat_format: suffix, then magic bytes, then a refusal with exit 6)
replaces the two that never compared notes;Demois no longer an outcome for
a path that exists. Six-row case table, both polarities; before/after records
inevidence/format-honesty/.- GPU inference computed a different function than CPU for Qwen2.5-1.5B
(hidden 1536, 12 heads, 2 KV heads) (#2971, #3017; PP-066 rows L0-1a/L0-1b,
#3026, #3032). Every model inevidence/models/supported.yamlnow computes the
same function on GPU as on CPU over at least 64 positions or the GPU refuses
it (C14,scripts/check_model_parity.sh --manifest;SKIP_PARITY_GATEis a
printed override that never passes).apr parity --per-opnames the first
diverging op; for the 1.5B it was the post-FFN residual in layer 26 and the CPU
Q8_K reference was the inaccurate side. Measured green on lambda (sm_89) and
gx10 (sm_121); records underevidence/parity/l0-1/. - apr-cli's integration surface went 14 red to 0 on a clean
main(#3051,
#3053) — three root causes, each fixed as a guard; the generated 28 MB
test.apris untracked and the race it hid is fixed (#3059). mainwas red under pmat 3.39.0 (#3028, #3030): twelve legacy nested
subtask records the new validator refuses as duplicate ids are gone, and id
uniqueness is checked in-repo, independent of the analyser pin.- Silicon Nightly tested a package that has never existed (#2793,
paiml/infra#361).
Added
aprender-gpuandaprender-cuda-edgerun inworkspace-test(#3063;
T0 of the NVIDIA CUDA Rust spec, #3062). Both aredefault = []with no
build.rs; their default-feature tests had never been in a required check.
Thecuda-gated modules (driver, kernels, memory, ptx) still run only under
--features cuda(#3067).- Build-system enforcement (BSE-001 M2, BSE-17) (#3037, #3039, #3044): a
fail-closed compositemake gatepinned toorigin/main, theguard_tree
dispatcher andguard-treejob,predict_merge, sorted-insert for the
roadmap, asserted tool pins; ratchet verdicts are a function of (comparand,
merge) only; two-tier tests — quick on the PR, full behind it. - PP-066 guards — G-10: the shipped-path ratchet runs under one pinned
analyser with a stamped baseline (#3011); G-11: row PRs never write the DAG,
roadmap, spec block or README counts — DAG status is derived (#3020, #3012);
G-4/G-6/C0-7: the obligation DAG as data with invariants in CI, the
roadmap-additive guard, the receipt terminal marker (#2987, #2981). - PR review receipts judged from the base (#2985, C0-5): one base-owned
quorum workflow onpull_request_targetandmerge_group.
Documentation
- PP-066 release spec v1.5 → v1.6 with the S0 discovery ledger (23 premises
measured), the 0.66 parity report and the 0.65.2 post-publish host receipts
(parity NO-GO, measured) (#2872, #2875, #2868, #2871, #3000, #2858).
Release receipt: docs/audits/impl-PMAT-1096-receipt.md · quorum record: docs/audits/quorum-PMAT-1096-2971.json
🤖 Generated with Claude Code