Tip
Need help? Please let us know in the SUEWS Community.
Please report issues with the manual on GitHub Issues (or use Report Issue for This Page for page-specific feedback).
Please cite SUEWS with proper information from our Zenodo page.
10. Cross-version drift#
Complementing the per-site benchmark report, this page describes how model results move across releases. SUEWS tracks three loosely coupled notions of “version”: the package version (the CalVer release that compiled the physics), the schema version (the YAML input surface), and the documented version history. The model-version registry binds these together and records, for every release, how reproducible its results are.
10.1. Reproducibility taxonomy#
Each release carries exactly one status:
benchmarkedPip-installable and present in the benchmark results index with a recorded deterministic fingerprint. Drift is measured.
pip-installablepip install supy==Xworks, but no benchmark entry exists yet. Reachable; drift not yet measured.legacy-external-refNot pip-installable; reference outputs exist in the external SUEWS-Benchmark repository. Reproduction is deferred; the registry records where the reference lives.
documented-onlyAppears in the version history but has no reference outputs and no install path. Catalogued for completeness; not reproducible.
10.2. What “drift” means#
Drift is the change in energy-balance error metrics (MAE, MBE) between two releases run on the same site, forcing, and observations. It is descriptive – it measures how far the model has moved – and is not an assertion that an older release is reproduced bit-for-bit.
Two framings are reported:
Consecutive – each release against the one before it.
Baseline – each release against a single pinned baseline (the earliest benchmarked release, recorded as
drift_baseline_tagin the registry).
10.3. Querying the lineage#
The registry ships with supy and is queryable directly:
import supy as sp
for v in sp.list_model_versions():
print(v.tag, v.reproducibility)
sp.schema_for("2026.4.3") # -> "2026.4"
sp.model_version_info("2026.6.5")
The drift tables are produced by benchmark/assemble_drift.py and rendered
on the benchmark site.