Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0408c37866 | ||
|
|
a42e8d3651 |
@@ -91,13 +91,20 @@ When new information about the protocol is discovered, please update the instant
|
|||||||
|
|
||||||
## Changelog & release convention
|
## Changelog & release convention
|
||||||
|
|
||||||
**Write the entry in the same commit as the work, under `## Unreleased`. Cut
|
**Feature branches do NOT touch `CHANGELOG.md`. Write the entry on `dev`, as
|
||||||
the version on `dev` in a dedicated release commit. Never touch the changelog
|
part of finishing the merge, under `## Unreleased`. Cut the version on `dev` in a
|
||||||
at a merge boundary.**
|
dedicated release commit when you are ready to ship to `main`.**
|
||||||
|
|
||||||
- **Entry goes in with the change**, not at merge or release time — that is the
|
- **The changelog is written on `dev`, never on a feature branch.** With
|
||||||
only moment you still know *why*. Feature branches edit `CHANGELOG.md`
|
several branches in flight they all edit the same few lines at the top of
|
||||||
directly; the occasional conflict is two appended bullets and is trivial.
|
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` /
|
- **No preamble under `## Unreleased`** — just the `### Added` / `### Changed` /
|
||||||
`### Fixed` lists. The themed opening paragraph gets written at release
|
`### Fixed` lists. The themed opening paragraph gets written at release
|
||||||
time, when the whole release is visible and can be named honestly. A theme
|
time, when the whole release is visible and can be named honestly. A theme
|
||||||
@@ -108,6 +115,10 @@ at a merge boundary.**
|
|||||||
"`TOOL_VERSION` bumped", "no schema change, no migration". Silence is
|
"`TOOL_VERSION` bumped", "no schema change, no migration". Silence is
|
||||||
ambiguous; "none" is information. This repo's changelog is how future-you
|
ambiguous; "none" is information. This repo's changelog is how future-you
|
||||||
learns whether a deploy costs two hours.
|
learns whether a deploy costs two hours.
|
||||||
|
- **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 — <theme>` commit on
|
- **Cutting a release** is its own `chore(release): vX.Y.Z — <theme>` commit on
|
||||||
`dev`, renaming `## Unreleased` → `## vX.Y.Z — YYYY-MM-DD` and touching:
|
`dev`, renaming `## Unreleased` → `## vX.Y.Z — YYYY-MM-DD` and touching:
|
||||||
`CHANGELOG.md`, `pyproject.toml`, the version line in `CLAUDE.md` and
|
`CHANGELOG.md`, `pyproject.toml`, the version line in `CLAUDE.md` and
|
||||||
|
|||||||
Reference in New Issue
Block a user