Release Process¶
CompNeuroVis keeps release mechanics intentionally simple:
pyproject.tomlstores the package versionCHANGELOG.mdstores the canonical human-readable release history- a git tag such as
v0.2.0marks the immutable release point - a GitHub Release publishes that tagged version
Working Model¶
Treat CHANGELOG.md as the source of truth for release notes.
Use GitHub Releases as the public wrapper around a tagged commit, not as the place where release history is first written down.
Normal Flow¶
- Keep new notable work under
## UnreleasedinCHANGELOG.md. - When preparing a release, move those notes into a new version section such as
## 0.2.0 - 2026-04-11. - Update
pyproject.tomlto the same version. - Run
python scripts/pr_readiness.py check. - Commit the release-prep changes normally.
- Run
python scripts/pr_readiness.py seal --commitso the branch tip is the explicit final attestation commit. - Tag that sealed commit with
git tag v0.2.0. - Push the branch and the tag.
- Create a GitHub Release from the tag and reuse the matching
CHANGELOG.mdsection as the release notes.
Practical Rules¶
- Tag the sealed final commit, not the implementation commit that precedes it.
- If anything changes after sealing, rerun the checks, create a new seal commit, and retag the new final commit.
- Keep changelog entries short and user-facing: focus on behavior, workflows, packaging, and docs that matter to users.
- Do not use
docs/architecture/design/roadmap.mdordocs/architecture/design/backlog.mdas a substitute for release notes; they are design planning docs, not a public changelog.
Suggested Changelog Shape¶
Use a small stable structure:
ChangedAddedFixedDocs
That is enough for the current scale of the repo without adding release-fragment tooling.