Release strategy¶
Status: Accepted — ADR-0007. Automation tracked under Epic F #51.
Companion: Branching · Deployment · PROD runbook
Goals¶
developstays the fast integration channel.- PROD only ships from an explicit
release/x.y.zcut. mainis the record of what shipped, not the first cut for PROD.- Every production ship gets a git tag + GitHub Release on the
mainSHA.
Versioning¶
- Semver branches:
release/1.4.0→ tagv1.4.0. - Patch hotfixes:
release/1.4.1→v1.4.1. - Prefer Conventional Commits in squash messages for readable release notes.
Happy path¶
- Work lands on
developvia PRs fromfeature/TASK-*(CI green). - Release owner cuts
release/x.y.zfromdevelop. - Freeze: only cherry-picks / release fixes on that branch.
- Manual PROD deploy from
release/x.y.z(see deployment). - Validate PROD (smoke; payment checks as applicable).
- Open PR
release/x.y.z→main; merge after checks. - Automation creates
vX.Y.Z+ GitHub Release on themainSHA (F.5 #59 — workflowrelease-tag-on-main→ reusable in this repo).
Hotfix path¶
- Branch
hotfix/TASK-{id}-{slug}frommain. - Cut / update patch
release/x.y.z. - Manual PROD deploy from that release ref.
- PR release →
main→ tag. - Back-merge into
developso the fix is not lost.
Release checklist¶
- PROD deploy completed from
release/*with explicit confirm - Smoke / critical path validated
-
release/*merged tomain - Tag
vX.Y.Zon the merge commit - GitHub Release published (auto or manual)
- Hotfixes back-merged to
developif any
Related automation (Epic F)¶
| Item | Purpose |
|---|---|
| F.4 #58 | workflow_dispatch deploy with prod/dev guards |
| F.5 #59 | Auto tag + Release on release→main — shipped (release-tag-on-main-reusable.yml) |
| F.6 #60 | ADR + merge-guard / branch-map updates — shipped (ADR-0007) |