···11+# Changelog
22+33+All notable changes to Osprey will be documented in this file.
44+55+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77+88+## [Unreleased]
99+1010+(No changes yet. Add entries here before cutting a release.)
+37
docs/DEVELOPMENT.md
···135135136136[More about rules →](rules.md)
137137138138+## Release Process
139139+140140+Osprey uses [Semantic Versioning](https://semver.org/) (SemVer) with a 1.x.y series. This is a lightweight, bootstrap release process so downstream users can depend on version tags instead of commit hashes. The process may evolve as project usage grows.
141141+142142+### Patch releases (1.x.y)
143143+144144+Patch releases are backward-compatible fixes or small improvements already merged to `main`.
145145+146146+Cut a patch release when:
147147+148148+- Downstream users need a stable version tag, or
149149+- Meaningful fixes have accumulated and CI is green
150150+151151+There is no fixed cadence; releases are event-driven.
152152+153153+### Patch release checklist
154154+155155+Before cutting a release:
156156+157157+- [ ] Code quality CI passing on `main` (see [Code Quality Checks](https://github.com/roostorg/osprey/actions))
158158+- [ ] No breaking changes
159159+- [ ] [CHANGELOG.md](../CHANGELOG.md) updated (if applicable)
160160+161161+### How to cut a release
162162+163163+1. Ensure the checklist above is satisfied.
164164+2. In GitHub: **Releases** → **Draft a new release**.
165165+3. Choose or create a tag `X.Y.Z` (e.g. `1.0.1`) from `main`.
166166+4. Publish the release.
167167+168168+Publishing the release triggers existing automation:
169169+170170+- **osprey-rpc**: build and attach sdist (and zip) to the release ([release-osprey-rpc](https://github.com/roostorg/osprey/blob/main/.github/workflows/release-osprey-rpc.yml)).
171171+- **Osprey Coordinator**: build and push Docker image to GHCR with version tags ([publish-coordinator-image](https://github.com/roostorg/osprey/blob/main/.github/workflows/publish-coordinator-image.yml)).
172172+173173+Downstreams can depend on version tags (e.g. `1.0.1`) instead of commit SHAs.
174174+138175## Test Data
139176140177Generate sample JSON actions: