Shard 0 of the nightly mutation run reported two MISSED mutants:
src/builder.rs:178 Builder::failure_retry_period -> Self
src/builder.rs:210 Builder::dht_backend -> Self
Both replaced the setter body with `Default::default()`, wiping the
receiver's accumulated state. The existing #[cfg(test)] mod tests has
one of these `<setter>_setter_stores_exact_value` pinning tests for
nearly every other Builder method, but these two were missing:
- failure_retry_period: no test exercised the setter at all.
- dht_backend: the method and its callers (build_wait_none_does_not_block
et al.) are gated `#[cfg(feature = "test-support")]`, but
cargo-mutants ran with default features only, so neither the method
nor its tests were ever compiled — the mutation survived trivially.
Fixes:
- Add `failure_retry_period_setter_stores_exact_value` matching the
pattern of the other setter tests.
- Add `dht_backend_setter_stores_value` (gated on `test-support`).
- Set `additional_cargo_args = ["--features", "test-support"]` in
.cargo/mutants.toml so cfg-gated setters are part of the mutation
surface.
Verified locally: `cargo mutants --file src/builder.rs` → 17 mutants,
16 caught, 1 unviable, 0 missed.
Passphrase-based peer rendezvous for iroh-gossip swarms over the public
Mainline DHT. Two nodes that share a passphrase + application salt find
each other and join the same gossip topic — no bootstrap server, no
prior knowledge of peer addresses.
The algorithm is a clock-free variant of HyParView-style partition
healing on BEP 44 mutable items, with K-sharded slots, logical aging
with random-tie eviction, vouching of up to V neighbors at age 1, and
a two-layer AEAD record envelope. Full spec in PROTOCOL.md.
Ships with:
* 119 tests (unit / property / integration / doctest) all green
* 100% mutation-testing catch rate (cargo-mutants)
* cargo-fuzz harnesses for the parse surface
* Kani proofs of no-UB / no-panic on crypto::epoch_of and
wire::decode_entries across their full symbolic input spaces
* Stateright distributed-system model: safety invariants S1 + S2
proved exhaustively for N ≤ 6, K ≤ 3; liveness witness under weak
fairness
* Miri green on the synchronous modules
* cargo-deny + cargo-audit clean
* criterion benches
* Full-matrix CI (Linux + macOS + Windows × stable + MSRV 1.93.0)
* Dedicated nightly lane for Miri / mutation / fuzz / Kani / Stateright
Pinned iroh 0.98.x. License MIT.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>