diff --git a/CHANGELOG.md b/CHANGELOG.md index e970cc4fc4..98e5916b49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,55 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.68.2] - 2026-09-19 + +0.68.2 is an interrupt release for Qwen3 and Qwen3.5 (EPIC #3477). Dense Qwen3 produced garbage on CUDA in 0.68.1 because two fast paths dropped the per-head QK-norm — the manual decode graph never recorded the kernel (#3413 A) and the batched prefill never applied it (#3413 B) — and the CPU-vs-GPU guard could not see either because it probed a path generation does not use (#3413 C). All three are fixed and the guard now judges the real prefill path; a fourth finding (FP8 batched prefill fails parity on QK-norm models, #3483) is mitigated by routing those models to the serial prefill with FP8 off. Qwen3.5 real-world files (unsloth UD-IQ2_XXS / IQ4_XS) load and run on the CPU (#3432, #3091), and `apr qa` certifies a CPU-only architecture instead of aborting. Qwen3.5 now also runs on the GPU: the hybrid Gated DeltaNet layers execute on CUDA (#3090, #3517) — nine device kernels in crates/aprender-gpu/src/kernels/gdn/ with host-reference tests, and the device forward is held to the CPU forward per layer against exact arithmetic (QHF-GPU-008) and end to end on argmax and a cosine floor (QHF-GPU-009), with no silent CPU fallback (QE2E-DEV-008). The dense sizes 4B/9B/27B were wrong on every backend because the loader read a bare `block_count` key that no GGUF carries and every file got 24 layers (#3346); the loader now reads `{arch}.block_count`, and the Gated DeltaNet GQA head mapping (32 or 48 value heads over 16 key heads) is the ggml tiled order llama.cpp converts to, on the CPU and in the CUDA kernel (#3527, #3510) — Qwen3.5 0.8B/2B/4B/9B/27B all answer the golden set on CPU and CUDA on both fleet GPUs. This replaces the 2026-09-18 plan to carry #3090 to 0.69.0 as a dated non-goal; on 2026-09-19 the operator ruled that GPU support up to 27B is required for this release (35B is tracked for post-0.70). The model-capability ladder (contracts/model-capability-ladder-v1.yaml) is green on lambda (sm_89) and gx10 (sm_121) at the cut, including the five Qwen3.5 rungs on cuda (receipts: evidence/dogfood/models/0.68.2/{lambda,gx10}.json); Qwen3-8B's optional rung stays optional pending the golden thinking-budget harness fix (#3486). + +### Added + +- feat(ont): ONT-6 — one Verdict lattice, Kani-proved; per-repo arming; exit-vocabulary mapping (PMAT-3451) (#3463) +- feat(ont): ONT-2b — Σ with entity_types and extractors, and a symbol-level check on formal: (PMAT-3471) (#3472) +- feat(dogfood): model capability ladder — T-2 proves every (architecture, backend, silicon) triple per host; RED at 4a538ddef on both GPUs (#3477) (#3479) + +### Fixed +- fix(guard): R-2 close-issue guard now fails closed on the #3400 landmine (#3497) + +- fix(publish): preflight R6 judges the cycle, not the shape (0.68.1 T-4 stop, #3468) (#3469) +- fix(ladder): a rung that claims only the CPU is not asked whether the GPU can run it (#3477) (#3481) + +### Changed +- ci(pack): workspace-test as a 3-shard matrix across intel/gx10/yoga with a fan-in check; explicit commands shard; mini-m4 gets its first lane (PACK-001) (#3488) +- PMAT-3487 / ONT-4: typed relations — a contract's relations: block (refines · supersedes · contradicts · depends_on) is a gate; pv lint --gate relations, armed; legacy metadata.depends_on counted (354 edges, 8 unresolved) and ratcheted, never rewritten (#3489) +- PMAT-3500 / ONT-4b: pv extract (pv-contract) → contracts.nt; the in-house shapes validator over the SHACL-Core subset of §3.6; pv lint --gate shapes with the plant fired every run (#3501) +- contracts(qwen35-gpu): GDN-on-device obligations + cuda claimed on the Qwen3.5 ladder rung — RED until #3090's path is measured on both hosts (#3477) (#3502) +- docs(audit): PMAT-3477 receipt — #3090 GPU required, not a non-goal (decision 2026-09-19) (#3503) +- ci: ONT-4/ONT-4b gate tests were dark — wire relations + shapes gate tests into CI (#3477) (#3504) +- ladder: receipt rung rows carry the measured sha256 beside sha_ok (ONT-4c1) (#3506) (#3507) +- ladder: per-rung hosts: mechanism + four required dense Qwen3.5 rungs 2B/4B/9B/27B with measured sha256 (#3510) (#3511) +- contracts(qwen35-gpu): QHF-GPU-008 judged against exact arithmetic, QHF-GPU-009 end-to-end argmax + cosine floor vs production (#3090) (#3514) +- ONT-001 §3.7: extract:json — a tool's own --json output is a shaped entity under pv lint --gate shapes (Refs PMAT-3515) (#3516) +- PMAT-3477: Qwen3.5 (Gated DeltaNet hybrid) runs on CUDA — nine device kernels, Qwen35CudaModel, refusal sites lifted, apr run/chat/qa route to the GPU (#3090) (#3517) +- ci: guard_tree reads GitHub with the job token, not the runner's shared operator login (infra#721) (#3520) +- evidence(ladder): 0.68.1 receipts re-measured at main a6f54e84c on both hosts — eight rungs with sha256, RED by construction on Qwen3.5 (#3510) (#3523) +- PMAT-3477: Qwen3.5 4B/9B/27B on CPU and CUDA — block_count loader fix + Gated DeltaNet GQA (tiled head mapping) (#3527) +- pv contradicted itself about metadata:, and entity.properties was read by nothing — both apex-measured defects fixed (Refs PMAT-3529) (#3530) +- PMAT-3508 / ONT-4c1: model receipts as focus nodes — extract:gguf + extract:apr-model, the ladder rungs as model:Model, resolves: receipt over the tracked ladder receipts by measured sha256, and arming per shape: ladder-measured armed, ladder-green reported until the bump arms it (#3526) +- PMAT-3477: CB-200 back under its baseline — 5 definitions lifted to grade B by extraction, no behaviour change (0.68.2 T-2 preflight) (#3533) +- PMAT-3477: apr parity measures the Qwen3.5 hybrid on CPU vs CUDA (C14) — hybrid arm, measured threshold basis, K-quant resolver (#3534) +- §11.1 + check_pr_ont_delta: the docs/specifications sink is the release spec, not every design spec — three maintainer PRs were red for a delta that did not exist; the predicate gets its self-test (Refs PMAT-3535) (#3536) +- ONT-4b2: extract:code + extract:lean as focus nodes; 16 of the ONT-0 table's 32 W3C SHACL-Core cases vendored in the gate, 16 accounted for by excluding form; the pinned oracle differential out of it (Refs PMAT-3509) (#3528) + +- APEX-2b: extended-Wilkinson tick placement (Talbot, Lin & Hanrahan 2010) with a CRAN-golden set that catches the paper's own erratum — NEW crates/aprender-viz/src/breaks.rs (pub fn extended, extended_loose; Q_DEFAULT, W_DEFAULT=[0.25,0.2,0.5,0.05] per the reference code, not the prose), tests/breaks_golden.rs (44 tests: 36 goldens, 6 properties, anti-vacuity floor, W_DEFAULT-swap mutation), fixtures/breaks/{manifest.json, README.md (R transcription, verbatim), generate.py}; EDITS Cargo.toml (+libm), src/lib.rs (+pub mod breaks), Cargo.lock; no renderer change, no new rendering dep (#3259) +- APEX-2a: deterministic render — svg_identical from SVG bytes on X64+ARM64; NEW viz manifest.rs/text.rs/render_determinism.rs (EV-2b breaks as ticks), ci determinism+compare jobs, libm-ban-live.sh; EDITS .clippy.toml (libm bans), breaks.rs powi->sq, svg/lib/scale/plots (#3273) +- release: 0.68.1 (#3450) +- PMAT-3445: no tag while the milestone being cut holds an open item — check_milestone_cut.sh at the freeze and before the tag (#3455) +- ci(b2-gpu): aprender-gpu lib tests on hardware at the tag (0.68.1 chain, rule 14) (#3467) +- docs(release): v0.68.1 cascade dry-run receipt (T-4, committed before the first upload) (#3470) +- docs(release): v0.68.1 SHIPPED — cascade timestamps, install receipts, ledger record, audit interval (#3473) +- docs(spec): APR-RELEASE-001 revision 2026-09-17 — fan-out by construction, B2 split, unattended cascade; 0.68.1 SHIPPED (#3474) +- ledger: clean-room chain at -j8 — 3877 s → 1474 s on v0.68.1, same tests, peak RSS at the 48g ceiling (#3475 lever a) (#3476) +- PMAT-3477: 0.68.2 — Qwen3 CUDA QK-norm restored in the graph and the batched prefill, FP8 prefill gated for QK-norm models, F2 guard judges the real prefill path; Qwen3.5 real IQ files load and run; apr qa certifies CPU-only qwen35 (#3413, #3432, #3091) (#3484) + ## [0.68.1] - 2026-09-17 **The crates.io release of the 0.68 line.** `v0.68.0` is a GitHub-only release (tag and binaries stand; `install.sh` verified on x86_64 and aarch64) — its clean-room on the tag passed A0–B1 for the first time ever on a tag and stopped at B2: lib tests in `aprender-core` and `aprender-test-showcase` named path-only dev-dependencies that `cargo publish` deletes (#3425). 0.68.1 carries that fix — the tests moved out of `src/` to targets the published crates do not carry, all 72 lib-test binaries build in published form — plus the two infra gate repairs that made the chain provable (infra#650 tag ref materialized, infra#652 A1 `[patch.crates-io]` overlay at the tag). Everything else is 0.68.0: Qwen 3.5 on the CPU, the one-line installer, the release-train gates. diff --git a/Cargo.lock b/Cargo.lock index e99d1f5de4..358162b9af 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -248,7 +248,7 @@ dependencies = [ [[package]] name = "apr-cli" -version = "0.68.1" +version = "0.68.2" dependencies = [ "anyhow", "aprender-cgp", @@ -321,7 +321,7 @@ dependencies = [ [[package]] name = "apr-format" -version = "0.68.1" +version = "0.68.2" dependencies = [ "bincode", "cargo_metadata", @@ -339,7 +339,7 @@ dependencies = [ [[package]] name = "aprender" -version = "0.68.1" +version = "0.68.2" dependencies = [ "apr-cli", "aprender-core", @@ -347,7 +347,7 @@ dependencies = [ [[package]] name = "aprender-bench-compute" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-core", "criterion 0.7.0", @@ -356,7 +356,7 @@ dependencies = [ [[package]] name = "aprender-bench-tokenizer" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-core", "criterion 0.7.0", @@ -365,7 +365,7 @@ dependencies = [ [[package]] name = "aprender-cbtop" -version = "0.68.1" +version = "0.68.2" dependencies = [ "anyhow", "aprender-common", @@ -390,7 +390,7 @@ dependencies = [ [[package]] name = "aprender-cgp" -version = "0.68.1" +version = "0.68.2" dependencies = [ "anyhow", "aprender-gpu", @@ -410,7 +410,7 @@ dependencies = [ [[package]] name = "aprender-common" -version = "0.68.1" +version = "0.68.2" dependencies = [ "lz4_flex 0.11.6", "zstd", @@ -418,7 +418,7 @@ dependencies = [ [[package]] name = "aprender-compute" -version = "0.68.1" +version = "0.68.2" dependencies = [ "anyhow", "aprender-contracts-macros", @@ -467,7 +467,7 @@ dependencies = [ [[package]] name = "aprender-compute-xtask" -version = "0.68.1" +version = "0.68.2" dependencies = [ "anyhow", "bashrs", @@ -481,7 +481,7 @@ dependencies = [ [[package]] name = "aprender-contracts" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-contracts-macros", "criterion 0.5.1", @@ -499,7 +499,7 @@ dependencies = [ [[package]] name = "aprender-contracts-cli" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-contracts", "clap", @@ -512,7 +512,7 @@ dependencies = [ [[package]] name = "aprender-contracts-macros" -version = "0.68.1" +version = "0.68.2" dependencies = [ "proc-macro2", "quote", @@ -522,7 +522,7 @@ dependencies = [ [[package]] name = "aprender-contrastive-data" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-contracts-macros", "aprender-rand", @@ -537,7 +537,7 @@ dependencies = [ [[package]] name = "aprender-core" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aes-gcm", "alsa", @@ -591,7 +591,7 @@ dependencies = [ [[package]] name = "aprender-cuda-edge" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-gpu", "proptest", @@ -602,7 +602,7 @@ dependencies = [ [[package]] name = "aprender-cupti" -version = "0.68.1" +version = "0.68.2" dependencies = [ "bindgen", "bitflags 2.13.0", @@ -612,7 +612,7 @@ dependencies = [ [[package]] name = "aprender-data" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aes-gcm", "aprender-test-lib", @@ -664,7 +664,7 @@ dependencies = [ [[package]] name = "aprender-db" -version = "0.68.1" +version = "0.68.2" dependencies = [ "anyhow", "aprender-common", @@ -709,7 +709,7 @@ dependencies = [ [[package]] name = "aprender-distribute" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-compute", "aprender-db", @@ -739,7 +739,7 @@ dependencies = [ [[package]] name = "aprender-explain" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-gpu", "aprender-present-core", @@ -757,7 +757,7 @@ dependencies = [ [[package]] name = "aprender-fft" -version = "0.68.1" +version = "0.68.2" dependencies = [ "criterion 0.7.0", "proptest", @@ -766,7 +766,7 @@ dependencies = [ [[package]] name = "aprender-gemm-codegen" -version = "0.68.1" +version = "0.68.2" dependencies = [ "proc-macro2", "quote", @@ -775,7 +775,7 @@ dependencies = [ [[package]] name = "aprender-gpu" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-common", "aprender-simulate", @@ -793,7 +793,7 @@ dependencies = [ [[package]] name = "aprender-graph" -version = "0.68.1" +version = "0.68.2" dependencies = [ "anyhow", "aprender-compute", @@ -814,7 +814,7 @@ dependencies = [ [[package]] name = "aprender-image" -version = "0.68.1" +version = "0.68.2" dependencies = [ "criterion 0.7.0", "proptest", @@ -823,7 +823,7 @@ dependencies = [ [[package]] name = "aprender-mcp" -version = "0.68.1" +version = "0.68.2" dependencies = [ "anyhow", "inventory", @@ -837,7 +837,7 @@ dependencies = [ [[package]] name = "aprender-monte-carlo" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender", "assert_cmd", @@ -856,7 +856,7 @@ dependencies = [ [[package]] name = "aprender-orchestrate" -version = "0.68.1" +version = "0.68.2" dependencies = [ "anyhow", "aprender-common", @@ -926,7 +926,7 @@ dependencies = [ [[package]] name = "aprender-present-cli" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-present-yaml", "clap", @@ -939,7 +939,7 @@ dependencies = [ [[package]] name = "aprender-present-core" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-contracts-macros", "criterion 0.7.0", @@ -951,7 +951,7 @@ dependencies = [ [[package]] name = "aprender-present-layout" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-present-core", "criterion 0.7.0", @@ -962,7 +962,7 @@ dependencies = [ [[package]] name = "aprender-present-lib" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-contracts", "aprender-present-core", @@ -991,7 +991,7 @@ dependencies = [ [[package]] name = "aprender-present-terminal" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-present-core", "bitvec", @@ -1011,7 +1011,7 @@ dependencies = [ [[package]] name = "aprender-present-test" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-present-core", "aprender-present-test-macros", @@ -1022,7 +1022,7 @@ dependencies = [ [[package]] name = "aprender-present-test-macros" -version = "0.68.1" +version = "0.68.2" dependencies = [ "proc-macro2", "quote", @@ -1031,7 +1031,7 @@ dependencies = [ [[package]] name = "aprender-present-widgets" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-present-core", "aprender-present-yaml", @@ -1043,7 +1043,7 @@ dependencies = [ [[package]] name = "aprender-present-yaml" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-present-core", "proptest", @@ -1053,7 +1053,7 @@ dependencies = [ [[package]] name = "aprender-profile" -version = "0.68.1" +version = "0.68.2" dependencies = [ "addr2line 0.25.1", "anyhow", @@ -1105,7 +1105,7 @@ dependencies = [ [[package]] name = "aprender-profile-core" -version = "0.68.1" +version = "0.68.2" dependencies = [ "hex", "serde", @@ -1115,7 +1115,7 @@ dependencies = [ [[package]] name = "aprender-ptx-debug" -version = "0.68.1" +version = "0.68.2" dependencies = [ "clap", "proptest", @@ -1124,7 +1124,7 @@ dependencies = [ [[package]] name = "aprender-qa-certify" -version = "0.68.1" +version = "0.68.2" dependencies = [ "chrono", "clap", @@ -1135,7 +1135,7 @@ dependencies = [ [[package]] name = "aprender-qa-cli" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-qa-certify", "aprender-qa-gen", @@ -1154,7 +1154,7 @@ dependencies = [ [[package]] name = "aprender-qa-gen" -version = "0.68.1" +version = "0.68.2" dependencies = [ "anyhow", "chrono", @@ -1171,7 +1171,7 @@ dependencies = [ [[package]] name = "aprender-qa-report" -version = "0.68.1" +version = "0.68.2" dependencies = [ "anyhow", "aprender-qa-gen", @@ -1189,7 +1189,7 @@ dependencies = [ [[package]] name = "aprender-qa-runner" -version = "0.68.1" +version = "0.68.2" dependencies = [ "anyhow", "aprender-qa-gen", @@ -1214,14 +1214,14 @@ dependencies = [ [[package]] name = "aprender-quant" -version = "0.68.1" +version = "0.68.2" dependencies = [ "half", ] [[package]] name = "aprender-rag" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-common", "aprender-compute", @@ -1249,7 +1249,7 @@ dependencies = [ [[package]] name = "aprender-rag-cli" -version = "0.68.1" +version = "0.68.2" dependencies = [ "anyhow", "aprender-rag", @@ -1267,7 +1267,7 @@ dependencies = [ [[package]] name = "aprender-rand" -version = "0.68.1" +version = "0.68.2" dependencies = [ "criterion 0.7.0", "proptest", @@ -1276,7 +1276,7 @@ dependencies = [ [[package]] name = "aprender-registry" -version = "0.68.1" +version = "0.68.2" dependencies = [ "anyhow", "aprender-core", @@ -1306,7 +1306,7 @@ dependencies = [ [[package]] name = "aprender-serve" -version = "0.68.1" +version = "0.68.2" dependencies = [ "anyhow", "approx", @@ -1374,7 +1374,7 @@ dependencies = [ [[package]] name = "aprender-shell" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-core", "clap", @@ -1389,7 +1389,7 @@ dependencies = [ [[package]] name = "aprender-simulate" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-contracts", "aprender-contracts-macros", @@ -1429,7 +1429,7 @@ dependencies = [ [[package]] name = "aprender-solve" -version = "0.68.1" +version = "0.68.2" dependencies = [ "criterion 0.7.0", "half", @@ -1439,7 +1439,7 @@ dependencies = [ [[package]] name = "aprender-sparse" -version = "0.68.1" +version = "0.68.2" dependencies = [ "criterion 0.7.0", "proptest", @@ -1448,7 +1448,7 @@ dependencies = [ [[package]] name = "aprender-tensor" -version = "0.68.1" +version = "0.68.2" dependencies = [ "criterion 0.7.0", "proptest", @@ -1457,7 +1457,7 @@ dependencies = [ [[package]] name = "aprender-test-cli" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-test-lib", "assert_cmd", @@ -1485,7 +1485,7 @@ dependencies = [ [[package]] name = "aprender-test-derive" -version = "0.68.1" +version = "0.68.2" dependencies = [ "proc-macro2", "quote", @@ -1495,7 +1495,7 @@ dependencies = [ [[package]] name = "aprender-test-js-gen" -version = "0.68.1" +version = "0.68.2" dependencies = [ "blake3", "chrono", @@ -1511,7 +1511,7 @@ dependencies = [ [[package]] name = "aprender-test-lib" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-compute", "aprender-present-core", @@ -1557,7 +1557,7 @@ dependencies = [ [[package]] name = "aprender-test-showcase" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-present-terminal", "aprender-test-lib", @@ -1574,7 +1574,7 @@ dependencies = [ [[package]] name = "aprender-train" -version = "0.68.1" +version = "0.68.2" dependencies = [ "approx", "aprender-common", @@ -1643,7 +1643,7 @@ dependencies = [ [[package]] name = "aprender-train-bench" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-train", "aprender-train-common", @@ -1660,7 +1660,7 @@ dependencies = [ [[package]] name = "aprender-train-common" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-viz", "clap", @@ -1672,7 +1672,7 @@ dependencies = [ [[package]] name = "aprender-train-distill" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-train", "aprender-train-common", @@ -1693,7 +1693,7 @@ dependencies = [ [[package]] name = "aprender-train-inspect" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-train", "aprender-train-common", @@ -1709,7 +1709,7 @@ dependencies = [ [[package]] name = "aprender-train-lora" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-train", "aprender-train-common", @@ -1725,7 +1725,7 @@ dependencies = [ [[package]] name = "aprender-train-shell" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-train", "aprender-train-common", @@ -1741,7 +1741,7 @@ dependencies = [ [[package]] name = "aprender-train-wasm" -version = "0.68.1" +version = "0.68.2" dependencies = [ "proptest", "serde", @@ -1752,7 +1752,7 @@ dependencies = [ [[package]] name = "aprender-tsp" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender", "assert_cmd", @@ -1767,7 +1767,7 @@ dependencies = [ [[package]] name = "aprender-verify" -version = "0.68.1" +version = "0.68.2" dependencies = [ "chrono", "criterion 0.5.1", @@ -1779,7 +1779,7 @@ dependencies = [ [[package]] name = "aprender-verify-ml" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-compute", "aprender-core", @@ -1809,7 +1809,7 @@ dependencies = [ [[package]] name = "aprender-viz" -version = "0.68.1" +version = "0.68.2" dependencies = [ "approx", "aprender-common", @@ -1837,7 +1837,7 @@ dependencies = [ [[package]] name = "aprender-zram" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-zram-adaptive", "aprender-zram-core", @@ -1847,7 +1847,7 @@ dependencies = [ [[package]] name = "aprender-zram-adaptive" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-zram-core", "proptest", @@ -1856,7 +1856,7 @@ dependencies = [ [[package]] name = "aprender-zram-cli" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-zram-adaptive", "aprender-zram-core", @@ -1870,7 +1870,7 @@ dependencies = [ [[package]] name = "aprender-zram-core" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-gpu", "criterion 0.7.0", @@ -1882,7 +1882,7 @@ dependencies = [ [[package]] name = "aprender-zram-generator" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-zram-core", "clap", diff --git a/Cargo.toml b/Cargo.toml index 81771d3453..ff633f3b2f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -149,7 +149,7 @@ exclude = [ resolver = "2" [workspace.package] -version = "0.68.1" +version = "0.68.2" edition = "2021" license = "MIT" repository = "https://github.com/paiml/aprender" @@ -227,7 +227,7 @@ tokenizers = { version = "0.23.1", default-features = false, features = ["fancy- # aprender-rand (lib name `trueno_rand`) is a workspace MEMBER but had no # [workspace.dependencies] entry, so every consumer had to re-declare the path. # It is the counter-based Philox RNG behind the SetFit encoder's dropout masks. -aprender-rand = { path = "crates/aprender-rand", version = "0.68.1" } +aprender-rand = { path = "crates/aprender-rand", version = "0.68.2" } # Chat templates minijinja = { version = "2.14", features = ["loader", "serde"] } @@ -237,9 +237,9 @@ minijinja = { version = "2.14", features = ["loader", "serde"] } # `crates/aprender-contracts` (lib name `provable_contracts`). Declaring it from # crates.io compiled a SECOND copy of the contract engine alongside the in-tree # one — exactly the duplicate-crate + publish-cycle the consolidation removed. -provable-contracts = { path = "crates/aprender-contracts", version = "0.68.1", package = "aprender-contracts" } -provable-contracts-macros = { path = "crates/aprender-contracts-macros", version = "0.68.1", package = "aprender-contracts-macros" } -aprender-contracts-macros = { path = "crates/aprender-contracts-macros", version = "0.68.1" } +provable-contracts = { path = "crates/aprender-contracts", version = "0.68.2", package = "aprender-contracts" } +provable-contracts-macros = { path = "crates/aprender-contracts-macros", version = "0.68.2", package = "aprender-contracts-macros" } +aprender-contracts-macros = { path = "crates/aprender-contracts-macros", version = "0.68.2" } # YAML serde_yaml = "0.9" @@ -251,66 +251,66 @@ hf-hub = { version = "0.4", default-features = false, features = ["ureq"] } hf-xet = "1.5.1" # Workspace-internal crates (paths within the monorepo) -aprender-compute = { path = "crates/aprender-compute", version = "0.68.1" } -aprender-gpu = { path = "crates/aprender-gpu", version = "0.68.1" } -aprender-quant = { path = "crates/aprender-quant", version = "0.68.1" } -aprender-serve = { path = "crates/aprender-serve", version = "0.68.1" } -realizar = { path = "crates/aprender-serve", version = "0.68.1", package = "aprender-serve" } -alimentar = { path = "crates/aprender-data", version = "0.68.1", package = "aprender-data" } -pacha = { path = "crates/aprender-registry", version = "0.68.1", package = "aprender-registry" } +aprender-compute = { path = "crates/aprender-compute", version = "0.68.2" } +aprender-gpu = { path = "crates/aprender-gpu", version = "0.68.2" } +aprender-quant = { path = "crates/aprender-quant", version = "0.68.2" } +aprender-serve = { path = "crates/aprender-serve", version = "0.68.2" } +realizar = { path = "crates/aprender-serve", version = "0.68.2", package = "aprender-serve" } +alimentar = { path = "crates/aprender-data", version = "0.68.2", package = "aprender-data" } +pacha = { path = "crates/aprender-registry", version = "0.68.2", package = "aprender-registry" } # APR-MONO self-containment: legacy sibling lib-name aliases -> in-monorepo crates (2026-06-12) -trueno-quant = { path = "crates/aprender-quant", version = "0.68.1", package = "aprender-quant" } -trueno-db = { path = "crates/aprender-db", version = "0.68.1", package = "aprender-db" } -trueno-viz = { path = "crates/aprender-viz", version = "0.68.1", package = "aprender-viz" } -trueno-rag = { path = "crates/aprender-rag", version = "0.68.1", package = "aprender-rag" } -trueno-cuda-edge = { path = "crates/aprender-cuda-edge", version = "0.68.1", package = "aprender-cuda-edge" } -trueno-sparse = { path = "crates/aprender-sparse", version = "0.68.1", package = "aprender-sparse" } -trueno-solve = { path = "crates/aprender-solve", version = "0.68.1", package = "aprender-solve" } -renacer-core = { path = "crates/aprender-profile-core", version = "0.68.1", package = "aprender-profile-core" } -repartir = { path = "crates/aprender-distribute", version = "0.68.1", package = "aprender-distribute" } -simular = { path = "crates/aprender-simulate", version = "0.68.1", package = "aprender-simulate" } -probar = { path = "crates/aprender-test-lib", version = "0.68.1", package = "aprender-test-lib" } +trueno-quant = { path = "crates/aprender-quant", version = "0.68.2", package = "aprender-quant" } +trueno-db = { path = "crates/aprender-db", version = "0.68.2", package = "aprender-db" } +trueno-viz = { path = "crates/aprender-viz", version = "0.68.2", package = "aprender-viz" } +trueno-rag = { path = "crates/aprender-rag", version = "0.68.2", package = "aprender-rag" } +trueno-cuda-edge = { path = "crates/aprender-cuda-edge", version = "0.68.2", package = "aprender-cuda-edge" } +trueno-sparse = { path = "crates/aprender-sparse", version = "0.68.2", package = "aprender-sparse" } +trueno-solve = { path = "crates/aprender-solve", version = "0.68.2", package = "aprender-solve" } +renacer-core = { path = "crates/aprender-profile-core", version = "0.68.2", package = "aprender-profile-core" } +repartir = { path = "crates/aprender-distribute", version = "0.68.2", package = "aprender-distribute" } +simular = { path = "crates/aprender-simulate", version = "0.68.2", package = "aprender-simulate" } +probar = { path = "crates/aprender-test-lib", version = "0.68.2", package = "aprender-test-lib" } # English key for the same crate, named after the command it serves (`apr test`). # The dep KEY, not the package name, is what becomes the extern crate name when # the two differ — the lib target is still `jugar_probar`, so keying it by its # package name would have imported Spanish anyway. Renaming that lib target is # 196 call sites in 17 crates and gets its own PR; this key is how new code # reads English today. -apr-test = { path = "crates/aprender-test-lib", version = "0.68.1", package = "aprender-test-lib", default-features = false, features = ["llm"] } +apr-test = { path = "crates/aprender-test-lib", version = "0.68.2", package = "aprender-test-lib", default-features = false, features = ["llm"] } # `jugar-probar` is the crates.io/lib name of the same in-tree crate as `probar` # above. Both aliases resolve to ONE package; consumers that spelled it # `jugar-probar = "0.4"|"0.5"|"1.0"` were building three extra copies. -jugar-probar = { path = "crates/aprender-test-lib", version = "0.68.1", package = "aprender-test-lib" } +jugar-probar = { path = "crates/aprender-test-lib", version = "0.68.2", package = "aprender-test-lib" } # NOTE: the matching `jugar-probar-derive` alias already exists further down this # same table (it points at crates/aprender-test-derive). crates/aprender-test-lib # was pinning `jugar-probar-derive = "=1.0.3"` from crates.io regardless — the # alias was sitting there unused. -aprender-train = { path = "crates/aprender-train", version = "0.68.1" } -entrenar = { path = "crates/aprender-train", version = "0.68.1", package = "aprender-train" } -aprender-train-common = { path = "crates/aprender-train-common", version = "0.68.1" } -aprender-train-distill = { path = "crates/aprender-train-distill", version = "0.68.1" } -aprender-orchestrate = { path = "crates/aprender-orchestrate", version = "0.68.1" } -aprender-contracts = { path = "crates/aprender-contracts", version = "0.68.1" } -aprender-profile = { path = "crates/aprender-profile", version = "0.68.1" } -aprender-profile-core = { path = "crates/aprender-profile-core", version = "0.68.1" } -aprender-zram-core = { path = "crates/aprender-zram-core", version = "0.68.1" } -aprender-zram-adaptive = { path = "crates/aprender-zram-adaptive", version = "0.68.1" } -aprender-zram-cli = { path = "crates/aprender-zram-cli", version = "0.68.1" } -aprender-present-core = { path = "crates/aprender-present-core", version = "0.68.1" } -aprender-present-terminal = { path = "crates/aprender-present-terminal", version = "0.68.1" } -aprender-present-widgets = { path = "crates/aprender-present-widgets", version = "0.68.1" } -aprender-present-layout = { path = "crates/aprender-present-layout", version = "0.68.1" } -aprender-present-yaml = { path = "crates/aprender-present-yaml", version = "0.68.1" } -aprender-present-test = { path = "crates/aprender-present-test", version = "0.68.1" } -aprender-db = { path = "crates/aprender-db", version = "0.68.1" } -aprender-graph = { path = "crates/aprender-graph", version = "0.68.1" } -aprender-rag = { path = "crates/aprender-rag", version = "0.68.1" } -aprender-rag-cli = { path = "crates/aprender-rag-cli", version = "0.68.1" } -aprender-qa-cli = { path = "crates/aprender-qa-cli", version = "0.68.1" } -aprender-cgp = { path = "crates/aprender-cgp", version = "0.68.1" } -aprender-contrastive-data = { path = "crates/aprender-contrastive-data", version = "0.68.1" } -aprender-contracts-cli = { path = "crates/aprender-contracts-cli", version = "0.68.1" } -aprender-data = { path = "crates/aprender-data", version = "0.68.1" } +aprender-train = { path = "crates/aprender-train", version = "0.68.2" } +entrenar = { path = "crates/aprender-train", version = "0.68.2", package = "aprender-train" } +aprender-train-common = { path = "crates/aprender-train-common", version = "0.68.2" } +aprender-train-distill = { path = "crates/aprender-train-distill", version = "0.68.2" } +aprender-orchestrate = { path = "crates/aprender-orchestrate", version = "0.68.2" } +aprender-contracts = { path = "crates/aprender-contracts", version = "0.68.2" } +aprender-profile = { path = "crates/aprender-profile", version = "0.68.2" } +aprender-profile-core = { path = "crates/aprender-profile-core", version = "0.68.2" } +aprender-zram-core = { path = "crates/aprender-zram-core", version = "0.68.2" } +aprender-zram-adaptive = { path = "crates/aprender-zram-adaptive", version = "0.68.2" } +aprender-zram-cli = { path = "crates/aprender-zram-cli", version = "0.68.2" } +aprender-present-core = { path = "crates/aprender-present-core", version = "0.68.2" } +aprender-present-terminal = { path = "crates/aprender-present-terminal", version = "0.68.2" } +aprender-present-widgets = { path = "crates/aprender-present-widgets", version = "0.68.2" } +aprender-present-layout = { path = "crates/aprender-present-layout", version = "0.68.2" } +aprender-present-yaml = { path = "crates/aprender-present-yaml", version = "0.68.2" } +aprender-present-test = { path = "crates/aprender-present-test", version = "0.68.2" } +aprender-db = { path = "crates/aprender-db", version = "0.68.2" } +aprender-graph = { path = "crates/aprender-graph", version = "0.68.2" } +aprender-rag = { path = "crates/aprender-rag", version = "0.68.2" } +aprender-rag-cli = { path = "crates/aprender-rag-cli", version = "0.68.2" } +aprender-qa-cli = { path = "crates/aprender-qa-cli", version = "0.68.2" } +aprender-cgp = { path = "crates/aprender-cgp", version = "0.68.2" } +aprender-contrastive-data = { path = "crates/aprender-contrastive-data", version = "0.68.2" } +aprender-contracts-cli = { path = "crates/aprender-contracts-cli", version = "0.68.2" } +aprender-data = { path = "crates/aprender-data", version = "0.68.2" } # Additional external deps needed by sub-crates serde_yaml_ng = "0.10" @@ -368,25 +368,25 @@ wasmtime = "47.0.4" bollard = "0.17" # Old crate name aliases (workspace = true refs in migrated sub-crates) -trueno-zram-core = { path = "crates/aprender-zram-core", version = "0.68.1", package = "aprender-zram-core" } -trueno-zram-adaptive = { path = "crates/aprender-zram-adaptive", version = "0.68.1", package = "aprender-zram-adaptive" } -trueno = { path = "crates/aprender-compute", version = "0.68.1", package = "aprender-compute" } -presentar-core = { path = "crates/aprender-present-core", version = "0.68.1", package = "aprender-present-core" } -presentar-terminal = { path = "crates/aprender-present-terminal", version = "0.68.1", package = "aprender-present-terminal" } -presentar-widgets = { path = "crates/aprender-present-widgets", version = "0.68.1", package = "aprender-present-widgets" } -presentar-layout = { path = "crates/aprender-present-layout", version = "0.68.1", package = "aprender-present-layout" } -presentar-yaml = { path = "crates/aprender-present-yaml", version = "0.68.1", package = "aprender-present-yaml" } -presentar-test = { path = "crates/aprender-present-test", version = "0.68.1", package = "aprender-present-test" } -presentar-test-macros = { path = "crates/aprender-present-test-macros", version = "0.68.1", package = "aprender-present-test-macros" } -jugar-probar-derive = { path = "crates/aprender-test-derive", version = "0.68.1", package = "aprender-test-derive" } -batuta-common = { path = "crates/aprender-common", version = "0.68.1", package = "aprender-common" } +trueno-zram-core = { path = "crates/aprender-zram-core", version = "0.68.2", package = "aprender-zram-core" } +trueno-zram-adaptive = { path = "crates/aprender-zram-adaptive", version = "0.68.2", package = "aprender-zram-adaptive" } +trueno = { path = "crates/aprender-compute", version = "0.68.2", package = "aprender-compute" } +presentar-core = { path = "crates/aprender-present-core", version = "0.68.2", package = "aprender-present-core" } +presentar-terminal = { path = "crates/aprender-present-terminal", version = "0.68.2", package = "aprender-present-terminal" } +presentar-widgets = { path = "crates/aprender-present-widgets", version = "0.68.2", package = "aprender-present-widgets" } +presentar-layout = { path = "crates/aprender-present-layout", version = "0.68.2", package = "aprender-present-layout" } +presentar-yaml = { path = "crates/aprender-present-yaml", version = "0.68.2", package = "aprender-present-yaml" } +presentar-test = { path = "crates/aprender-present-test", version = "0.68.2", package = "aprender-present-test" } +presentar-test-macros = { path = "crates/aprender-present-test-macros", version = "0.68.2", package = "aprender-present-test-macros" } +jugar-probar-derive = { path = "crates/aprender-test-derive", version = "0.68.2", package = "aprender-test-derive" } +batuta-common = { path = "crates/aprender-common", version = "0.68.2", package = "aprender-common" } # APR-MONO sibling aliases — MUST use workspace refs, NEVER crates.io versions. # Hard-pinning these to crates.io creates a diamond: sub-crates pull older # aprender versions → multiple `aprender` crates in Cargo.lock = MUDA. -renacer = { path = "crates/aprender-profile", version = "0.68.1", package = "aprender-profile" } -entrenar-lora = { path = "crates/aprender-train-lora", version = "0.68.1", package = "aprender-train-lora" } -batuta = { path = "crates/aprender-orchestrate", version = "0.68.1", package = "aprender-orchestrate" } -trueno-graph = { path = "crates/aprender-graph", version = "0.68.1", package = "aprender-graph" } +renacer = { path = "crates/aprender-profile", version = "0.68.2", package = "aprender-profile" } +entrenar-lora = { path = "crates/aprender-train-lora", version = "0.68.2", package = "aprender-train-lora" } +batuta = { path = "crates/aprender-orchestrate", version = "0.68.2", package = "aprender-orchestrate" } +trueno-graph = { path = "crates/aprender-graph", version = "0.68.2", package = "aprender-graph" } [workspace.lints.rust] # Safety @@ -568,7 +568,7 @@ semicolon_if_nothing_returned = "allow" # Style preference [package] name = "aprender" -version = "0.68.1" +version = "0.68.2" edition = "2021" rust-version = "1.91" authors = ["Noah Gift "] @@ -680,9 +680,9 @@ required-features = ["cli"] # (e.g. apr-cookbook, downstream apps) don't pull apr-cli's heavy transitive # dep graph (renacer/profile/inference/zram/visualization). `cargo install # aprender` still works because `cli` is in default features. See GH-1599. -apr-cli = { path = "crates/apr-cli", version = "0.68.1", default-features = true, optional = true } +apr-cli = { path = "crates/apr-cli", version = "0.68.2", default-features = true, optional = true } # Core ML library (lib name = "aprender") -aprender_ml = { path = "crates/aprender-core", version = "0.68.1", package = "aprender-core" } +aprender_ml = { path = "crates/aprender-core", version = "0.68.2", package = "aprender-core" } [features] default = ["cli"] diff --git a/contracts/contracts.nt b/contracts/contracts.nt index 6de86a6452..16022a5f13 100644 --- a/contracts/contracts.nt +++ b/contracts/contracts.nt @@ -9271,11 +9271,13 @@ . "Qwen3.5-4B-Q4_K_M.gguf"^^ . "gguf"^^ . + "gx10"^^ . + "lambda"^^ . "qwen35-4b-q4km"^^ . - "gx10"^^ . - "lambda"^^ . . . + . + . "true"^^ . "00fe7986ff5f6b463e62455821146049db6f9313603938a70800d1fb69ef11a4"^^ . . @@ -9286,11 +9288,13 @@ . "Qwen3.5-9B-Q4_K_M.gguf"^^ . "gguf"^^ . + "gx10"^^ . + "lambda"^^ . "qwen35-9b-q4km"^^ . - "gx10"^^ . - "lambda"^^ . . . + . + . "true"^^ . "03b74727a860a56338e042c4420bb3f04b2fec5734175f4cb9fa853daf52b7e8"^^ . . @@ -9306,6 +9310,8 @@ "qwen2-1.5b-q4km"^^ . . . + . + . "true"^^ . "6a1a2eb6d15622bf3c96857206351ba97e1af16c30d7a74ee38970e434e9407e"^^ . . @@ -9316,11 +9322,13 @@ . "Qwen3.5-27B-Q4_K_M.gguf"^^ . "gguf"^^ . + "gx10"^^ . + "lambda"^^ . "qwen35-27b-q4km"^^ . - "gx10"^^ . - "lambda"^^ . . . + . + . "true"^^ . "84b5f7f112156d63836a01a69dc3f11a6ba63b10a23b8ca7a7efaf52d5a2d806"^^ . . @@ -9331,11 +9339,13 @@ . "Qwen3.5-2B-Q4_K_M.gguf"^^ . "gguf"^^ . + "gx10"^^ . + "lambda"^^ . "qwen35-2b-q4km"^^ . - "gx10"^^ . - "lambda"^^ . . . + . + . "true"^^ . "aaf42c8b7c3cab2bf3d69c355048d4a0ee9973d48f16c731c0520ee914699223"^^ . . @@ -9351,6 +9361,8 @@ "qwen3-1.7b-q4km"^^ . . . + . + . "true"^^ . "b139949c5bd74937ad8ed8c8cf3d9ffb1e99c866c823204dc42c0d91fa181897"^^ . . @@ -9361,11 +9373,13 @@ . "Qwen3.5-0.8B-Q4_K_M.gguf"^^ . "gguf"^^ . + "gx10"^^ . + "lambda"^^ . "qwen35-0.8b-q4km"^^ . - "gx10"^^ . - "lambda"^^ . . . + . + . "true"^^ . "bd258782e35f7f458f8aced1adc053e6e92e89bc735ba3be89d38a06121dc517"^^ . . @@ -9380,6 +9394,8 @@ "lambda"^^ . . . + . + . "false"^^ . "d98cdcbd03e17ce47681435b5150e34c1417f50b5c0019dd560e4882c5745785"^^ . . @@ -9590,6 +9606,214 @@ . "03b74727a860a56338e042c4420bb3f04b2fec5734175f4cb9fa853daf52b7e8"^^ . "0.68.1"^^ . + . + "cpu=ok"^^ . + "cuda=ok"^^ . + "true"^^ . + "true"^^ . + "12.1"^^ . + "NVIDIA GB10"^^ . + "true"^^ . + "evidence/dogfood/models/0.68.2/gx10.json"^^ . + "gx10"^^ . + . + "6a1a2eb6d15622bf3c96857206351ba97e1af16c30d7a74ee38970e434e9407e"^^ . + "0.68.2"^^ . + . + "cpu=ok"^^ . + "cuda=ok"^^ . + "true"^^ . + "true"^^ . + "12.1"^^ . + "NVIDIA GB10"^^ . + "true"^^ . + "evidence/dogfood/models/0.68.2/gx10.json"^^ . + "gx10"^^ . + . + "b139949c5bd74937ad8ed8c8cf3d9ffb1e99c866c823204dc42c0d91fa181897"^^ . + "0.68.2"^^ . + . + "cpu=ok"^^ . + "cuda=ok"^^ . + "true"^^ . + "true"^^ . + "12.1"^^ . + "NVIDIA GB10"^^ . + "true"^^ . + "evidence/dogfood/models/0.68.2/gx10.json"^^ . + "gx10"^^ . + . + "d98cdcbd03e17ce47681435b5150e34c1417f50b5c0019dd560e4882c5745785"^^ . + "0.68.2"^^ . + . + "cpu=ok"^^ . + "cuda=ok"^^ . + "true"^^ . + "true"^^ . + "12.1"^^ . + "NVIDIA GB10"^^ . + "true"^^ . + "evidence/dogfood/models/0.68.2/gx10.json"^^ . + "gx10"^^ . + . + "bd258782e35f7f458f8aced1adc053e6e92e89bc735ba3be89d38a06121dc517"^^ . + "0.68.2"^^ . + . + "cpu=ok"^^ . + "cuda=ok"^^ . + "true"^^ . + "true"^^ . + "12.1"^^ . + "NVIDIA GB10"^^ . + "true"^^ . + "evidence/dogfood/models/0.68.2/gx10.json"^^ . + "gx10"^^ . + . + "84b5f7f112156d63836a01a69dc3f11a6ba63b10a23b8ca7a7efaf52d5a2d806"^^ . + "0.68.2"^^ . + . + "cpu=ok"^^ . + "cuda=ok"^^ . + "true"^^ . + "true"^^ . + "12.1"^^ . + "NVIDIA GB10"^^ . + "true"^^ . + "evidence/dogfood/models/0.68.2/gx10.json"^^ . + "gx10"^^ . + . + "aaf42c8b7c3cab2bf3d69c355048d4a0ee9973d48f16c731c0520ee914699223"^^ . + "0.68.2"^^ . + . + "cpu=ok"^^ . + "cuda=ok"^^ . + "true"^^ . + "true"^^ . + "12.1"^^ . + "NVIDIA GB10"^^ . + "true"^^ . + "evidence/dogfood/models/0.68.2/gx10.json"^^ . + "gx10"^^ . + . + "00fe7986ff5f6b463e62455821146049db6f9313603938a70800d1fb69ef11a4"^^ . + "0.68.2"^^ . + . + "cpu=ok"^^ . + "cuda=ok"^^ . + "true"^^ . + "true"^^ . + "12.1"^^ . + "NVIDIA GB10"^^ . + "true"^^ . + "evidence/dogfood/models/0.68.2/gx10.json"^^ . + "gx10"^^ . + . + "03b74727a860a56338e042c4420bb3f04b2fec5734175f4cb9fa853daf52b7e8"^^ . + "0.68.2"^^ . + . + "cpu=ok"^^ . + "cuda=ok"^^ . + "true"^^ . + "true"^^ . + "8.9"^^ . + "NVIDIA GeForce RTX 4090"^^ . + "true"^^ . + "evidence/dogfood/models/0.68.2/lambda.json"^^ . + "lambda"^^ . + . + "6a1a2eb6d15622bf3c96857206351ba97e1af16c30d7a74ee38970e434e9407e"^^ . + "0.68.2"^^ . + . + "cpu=ok"^^ . + "cuda=ok"^^ . + "true"^^ . + "true"^^ . + "8.9"^^ . + "NVIDIA GeForce RTX 4090"^^ . + "true"^^ . + "evidence/dogfood/models/0.68.2/lambda.json"^^ . + "lambda"^^ . + . + "b139949c5bd74937ad8ed8c8cf3d9ffb1e99c866c823204dc42c0d91fa181897"^^ . + "0.68.2"^^ . + . + "cpu=ok"^^ . + "cuda=ok"^^ . + "true"^^ . + "true"^^ . + "8.9"^^ . + "NVIDIA GeForce RTX 4090"^^ . + "false"^^ . + "evidence/dogfood/models/0.68.2/lambda.json"^^ . + "lambda"^^ . + . + "d98cdcbd03e17ce47681435b5150e34c1417f50b5c0019dd560e4882c5745785"^^ . + "0.68.2"^^ . + . + "cpu=ok"^^ . + "cuda=ok"^^ . + "true"^^ . + "true"^^ . + "8.9"^^ . + "NVIDIA GeForce RTX 4090"^^ . + "true"^^ . + "evidence/dogfood/models/0.68.2/lambda.json"^^ . + "lambda"^^ . + . + "bd258782e35f7f458f8aced1adc053e6e92e89bc735ba3be89d38a06121dc517"^^ . + "0.68.2"^^ . + . + "cpu=ok"^^ . + "cuda=ok"^^ . + "true"^^ . + "true"^^ . + "8.9"^^ . + "NVIDIA GeForce RTX 4090"^^ . + "true"^^ . + "evidence/dogfood/models/0.68.2/lambda.json"^^ . + "lambda"^^ . + . + "84b5f7f112156d63836a01a69dc3f11a6ba63b10a23b8ca7a7efaf52d5a2d806"^^ . + "0.68.2"^^ . + . + "cpu=ok"^^ . + "cuda=ok"^^ . + "true"^^ . + "true"^^ . + "8.9"^^ . + "NVIDIA GeForce RTX 4090"^^ . + "true"^^ . + "evidence/dogfood/models/0.68.2/lambda.json"^^ . + "lambda"^^ . + . + "aaf42c8b7c3cab2bf3d69c355048d4a0ee9973d48f16c731c0520ee914699223"^^ . + "0.68.2"^^ . + . + "cpu=ok"^^ . + "cuda=ok"^^ . + "true"^^ . + "true"^^ . + "8.9"^^ . + "NVIDIA GeForce RTX 4090"^^ . + "true"^^ . + "evidence/dogfood/models/0.68.2/lambda.json"^^ . + "lambda"^^ . + . + "00fe7986ff5f6b463e62455821146049db6f9313603938a70800d1fb69ef11a4"^^ . + "0.68.2"^^ . + . + "cpu=ok"^^ . + "cuda=ok"^^ . + "true"^^ . + "true"^^ . + "8.9"^^ . + "NVIDIA GeForce RTX 4090"^^ . + "true"^^ . + "evidence/dogfood/models/0.68.2/lambda.json"^^ . + "lambda"^^ . + . + "03b74727a860a56338e042c4420bb3f04b2fec5734175f4cb9fa853daf52b7e8"^^ . + "0.68.2"^^ . . . "doc"^^ . diff --git a/contracts/lint-baseline.json b/contracts/lint-baseline.json index b704796741..90d48263e5 100644 --- a/contracts/lint-baseline.json +++ b/contracts/lint-baseline.json @@ -1,7 +1,7 @@ { "_spec": "APR-RELEASE-001 §11.2 — moves only through `make ont-ratchet` (ONT R-6)", "armed_gates": ["validate", "audit", "score", "verify", "enforce", "enforcement-level", "duplicate-stems", "composition", "sigma", "relations", "shapes"], - "armed_shapes": ["ont-shapes-v1", "ladder-measured"], + "armed_shapes": ["ont-shapes-v1", "ladder-measured", "ladder-green"], "ont": { "consumer_present": false, "contracts_total": 1852, diff --git a/crates/apr-cli/Cargo.toml b/crates/apr-cli/Cargo.toml index a5d8e2d630..488143a8cf 100644 --- a/crates/apr-cli/Cargo.toml +++ b/crates/apr-cli/Cargo.toml @@ -117,12 +117,12 @@ libc = "0.2" # performed. A surface and its capability must not be able to drift. apr-test = { workspace = true } # Core aprender library -aprender = { path = "../aprender-core", version = "0.68.1", package = "aprender-core", default-features = true, features = ["format-compression"] } +aprender = { path = "../aprender-core", version = "0.68.2", package = "aprender-core", default-features = true, features = ["format-compression"] } # Provable-contracts engine — `apr beat-run` parses + evaluates BeatBenchmark contracts (PMAT-741) aprender-contracts = { workspace = true } # MCP (Model Context Protocol) server — `apr mcp` subcommand -aprender-mcp = { path = "../aprender-mcp", version = "0.68.1" } +aprender-mcp = { path = "../aprender-mcp", version = "0.68.2" } async-stream = "0.3" provable-contracts-macros = { workspace = true } @@ -133,7 +133,7 @@ batuta-common = { workspace = true } # Non-optional since claude-code-parity-apr M150 (outcome-parity Phase 3 # requires apr code in default builds). GH-344: path dep via # .cargo/config.toml.dev-overrides; CI uses checkout+symlink. -batuta = { version = "0.68.1", path = "../aprender-orchestrate", package = "aprender-orchestrate", default-features = false, features = ["agents", "agents-inference", "agents-mcp", "rag"] } +batuta = { version = "0.68.2", path = "../aprender-orchestrate", package = "aprender-orchestrate", default-features = false, features = ["agents", "agents-inference", "agents-mcp", "rag"] } # Inference engine (workspace path dep — enables cuda/gpu feature forwarding) # GH-573: shim (0.9.1) didn't forward cuda feature → 0.7 tok/s instead of 273 tok/s @@ -224,7 +224,7 @@ pacha = { workspace = true } # published-crate dependency cycle the APR-MONO consolidation removed, and # (b) was never actually linked, so every `trueno_explain::` path in # commands/ptx_explain.rs failed to resolve. -trueno-explain = { path = "../aprender-explain", version = "0.68.1", package = "aprender-explain", optional = true } +trueno-explain = { path = "../aprender-explain", version = "0.68.2", package = "aprender-explain", optional = true } # ML tuning: LoRA/QLoRA configuration and memory planning (GH-176, PMAT-184) entrenar-lora = { workspace = true, optional = true } diff --git a/crates/aprender-bench-compute/Cargo.toml b/crates/aprender-bench-compute/Cargo.toml index 0426f2de70..3f504e87b2 100644 --- a/crates/aprender-bench-compute/Cargo.toml +++ b/crates/aprender-bench-compute/Cargo.toml @@ -11,7 +11,7 @@ disallowed_methods = "allow" [dependencies] # The implementation under test -aprender = { path = "../aprender-core", version = "0.68.1", package = "aprender-core", features = ["format-quantize"] } +aprender = { path = "../aprender-core", version = "0.68.2", package = "aprender-core", features = ["format-quantize"] } # Reference implementation for A/B comparison # Pure Rust (no BLAS) to keep comparison fair — both are pure Rust SIMD diff --git a/crates/aprender-bench-tokenizer/Cargo.toml b/crates/aprender-bench-tokenizer/Cargo.toml index fa8bc603eb..ff461ba624 100644 --- a/crates/aprender-bench-tokenizer/Cargo.toml +++ b/crates/aprender-bench-tokenizer/Cargo.toml @@ -11,7 +11,7 @@ disallowed_methods = "allow" [dependencies] # The implementation under test -aprender = { path = "../aprender-core", version = "0.68.1", package = "aprender-core" } +aprender = { path = "../aprender-core", version = "0.68.2", package = "aprender-core" } # HuggingFace reference for A/B comparison # Regular dep (not dev-dep) because [[bench]] harness=false binaries can't see dev-deps diff --git a/crates/aprender-cbtop/Cargo.toml b/crates/aprender-cbtop/Cargo.toml index 6ebad931a5..07b4994bdc 100644 --- a/crates/aprender-cbtop/Cargo.toml +++ b/crates/aprender-cbtop/Cargo.toml @@ -24,7 +24,7 @@ presentar-terminal = { workspace = true } # Compute backends trueno = { workspace = true } -trueno-gpu = { version = "0.68.1", path = "../aprender-gpu", package = "aprender-gpu", optional = true } +trueno-gpu = { version = "0.68.2", path = "../aprender-gpu", package = "aprender-gpu", optional = true } # Terminal handling crossterm = "0.28" diff --git a/crates/aprender-cgp/Cargo.toml b/crates/aprender-cgp/Cargo.toml index 739a38b484..866d5f935d 100644 --- a/crates/aprender-cgp/Cargo.toml +++ b/crates/aprender-cgp/Cargo.toml @@ -36,7 +36,7 @@ num_cpus = "1.17" comfy-table = "7" colored = "3" # GPU profiling: direct cuBLAS measurement (OWN THE STACK) -trueno-gpu = { path = "../aprender-gpu", version = "0.68.1", features = ["cuda"], optional = true, package = "aprender-gpu" } +trueno-gpu = { path = "../aprender-gpu", version = "0.68.2", features = ["cuda"], optional = true, package = "aprender-gpu" } [features] default = [] diff --git a/crates/aprender-compute/Cargo.toml b/crates/aprender-compute/Cargo.toml index 6fb5e00b5e..08468ae2ae 100644 --- a/crates/aprender-compute/Cargo.toml +++ b/crates/aprender-compute/Cargo.toml @@ -41,11 +41,11 @@ futures-intrusive = { version = "0.5", optional = true } wasm-bindgen-futures = { version = "0.4", optional = true } wasm-bindgen = { version = "0.2", optional = true } # Native CUDA monitoring via trueno-gpu (TRUENO-SPEC-010) -trueno-gpu = { version = "0.68.1", path = "../aprender-gpu", optional = true, package = "aprender-gpu" } +trueno-gpu = { version = "0.68.2", path = "../aprender-gpu", optional = true, package = "aprender-gpu" } # PMAT-336: Provable contracts compile-time enforcement provable-contracts-macros = { workspace = true } # P1a: Sovereign GEMM microkernel codegen (compile-time shape specialization) -trueno-gemm-codegen = { version = "0.68.1", path = "../aprender-gemm-codegen", package = "aprender-gemm-codegen" } +trueno-gemm-codegen = { version = "0.68.2", path = "../aprender-gemm-codegen", package = "aprender-gemm-codegen" } # Tracing/profiling support (renacer integration) tracing = { version = "0.1", optional = true } tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"], optional = true } diff --git a/crates/aprender-contracts-cli/Cargo.toml b/crates/aprender-contracts-cli/Cargo.toml index 07f4135796..6d29b84b64 100644 --- a/crates/aprender-contracts-cli/Cargo.toml +++ b/crates/aprender-contracts-cli/Cargo.toml @@ -13,7 +13,7 @@ name = "pv" path = "src/main.rs" [dependencies] -aprender-contracts = { path = "../aprender-contracts", version = "0.68.1" } +aprender-contracts = { path = "../aprender-contracts", version = "0.68.2" } clap = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } diff --git a/crates/aprender-contracts/Cargo.toml b/crates/aprender-contracts/Cargo.toml index 1870e8fc46..513801ea53 100644 --- a/crates/aprender-contracts/Cargo.toml +++ b/crates/aprender-contracts/Cargo.toml @@ -19,7 +19,7 @@ kani = [] name = "provable_contracts" [dependencies] -provable-contracts-macros = { path = "../aprender-contracts-macros", version = "0.68.1", package = "aprender-contracts-macros" } +provable-contracts-macros = { path = "../aprender-contracts-macros", version = "0.68.2", package = "aprender-contracts-macros" } regex = "1" sha2 = { workspace = true } syn = { workspace = true } diff --git a/crates/aprender-cuda-edge/Cargo.toml b/crates/aprender-cuda-edge/Cargo.toml index e1795d5c27..4e6f1c2d08 100644 --- a/crates/aprender-cuda-edge/Cargo.toml +++ b/crates/aprender-cuda-edge/Cargo.toml @@ -15,7 +15,7 @@ name = "trueno_cuda_edge" [dependencies] thiserror = "2.0" serde = { version = "1.0", features = ["derive"] } -trueno-gpu = { version = "0.68.1", path = "../aprender-gpu", package = "aprender-gpu", optional = true } +trueno-gpu = { version = "0.68.2", path = "../aprender-gpu", package = "aprender-gpu", optional = true } [dev-dependencies] proptest = "1.6" diff --git a/crates/aprender-explain/Cargo.toml b/crates/aprender-explain/Cargo.toml index a7e97f1908..90ac003bc5 100644 --- a/crates/aprender-explain/Cargo.toml +++ b/crates/aprender-explain/Cargo.toml @@ -25,7 +25,7 @@ presentar-terminal = { workspace = true } crossterm = "0.28" # Internal dependency for PTX generation -trueno-gpu = { version = "0.68.1", path = "../aprender-gpu", package = "aprender-gpu", features = ["cuda"] } +trueno-gpu = { version = "0.68.2", path = "../aprender-gpu", package = "aprender-gpu", features = ["cuda"] } [dev-dependencies] proptest = "1.4" diff --git a/crates/aprender-graph/Cargo.toml b/crates/aprender-graph/Cargo.toml index deeb7dbd2d..3a8872d82f 100644 --- a/crates/aprender-graph/Cargo.toml +++ b/crates/aprender-graph/Cargo.toml @@ -28,7 +28,7 @@ anyhow = "1" thiserror = "2" # Phase 2+ dependencies -aprender = { path = "../aprender-core", version = "0.68.1", package = "aprender-core" } # Sparse matrix ops, PageRank +aprender = { path = "../aprender-core", version = "0.68.2", package = "aprender-core" } # Sparse matrix ops, PageRank trueno = { workspace = true } # Phase 3: GPU acceleration (optional - requires wgpu-capable hardware) diff --git a/crates/aprender-monte-carlo/Cargo.toml b/crates/aprender-monte-carlo/Cargo.toml index 290d896089..161810f1ed 100644 --- a/crates/aprender-monte-carlo/Cargo.toml +++ b/crates/aprender-monte-carlo/Cargo.toml @@ -18,7 +18,7 @@ path = "src/lib.rs" name = "aprender-monte-carlo" [dependencies] -aprender = { path = "../../", version = "0.68.1" } +aprender = { path = "../../", version = "0.68.2" } clap = { version = "4", features = ["derive"] } rand = "0.9" rand_chacha = "0.9" diff --git a/crates/aprender-orchestrate/Cargo.toml b/crates/aprender-orchestrate/Cargo.toml index 1a7547cbb0..1234fd9b7a 100644 --- a/crates/aprender-orchestrate/Cargo.toml +++ b/crates/aprender-orchestrate/Cargo.toml @@ -126,7 +126,7 @@ pacha = { workspace = true, optional = true } realizar = { workspace = true, optional = true } # ML algorithms and training (native-only) -aprender = { path = "../aprender-core", version = "0.68.1", package = "aprender-core", optional = true } +aprender = { path = "../aprender-core", version = "0.68.2", package = "aprender-core", optional = true } entrenar = { workspace = true, optional = true } alimentar = { workspace = true, optional = true } diff --git a/crates/aprender-profile/Cargo.toml b/crates/aprender-profile/Cargo.toml index d2a6397511..6e061d1fba 100644 --- a/crates/aprender-profile/Cargo.toml +++ b/crates/aprender-profile/Cargo.toml @@ -74,7 +74,7 @@ trueno = { workspace = true } # Machine learning for anomaly detection (Sprint 23) # GH-581: Use path dep to avoid trueno version skew with local workspace -aprender = { path = "../aprender-core", version = "0.68.1", package = "aprender-core" } +aprender = { path = "../aprender-core", version = "0.68.2", package = "aprender-core" } # Lock-free data structures for ring buffer (Sprint 40) crossbeam = { version = "0.8", default-features = false, features = ["crossbeam-channel", "crossbeam-queue", "std"] } @@ -112,7 +112,7 @@ crossterm = "0.28" # SIMD-accelerated visualization primitives (sister project) # NOTE: `monitor` feature removed upstream (#1979); this crate uses only viz primitives. -trueno-viz = { version = "0.68.1", path = "../aprender-viz", package = "aprender-viz", default-features = false } +trueno-viz = { version = "0.68.2", path = "../aprender-viz", package = "aprender-viz", default-features = false } # OpenTelemetry for distributed tracing (Sprint 30) opentelemetry = { version = "0.31.0", optional = true } diff --git a/crates/aprender-qa-cli/Cargo.toml b/crates/aprender-qa-cli/Cargo.toml index 336465aec7..386b7778d9 100644 --- a/crates/aprender-qa-cli/Cargo.toml +++ b/crates/aprender-qa-cli/Cargo.toml @@ -23,10 +23,10 @@ serde_json = { workspace = true } serde_yaml = { workspace = true } clap = { workspace = true } chrono = { workspace = true } -aprender-qa-gen = { version = "0.68.1", path = "../aprender-qa-gen" } -aprender-qa-runner = { version = "0.68.1", path = "../aprender-qa-runner" } -aprender-qa-report = { version = "0.68.1", path = "../aprender-qa-report" } -aprender-qa-certify = { version = "0.68.1", path = "../aprender-qa-certify" } +aprender-qa-gen = { version = "0.68.2", path = "../aprender-qa-gen" } +aprender-qa-runner = { version = "0.68.2", path = "../aprender-qa-runner" } +aprender-qa-report = { version = "0.68.2", path = "../aprender-qa-report" } +aprender-qa-certify = { version = "0.68.2", path = "../aprender-qa-certify" } ctrlc = "3.4" safetensors = { workspace = true } colored = "2.2" diff --git a/crates/aprender-qa-report/Cargo.toml b/crates/aprender-qa-report/Cargo.toml index 08f7f8532c..4cb3bf59ef 100644 --- a/crates/aprender-qa-report/Cargo.toml +++ b/crates/aprender-qa-report/Cargo.toml @@ -18,8 +18,8 @@ anyhow = { workspace = true } chrono = { workspace = true } colored = "2.2" csv = "1.3" -aprender-qa-gen = { version = "0.68.1", path = "../aprender-qa-gen" } -aprender-qa-runner = { version = "0.68.1", path = "../aprender-qa-runner" } +aprender-qa-gen = { version = "0.68.2", path = "../aprender-qa-gen" } +aprender-qa-runner = { version = "0.68.2", path = "../aprender-qa-runner" } [dev-dependencies] proptest = { workspace = true } diff --git a/crates/aprender-qa-runner/Cargo.toml b/crates/aprender-qa-runner/Cargo.toml index b78993b6e0..f4bedb5977 100644 --- a/crates/aprender-qa-runner/Cargo.toml +++ b/crates/aprender-qa-runner/Cargo.toml @@ -22,14 +22,14 @@ anyhow = { workspace = true } tokio = { workspace = true } chrono = { workspace = true, features = ["serde"] } tracing = { workspace = true } -aprender-qa-gen = { version = "0.68.1", path = "../aprender-qa-gen" } +aprender-qa-gen = { version = "0.68.2", path = "../aprender-qa-gen" } hostname = "0.4" rayon = "1.10" sha2 = "0.10" regex = { workspace = true } num_cpus = "1.16" safetensors = { workspace = true } -jugar-probar = { version = "0.68.1", path = "../aprender-test-lib", package = "aprender-test-lib", features = ["llm-types"] } +jugar-probar = { version = "0.68.2", path = "../aprender-test-lib", package = "aprender-test-lib", features = ["llm-types"] } # Test fixtures dependencies (optional) tempfile = { version = "3", optional = true } half = { version = "2.4", optional = true } diff --git a/crates/aprender-rag-cli/Cargo.toml b/crates/aprender-rag-cli/Cargo.toml index 33f0c8f002..13af0dc805 100644 --- a/crates/aprender-rag-cli/Cargo.toml +++ b/crates/aprender-rag-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "aprender-rag-cli" -version = "0.68.1" +version = "0.68.2" edition = "2021" authors = ["Pragmatic AI Labs"] description = "CLI for Trueno-RAG pipeline" diff --git a/crates/aprender-rag/Cargo.toml b/crates/aprender-rag/Cargo.toml index 9ff1f24ae6..d5bdfe7ed6 100644 --- a/crates/aprender-rag/Cargo.toml +++ b/crates/aprender-rag/Cargo.toml @@ -63,7 +63,7 @@ fastembed = { version = "5", optional = true } # NVIDIA Embed Nemotron 8B via realizar GGUF infrastructure (GH-3) # Large model (~4-32GB depending on quantization), requires GGUF file -realizar = { version = "0.68.1", path = "../aprender-serve", package = "aprender-serve", default-features = false, optional = true } +realizar = { version = "0.68.2", path = "../aprender-serve", package = "aprender-serve", default-features = false, optional = true } # Eval: LLM-as-judge via Anthropic API (PMAT-015) diff --git a/crates/aprender-registry/Cargo.toml b/crates/aprender-registry/Cargo.toml index 79cc17b26a..3715df335d 100644 --- a/crates/aprender-registry/Cargo.toml +++ b/crates/aprender-registry/Cargo.toml @@ -42,7 +42,7 @@ zstd = { version = "0.13", optional = true } clap = { version = "4", features = ["derive"], optional = true } # Ecosystem integration -aprender = { path = "../aprender-core", version = "0.68.1", package = "aprender-core", optional = true } +aprender = { path = "../aprender-core", version = "0.68.2", package = "aprender-core", optional = true } alimentar = { workspace = true, optional = true } # HTTP client (optional) diff --git a/crates/aprender-serve/Cargo.toml b/crates/aprender-serve/Cargo.toml index 1324f7f0ff..3b142207b9 100644 --- a/crates/aprender-serve/Cargo.toml +++ b/crates/aprender-serve/Cargo.toml @@ -49,7 +49,7 @@ name = "realizar" trueno = { workspace = true, features = ["gpu"] } # CUDA PTX generation and runtime for NVIDIA GPUs (optional, pure Rust, no LLVM/nvcc) # v0.4.12: BatchedQ6K, MultiWarp, RopeNeox, FlashDecoding kernels -trueno-gpu = { version = "0.68.1", path = "../aprender-gpu", package = "aprender-gpu", optional = true, features = ["cuda"] } # APR-MONO single-source-of-truth +trueno-gpu = { version = "0.68.2", path = "../aprender-gpu", package = "aprender-gpu", optional = true, features = ["cuda"] } # APR-MONO single-source-of-truth # KV cache storage (for attention caching) trueno-db = { workspace = true, optional = true } # K-quantization formats (Q4_K, Q5_K, Q6_K) - Toyota Way: ONE source of truth @@ -63,7 +63,7 @@ renacer-core = { workspace = true } # ML algorithms and .apr model format (optional for aprender model serving) # v0.24.1: chat templates, GGUF tokenizer preservation (local may be newer) -aprender = { path = "../aprender-core", version = "0.68.1", package = "aprender-core", optional = true } +aprender = { path = "../aprender-core", version = "0.68.2", package = "aprender-core", optional = true } # Data loading library (optional for data pipeline examples) alimentar = { workspace = true, optional = true } diff --git a/crates/aprender-shell/Cargo.toml b/crates/aprender-shell/Cargo.toml index c9868d5ad4..5fae842e30 100644 --- a/crates/aprender-shell/Cargo.toml +++ b/crates/aprender-shell/Cargo.toml @@ -24,7 +24,7 @@ harness = false [dependencies] # Use path for local dev, crates.io for release -aprender = { path = "../aprender-core", version = "0.68.1", package = "aprender-core", features = ["format-encryption", "format-compression", "format-homomorphic"] } +aprender = { path = "../aprender-core", version = "0.68.2", package = "aprender-core", features = ["format-encryption", "format-compression", "format-homomorphic"] } clap = { version = "4", features = ["derive"] } dirs = "5" serde = { version = "1", features = ["derive"] } diff --git a/crates/aprender-simulate/Cargo.toml b/crates/aprender-simulate/Cargo.toml index 7e50043c91..95f23e95b2 100644 --- a/crates/aprender-simulate/Cargo.toml +++ b/crates/aprender-simulate/Cargo.toml @@ -57,7 +57,7 @@ crossterm = { version = "0.28", optional = true } # ComputeBlocks from presentar-terminal (SIMD-optimized TUI widgets) # Path deps to avoid jugar-probar prod dep chain (CB-081) presentar-terminal = { workspace = true, optional = true } -presentar-core = { version = "0.68.1", path = "../aprender-present-core", package = "aprender-present-core", default-features = false, optional = true } +presentar-core = { version = "0.68.2", path = "../aprender-present-core", package = "aprender-present-core", default-features = false, optional = true } # WASM (optional) wasm-bindgen = { version = "0.2", optional = true } diff --git a/crates/aprender-test-cli/Cargo.toml b/crates/aprender-test-cli/Cargo.toml index 68a83244b4..5bc0b133e6 100644 --- a/crates/aprender-test-cli/Cargo.toml +++ b/crates/aprender-test-cli/Cargo.toml @@ -35,7 +35,7 @@ path = "src/main.rs" [dependencies] # Core library (was: jugar-probar) — dep key preserves Rust identifier -jugar-probar = { path = "../aprender-test-lib", version = "0.68.1", package = "aprender-test-lib" } +jugar-probar = { path = "../aprender-test-lib", version = "0.68.2", package = "aprender-test-lib" } # CLI framework clap = { workspace = true } diff --git a/crates/aprender-train-bench/Cargo.toml b/crates/aprender-train-bench/Cargo.toml index 14484005ac..803bdb0c9e 100644 --- a/crates/aprender-train-bench/Cargo.toml +++ b/crates/aprender-train-bench/Cargo.toml @@ -20,7 +20,7 @@ workspace = true [dependencies] entrenar = { workspace = true } -entrenar-common = { version = "0.68.1", path = "../aprender-train-common", package = "aprender-train-common" } +entrenar-common = { version = "0.68.2", path = "../aprender-train-common", package = "aprender-train-common" } clap = { version = "4.5", features = ["derive"] } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" diff --git a/crates/aprender-train-distill/Cargo.toml b/crates/aprender-train-distill/Cargo.toml index 3a60869947..3ab594c590 100644 --- a/crates/aprender-train-distill/Cargo.toml +++ b/crates/aprender-train-distill/Cargo.toml @@ -33,7 +33,7 @@ shard-batch-source = [] [dependencies] entrenar = { workspace = true } -entrenar-common = { version = "0.68.1", path = "../aprender-train-common", package = "aprender-train-common" } +entrenar-common = { version = "0.68.2", path = "../aprender-train-common", package = "aprender-train-common" } clap = { version = "4.5", features = ["derive"] } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" diff --git a/crates/aprender-train-inspect/Cargo.toml b/crates/aprender-train-inspect/Cargo.toml index fbbad87dfa..375fa70cdd 100644 --- a/crates/aprender-train-inspect/Cargo.toml +++ b/crates/aprender-train-inspect/Cargo.toml @@ -20,7 +20,7 @@ workspace = true [dependencies] entrenar = { workspace = true } -entrenar-common = { version = "0.68.1", path = "../aprender-train-common", package = "aprender-train-common" } +entrenar-common = { version = "0.68.2", path = "../aprender-train-common", package = "aprender-train-common" } clap = { version = "4.5", features = ["derive"] } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" diff --git a/crates/aprender-train-lora/Cargo.toml b/crates/aprender-train-lora/Cargo.toml index cda72f1112..fa3d9b998c 100644 --- a/crates/aprender-train-lora/Cargo.toml +++ b/crates/aprender-train-lora/Cargo.toml @@ -20,7 +20,7 @@ workspace = true [dependencies] entrenar = { workspace = true } -entrenar-common = { version = "0.68.1", path = "../aprender-train-common", package = "aprender-train-common" } +entrenar-common = { version = "0.68.2", path = "../aprender-train-common", package = "aprender-train-common" } clap = { version = "4.5", features = ["derive"] } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" diff --git a/crates/aprender-train-shell/Cargo.toml b/crates/aprender-train-shell/Cargo.toml index 5e4ad5ec6c..e5e8bffff1 100644 --- a/crates/aprender-train-shell/Cargo.toml +++ b/crates/aprender-train-shell/Cargo.toml @@ -20,7 +20,7 @@ workspace = true [dependencies] entrenar = { workspace = true } -entrenar-common = { version = "0.68.1", path = "../aprender-train-common", package = "aprender-train-common" } +entrenar-common = { version = "0.68.2", path = "../aprender-train-common", package = "aprender-train-common" } clap = { version = "4.5", features = ["derive"] } rustyline = "14" serde = { version = "1.0", features = ["derive"] } diff --git a/crates/aprender-train/Cargo.toml b/crates/aprender-train/Cargo.toml index 4beeb16729..a209edbe19 100644 --- a/crates/aprender-train/Cargo.toml +++ b/crates/aprender-train/Cargo.toml @@ -80,9 +80,9 @@ provable-contracts-macros = { workspace = true } # Core PAIML stack ndarray = "0.16" trueno = { workspace = true, features = ["parallel"] } -trueno-gpu = { version = "0.68.1", path = "../aprender-gpu", package = "aprender-gpu", optional = true } # CUDA compute (APR-MONO single-source-of-truth) +trueno-gpu = { version = "0.68.2", path = "../aprender-gpu", package = "aprender-gpu", optional = true } # CUDA compute (APR-MONO single-source-of-truth) realizar = { workspace = true, optional = true } -aprender = { path = "../aprender-core", version = "0.68.1", package = "aprender-core" } # ML interpret module + .apr format + tokenizers +aprender = { path = "../aprender-core", version = "0.68.2", package = "aprender-core" } # ML interpret module + .apr format + tokenizers trueno-viz = { workspace = true, features = ["terminal"] } batuta-common = { workspace = true, optional = true } # WithDimensions trait for `viz` feature (APR-MONO §S #1978) presentar-terminal = { workspace = true, optional = true } diff --git a/crates/aprender-tsp/Cargo.toml b/crates/aprender-tsp/Cargo.toml index 0a3f8765a2..ec39949ec1 100644 --- a/crates/aprender-tsp/Cargo.toml +++ b/crates/aprender-tsp/Cargo.toml @@ -18,7 +18,7 @@ path = "src/lib.rs" name = "aprender-tsp" [dependencies] -aprender = { path = "../../", version = "0.68.1" } +aprender = { path = "../../", version = "0.68.2" } clap = { version = "4", features = ["derive"] } rand = "0.9" crc32fast = "1.4" diff --git a/crates/aprender-verify-ml/Cargo.toml b/crates/aprender-verify-ml/Cargo.toml index d8815ac787..eddf0ba719 100644 --- a/crates/aprender-verify-ml/Cargo.toml +++ b/crates/aprender-verify-ml/Cargo.toml @@ -50,7 +50,7 @@ uuid = { version = "1.11", features = ["v4", "serde"] } trueno = { workspace = true } # Machine learning for bug prediction (optional) -aprender = { path = "../aprender-core", version = "0.68.1", package = "aprender-core", optional = true } +aprender = { path = "../aprender-core", version = "0.68.2", package = "aprender-core", optional = true } # LLM fine-tuning integration (optional) entrenar = { workspace = true, optional = true } diff --git a/crates/aprender-viz/Cargo.toml b/crates/aprender-viz/Cargo.toml index 1e22bed07c..d278a9f2f3 100644 --- a/crates/aprender-viz/Cargo.toml +++ b/crates/aprender-viz/Cargo.toml @@ -14,7 +14,7 @@ categories = ["visualization", "graphics", "science", "wasm"] [dependencies] # Core SIMD/GPU acceleration -trueno = { version = "0.68.1", path = "../aprender-compute", package = "aprender-compute", default-features = false } +trueno = { version = "0.68.2", path = "../aprender-compute", package = "aprender-compute", default-features = false } # Shared Batuta stack utilities (display traits, formatting) batuta-common = { workspace = true } @@ -44,10 +44,10 @@ kurbo = { version = "0.13", optional = true } resvg = { version = "0.45", optional = true } # Optional: ML integration -aprender = { path = "../aprender-core", version = "0.68.1", package = "aprender-core", optional = true } +aprender = { path = "../aprender-core", version = "0.68.2", package = "aprender-core", optional = true } # Optional: Graph integration -trueno-graph = { version = "0.68.1", path = "../aprender-graph", package = "aprender-graph", default-features = false, optional = true } +trueno-graph = { version = "0.68.2", path = "../aprender-graph", package = "aprender-graph", default-features = false, optional = true } # Optional: Database integration trueno-db = { workspace = true, optional = true } diff --git a/crates/facades/Cargo.lock b/crates/facades/Cargo.lock index cb8d6901ff..4d672772e2 100644 --- a/crates/facades/Cargo.lock +++ b/crates/facades/Cargo.lock @@ -13,7 +13,7 @@ dependencies = [ [[package]] name = "aprender-contracts" -version = "0.68.1" +version = "0.68.2" dependencies = [ "aprender-contracts-macros", "regex", @@ -27,7 +27,7 @@ dependencies = [ [[package]] name = "aprender-contracts-macros" -version = "0.68.1" +version = "0.68.2" dependencies = [ "proc-macro2", "quote", diff --git a/crates/facades/provable-contracts-macros/Cargo.toml b/crates/facades/provable-contracts-macros/Cargo.toml index 33e07cda94..145f430afd 100644 --- a/crates/facades/provable-contracts-macros/Cargo.toml +++ b/crates/facades/provable-contracts-macros/Cargo.toml @@ -30,7 +30,7 @@ path = "src/lib.rs" # facade resolves. `scripts/check_facade_compat.sh` fails if this version ever # drifts from the aprender workspace version — these manifests are excluded # from the root workspace, so `cargo set-version` does NOT reach them. -upstream = { path = "../../aprender-contracts-macros", version = "0.68.1", package = "aprender-contracts-macros" } +upstream = { path = "../../aprender-contracts-macros", version = "0.68.2", package = "aprender-contracts-macros" } [features] default = [] diff --git a/crates/facades/provable-contracts/Cargo.toml b/crates/facades/provable-contracts/Cargo.toml index a929f3d00f..59fc9e3d17 100644 --- a/crates/facades/provable-contracts/Cargo.toml +++ b/crates/facades/provable-contracts/Cargo.toml @@ -31,7 +31,7 @@ path = "src/lib.rs" # facade resolves. `scripts/check_facade_compat.sh` fails if this version ever # drifts from the aprender workspace version — these manifests are excluded # from the root workspace, so `cargo set-version` does NOT reach them. -upstream = { path = "../../aprender-contracts", version = "0.68.1", package = "aprender-contracts" } +upstream = { path = "../../aprender-contracts", version = "0.68.2", package = "aprender-contracts" } [dev-dependencies] # Used by three of the vendored 0.3.1 example programs. They were regular diff --git a/evidence/dogfood/models/0.68.2/gx10.json b/evidence/dogfood/models/0.68.2/gx10.json new file mode 100644 index 0000000000..d77e15abfc --- /dev/null +++ b/evidence/dogfood/models/0.68.2/gx10.json @@ -0,0 +1,263 @@ +{ + "schema": "apr-model-ladder-receipt/v1", + "host": "gx10", + "version": "0.68.2", + "sha": "5c04de82e", + "isa": "aarch64", + "gpu": "NVIDIA GB10", + "cc": "12.1", + "date": "2026-09-19T14:27Z", + "apr_version": "apr 0.68.2 (5c04de82e)", + "executed": 8, + "red": 0, + "rungs": [ + { + "id": "qwen2-1.5b-q4km", + "present": true, + "sha_ok": true, + "sha256": "6a1a2eb6d15622bf3c96857206351ba97e1af16c30d7a74ee38970e434e9407e", + "required": true, + "qa_rc": 0, + "capability_match": { + "passed": true, + "skipped": false, + "message": "Architecture 'qwen2': all 5 required ops supported by GPU" + }, + "golden_output": { + "passed": true, + "skipped": false, + "message": "3 golden test cases passed" + }, + "backends": { + "cpu": { + "ran": true, + "fallback": false, + "rc": 0 + }, + "cuda": { + "ran": true, + "fallback": false, + "rc": 0 + } + }, + "green": true + }, + { + "id": "qwen3-1.7b-q4km", + "present": true, + "sha_ok": true, + "sha256": "b139949c5bd74937ad8ed8c8cf3d9ffb1e99c866c823204dc42c0d91fa181897", + "required": true, + "qa_rc": 0, + "capability_match": { + "passed": true, + "skipped": false, + "message": "Architecture 'qwen3': all 5 required ops supported by GPU" + }, + "golden_output": { + "passed": true, + "skipped": false, + "message": "3 golden test cases passed" + }, + "backends": { + "cpu": { + "ran": true, + "fallback": false, + "rc": 0 + }, + "cuda": { + "ran": true, + "fallback": false, + "rc": 0 + } + }, + "green": true + }, + { + "id": "qwen3-8b-q4km", + "present": true, + "sha_ok": true, + "sha256": "d98cdcbd03e17ce47681435b5150e34c1417f50b5c0019dd560e4882c5745785", + "required": false, + "qa_rc": 0, + "capability_match": { + "passed": true, + "skipped": false, + "message": "Architecture 'qwen3': all 5 required ops supported by GPU" + }, + "golden_output": { + "passed": true, + "skipped": false, + "message": "3 golden test cases passed" + }, + "backends": { + "cpu": { + "ran": true, + "fallback": false, + "rc": 0 + }, + "cuda": { + "ran": true, + "fallback": false, + "rc": 0 + } + }, + "green": true + }, + { + "id": "qwen35-0.8b-q4km", + "present": true, + "sha_ok": true, + "sha256": "bd258782e35f7f458f8aced1adc053e6e92e89bc735ba3be89d38a06121dc517", + "required": true, + "qa_rc": 0, + "capability_match": { + "passed": true, + "skipped": false, + "message": "Architecture 'qwen35': all 4 required ops supported by GPU" + }, + "golden_output": { + "passed": true, + "skipped": false, + "message": "3 golden test cases passed through the runtime entry point (GPU hybrid forward, #3090)" + }, + "backends": { + "cpu": { + "ran": true, + "fallback": false, + "rc": 0 + }, + "cuda": { + "ran": true, + "fallback": false, + "rc": 0 + } + }, + "green": true + }, + { + "id": "qwen35-2b-q4km", + "present": true, + "sha_ok": true, + "sha256": "aaf42c8b7c3cab2bf3d69c355048d4a0ee9973d48f16c731c0520ee914699223", + "required": true, + "qa_rc": 0, + "capability_match": { + "passed": true, + "skipped": false, + "message": "Architecture 'qwen35': all 4 required ops supported by GPU" + }, + "golden_output": { + "passed": true, + "skipped": false, + "message": "3 golden test cases passed through the runtime entry point (GPU hybrid forward, #3090)" + }, + "backends": { + "cpu": { + "ran": true, + "fallback": false, + "rc": 0 + }, + "cuda": { + "ran": true, + "fallback": false, + "rc": 0 + } + }, + "green": true + }, + { + "id": "qwen35-4b-q4km", + "present": true, + "sha_ok": true, + "sha256": "00fe7986ff5f6b463e62455821146049db6f9313603938a70800d1fb69ef11a4", + "required": true, + "qa_rc": 0, + "capability_match": { + "passed": true, + "skipped": false, + "message": "Architecture 'qwen35': all 4 required ops supported by GPU" + }, + "golden_output": { + "passed": true, + "skipped": false, + "message": "3 golden test cases passed through the runtime entry point (GPU hybrid forward, #3090)" + }, + "backends": { + "cpu": { + "ran": true, + "fallback": false, + "rc": 0 + }, + "cuda": { + "ran": true, + "fallback": false, + "rc": 0 + } + }, + "green": true + }, + { + "id": "qwen35-9b-q4km", + "present": true, + "sha_ok": true, + "sha256": "03b74727a860a56338e042c4420bb3f04b2fec5734175f4cb9fa853daf52b7e8", + "required": true, + "qa_rc": 0, + "capability_match": { + "passed": true, + "skipped": false, + "message": "Architecture 'qwen35': all 4 required ops supported by GPU" + }, + "golden_output": { + "passed": true, + "skipped": false, + "message": "3 golden test cases passed through the runtime entry point (GPU hybrid forward, #3090)" + }, + "backends": { + "cpu": { + "ran": true, + "fallback": false, + "rc": 0 + }, + "cuda": { + "ran": true, + "fallback": false, + "rc": 0 + } + }, + "green": true + }, + { + "id": "qwen35-27b-q4km", + "present": true, + "sha_ok": true, + "sha256": "84b5f7f112156d63836a01a69dc3f11a6ba63b10a23b8ca7a7efaf52d5a2d806", + "required": true, + "qa_rc": 0, + "capability_match": { + "passed": true, + "skipped": false, + "message": "Architecture 'qwen35': all 4 required ops supported by GPU" + }, + "golden_output": { + "passed": true, + "skipped": false, + "message": "3 golden test cases passed through the runtime entry point (GPU hybrid forward, #3090)" + }, + "backends": { + "cpu": { + "ran": true, + "fallback": false, + "rc": 0 + }, + "cuda": { + "ran": true, + "fallback": false, + "rc": 0 + } + }, + "green": true + } + ] +} diff --git a/evidence/dogfood/models/0.68.2/lambda.json b/evidence/dogfood/models/0.68.2/lambda.json new file mode 100644 index 0000000000..69413691b8 --- /dev/null +++ b/evidence/dogfood/models/0.68.2/lambda.json @@ -0,0 +1,263 @@ +{ + "schema": "apr-model-ladder-receipt/v1", + "host": "lambda", + "version": "0.68.2", + "sha": "5c04de82e", + "isa": "x86_64", + "gpu": "NVIDIA GeForce RTX 4090", + "cc": "8.9", + "date": "2026-09-19T14:15Z", + "apr_version": "apr 0.68.2 (5c04de82e)", + "executed": 8, + "red": 1, + "rungs": [ + { + "id": "qwen2-1.5b-q4km", + "present": true, + "sha_ok": true, + "sha256": "6a1a2eb6d15622bf3c96857206351ba97e1af16c30d7a74ee38970e434e9407e", + "required": true, + "qa_rc": 0, + "capability_match": { + "passed": true, + "skipped": false, + "message": "Architecture 'qwen2': all 5 required ops supported by GPU" + }, + "golden_output": { + "passed": true, + "skipped": false, + "message": "3 golden test cases passed" + }, + "backends": { + "cpu": { + "ran": true, + "fallback": false, + "rc": 0 + }, + "cuda": { + "ran": true, + "fallback": false, + "rc": 0 + } + }, + "green": true + }, + { + "id": "qwen3-1.7b-q4km", + "present": true, + "sha_ok": true, + "sha256": "b139949c5bd74937ad8ed8c8cf3d9ffb1e99c866c823204dc42c0d91fa181897", + "required": true, + "qa_rc": 0, + "capability_match": { + "passed": true, + "skipped": false, + "message": "Architecture 'qwen3': all 5 required ops supported by GPU" + }, + "golden_output": { + "passed": true, + "skipped": false, + "message": "3 golden test cases passed" + }, + "backends": { + "cpu": { + "ran": true, + "fallback": false, + "rc": 0 + }, + "cuda": { + "ran": true, + "fallback": false, + "rc": 0 + } + }, + "green": true + }, + { + "id": "qwen3-8b-q4km", + "present": true, + "sha_ok": true, + "sha256": "d98cdcbd03e17ce47681435b5150e34c1417f50b5c0019dd560e4882c5745785", + "required": false, + "qa_rc": 5, + "capability_match": { + "passed": true, + "skipped": false, + "message": "Architecture 'qwen3': all 5 required ops supported by GPU" + }, + "golden_output": { + "passed": false, + "skipped": false, + "message": "golden_output: Empty output" + }, + "backends": { + "cpu": { + "ran": true, + "fallback": false, + "rc": 0 + }, + "cuda": { + "ran": true, + "fallback": false, + "rc": 0 + } + }, + "green": false + }, + { + "id": "qwen35-0.8b-q4km", + "present": true, + "sha_ok": true, + "sha256": "bd258782e35f7f458f8aced1adc053e6e92e89bc735ba3be89d38a06121dc517", + "required": true, + "qa_rc": 0, + "capability_match": { + "passed": true, + "skipped": false, + "message": "Architecture 'qwen35': all 4 required ops supported by GPU" + }, + "golden_output": { + "passed": true, + "skipped": false, + "message": "3 golden test cases passed through the runtime entry point (GPU hybrid forward, #3090)" + }, + "backends": { + "cpu": { + "ran": true, + "fallback": false, + "rc": 0 + }, + "cuda": { + "ran": true, + "fallback": false, + "rc": 0 + } + }, + "green": true + }, + { + "id": "qwen35-2b-q4km", + "present": true, + "sha_ok": true, + "sha256": "aaf42c8b7c3cab2bf3d69c355048d4a0ee9973d48f16c731c0520ee914699223", + "required": true, + "qa_rc": 0, + "capability_match": { + "passed": true, + "skipped": false, + "message": "Architecture 'qwen35': all 4 required ops supported by GPU" + }, + "golden_output": { + "passed": true, + "skipped": false, + "message": "3 golden test cases passed through the runtime entry point (GPU hybrid forward, #3090)" + }, + "backends": { + "cpu": { + "ran": true, + "fallback": false, + "rc": 0 + }, + "cuda": { + "ran": true, + "fallback": false, + "rc": 0 + } + }, + "green": true + }, + { + "id": "qwen35-4b-q4km", + "present": true, + "sha_ok": true, + "sha256": "00fe7986ff5f6b463e62455821146049db6f9313603938a70800d1fb69ef11a4", + "required": true, + "qa_rc": 0, + "capability_match": { + "passed": true, + "skipped": false, + "message": "Architecture 'qwen35': all 4 required ops supported by GPU" + }, + "golden_output": { + "passed": true, + "skipped": false, + "message": "3 golden test cases passed through the runtime entry point (GPU hybrid forward, #3090)" + }, + "backends": { + "cpu": { + "ran": true, + "fallback": false, + "rc": 0 + }, + "cuda": { + "ran": true, + "fallback": false, + "rc": 0 + } + }, + "green": true + }, + { + "id": "qwen35-9b-q4km", + "present": true, + "sha_ok": true, + "sha256": "03b74727a860a56338e042c4420bb3f04b2fec5734175f4cb9fa853daf52b7e8", + "required": true, + "qa_rc": 0, + "capability_match": { + "passed": true, + "skipped": false, + "message": "Architecture 'qwen35': all 4 required ops supported by GPU" + }, + "golden_output": { + "passed": true, + "skipped": false, + "message": "3 golden test cases passed through the runtime entry point (GPU hybrid forward, #3090)" + }, + "backends": { + "cpu": { + "ran": true, + "fallback": false, + "rc": 0 + }, + "cuda": { + "ran": true, + "fallback": false, + "rc": 0 + } + }, + "green": true + }, + { + "id": "qwen35-27b-q4km", + "present": true, + "sha_ok": true, + "sha256": "84b5f7f112156d63836a01a69dc3f11a6ba63b10a23b8ca7a7efaf52d5a2d806", + "required": true, + "qa_rc": 0, + "capability_match": { + "passed": true, + "skipped": false, + "message": "Architecture 'qwen35': all 4 required ops supported by GPU" + }, + "golden_output": { + "passed": true, + "skipped": false, + "message": "3 golden test cases passed through the runtime entry point (GPU hybrid forward, #3090)" + }, + "backends": { + "cpu": { + "ran": true, + "fallback": false, + "rc": 0 + }, + "cuda": { + "ran": true, + "fallback": false, + "rc": 0 + } + }, + "green": true + } + ] +}