diff --git a/CHANGELOG.md b/CHANGELOG.md index 480389f..15ff29d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,17 @@ Versions before 0.8.0 are in the [git tags](https://github.com/WireCatLabs/cli-b Every entry says what changed as a caller sees it, why, and what to watch for — the rules are [`docs/dev/CONVENTIONS.md`](docs/dev/CONVENTIONS.md#the-changelog). +## Unreleased + +### Added + +- **WC-REL-9 counts a shared-library change toward its once-a-week limit only when a CLI must change its code to take + it.** cli-core's parity jobs build tg-cli, max-cli and whatsapp-cli from their `main` against every pull request. + A change all three pass with, unchanged, may ship in any release. A change that fails a job, passes only against a + CLI branch made for it, or changes behaviour a CLI must adapt to still counts; when in doubt, it counts. The limit + exists so the CLIs do not chase versions, and a change they need not follow gives them nothing to chase. Its + changelog still marks it "may break callers" for outside users. + ## 0.47.1 — 19.10.2026 ### Added diff --git a/docs/standards/releases.md b/docs/standards/releases.md index b7dc073..d4b0f96 100644 --- a/docs/standards/releases.md +++ b/docs/standards/releases.md @@ -98,14 +98,19 @@ on the [CI](ci.md) page. - **Exceptions:** memo, drive and zoom have no gap in their `bin/release` today. - **Applies to:** messenger CLIs (gap); shared libraries (no gap). **Since:** cli-base 0.41.0. **Rulings:** NEED-854. -### WC-REL-9 · A breaking change to a stable shared-library export ships at most once a week - -- **Why:** each such change makes every CLI change too; batching them keeps the CLIs on one version. -- **Enforced by:** review only. -- **Example:** gather breaking export changes into one release a week. Bump the library in every CLI that uses it on - the same day. +### WC-REL-9 · A change to a stable shared-library export that makes a CLI change its code ships at most once a week + +- **Why:** the limit keeps the CLIs from chasing versions; a change that no CLI has to follow gives them nothing to + chase. +- **Enforced by:** `cli-core: parity.yml` (it decides which changes count; review keeps the week). +- **Example:** cli-core's parity jobs build tg-cli, max-cli and whatsapp-cli from their `main` against every pull + request. A change to a stable export counts unless all three jobs pass with each CLI's `main` unchanged; its + changelog still lists it under "Changed — may break callers" for outside users. It counts when a job fails, when it + passes only against a CLI branch made for the change, and when it compiles but changes behaviour that any CLI must + adapt to. Parity cannot see that last case, so when in doubt the change counts. Gather the changes that count into + one release a week, and bump the library in every CLI that uses it on the same day. - **Exceptions:** none. -- **Applies to:** shared libraries. **Since:** cli-base 0.41.0. **Rulings:** NEED-473. +- **Applies to:** shared libraries. **Since:** cli-base 0.41.0. **Rulings:** NEED-473, NEED-1552. ### WC-REL-10 · A messenger CLI is released only with a release report the owner signed for that commit