Compare commits
3
Commits
518e6f287a
...
48f2ab7954
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
48f2ab7954 | ||
|
|
0278c5fd06 | ||
|
|
5d0f31e584 |
@@ -37,6 +37,51 @@ current design:
|
||||
|
||||
---
|
||||
|
||||
## Changelog & release convention
|
||||
|
||||
Adopted 2026-09-18, to match seismo-relay and Terra-View. SLMM had no written
|
||||
practice before this — earlier releases used ad-hoc commits like
|
||||
`chore: version bump`. This is the standard going forward.
|
||||
|
||||
**Feature branches do NOT touch `CHANGELOG.md`. Write the entry on `dev`, as
|
||||
part of finishing the merge, under `## [Unreleased]`. Cut the version on `dev` in a
|
||||
dedicated release commit when you are ready to ship to `main`.**
|
||||
|
||||
- **The changelog is written on `dev`, never on a feature branch.** With
|
||||
several branches in flight they all edit the same few lines at the top of
|
||||
the file and conflict every time. Writing it once, after the merge, also
|
||||
lets it describe what actually *landed* — including anything that changed
|
||||
during conflict resolution.
|
||||
- ⚠ **The merge is not finished until `## [Unreleased]` is updated.** Same sitting,
|
||||
not "later" — that is the one failure mode of writing it after the fact.
|
||||
Reconstruct from the branch's own commit messages:
|
||||
`git log --oneline dev..<branch>` before you merge, or
|
||||
`git log --oneline <merge-base>..<branch>` after.
|
||||
- **No preamble under `## [Unreleased]`** — just the `### Added` / `### Changed`
|
||||
/ `### Fixed` lists. The themed opening paragraph gets written at release
|
||||
time, when the whole release is visible and can be named honestly. A theme
|
||||
written when the first item landed is stale by the third.
|
||||
- ⚠ **State the operational consequence**, **including when it is "none."**
|
||||
Silence is ambiguous; "none" is information. For this repo that means:
|
||||
- **DB migration** — whether a `migrate_*.py` script is needed, which one,
|
||||
and whether it is safe to re-run. These live at the repo root and are
|
||||
easy to forget at deploy time.
|
||||
- **Meter-connection impact** — anything touching the NL-43/NL-53 TCP path,
|
||||
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).
|
||||
- **`main` carries only released versions.** No `## [Unreleased]` section
|
||||
there; it lands via the `dev` → `main` PR.
|
||||
|
||||
---
|
||||
|
||||
## Layout
|
||||
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user