diff --git a/CLAUDE.md b/CLAUDE.md index 1b4855e..2fb3b50 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -63,6 +63,10 @@ at a merge boundary.** polling cadence, or the monitor fan-out. The meter has a **single TCP slot**, so a change that bounces the connection is an operational event, not just a code change. +- **Releases are cut on judgement, not on a schedule or a merge.** `Unreleased` + is the staging area for whatever is going into the next release; when enough + has accumulated to be worth shipping, it gets a number and a date. Nothing + about a merge to `dev` triggers a release. - **Cutting a release** is its own `chore(release): vX.Y.Z` commit on `dev`, renaming `## [Unreleased]` → `## [X.Y.Z] - YYYY-MM-DD` and bumping the version in `app/main.py` (the FastAPI `version=` argument).