jsonvetdocs11. cargo-release bumps the version, the tag starts the rest

playgroundthis page on GitHub

11. cargo-release bumps the version, the tag starts the rest

Status: accepted (2026-10-21)

Context

A release changes the version in six places, dates the CHANGELOG section and adds its compare link, all by hand. Main takes changes only through squash-merged pull requests, and release.yml publishes the crates and wheels by trusted publishing once a v* tag lands.

Options

Decision

cargo release X.Y.Z --execute on a release branch bumps the version, makes the replacements and commits. release.toml sets publish, tag and push to false and refuses main. The maintainer tags the squash commit by hand and moves v3 by hand.

Consequences

A release needs cargo-release installed, and a pre-release still needs the Python pins edited by hand in PEP 440 form. When 4.0 drops the check-json5 compatibility, two replacements go away; the decision stands.

Confirmation

scripts/check-versions.py in CI and in release.yml's versions job.

Revisit if

release-please gains a mode that keeps a hand-written CHANGELOG, jsonvet gets a second maintainer who needs releases without the maintainer's machine, a second archive problem turns up, or we want installers (cargo-dist).