CI release flow
Normative expectations for bump-and-release in A2C-governed software repositories. Recorded as ADR-0009 (supersedes ADR-0004).
Requirement
Every A2C-governed software repository must implement the release semantics in ADR-0009.
Core expectations
Development integration
Development CI runs on feature branches, develop, and merge requests. develop is optional for humans and is not a special CI line — it is treated like any feature branch.
When Development CI is green, untagged commits may ff-merge to master (code_clean).
Release qualification
Releases use a dedicated release/X.Y.Z branch forked from master:
python scripts/bump_release.pyon the release branch- Green Development CI on
release/X.Y.Z - Push tag
vX.Y.Z - Green Release CI on the tag (released)
- Ff-merge
release/X.Y.Ztomaster
Version and changelog
| Topic | Rule |
|---|---|
| Versioning | Semantic Versioning 2.0.0 |
| Changelog format | Keep a Changelog 1.1.0 |
| Development | Curate ## [Unreleased] as release-relevant work lands |
| Release | bump_release.py finalizes ## [X.Y.Z] - YYYY-MM-DD on release/X.Y.Z |
| Tags | Annotated vX.Y.Z after Development CI on the release branch |
Standard maintainer sequences
Normal development:
Release:
See release-pipeline.md for project-specific job lists.
Required CI jobs
| Profile | When | Purpose |
|---|---|---|
| Development CI | feature, develop, release/*, MR | Quality gate → code_clean |
| Release CI | tags v*.*.* | Verify, build, publish → released |
| Master CI (optional) | master | Light, non-gating audit/reporting |
Version source of truth
Document the primary version file in docs/release-pipeline.md:
- Docs / workflow repos — root
VERSION - Python packages —
__version__in the installable module
verify_release_version.py must read the same source bump_release.py updates.
AI expectations
| Situation | Behavior |
|---|---|
| Bootstrap | Add release scripts and CI profiles from a2c-workflow templates |
| Edit CI / scripts | Preserve ADR-0009 states and branch semantics |
| Prepare release | Branch release/X.Y.Z from master; gate tag on Development CI; gate master on Release CI |
| Tags | Follow tag-move policy in ADR-0009; do not bypass verify_release_version.py |