Pragmastat v12.0.0 introduces Compare1 and Compare2 — high-level confirmatory analysis APIs that deliver explicit ternary verdicts (Less, Greater, Inconclusive) for practical thresholds, implementing the Inversion Principle across all 7 languages.

Breaking Changes

  • Go module path: module path updated from go/v11 to go/v12 per Go semver convention; all Go consumers must update import paths

Features

  • Compare1 one-sample confirmatory analysis: compares Center(x) or Spread(x) against a list of practical thresholds, each with its own misrate; returns a Projection per threshold containing point estimate, confidence bounds, and a verdict
  • Compare2 two-sample confirmatory analysis: compares Shift(x,y), Ratio(x,y), or Disparity(x,y) against practical thresholds with per-threshold misrate control
  • New public types: Metric (Center, Spread, Shift, Ratio, Disparity), ComparisonVerdict (Less, Greater, Inconclusive), Threshold, Projection — available in all 7 languages
  • Python/R numeric shorthand: threshold values can be specified as plain numbers in addition to explicit Measurement objects
  • 44 cross-language reference test files: 18 for compare1/ and 26 for compare2/, covering all verdicts, multi-threshold scenarios, ordering preservation, misrate sensitivity, natural number sequences, identity properties, and error cases

Bug Fixes

  • R build: added .dylib/.a/symbols.rds cleanup to build, check, and clean tasks; updated .Rbuildignore with matching patterns; fixed r:check task to build tarball before checking

Documentation

  • New manual chapters for Compare1 and Compare2 (definition, algorithm, notes, test descriptions each)
  • Added Compare1/Compare2 to synopsis function table, one-sample/two-sample chapter includes, and assumptions chapter
  • Standardized misrate notation to 10^(...) scientific form across all existing chapters
  • Eliminated intermediate alpha variable in favor of direct misrate/2 in AvgSpreadBounds, CenterBounds, and DisparityBounds
  • Replaced hardcoded misrate values in test descriptions with relative descriptions across 8 existing chapters
  • Added "See also" cross-references linking bounds estimators to their corresponding Compare functions
  • Updated methodology to link Compare1/Compare2 as embodiments of the Inversion Principle

Internal

  • Web tooling: added compare1 (order 5) and compare2 (order 12) page entries; renumbered all subsequent pages
  • Added xref mappings for sec-compare1, sec-compare2, sec-alg-compare1, sec-alg-compare2, sec-inversion-principle, sec-convergence-conventions
  • Kotlin: widened checkNonWeighted and checkCompatibleUnits from private to internal for use by CompareEngine
  • Rust: added From<UnitMismatchError> for EstimatorError conversion
  • C# TestGenerator extended with SaveErrorTestCase for error test generation
  • Updated tests/manifest.json with compare1 and compare2 test suites

Full Changelog: https://github.com/AndreyAkinshin/pragmastat/compare/v11.1.1...v12.0.0

Release notes generated by herald v1.0.4