Release process¶
1. Pre-release checks¶
pytest
ruff check .
sphinx-build -b html docs/ docs/_build/html
All three must pass cleanly before tagging.
2. Update version metadata¶
Three files must move in lockstep:
File |
Field |
|---|---|
|
|
|
|
|
|
Validate CITATION.cff with cffconvert:
cffconvert --validate
Watch for the canonical CFF traps that break Zenodo minting:
Unquoted version (
version: 1.0.0instead ofversion: "1.0.0").Em-dashes in the abstract — replace with
--.Wrong ORCID format — must be a full URL.
3. Update the changelog¶
Add a section under Changelog.
4. Tag and push¶
git tag -a vX.Y.Z -m "vX.Y.Z: <one-line summary>"
git push origin vX.Y.Z
release.yml runs automatically.
5. Post-release¶
Verify the Zenodo DOI resolves (~10 min after webhook).
Update the README DOI badge if it’s the first time.
If this release changes the curated CSV, archive a frozen copy under
data/raw/uprisings_temperature_vX.Y.Z.csvfor citation by downstream re-analyses.
Rolling back a broken release¶
git tag -d vX.Y.Z
git push origin :refs/tags/vX.Y.Z
Delete the GitHub Release and the draft Zenodo deposit. Fix the issue, re-tag, re-push.