Before any commit:
just dev— fmt-check, clippy (-D warnings), tests (default +parallelfeatures), doc tests,cargo audit,cargo deny check, and acargo-crapcoverage/complexity regression check againstcrap_baseline.json.just dev-mutants-diff— mutation testing on changed Rust files only (re-runsjust devfirst).
Never commit with a failing dogfood run or surviving mutants. Exception: changes touching
only .md/.yml files may skip both.
If a change intentionally improves coverage or reduces complexity, regenerate the baseline
with just crap-update-baseline and commit the updated crap_baseline.json alongside it.
All feature specs live in specs/ using Given/When/Then acceptance criteria (see
specs/README.md for the index and suggested implementation order). Never modify a spec
file without explicit permission from the maintainer. When scope changes emerge during
implementation, propose the change and wait for approval before editing the spec.
cargo build --all-targets
cargo test --all-targets
cargo test --all-targets --features parallel
cargo test <test_name>
cargo fmt --all
cargo clippy --all-targets --all-features -- -D warnings
just dev
just dev-mutants-diff
just crap # regression check against crap_baseline.json
just crap-update-baseline # regenerate the baseline after an intentional improvementsrc/uncertain.rs— theUncertain<T>type: anArc<dyn Fn() -> T>sampler paired with a lazyComputationNodegraph.src/distributions.rs— constructors (normal,uniform,exponential,beta,bernoulli,mixture,empirical,categorical, …).src/operations/—Arithmetic,Comparison(evidence-based, returnsUncertain<bool>),LogicalOpstraits.src/statistics.rs— mean/variance/CDF/quantile/CI/entropy/KDE and theLazyStats/ProgressiveStats/AdaptiveLazyStatsincremental estimators.src/hypothesis.rs— SPRT (evaluate_hypothesis), Bayesian updates, multiple hypothesis testing.src/computation.rs— theComputationNodegraph,GraphOptimizer(CSE, constant folding),GraphVisualizer(DOT),GraphProfiler.src/cache.rs— global TTL caches keyed by(uuid, sample_count).src/error.rs—UncertainError(thiserror), crateResult<T>alias.
MSRV is declared once, in Cargo.toml's rust-version — CI's msrv job reads it from
there rather than duplicating the value. rust-toolchain.toml pins the local dev toolchain
to stable with rustfmt/clippy.