Skip to content

Migration Notes

This page records public-surface changes that matter when reproducing or comparing benchmark outputs across public releases.

2.0.0

Release 2.0.0 includes the September 2026 benchmark repairs and additional estimands and discriminators. The major version marks changed numerical behavior and rejected legacy settings. Record the package version and exact source revision; do not compare historical and corrected outputs as if they used identical implementations.

Upgrade with python -m pip install --upgrade "lrdbench==2.0.0", review the settings below, and use a fresh output directory and cache. The estimator interface and required CSV columns remain compatible, but numerical reproducibility across the version boundary is not promised.

  • GPH's slope conversion and the Higuchi normalization changed. GHE now uses absolute q-th moments; the forced H = 0.5 fallback is removed and nonzero flat_slope_tol is rejected. Declare input_representation, centering, lag range and q explicitly. The confirmation uses q = 1, whereas the general GHE default remains q = 2.
  • Temporal and primary wavelet regression estimates are unclipped. Spectral optimizer bounds remain part of those methods and boundary hits are reported.
  • level_shift retains its historical whole-record offset meaning. Use constant_offset for an explicit offset control and step_change for an internal jump.
  • Equal leaderboard component values receive average ranks; unresolved composite ties share competition ranks. See interpretation semantics.
  • Record attempted/used/invalid/failed bootstrap draws and ci_availability. A valid point estimate does not imply an available or calibrated interval.
  • persistence_exceedance_rate clarifies the legacy false_positive_lrd_rate cutoff diagnostic. It does not become a calibrated LRD test by renaming it.
  • Prefer explicit paired stress metrics. paired_mae_ratio differs from the legacy mean of per-record error ratios; its joint resampling is supported by the research runner, not the public evaluator's scalar bootstrap. See stress testing.
  • Seed derivation now uses the global seed and estimate-cache identity includes record seeds and the shared fitting version. Regenerate affected results instead of reusing old caches. Preserve historical exports with their original provenance.

The estimand-triangle work advances the public output contract to 1.1.0, adding the conditional raw/truths.csv ledger without removing existing required columns. The confirmation research archives use their own format and do not replace that contract. See the audited confirmation guide for the completed experiment and the frozen producer required for reproduction.

1.2.1

Release 1.2.1 is the first published release of the nonstationary LRD benchmarking work (nonstationary generators, the preprocessing/correction stage, and the correction-aware, ML-vs-classical, and OOD suites) together with estimator correctness fixes (wavelet log-scale Hurst convention, spectral estimand convention, estimate-cache invalidation, and data-driven resampling). Versions 1.1.0–1.2.0 were skipped because their PyPI filenames are permanently reserved from prior deleted uploads.

The public output contract version is unchanged at 1.0.0. A new optional output table, tables/correction_metrics.csv, is emitted only for correction-aware runs; existing required files and columns are unchanged, so prior outputs remain valid. Releases are archived on Zenodo under the concept DOI 10.5281/zenodo.20937726.

1.0.2

Release 1.0.2 is the first PyPI-published stable package release. The public output contract remains 1.0.0; no schema, metric, manifest, or required-column changes were made.

1.0.1

Release 1.0.1 was an internal packaging-only release candidate for PyPI publication. The public output contract remains 1.0.0; no schema, metric, manifest, or required-column changes were made.

1.0.0

Release 1.0.0 promotes the release-candidate public surfaces to the stable public research release.

Versioning

  • Python package version: 1.0.0.
  • Git tag: v1.0.0.
  • Public output contract version: 1.0.0.

Public Output Contract

The required report and raw result-store files are unchanged from 0.9.0-rc1. The contract version was advanced to 1.0.0 to mark the stable public release.

Citation and Archival Status

v1.0.0 is citeable through CITATION.cff and the GitHub release. No DOI or archived benchmark result bundle is attached to this release; those can be added in a later archival release.

0.9.0rc1

Release candidate 0.9.0rc1 freezes the public result export contract for final review before v1.0.0.

Versioning

  • Python package version: 0.9.0rc1.
  • Git tag: v0.9.0-rc1.
  • Public output contract version: 0.9.0-rc1.

Public Output Contract

The required report and raw result-store files are unchanged from the public benchmark beta. The contract version was advanced from 0.3.0-beta to 0.9.0-rc1 to mark the release-candidate freeze review.

Downstream tooling should continue to use lrdbench.output_contract.PUBLIC_OUTPUT_CONTRACT or configs/contracts/public_output_contract.json as the authority for required files and columns. Dynamic metric__* and stratum__* columns remain data dependent.

Estimator Interface

The documented estimator entrypoint remains lrdbench.interfaces.BaseEstimator. Third-party estimators should return EstimateResult objects and report stable estimator names, versions, assumptions, diagnostics, and uncertainty support where available.

No estimator-interface rename is planned for v1.0.0.

Manifest Schema

The public manifest blocks used by the packaged smoke, public-small, and public-medium suites are the supported schema surface for the release candidate. Public comparisons should pin the manifest file, manifest_id, package version, and output contract version.

No manifest-field rename is planned for v1.0.0.

Reproducing Older Beta Outputs

When comparing outputs generated with 0.3.0-beta:

  • keep the original manifest/environment.json;
  • record the output contract version shown by lrdbench validate-output;
  • avoid mixing leaderboards generated by different package versions unless the comparison notes the package and contract versions explicitly.

The CSV names and required columns are intended to remain compatible between 0.3.0-beta and 0.9.0-rc1.