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
erfanderf_inverseC# test approximation data (~1e-17 magnitude corrections) - Fixed precision in
ratio-bounds/multiplic-10-30.jsonreference 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-simfor validating observed vs. requested misrate - Added
pragmastat-sim spread-boundsCLI 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.rsfor Typst compatibility - Fixed
table.header()syntax handling intools/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