diff --git a/CHANGELOG.md b/CHANGELOG.md index 98e5916b49..c1413f2e96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,70 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.69.0] - 2026-09-21 + +0.69.0 folds every remaining 0.68.x row into one train (EPIC #3080). The headline goal is Qwen models usable on pure CUDA. This release makes the CUDA path honest and routable: +- `apr serve` now routes the Qwen3.5 hybrid to the model `apr run` already used. +- `apr run --gpu` no longer reports a CPU fallback as success. +- `apr devices` no longer tells a CUDA build that CUDA is unavailable. +- The F2 hybrid guard runs once per model, version and device, and leaves a receipt. + +Underneath, the must-carry quantization work (PP-QUANT-001 M1) is complete: one ggml tensor-type table, extracted from upstream, replaces the hand-typed copies. The release train itself now lives in the repository. The tag step cannot be reached while the milestone holds an open item, and the version is the scripts' only input. The logit-parity receipts are under contract, and the shapes gate runs with the fleet-pinned `pv`. A run of gates that were measured reporting the wrong thing were fixed. It is also the first release assembled as an integration batch (#3669): 17 receipted PRs and one andon fix in one CI run and one queue slot. + +### Qwen on CUDA — headline (Band 3) + +- `apr serve` routes the Qwen3.5 hybrid to `Qwen35Model`, as `apr run` has since #3091 (#3571 layer 1) (#3608) +- `apr run --gpu` that fell back to the CPU now reports a refusal, not a success; the refusal had no production caller (refs #3602) (#3638) +- `apr devices` told every user CUDA was unavailable on a binary that runs CUDA; one flag now decides both (#3545) (#3619) +- The F2 hybrid guard runs once per (model sha256, apr version, device) and leaves a receipt; `apr run --revalidate` re-runs it (#3604) (#3634) +- `ModelConstraints` keeps the gated-DeltaNet shape keys (refs #3346) (#3350) +- PP-LLAMA-001 row 2: the perf002 prefill-path probe, with refusals that fire (PMAT-3556) (#3557) + +### One ggml tensor-type table — PP-QUANT-001 M1, must-carry (Band 0) + +- One ggml tensor-type table, extracted from upstream rather than typed (PMAT-3430 M1) (#3581) +- Three ggml enums become one; M1 complete (PMAT-3430 phases 3–4) (#3621) +- Three hand-typed ggml id→name tables read the traits table instead (#3662) (#3665) +- aprender-core's three hand-typed ggml tables read the traits table, and IQ dequantization refuses instead of inventing weights (#3601, #3656) (#3660) + +### The release train, in the repository (Band 0b and Band 4) + +- The train's movable half and then its tag path are ported into `scripts/release/` (PMAT-3459 parts 1–2) (#3582, #3599) +- The tag step cannot be reached without a clean milestone: the gate is called inside `cut_tag()`, and three mutants are killed (PMAT-3459) (#3617) +- The release scripts take the version as their one input. The milestone, the release epic, the previous tag and the state directory are derived, and a guard refuses a hard-coded version or an out-of-repo path in `scripts/release/` (#3618) (#3655) +- The T-0 preflight returned GO when the dogfood crashed; GO now requires positive evidence (PMAT-3561) (#3614) +- The tag-path and epic-follow-up tickets are registered (PMAT-3459, PMAT-3460) (#3461); so are PMAT-3604 (#3637) and VERIFY-001 on 0.71.0 (#3496) +- The v0.68.2 T-5 reconcile receipt and the train ledger record (#3564); the "always ask before `make publish`" check-in is withdrawn, because T-4 is unattended (#3566) + +### Ontology and SHACL (Band 3b) + +- The shapes gate runs with the fleet-pinned `pv` on the runner it executes on, resolved the way forjar installs it, with the version checked against the pin (PMAT-3567) (#3633) +- The seven logit-parity receipts are migrated under contract (`parity-receipt-v2`) and counted as their own entity type (PMAT-3577) (#3600) +- `removed_by` gets a shape: `refusal-receipt-v1` (#3605) (#3613) +- A contract with no `kind:` says the kind was assumed, on the first error the default caused (ONT-6b, PMAT-3537) (#3538) +- `pv` L2's column counts links, not an index, and `--table` no longer panics on a byte-cut (#3338) (#3351) +- AutoGluon becomes a CRUX competitor (category O, 24 contracts) (#3401) (#3395) + +### Gates that were measured reporting the wrong thing (Band 1) + +- Fail-fast discarded verdicts: the explicit-command runner no longer stops at the first failure and reports skipped tests as a number (#3616), and nextest's `[profile.ci]` sets `fail-fast = false`; 3 of 6 verdicts had been discarded, measured (#3626) (PMAT-3587) +- The rmsnorm scale-invariance test asserted the ε=0 theorem, which is false where the generator reaches; it now asserts the ε>0 property (PMAT-3627) (#3631) +- `fleet_utilization.sh --selftest` read a MATCH as a FAIL under pipefail (EPIPE) (PMAT-3629) (#3632) +- `ci_resolve_dirty.sh` selected every DIRTY PR, not the roadmap class: 14 where 8 qualified (#3623) +- `guard_tree.sh` now shows a passing guard's `UNMEASURED` and `SUMMARY` lines, so "not measured here" no longer reads as PASS (#3651) (#3653) +- The fleet-pinned `pv` shapes guard reports fleet state as `UNMEASURED`, never FAIL: a pin mismatch, a `pv` that returns no verdict, a missing parser, binary or capability. Intel's rewritten pin had turned `guard-tree` red on main (#3669) +- The wiring meta-guard read a workflow step NAME as a dispatch and passed four guards that nothing ran; the publish-strip guard (#3305) now runs, and it reports an interpreter without a TOML reader as ENV instead of a failure (#3644) (#3647) +- Two functions over the complexity ratchet are brought back under it by extracting helpers, with no behaviour change (#3681) (#3669) +- `apr parity` told the user "parity disproven" (exit 5) for a model whose quant type the CUDA capability gate refuses (F16, IQ*); it now REFUSES with exit 12 and names the quant, which the pre-publish C14 row reports rather than fails (#3685) (#3689) +- Two gates treated a runner WITHOUT a tool as a verdict: the path-only dev-deps guard went red on every intel runner with no TOML reader, and the parity-receipt denominator counted a missing `python3` as "the tree holds 0". Both now report `UNMEASURED` naming the runner and the missing tool; a tool that is present and crashes stays red (#3692, #3695) (#3689) + +### CI throughput + +- Merge-queue groups no longer pay the full workspace run: the queue is SQUASH, so the tier script now diffs `HEAD^1..HEAD` instead of requiring a second parent. A docs/roadmap/audit-only change runs no workspace tests, and renames are listed on both sides (#3658) (#3664) +- `book-contracts.yml` drops the three rust-cache steps (PMAT-3539) (#3540) +- CB-200 601→599 and the complexity shrink under pmat 3.41.1 (#3491) +- Five tickets minted in a working tree are pushed to the roadmap (#3580) + ## [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). diff --git a/Cargo.lock b/Cargo.lock index eba977fa2a..c8a90c9044 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -248,7 +248,7 @@ dependencies = [ [[package]] name = "apr-cli" -version = "0.68.2" +version = "0.69.0" dependencies = [ "anyhow", "aprender-cgp", @@ -322,7 +322,7 @@ dependencies = [ [[package]] name = "apr-format" -version = "0.68.2" +version = "0.69.0" dependencies = [ "bincode", "cargo_metadata", @@ -340,7 +340,7 @@ dependencies = [ [[package]] name = "aprender" -version = "0.68.2" +version = "0.69.0" dependencies = [ "apr-cli", "aprender-core", @@ -348,7 +348,7 @@ dependencies = [ [[package]] name = "aprender-bench-compute" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-core", "criterion 0.7.0", @@ -357,7 +357,7 @@ dependencies = [ [[package]] name = "aprender-bench-tokenizer" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-core", "criterion 0.7.0", @@ -366,7 +366,7 @@ dependencies = [ [[package]] name = "aprender-cbtop" -version = "0.68.2" +version = "0.69.0" dependencies = [ "anyhow", "aprender-common", @@ -391,7 +391,7 @@ dependencies = [ [[package]] name = "aprender-cgp" -version = "0.68.2" +version = "0.69.0" dependencies = [ "anyhow", "aprender-gpu", @@ -411,7 +411,7 @@ dependencies = [ [[package]] name = "aprender-common" -version = "0.68.2" +version = "0.69.0" dependencies = [ "lz4_flex 0.11.6", "zstd", @@ -419,7 +419,7 @@ dependencies = [ [[package]] name = "aprender-compute" -version = "0.68.2" +version = "0.69.0" dependencies = [ "anyhow", "aprender-contracts-macros", @@ -468,7 +468,7 @@ dependencies = [ [[package]] name = "aprender-compute-xtask" -version = "0.68.2" +version = "0.69.0" dependencies = [ "anyhow", "bashrs", @@ -482,7 +482,7 @@ dependencies = [ [[package]] name = "aprender-contracts" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-contracts-macros", "criterion 0.5.1", @@ -500,7 +500,7 @@ dependencies = [ [[package]] name = "aprender-contracts-cli" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-contracts", "clap", @@ -513,7 +513,7 @@ dependencies = [ [[package]] name = "aprender-contracts-macros" -version = "0.68.2" +version = "0.69.0" dependencies = [ "proc-macro2", "quote", @@ -523,7 +523,7 @@ dependencies = [ [[package]] name = "aprender-contrastive-data" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-contracts-macros", "aprender-rand", @@ -538,7 +538,7 @@ dependencies = [ [[package]] name = "aprender-core" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aes-gcm", "alsa", @@ -592,7 +592,7 @@ dependencies = [ [[package]] name = "aprender-cuda-edge" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-gpu", "proptest", @@ -603,7 +603,7 @@ dependencies = [ [[package]] name = "aprender-cupti" -version = "0.68.2" +version = "0.69.0" dependencies = [ "bindgen", "bitflags 2.13.0", @@ -613,7 +613,7 @@ dependencies = [ [[package]] name = "aprender-data" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aes-gcm", "aprender-test-lib", @@ -665,7 +665,7 @@ dependencies = [ [[package]] name = "aprender-db" -version = "0.68.2" +version = "0.69.0" dependencies = [ "anyhow", "aprender-common", @@ -710,7 +710,7 @@ dependencies = [ [[package]] name = "aprender-distribute" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-compute", "aprender-db", @@ -740,7 +740,7 @@ dependencies = [ [[package]] name = "aprender-explain" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-gpu", "aprender-present-core", @@ -758,7 +758,7 @@ dependencies = [ [[package]] name = "aprender-fft" -version = "0.68.2" +version = "0.69.0" dependencies = [ "criterion 0.7.0", "proptest", @@ -767,7 +767,7 @@ dependencies = [ [[package]] name = "aprender-gemm-codegen" -version = "0.68.2" +version = "0.69.0" dependencies = [ "proc-macro2", "quote", @@ -776,7 +776,7 @@ dependencies = [ [[package]] name = "aprender-gpu" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-common", "aprender-simulate", @@ -794,7 +794,7 @@ dependencies = [ [[package]] name = "aprender-graph" -version = "0.68.2" +version = "0.69.0" dependencies = [ "anyhow", "aprender-compute", @@ -815,7 +815,7 @@ dependencies = [ [[package]] name = "aprender-image" -version = "0.68.2" +version = "0.69.0" dependencies = [ "criterion 0.7.0", "proptest", @@ -824,7 +824,7 @@ dependencies = [ [[package]] name = "aprender-mcp" -version = "0.68.2" +version = "0.69.0" dependencies = [ "anyhow", "inventory", @@ -838,7 +838,7 @@ dependencies = [ [[package]] name = "aprender-monte-carlo" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender", "assert_cmd", @@ -857,7 +857,7 @@ dependencies = [ [[package]] name = "aprender-orchestrate" -version = "0.68.2" +version = "0.69.0" dependencies = [ "anyhow", "aprender-common", @@ -927,7 +927,7 @@ dependencies = [ [[package]] name = "aprender-present-cli" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-present-yaml", "clap", @@ -940,7 +940,7 @@ dependencies = [ [[package]] name = "aprender-present-core" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-contracts-macros", "criterion 0.7.0", @@ -952,7 +952,7 @@ dependencies = [ [[package]] name = "aprender-present-layout" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-present-core", "criterion 0.7.0", @@ -963,7 +963,7 @@ dependencies = [ [[package]] name = "aprender-present-lib" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-contracts", "aprender-present-core", @@ -992,7 +992,7 @@ dependencies = [ [[package]] name = "aprender-present-terminal" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-present-core", "bitvec", @@ -1012,7 +1012,7 @@ dependencies = [ [[package]] name = "aprender-present-test" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-present-core", "aprender-present-test-macros", @@ -1023,7 +1023,7 @@ dependencies = [ [[package]] name = "aprender-present-test-macros" -version = "0.68.2" +version = "0.69.0" dependencies = [ "proc-macro2", "quote", @@ -1032,7 +1032,7 @@ dependencies = [ [[package]] name = "aprender-present-widgets" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-present-core", "aprender-present-yaml", @@ -1044,7 +1044,7 @@ dependencies = [ [[package]] name = "aprender-present-yaml" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-present-core", "proptest", @@ -1054,7 +1054,7 @@ dependencies = [ [[package]] name = "aprender-profile" -version = "0.68.2" +version = "0.69.0" dependencies = [ "addr2line 0.25.1", "anyhow", @@ -1106,7 +1106,7 @@ dependencies = [ [[package]] name = "aprender-profile-core" -version = "0.68.2" +version = "0.69.0" dependencies = [ "hex", "serde", @@ -1116,7 +1116,7 @@ dependencies = [ [[package]] name = "aprender-ptx-debug" -version = "0.68.2" +version = "0.69.0" dependencies = [ "clap", "proptest", @@ -1125,7 +1125,7 @@ dependencies = [ [[package]] name = "aprender-qa-certify" -version = "0.68.2" +version = "0.69.0" dependencies = [ "chrono", "clap", @@ -1136,7 +1136,7 @@ dependencies = [ [[package]] name = "aprender-qa-cli" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-qa-certify", "aprender-qa-gen", @@ -1155,7 +1155,7 @@ dependencies = [ [[package]] name = "aprender-qa-gen" -version = "0.68.2" +version = "0.69.0" dependencies = [ "anyhow", "chrono", @@ -1172,7 +1172,7 @@ dependencies = [ [[package]] name = "aprender-qa-report" -version = "0.68.2" +version = "0.69.0" dependencies = [ "anyhow", "aprender-qa-gen", @@ -1190,7 +1190,7 @@ dependencies = [ [[package]] name = "aprender-qa-runner" -version = "0.68.2" +version = "0.69.0" dependencies = [ "anyhow", "aprender-qa-gen", @@ -1215,7 +1215,7 @@ dependencies = [ [[package]] name = "aprender-quant" -version = "0.68.2" +version = "0.69.0" dependencies = [ "half", "serde_json", @@ -1223,7 +1223,7 @@ dependencies = [ [[package]] name = "aprender-rag" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-common", "aprender-compute", @@ -1251,7 +1251,7 @@ dependencies = [ [[package]] name = "aprender-rag-cli" -version = "0.68.2" +version = "0.69.0" dependencies = [ "anyhow", "aprender-rag", @@ -1269,7 +1269,7 @@ dependencies = [ [[package]] name = "aprender-rand" -version = "0.68.2" +version = "0.69.0" dependencies = [ "criterion 0.7.0", "proptest", @@ -1278,7 +1278,7 @@ dependencies = [ [[package]] name = "aprender-registry" -version = "0.68.2" +version = "0.69.0" dependencies = [ "anyhow", "aprender-core", @@ -1308,7 +1308,7 @@ dependencies = [ [[package]] name = "aprender-serve" -version = "0.68.2" +version = "0.69.0" dependencies = [ "anyhow", "approx", @@ -1377,7 +1377,7 @@ dependencies = [ [[package]] name = "aprender-shell" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-core", "clap", @@ -1392,7 +1392,7 @@ dependencies = [ [[package]] name = "aprender-simulate" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-contracts", "aprender-contracts-macros", @@ -1432,7 +1432,7 @@ dependencies = [ [[package]] name = "aprender-solve" -version = "0.68.2" +version = "0.69.0" dependencies = [ "criterion 0.7.0", "half", @@ -1442,7 +1442,7 @@ dependencies = [ [[package]] name = "aprender-sparse" -version = "0.68.2" +version = "0.69.0" dependencies = [ "criterion 0.7.0", "proptest", @@ -1451,7 +1451,7 @@ dependencies = [ [[package]] name = "aprender-tensor" -version = "0.68.2" +version = "0.69.0" dependencies = [ "criterion 0.7.0", "proptest", @@ -1460,7 +1460,7 @@ dependencies = [ [[package]] name = "aprender-test-cli" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-test-lib", "assert_cmd", @@ -1488,7 +1488,7 @@ dependencies = [ [[package]] name = "aprender-test-derive" -version = "0.68.2" +version = "0.69.0" dependencies = [ "proc-macro2", "quote", @@ -1498,7 +1498,7 @@ dependencies = [ [[package]] name = "aprender-test-js-gen" -version = "0.68.2" +version = "0.69.0" dependencies = [ "blake3", "chrono", @@ -1514,7 +1514,7 @@ dependencies = [ [[package]] name = "aprender-test-lib" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-compute", "aprender-present-core", @@ -1560,7 +1560,7 @@ dependencies = [ [[package]] name = "aprender-test-showcase" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-present-terminal", "aprender-test-lib", @@ -1577,7 +1577,7 @@ dependencies = [ [[package]] name = "aprender-train" -version = "0.68.2" +version = "0.69.0" dependencies = [ "approx", "aprender-common", @@ -1646,7 +1646,7 @@ dependencies = [ [[package]] name = "aprender-train-bench" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-train", "aprender-train-common", @@ -1663,7 +1663,7 @@ dependencies = [ [[package]] name = "aprender-train-common" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-viz", "clap", @@ -1675,7 +1675,7 @@ dependencies = [ [[package]] name = "aprender-train-distill" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-train", "aprender-train-common", @@ -1696,7 +1696,7 @@ dependencies = [ [[package]] name = "aprender-train-inspect" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-train", "aprender-train-common", @@ -1712,7 +1712,7 @@ dependencies = [ [[package]] name = "aprender-train-lora" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-train", "aprender-train-common", @@ -1728,7 +1728,7 @@ dependencies = [ [[package]] name = "aprender-train-shell" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-train", "aprender-train-common", @@ -1744,7 +1744,7 @@ dependencies = [ [[package]] name = "aprender-train-wasm" -version = "0.68.2" +version = "0.69.0" dependencies = [ "proptest", "serde", @@ -1755,7 +1755,7 @@ dependencies = [ [[package]] name = "aprender-tsp" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender", "assert_cmd", @@ -1770,7 +1770,7 @@ dependencies = [ [[package]] name = "aprender-verify" -version = "0.68.2" +version = "0.69.0" dependencies = [ "chrono", "criterion 0.5.1", @@ -1782,7 +1782,7 @@ dependencies = [ [[package]] name = "aprender-verify-ml" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-compute", "aprender-core", @@ -1812,7 +1812,7 @@ dependencies = [ [[package]] name = "aprender-viz" -version = "0.68.2" +version = "0.69.0" dependencies = [ "approx", "aprender-common", @@ -1840,7 +1840,7 @@ dependencies = [ [[package]] name = "aprender-zram" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-zram-adaptive", "aprender-zram-core", @@ -1850,7 +1850,7 @@ dependencies = [ [[package]] name = "aprender-zram-adaptive" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-zram-core", "proptest", @@ -1859,7 +1859,7 @@ dependencies = [ [[package]] name = "aprender-zram-cli" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-zram-adaptive", "aprender-zram-core", @@ -1873,7 +1873,7 @@ dependencies = [ [[package]] name = "aprender-zram-core" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-gpu", "criterion 0.7.0", @@ -1885,7 +1885,7 @@ dependencies = [ [[package]] name = "aprender-zram-generator" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-zram-core", "clap", diff --git a/Cargo.toml b/Cargo.toml index ff633f3b2f..9d2db4927f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -149,7 +149,7 @@ exclude = [ resolver = "2" [workspace.package] -version = "0.68.2" +version = "0.69.0" 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.2" } +aprender-rand = { path = "crates/aprender-rand", version = "0.69.0" } # 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.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" } +provable-contracts = { path = "crates/aprender-contracts", version = "0.69.0", package = "aprender-contracts" } +provable-contracts-macros = { path = "crates/aprender-contracts-macros", version = "0.69.0", package = "aprender-contracts-macros" } +aprender-contracts-macros = { path = "crates/aprender-contracts-macros", version = "0.69.0" } # 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.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" } +aprender-compute = { path = "crates/aprender-compute", version = "0.69.0" } +aprender-gpu = { path = "crates/aprender-gpu", version = "0.69.0" } +aprender-quant = { path = "crates/aprender-quant", version = "0.69.0" } +aprender-serve = { path = "crates/aprender-serve", version = "0.69.0" } +realizar = { path = "crates/aprender-serve", version = "0.69.0", package = "aprender-serve" } +alimentar = { path = "crates/aprender-data", version = "0.69.0", package = "aprender-data" } +pacha = { path = "crates/aprender-registry", version = "0.69.0", 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.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" } +trueno-quant = { path = "crates/aprender-quant", version = "0.69.0", package = "aprender-quant" } +trueno-db = { path = "crates/aprender-db", version = "0.69.0", package = "aprender-db" } +trueno-viz = { path = "crates/aprender-viz", version = "0.69.0", package = "aprender-viz" } +trueno-rag = { path = "crates/aprender-rag", version = "0.69.0", package = "aprender-rag" } +trueno-cuda-edge = { path = "crates/aprender-cuda-edge", version = "0.69.0", package = "aprender-cuda-edge" } +trueno-sparse = { path = "crates/aprender-sparse", version = "0.69.0", package = "aprender-sparse" } +trueno-solve = { path = "crates/aprender-solve", version = "0.69.0", package = "aprender-solve" } +renacer-core = { path = "crates/aprender-profile-core", version = "0.69.0", package = "aprender-profile-core" } +repartir = { path = "crates/aprender-distribute", version = "0.69.0", package = "aprender-distribute" } +simular = { path = "crates/aprender-simulate", version = "0.69.0", package = "aprender-simulate" } +probar = { path = "crates/aprender-test-lib", version = "0.69.0", 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.2", package = "aprender-test-lib", default-features = false, features = ["llm"] } +apr-test = { path = "crates/aprender-test-lib", version = "0.69.0", 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.2", package = "aprender-test-lib" } +jugar-probar = { path = "crates/aprender-test-lib", version = "0.69.0", 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.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" } +aprender-train = { path = "crates/aprender-train", version = "0.69.0" } +entrenar = { path = "crates/aprender-train", version = "0.69.0", package = "aprender-train" } +aprender-train-common = { path = "crates/aprender-train-common", version = "0.69.0" } +aprender-train-distill = { path = "crates/aprender-train-distill", version = "0.69.0" } +aprender-orchestrate = { path = "crates/aprender-orchestrate", version = "0.69.0" } +aprender-contracts = { path = "crates/aprender-contracts", version = "0.69.0" } +aprender-profile = { path = "crates/aprender-profile", version = "0.69.0" } +aprender-profile-core = { path = "crates/aprender-profile-core", version = "0.69.0" } +aprender-zram-core = { path = "crates/aprender-zram-core", version = "0.69.0" } +aprender-zram-adaptive = { path = "crates/aprender-zram-adaptive", version = "0.69.0" } +aprender-zram-cli = { path = "crates/aprender-zram-cli", version = "0.69.0" } +aprender-present-core = { path = "crates/aprender-present-core", version = "0.69.0" } +aprender-present-terminal = { path = "crates/aprender-present-terminal", version = "0.69.0" } +aprender-present-widgets = { path = "crates/aprender-present-widgets", version = "0.69.0" } +aprender-present-layout = { path = "crates/aprender-present-layout", version = "0.69.0" } +aprender-present-yaml = { path = "crates/aprender-present-yaml", version = "0.69.0" } +aprender-present-test = { path = "crates/aprender-present-test", version = "0.69.0" } +aprender-db = { path = "crates/aprender-db", version = "0.69.0" } +aprender-graph = { path = "crates/aprender-graph", version = "0.69.0" } +aprender-rag = { path = "crates/aprender-rag", version = "0.69.0" } +aprender-rag-cli = { path = "crates/aprender-rag-cli", version = "0.69.0" } +aprender-qa-cli = { path = "crates/aprender-qa-cli", version = "0.69.0" } +aprender-cgp = { path = "crates/aprender-cgp", version = "0.69.0" } +aprender-contrastive-data = { path = "crates/aprender-contrastive-data", version = "0.69.0" } +aprender-contracts-cli = { path = "crates/aprender-contracts-cli", version = "0.69.0" } +aprender-data = { path = "crates/aprender-data", version = "0.69.0" } # 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.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" } +trueno-zram-core = { path = "crates/aprender-zram-core", version = "0.69.0", package = "aprender-zram-core" } +trueno-zram-adaptive = { path = "crates/aprender-zram-adaptive", version = "0.69.0", package = "aprender-zram-adaptive" } +trueno = { path = "crates/aprender-compute", version = "0.69.0", package = "aprender-compute" } +presentar-core = { path = "crates/aprender-present-core", version = "0.69.0", package = "aprender-present-core" } +presentar-terminal = { path = "crates/aprender-present-terminal", version = "0.69.0", package = "aprender-present-terminal" } +presentar-widgets = { path = "crates/aprender-present-widgets", version = "0.69.0", package = "aprender-present-widgets" } +presentar-layout = { path = "crates/aprender-present-layout", version = "0.69.0", package = "aprender-present-layout" } +presentar-yaml = { path = "crates/aprender-present-yaml", version = "0.69.0", package = "aprender-present-yaml" } +presentar-test = { path = "crates/aprender-present-test", version = "0.69.0", package = "aprender-present-test" } +presentar-test-macros = { path = "crates/aprender-present-test-macros", version = "0.69.0", package = "aprender-present-test-macros" } +jugar-probar-derive = { path = "crates/aprender-test-derive", version = "0.69.0", package = "aprender-test-derive" } +batuta-common = { path = "crates/aprender-common", version = "0.69.0", 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.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" } +renacer = { path = "crates/aprender-profile", version = "0.69.0", package = "aprender-profile" } +entrenar-lora = { path = "crates/aprender-train-lora", version = "0.69.0", package = "aprender-train-lora" } +batuta = { path = "crates/aprender-orchestrate", version = "0.69.0", package = "aprender-orchestrate" } +trueno-graph = { path = "crates/aprender-graph", version = "0.69.0", package = "aprender-graph" } [workspace.lints.rust] # Safety @@ -568,7 +568,7 @@ semicolon_if_nothing_returned = "allow" # Style preference [package] name = "aprender" -version = "0.68.2" +version = "0.69.0" 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.2", default-features = true, optional = true } +apr-cli = { path = "crates/apr-cli", version = "0.69.0", default-features = true, optional = true } # Core ML library (lib name = "aprender") -aprender_ml = { path = "crates/aprender-core", version = "0.68.2", package = "aprender-core" } +aprender_ml = { path = "crates/aprender-core", version = "0.69.0", package = "aprender-core" } [features] default = ["cli"] diff --git a/crates/apr-cli/Cargo.toml b/crates/apr-cli/Cargo.toml index f92636ca7f..a0a0f43dd7 100644 --- a/crates/apr-cli/Cargo.toml +++ b/crates/apr-cli/Cargo.toml @@ -126,12 +126,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.2", package = "aprender-core", default-features = true, features = ["format-compression"] } +aprender = { path = "../aprender-core", version = "0.69.0", 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.2" } +aprender-mcp = { path = "../aprender-mcp", version = "0.69.0" } async-stream = "0.3" provable-contracts-macros = { workspace = true } @@ -142,7 +142,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.2", path = "../aprender-orchestrate", package = "aprender-orchestrate", default-features = false, features = ["agents", "agents-inference", "agents-mcp", "rag"] } +batuta = { version = "0.69.0", 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 @@ -237,7 +237,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.2", package = "aprender-explain", optional = true } +trueno-explain = { path = "../aprender-explain", version = "0.69.0", 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 3f504e87b2..42f46161b1 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.2", package = "aprender-core", features = ["format-quantize"] } +aprender = { path = "../aprender-core", version = "0.69.0", 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 ff461ba624..71a980af3e 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.2", package = "aprender-core" } +aprender = { path = "../aprender-core", version = "0.69.0", 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 07b4994bdc..ffb6420647 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.2", path = "../aprender-gpu", package = "aprender-gpu", optional = true } +trueno-gpu = { version = "0.69.0", 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 866d5f935d..324a489aa8 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.2", features = ["cuda"], optional = true, package = "aprender-gpu" } +trueno-gpu = { path = "../aprender-gpu", version = "0.69.0", features = ["cuda"], optional = true, package = "aprender-gpu" } [features] default = [] diff --git a/crates/aprender-compute/Cargo.toml b/crates/aprender-compute/Cargo.toml index 08468ae2ae..f4be32328d 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.2", path = "../aprender-gpu", optional = true, package = "aprender-gpu" } +trueno-gpu = { version = "0.69.0", 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.2", path = "../aprender-gemm-codegen", package = "aprender-gemm-codegen" } +trueno-gemm-codegen = { version = "0.69.0", 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 6d29b84b64..f6104fe6b1 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.2" } +aprender-contracts = { path = "../aprender-contracts", version = "0.69.0" } 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 513801ea53..d23b79a747 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.2", package = "aprender-contracts-macros" } +provable-contracts-macros = { path = "../aprender-contracts-macros", version = "0.69.0", package = "aprender-contracts-macros" } regex = "1" sha2 = { workspace = true } syn = { workspace = true } diff --git a/crates/aprender-core/Cargo.toml b/crates/aprender-core/Cargo.toml index ff9b7eff20..f202803425 100644 --- a/crates/aprender-core/Cargo.toml +++ b/crates/aprender-core/Cargo.toml @@ -117,7 +117,7 @@ trueno-quant = { workspace = true } # APR-2231: sovereign `.apr` container leaf. aprender-core From-wraps its # AprFormatError into AprenderError and re-exports it (no API break). Leaf has # no dependency back on core, so this introduces no publish cycle. -apr-format = { path = "../apr-format", version = "0.68" } +apr-format = { path = "../apr-format", version = "0.69" } # NOTE: trueno-rag (=aprender-rag) removed (APR-MONO self-containment): aprender-rag # depends on aprender-core + aprender-serve, so core→rag closed a core→rag→serve→core diff --git a/crates/aprender-cuda-edge/Cargo.toml b/crates/aprender-cuda-edge/Cargo.toml index 4e6f1c2d08..f5ff3dd086 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.2", path = "../aprender-gpu", package = "aprender-gpu", optional = true } +trueno-gpu = { version = "0.69.0", 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 90ac003bc5..77a435c302 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.2", path = "../aprender-gpu", package = "aprender-gpu", features = ["cuda"] } +trueno-gpu = { version = "0.69.0", 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 3a8872d82f..0ada68d149 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.2", package = "aprender-core" } # Sparse matrix ops, PageRank +aprender = { path = "../aprender-core", version = "0.69.0", 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 161810f1ed..ab1a926715 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.2" } +aprender = { path = "../../", version = "0.69.0" } 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 1234fd9b7a..ef0e8bee77 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.2", package = "aprender-core", optional = true } +aprender = { path = "../aprender-core", version = "0.69.0", 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 6e061d1fba..ddb06dc657 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.2", package = "aprender-core" } +aprender = { path = "../aprender-core", version = "0.69.0", 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.2", path = "../aprender-viz", package = "aprender-viz", default-features = false } +trueno-viz = { version = "0.69.0", 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 386b7778d9..118f23d189 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.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" } +aprender-qa-gen = { version = "0.69.0", path = "../aprender-qa-gen" } +aprender-qa-runner = { version = "0.69.0", path = "../aprender-qa-runner" } +aprender-qa-report = { version = "0.69.0", path = "../aprender-qa-report" } +aprender-qa-certify = { version = "0.69.0", 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 4cb3bf59ef..22c86b27ec 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.2", path = "../aprender-qa-gen" } -aprender-qa-runner = { version = "0.68.2", path = "../aprender-qa-runner" } +aprender-qa-gen = { version = "0.69.0", path = "../aprender-qa-gen" } +aprender-qa-runner = { version = "0.69.0", 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 f4bedb5977..22f4b27e41 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.2", path = "../aprender-qa-gen" } +aprender-qa-gen = { version = "0.69.0", 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.2", path = "../aprender-test-lib", package = "aprender-test-lib", features = ["llm-types"] } +jugar-probar = { version = "0.69.0", 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 13af0dc805..78847a0569 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.2" +version = "0.69.0" 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 d5bdfe7ed6..963015c2a4 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.2", path = "../aprender-serve", package = "aprender-serve", default-features = false, optional = true } +realizar = { version = "0.69.0", 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 3715df335d..6b572f8459 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.2", package = "aprender-core", optional = true } +aprender = { path = "../aprender-core", version = "0.69.0", 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 dabf141a8b..0e18d512f2 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.2", path = "../aprender-gpu", package = "aprender-gpu", optional = true, features = ["cuda"] } # APR-MONO single-source-of-truth +trueno-gpu = { version = "0.69.0", 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.2", package = "aprender-core", optional = true } +aprender = { path = "../aprender-core", version = "0.69.0", 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 5fae842e30..568cf5e56d 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.2", package = "aprender-core", features = ["format-encryption", "format-compression", "format-homomorphic"] } +aprender = { path = "../aprender-core", version = "0.69.0", 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 95f23e95b2..235047db37 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.2", path = "../aprender-present-core", package = "aprender-present-core", default-features = false, optional = true } +presentar-core = { version = "0.69.0", 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 5bc0b133e6..1796161e86 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.2", package = "aprender-test-lib" } +jugar-probar = { path = "../aprender-test-lib", version = "0.69.0", 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 803bdb0c9e..9b5458fe36 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.2", path = "../aprender-train-common", package = "aprender-train-common" } +entrenar-common = { version = "0.69.0", 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 3ab594c590..9760813be6 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.2", path = "../aprender-train-common", package = "aprender-train-common" } +entrenar-common = { version = "0.69.0", 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 375fa70cdd..24cacf7ecf 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.2", path = "../aprender-train-common", package = "aprender-train-common" } +entrenar-common = { version = "0.69.0", 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 fa3d9b998c..2e9b36d83b 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.2", path = "../aprender-train-common", package = "aprender-train-common" } +entrenar-common = { version = "0.69.0", 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 e5e8bffff1..88414ef343 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.2", path = "../aprender-train-common", package = "aprender-train-common" } +entrenar-common = { version = "0.69.0", 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 a209edbe19..c3c2f77f19 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.2", path = "../aprender-gpu", package = "aprender-gpu", optional = true } # CUDA compute (APR-MONO single-source-of-truth) +trueno-gpu = { version = "0.69.0", 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.2", package = "aprender-core" } # ML interpret module + .apr format + tokenizers +aprender = { path = "../aprender-core", version = "0.69.0", 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 ec39949ec1..6733ea3083 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.2" } +aprender = { path = "../../", version = "0.69.0" } 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 eddf0ba719..9c2ac37917 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.2", package = "aprender-core", optional = true } +aprender = { path = "../aprender-core", version = "0.69.0", 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 d278a9f2f3..c9588bddc5 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.2", path = "../aprender-compute", package = "aprender-compute", default-features = false } +trueno = { version = "0.69.0", 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.2", package = "aprender-core", optional = true } +aprender = { path = "../aprender-core", version = "0.69.0", package = "aprender-core", optional = true } # Optional: Graph integration -trueno-graph = { version = "0.68.2", path = "../aprender-graph", package = "aprender-graph", default-features = false, optional = true } +trueno-graph = { version = "0.69.0", 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 4d672772e2..1f039bd914 100644 --- a/crates/facades/Cargo.lock +++ b/crates/facades/Cargo.lock @@ -13,7 +13,7 @@ dependencies = [ [[package]] name = "aprender-contracts" -version = "0.68.2" +version = "0.69.0" dependencies = [ "aprender-contracts-macros", "regex", @@ -27,7 +27,7 @@ dependencies = [ [[package]] name = "aprender-contracts-macros" -version = "0.68.2" +version = "0.69.0" dependencies = [ "proc-macro2", "quote", diff --git a/crates/facades/provable-contracts-macros/Cargo.toml b/crates/facades/provable-contracts-macros/Cargo.toml index 145f430afd..1de7f44a00 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.2", package = "aprender-contracts-macros" } +upstream = { path = "../../aprender-contracts-macros", version = "0.69.0", package = "aprender-contracts-macros" } [features] default = [] diff --git a/crates/facades/provable-contracts/Cargo.toml b/crates/facades/provable-contracts/Cargo.toml index 59fc9e3d17..8b24368da8 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.2", package = "aprender-contracts" } +upstream = { path = "../../aprender-contracts", version = "0.69.0", package = "aprender-contracts" } [dev-dependencies] # Used by three of the vendored 0.3.1 example programs. They were regular