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_tolis rejected. Declareinput_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_shiftretains its historical whole-record offset meaning. Useconstant_offsetfor an explicit offset control andstep_changefor 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_rateclarifies the legacyfalse_positive_lrd_ratecutoff diagnostic. It does not become a calibrated LRD test by renaming it.- Prefer explicit paired stress metrics.
paired_mae_ratiodiffers 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.