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 f01d726..7c747ec 100644 --- a/core-rust/Cargo.toml +++ b/core-rust/Cargo.toml @@ -15,8 +15,11 @@ [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). +rust-version = "1.85" description = "Admina governance engines — Rust core with Python bindings" license = "Apache-2.0" 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/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 { 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]]