Releasing¶
One tag publishes everything:
| Registry | Package | What it is |
|---|---|---|
| PyPI | hlock |
Wheels for Linux, macOS, and Windows, plus an sdist |
| PyPI | harness-lock |
Alias that pins the same hlock version |
| crates.io | harness-lock-core |
The Rust library |
| crates.io | hlock, harness-lock |
Re-exports of the core (harness-lock is the alias) |
Cutting a release¶
python scripts/set_version.py 0.2.0 # updates every version in the repo
python scripts/set_version.py --check # prints 0.2.0
# open a PR, merge it once CI is green, then:
git switch main && git pull
git tag v0.2.0 && git push origin v0.2.0
Both publish workflows refuse to run if the tag doesn't match the version in
Cargo.toml.
The full checklist, one-time registry setup, and recovery steps are in RELEASING.md.