Now I have enough context to write the release notes.

Features

  • SpreadBounds estimator: Distribution-free confidence bounds on sample spread (median of absolute pairwise differences). Uses disjoint-pair sign-test inversion with randomized cutoffs for exact misclassification rate control. Implemented across all 7 languages (C#, Go, Kotlin, Python, R, Rust, TypeScript).
  • SignMargin toolkit function: Computes randomized exclusion margins for one-sample sign-test bounds using log-space Binomial CDF evaluation for numerical stability.

Bug Fixes

  • Fixed precision in erf and erf_inverse C# test approximation data (~1e-17 magnitude corrections)
  • Fixed precision in ratio-bounds/multiplic-10-30.json reference test data

Documentation

  • Added mathematical study for SpreadBounds with design rationale, theoretical constraints, and algorithm derivation
  • Added SpreadBounds and SignMargin function specifications to the manual toolkit
  • Added SpreadBounds test suite documentation
  • Updated assumptions chapter with SpreadBounds sparity requirement and distribution-free bounds description

Internal

  • Added SpreadBounds Monte Carlo simulation to pragmastat-sim for validating observed vs. requested misrate
  • Added pragmastat-sim spread-bounds CLI subcommand
  • Updated reference test suite with 46 new JSON test files covering success cases, error handling, edge cases, algebraic properties, and unsorted input verification
  • Fixed fraction conversion and subscript handling in tools/src/math_conv.rs for Typst compatibility
  • Fixed table.header() syntax handling in tools/src/typst_parser.rs

Full Changelog: https://github.com/AndreyAkinshin/pragmastat/compare/v8.0.0...v9.0.0

Release notes generated by herald v1.0.4