From 6637009fff49e218a00f67736c2b1cda074d3c14 Mon Sep 17 00:00:00 2001 From: Stefano Noferi Date: Thu, 8 Oct 2026 16:08:36 +0200 Subject: [PATCH 1/2] fix(core): build with Rust 1.85, the rustc of the proxy image The Luhn check of the PII scanner used u32::is_multiple_of, stable since Rust 1.87; the proxy image builds admina-core with the rustc of Debian (1.85), so the image build of 0.14.1 failed. The check uses % again. Cargo.toml declares rust-version = "1.85": clippy, which CI runs with -D warnings, reports the standard-library APIs that are newer (incompatible_msrv). --- core-rust/Cargo.toml | 3 +++ core-rust/src/pii.rs | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/core-rust/Cargo.toml b/core-rust/Cargo.toml index f01d726..f158871 100644 --- a/core-rust/Cargo.toml +++ b/core-rust/Cargo.toml @@ -17,6 +17,9 @@ name = "admina_core" version = "0.14.1" edition = "2021" +# The rustc of Debian, with which the proxy image builds the crate; clippy +# reports the standard-library APIs that are newer (incompatible_msrv). +rust-version = "1.85" description = "Admina governance engines — Rust core with Python bindings" license = "Apache-2.0" diff --git a/core-rust/src/pii.rs b/core-rust/src/pii.rs index 9c0c5f8..45a1787 100644 --- a/core-rust/src/pii.rs +++ b/core-rust/src/pii.rs @@ -38,7 +38,7 @@ fn luhn_valid(_text: &str, caps: &Captures) -> bool { .rev() .enumerate() .map(|(i, &d)| { - if !i.is_multiple_of(2) { + if i % 2 == 1 { let x = d * 2; if x > 9 { x - 9 @@ -50,7 +50,7 @@ fn luhn_valid(_text: &str, caps: &Captures) -> bool { } }) .sum(); - !digits.is_empty() && sum.is_multiple_of(10) + !digits.is_empty() && sum % 10 == 0 } fn is_word(c: char) -> bool { From 201d3ea4d68b12663bd3634984dd30a3d32a58c5 Mon Sep 17 00:00:00 2001 From: Stefano Noferi Date: Thu, 8 Oct 2026 16:08:38 +0200 Subject: [PATCH 2/2] =?UTF-8?q?chore:=20release=200.14.2=20=E2=80=94=20ver?= =?UTF-8?q?sion=20bump=20and=20lockfile=20alignment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 23 ++++++++++++++++++++++- ROADMAP.md | 2 +- admina/__init__.py | 2 +- core-rust/Cargo.lock | 2 +- core-rust/Cargo.toml | 2 +- core-rust/pyproject.toml | 2 +- core-rust/uv.lock | 2 +- pyproject.toml | 2 +- uv.lock | 4 ++-- 9 files changed, 31 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c14d3dc..b674c8e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,26 @@ stability commitment. See [ROADMAP.md](ROADMAP.md) for planned milestones. ## [Unreleased] +## [0.14.2] — 2026-10-08 + +Patch release: `admina-core` builds with Rust 1.85 again, and the proxy +image is published. The code of the framework is unchanged from 0.14.1. + +### Fixed + +- The Luhn check of the Rust PII scanner (`admina-core`) used + `is_multiple_of`, stable since Rust 1.87. The proxy image builds + `admina-core` with the rustc of Debian (1.85), so the image of 0.14.1 + was not built: `ghcr.io/admina-org/admina-proxy` has no 0.14.1 tag, and + its `latest` stayed on 0.14.0. The check uses `%` again. The PyPI + wheels of 0.14.1, built with a newer Rust, are not affected. + +### Changed + +- `core-rust/Cargo.toml` declares `rust-version = "1.85"`; clippy, which CI + runs with `-D warnings`, reports the standard-library APIs that are + newer. + ## [0.14.1] — 2026-10-08 Patch release: fewer PII false positives on numbers, codes and non-English @@ -2312,7 +2332,8 @@ environment in `docker-compose.benchmark.yml`. --- -[Unreleased]: https://github.com/admina-org/admina/compare/v0.14.1...HEAD +[Unreleased]: https://github.com/admina-org/admina/compare/v0.14.2...HEAD +[0.14.2]: https://github.com/admina-org/admina/compare/v0.14.1...v0.14.2 [0.14.1]: https://github.com/admina-org/admina/compare/v0.14.0...v0.14.1 [0.14.0]: https://github.com/admina-org/admina/compare/v0.13.2...v0.14.0 [0.13.2]: https://github.com/admina-org/admina/compare/v0.13.1...v0.13.2 diff --git a/ROADMAP.md b/ROADMAP.md index 7a91144..443e344 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -6,7 +6,7 @@ not on a calendar. Scope may shift in response to user feedback, security findings, or upstream changes in the governance landscape (EU AI Act implementing acts, new frameworks, new attack classes). -The current release is **0.14.1**. Admina is pre-1.0: the public API may +The current release is **0.14.2**. Admina is pre-1.0: the public API may still evolve before the 1.0 stability commitment, so a minor release may carry a declared breaking change once its replacement is in place. Shipped detail lives in [CHANGELOG.md](CHANGELOG.md). diff --git a/admina/__init__.py b/admina/__init__.py index e97fd70..5942198 100644 --- a/admina/__init__.py +++ b/admina/__init__.py @@ -23,7 +23,7 @@ from admina.sdk import ComplianceKit, GovernedAgent, GovernedData, GovernedModel -__version__ = "0.14.1" +__version__ = "0.14.2" __all__ = [ "__version__", diff --git a/core-rust/Cargo.lock b/core-rust/Cargo.lock index 8510fe0..f70d9d9 100644 --- a/core-rust/Cargo.lock +++ b/core-rust/Cargo.lock @@ -4,7 +4,7 @@ version = 4 [[package]] name = "admina_core" -version = "0.14.1" +version = "0.14.2" dependencies = [ "chrono", "hex", diff --git a/core-rust/Cargo.toml b/core-rust/Cargo.toml index f158871..7c747ec 100644 --- a/core-rust/Cargo.toml +++ b/core-rust/Cargo.toml @@ -15,7 +15,7 @@ [package] name = "admina_core" -version = "0.14.1" +version = "0.14.2" edition = "2021" # The rustc of Debian, with which the proxy image builds the crate; clippy # reports the standard-library APIs that are newer (incompatible_msrv). diff --git a/core-rust/pyproject.toml b/core-rust/pyproject.toml index a1502d4..79c490a 100644 --- a/core-rust/pyproject.toml +++ b/core-rust/pyproject.toml @@ -19,7 +19,7 @@ build-backend = "maturin" [project] name = "admina-core" -version = "0.14.1" +version = "0.14.2" description = "Admina governance engines — Rust core with Python bindings (firewall, PII, loop breaker, hash chain)" readme = "README.md" requires-python = ">=3.11" diff --git a/core-rust/uv.lock b/core-rust/uv.lock index 7da6a84..8fde676 100644 --- a/core-rust/uv.lock +++ b/core-rust/uv.lock @@ -4,5 +4,5 @@ requires-python = ">=3.11" [[package]] name = "admina-core" -version = "0.14.1" +version = "0.14.2" source = { editable = "." } diff --git a/pyproject.toml b/pyproject.toml index 10d6388..4506616 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,7 +19,7 @@ build-backend = "setuptools.build_meta" [project] name = "admina" -version = "0.14.1" +version = "0.14.2" description = "Admina — governed AI development framework" readme = "README.md" requires-python = ">=3.11" diff --git a/uv.lock b/uv.lock index 0d190fb..da35ef1 100644 --- a/uv.lock +++ b/uv.lock @@ -10,7 +10,7 @@ resolution-markers = [ [[package]] name = "admina" -version = "0.14.1" +version = "0.14.2" source = { editable = "." } dependencies = [ { name = "click" }, @@ -199,7 +199,7 @@ dev = [ [[package]] name = "admina-core" -version = "0.14.1" +version = "0.14.2" source = { directory = "core-rust" } [[package]]