From dacd6e1093ee9d90e5e5967fcdeb0d5023945539 Mon Sep 17 00:00:00 2001 From: Eugene Tartakovsky <1624603+tartakovsky@users.noreply.github.com> Date: Mon, 18 May 2026 12:10:23 +0100 Subject: [PATCH] Document DDMin install instructions --- .../2026-05-18-120948-ddmin-install-readme.md | 29 +++++++++++++++++++ README.md | 16 ++++++++++ apps/fixtures/Cargo.lock | 2 +- packages/ddmin/Cargo.lock | 2 +- packages/ddmin/crates/ddmin/Cargo.toml | 2 +- packages/ddmin/crates/ddmin/README.md | 19 ++++++++++++ packages/ddmin/scripts/rust-probe/Cargo.lock | 2 +- 7 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 .worklogs/2026-05-18-120948-ddmin-install-readme.md diff --git a/.worklogs/2026-05-18-120948-ddmin-install-readme.md b/.worklogs/2026-05-18-120948-ddmin-install-readme.md new file mode 100644 index 0000000..8a26869 --- /dev/null +++ b/.worklogs/2026-05-18-120948-ddmin-install-readme.md @@ -0,0 +1,29 @@ +Summary +- Added explicit install instructions to the root README and `fixture3-ddmin` crate README. +- Bumped `fixture3-ddmin` to `0.1.1` so crates.io can receive the README update. + +Decisions made +- Added both `cargo add fixture3-ddmin` and manual `[dependencies]` instructions because humans and agents use both paths. +- Documented the Rust import name `fixture3_ddmin` because the package name and crate name differ. +- Updated the root README as well as the crate README so both GitHub and crates.io entry points show the library install path. + +Key files for context +- `README.md` +- `packages/ddmin/crates/ddmin/README.md` +- `packages/ddmin/crates/ddmin/Cargo.toml` +- `apps/fixtures/Cargo.lock` +- `packages/ddmin/Cargo.lock` +- `packages/ddmin/scripts/rust-probe/Cargo.lock` + +Verification +- `scripts/verify-ddmin.sh` +- `RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --manifest-path packages/ddmin/Cargo.toml -p fixture3-ddmin` +- `cargo publish --dry-run --allow-dirty --manifest-path packages/ddmin/crates/ddmin/Cargo.toml` +- `python3 scripts/verify-rust-workspaces.py --fmt` +- `python3 scripts/verify-rust-workspaces.py --check` +- `python3 scripts/verify-rust-workspaces.py --clippy` +- `python3 scripts/verify-rust-workspaces.py --g3rs` +- `scripts/verify-all.sh` + +Next steps +- Push `development`, merge through PR CI into `main`, then publish `fixture3-ddmin 0.1.1` from `main`. diff --git a/README.md b/README.md index af68fa0..7f3e5f0 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,22 @@ fixture3 reduce --suite my-suite --fixture-root behavior/fixtures/my-suite/proje The best report is written under `/best/`. The active trial is reused at `/trial-current/`. +## DDMin Library + +The reducer algorithm is also published as a standalone Rust crate: + +```bash +cargo add fixture3-ddmin +``` + +Use it from Rust as `fixture3_ddmin`: + +```rust +use fixture3_ddmin::{DdminInput, DdminOptions, OracleOutcome, ddmin}; +``` + +Docs: https://docs.rs/fixture3-ddmin + ## More - [Philosophy](https://github.com/agent-quality-controls/fixture3/wiki/Philosophy) — fixtures vs snapshots, fail-closed semantics, why DDMin reduction. diff --git a/apps/fixtures/Cargo.lock b/apps/fixtures/Cargo.lock index 998cabd..dfcfeb2 100644 --- a/apps/fixtures/Cargo.lock +++ b/apps/fixtures/Cargo.lock @@ -174,7 +174,7 @@ dependencies = [ [[package]] name = "fixture3-ddmin" -version = "0.1.0" +version = "0.1.1" [[package]] name = "generic-array" diff --git a/packages/ddmin/Cargo.lock b/packages/ddmin/Cargo.lock index 3647fe0..be32720 100644 --- a/packages/ddmin/Cargo.lock +++ b/packages/ddmin/Cargo.lock @@ -4,7 +4,7 @@ version = 4 [[package]] name = "fixture3-ddmin" -version = "0.1.0" +version = "0.1.1" [[package]] name = "fixture3-ddmin-probe" diff --git a/packages/ddmin/crates/ddmin/Cargo.toml b/packages/ddmin/crates/ddmin/Cargo.toml index 1fe61a5..e2bbac7 100644 --- a/packages/ddmin/crates/ddmin/Cargo.toml +++ b/packages/ddmin/crates/ddmin/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fixture3-ddmin" -version = "0.1.0" +version = "0.1.1" edition.workspace = true rust-version.workspace = true description = "Sequential DDMin reducer for ordered candidate lists" diff --git a/packages/ddmin/crates/ddmin/README.md b/packages/ddmin/crates/ddmin/README.md index 14f237a..f5533e0 100644 --- a/packages/ddmin/crates/ddmin/README.md +++ b/packages/ddmin/crates/ddmin/README.md @@ -6,11 +6,30 @@ It is useful when you have a reproducible property and want to remove as many in ## Install +Install it in an app or library crate: + +```bash +cargo add fixture3-ddmin +``` + +Or add it manually: + ```toml [dependencies] fixture3-ddmin = "0.1" ``` +Import it with the Rust crate name `fixture3_ddmin`: + +```rust +use fixture3_ddmin::{DdminInput, DdminOptions, OracleOutcome, ddmin}; +``` + +Links: + +- Crates.io: +- Docs.rs: + ## Core Model DDMin needs four things: diff --git a/packages/ddmin/scripts/rust-probe/Cargo.lock b/packages/ddmin/scripts/rust-probe/Cargo.lock index 3647fe0..be32720 100644 --- a/packages/ddmin/scripts/rust-probe/Cargo.lock +++ b/packages/ddmin/scripts/rust-probe/Cargo.lock @@ -4,7 +4,7 @@ version = 4 [[package]] name = "fixture3-ddmin" -version = "0.1.0" +version = "0.1.1" [[package]] name = "fixture3-ddmin-probe"