impish
The Contract gate for Rust, after Impatient Programming. A sibling of flinch (Go) and covenant (Elixir).
A Contract is what a crate promises: numbered obligations, each proved by a tagged contract test. impish fails the build when the Contract stops being true.
impish's own coverage is published in the summary of every CI run.
Install
Then run it as cargo impish. Contract tests use the impish crate's
attribute, so add it as a dev-dependency:
[]
= "0.6"
Every merge that changes what ships is a release, published to crates.io and listed under releases.
cargo impish check holds the Contract to its tests. cargo impish mutate <primitive> checks that those tests have teeth: it breaks the code the
primitive covers with cargo-mutants and fails on an
obligation whose tests catch none of the breaks.
Contributing
ARCHITECTURE.md says where each part lives and which guardrails fire on a change; docs/decisions says why.