This project uses Semantic Versioning (MAJOR.MINOR.PATCH) and a repository-level changelog.
- Package version:
pyproject.toml([project].version) - Runtime API version exposure:
fasa_core/__init__.py(__version__) - Human-readable release notes:
CHANGELOG.md
These three must be updated together for each release.
- PATCH (
x.y.Z): bug fixes, performance improvements, docs-only updates, and non-breaking internal changes. - MINOR (
x.Y.z): backward-compatible feature additions (new optional fields, new endpoints, new non-breaking behavior). - MAJOR (
X.y.z): breaking changes (removed/renamed endpoint fields, removed routes, changed required request shape, incompatible behavior changes).
- OpenAPI (
/openapi.json) is the integration contract. - Breaking contract changes require:
- a MAJOR version bump, and
- a clear changelog entry with migration notes.
- Finalize pending items in
CHANGELOG.mdunder## [Unreleased]. - Decide next SemVer version.
- Update:
pyproject.tomlversionfasa_core/__init__.py__version__CHANGELOG.md([Unreleased]-> new dated version section)
- Run tests (
pytest -q) and CI checks. - Merge to
main:.github/workflows/release.ymlautomatically creates tag/release frompyproject.toml+CHANGELOG.md. - If no release is created, check workflow logs for version/changelog mismatch.
- Keep entries concise and grouped under:
AddedChangedDeprecatedRemovedFixedSecurity
- Add migration notes whenever a consumer action is required.