Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions .worklogs/2026-05-18-120948-ddmin-install-readme.md
Original file line number Diff line number Diff line change
@@ -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`.
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,22 @@ fixture3 reduce --suite my-suite --fixture-root behavior/fixtures/my-suite/proje

The best report is written under `<work-dir>/best/`. The active trial is reused at `<work-dir>/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.
Expand Down
2 changes: 1 addition & 1 deletion apps/fixtures/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion packages/ddmin/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion packages/ddmin/crates/ddmin/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
19 changes: 19 additions & 0 deletions packages/ddmin/crates/ddmin/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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: <https://crates.io/crates/fixture3-ddmin>
- Docs.rs: <https://docs.rs/fixture3-ddmin>

## Core Model

DDMin needs four things:
Expand Down
2 changes: 1 addition & 1 deletion packages/ddmin/scripts/rust-probe/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.