v0.29.1
Maintenance release: a propagation determinism fix and a large internal refactor of the output formatters. No public API or wire-format changes.
Fixes
- Deterministic propagation consensus. Consensus selection (
build_nameserver_consensusandanalyze_results) previously resolved ties onHashMapiteration order, so an even split between two value sets could flip which servers were reported as inconsistent from run to run. Ties now break toward the lexicographically smallest value set, making output stable for identical input.
Internal
- Output formatters decomposed. The single-file
human.rs(3843 lines) andmarkdown.rs(2054 lines) monoliths are split intooutput/human/andoutput/markdown/submodules — one file per concern (whois, rdap, dns, propagation, lookup, status, domain_info, diff) — mirroring thedns/propagation/layout. Eachmod.rskeeps the shared helpers and a thinimpl OutputFormatterthat delegates to per-submodule inherent methods. Behavior is identical; every resulting file is under 1k lines.