Commit Graph
14 Commits
Author SHA1 Message Date
swaits c6436c653d chore: point repository at git.swaits.com
CI / check (macos-latest, 1.93.0) (push) Canceled after 0s
CI / check (macos-latest, stable) (push) Canceled after 0s
CI / check (ubuntu-latest, 1.93.0) (push) Canceled after 0s
CI / check (ubuntu-latest, stable) (push) Canceled after 0s
CI / check (windows-latest, 1.93.0) (push) Canceled after 0s
CI / check (windows-latest, stable) (push) Canceled after 0s
CI / cargo deny (push) Canceled after 0s
CI / cargo audit (push) Canceled after 0s
CI / cargo semver-checks (push) Canceled after 0s
CI / coverage (push) Canceled after 0s
CI / examples build (push) Canceled after 0s
CI / stateright BFS N=3 K=2 (push) Canceled after 0s
2026-08-31 17:19:17 -06:00
swaits 871c688b17 style: rustfmt the new builder setter test
CI / check (macos-latest, 1.93.0) (push) Canceled after 0s
CI / check (macos-latest, stable) (push) Canceled after 0s
CI / check (ubuntu-latest, 1.93.0) (push) Canceled after 0s
CI / check (ubuntu-latest, stable) (push) Canceled after 0s
CI / check (windows-latest, 1.93.0) (push) Canceled after 0s
CI / check (windows-latest, stable) (push) Canceled after 0s
CI / cargo deny (push) Canceled after 0s
CI / cargo audit (push) Canceled after 0s
CI / cargo semver-checks (push) Canceled after 0s
CI / coverage (push) Canceled after 0s
CI / examples build (push) Canceled after 0s
CI / stateright BFS N=3 K=2 (push) Canceled after 0s
2026-05-13 10:32:57 -06:00
swaits 312d958a91 ci: close the two missed cargo-mutants in src/builder.rs
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.
2026-05-13 10:27:34 -06:00
swaits 2c28dd77b4 ci: fix nightly workflow (4 longstanding failures)
The nightly workflow has failed every run since it was added. Fix the
four distinct issues so it can actually exercise the slow checks:

- cargo-mutants: drop bogus `--in-diff-base ""` flag (never existed in
  cargo-mutants; v27 rejects it).
- fuzz smoke: pin `--target x86_64-unknown-linux-gnu`. Binstall ships a
  musl-static cargo-fuzz binary whose default target inherits its own
  triple, and libfuzzer's sanitizer is incompatible with `crt-static`.
- miri: move multi-module filters after `--`. `cargo test` only accepts
  one TESTNAME positional; libtest accepts multiple substring filters.
- stateright random_large: add `target_state_count(1_000_000)` so the
  simulation actually terminates instead of looping past the 30 min CI
  timeout. The comment already claimed "up to 10⁶ states".

Also refreshes fuzz/Cargo.lock, regenerated by the local verification
build (was stale vs. parent deps).
2026-05-13 09:52:52 -06:00
swaits 2f40c81c3a release 0.2.1: fast recovery from PublishFailing 2026-05-11 16:17:47 -06:00
swaits 44b455e369 release 0.2.0: iroh 1.0-rc.0 / gossip 0.99 2026-05-11 15:23:40 -06:00
swaits 54d73d9cb1 ci: ignore transitive hickory CVEs blocked by iroh's hard-pin
RUSTSEC-2026-0119 (hickory-proto O(n²) name-compression DoS) and
RUSTSEC-2026-0120 (hickory-net NSEC3 unbounded loop / OOM) both fire
against hickory 0.26.0-beta.4. Fixed upstream in hickory 0.26.1, but
iroh 0.98.2 hard-pins hickory-resolver = "=0.26.0-beta.4" so we
can't bump transitively. Unblock once iroh releases a version that
relaxes the pin.
2026-05-10 14:27:06 -06:00
swaits d243e01ab0 ci: remove dependabot config
Bot was generating mostly-wrong upgrade PRs that don't understand the
crypto stack's transitive pinning constraints. We'll bump deps by hand
when there's reason to.
2026-05-10 14:23:15 -06:00
swaits d0b091feb4 deps: bump hkdf 0.12→0.13 and sha2 0.10→0.11.0-rc.5
mainline 6.1.2 loosened its digest pin, unblocking hkdf 0.13 (which
needs digest 0.11). sha2 stays on the prerelease '=0.11.0-rc.5' to
match iroh-base's hard-pin; can drop the '=' once iroh-base relaxes.

HKDF-SHA256 KAT (keys_hkdf_kat_passphrase_abc_app_test_v1_k3) passes
byte-for-byte, so on-wire/on-disk key material is unchanged.

Updates the pinning rationale comment in Cargo.toml accordingly.
2026-05-10 14:16:15 -06:00
swaits 271c418397 deps: bump iroh 0.98.1→0.98.2, blake3 1.8.4→1.8.5, tokio 1.52.1→1.52.3, mainline 6.0.1→6.1.2
Cargo.lock-only. All bugfix patches plus a mainline minor:
* iroh 0.98.2: div-by-zero protection in process_datagram; don't
  abort connection attempts on concurrent empty EndpointAddr.
* blake3 1.8.5: fix LTO build on Arch Linux ARM.
* tokio 1.52.3: reverts LIFO-slot stealing perf regression from 1.51.
* mainline 6.1.2: avoid eager DNS resolution of default bootstrap
  nodes; reduce peer-discovery target_size 20→10 (MTU overflow);
  configurable bind addr; loosens its digest pin to 0.11.
2026-05-10 14:15:58 -06:00
swaits 704bcd38e7 ci: bump actions/checkout v4→v6 and codecov-action v4→v6
actions/checkout v6 persists creds under $RUNNER_TEMP (needs runner
≥2.329.0 — GitHub-hosted has it). codecov-action v6 ships on node24.
2026-05-10 14:15:49 -06:00
swaits dc5140cbce ci: allow duration_suboptimal_units (needs Rust 1.95, MSRV is 1.93) v0.1.0 2026-04-22 23:09:49 -06:00
swaits d0b2a13010 ci: quote miri run command so YAML doesn't misparse '::' 2026-04-22 23:03:33 -06:00
swaitsandClaude Opus 4.7 7e39781318 Initial release: v0.1.0
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>
2026-04-22 22:52:46 -06:00