Skip to content

docs(standards): WC-REL-9 counts only changes that make a CLI change its code - #265

Merged
leemour merged 2 commits into
mainfrom
docs/wc-rel-9-consumer-breaks
Oct 19, 2026
Merged

leemour merged 2 commits into
mainfrom
docs/wc-rel-9-consumer-breaks

Conversation

@leemour

@leemour leemour commented Oct 19, 2026 •

Copy link
Copy Markdown
Collaborator

Apply the owner's ruling NEED-1552 (option A, 2026-10-19) to WC-REL-9 in docs/standards/releases.md.

WC-REL-9 allowed one breaking change to a stable shared-library export per
week, so the CLIs do not chase versions. It blocked cli-core #1605, which
changed no CLI and needed a one-off exception (NEED-1549). A change that no
CLI has to follow gives them nothing to chase.

  • New title: a change to a stable shared-library export that makes a CLI
    change its code ships at most once a week.
  • The test is cli-core's parity.yml: its jobs build tg-cli, max-cli and
    whatsapp-cli from their main against every pull request. A change counts
    unless all three pass with each CLI's main unchanged.
  • It still counts when a job fails, when it passes only against a CLI branch
    made for the change, or when it compiles but changes behaviour a CLI must
    adapt to. Parity cannot see that last case, so in doubt it counts.
  • Enforced by: cli-core: parity.yml decides which changes count; review
    keeps the week. The same cross-repo form is already in testing.md.
  • Its changelog still lists such a change under "Changed — may break
    callers" for outside users.
  • Rulings: NEED-473, NEED-1552. A line under ## Unreleased in CHANGELOG.md.
  • No other handbook page quotes the old rule. cli-core's REFERENCE.md "How
    often, and what may break" does not quote it either.

Testing: pnpm lint, docs:check, docs:lint, standards:check pass locally.

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 5.5 (1M context) noreply@anthropic.com

leemour and others added 2 commits October 19, 2026 13:56
…its code

The weekly limit on breaking shared-library export changes now counts a
change only when at least one consuming CLI has to change its code to take
it. The library's CI proves it: cli-core's parity.yml builds tg-cli, max-cli
and whatsapp-cli against every pull request. A type-level change that all of
them build and pass with, unchanged, does not count toward the week; its
changelog still marks it "may break callers" for outside users.

The rule exists so the CLIs do not chase versions. It blocked cli-core #1605,
which changed no CLI. Ruling: NEED-1552.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ehaviour changes

The parity jobs build each CLI's main and check its command manifest; they do
not run the CLIs' tests. So the rule now says what the test is: a change is
free only when all three jobs pass with each CLI's main unchanged. It still
counts when a job fails, when it passes only against a CLI branch made for the
change, or when it compiles but changes behaviour a CLI must adapt to. Parity
cannot see that last case, so in doubt the change counts. Enforced by now says
parity decides which changes count and review keeps the week.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@leemour
leemour merged commit f9435c4 into main Oct 19, 2026
8 checks passed
leemour added a commit to WireCatLabs/cli-core that referenced this pull request Oct 19, 2026
Handbook rule WC-REL-9 (reworded in WireCatLabs/cli-base#265) limits a
change to a stable export that makes a CLI change its code to one
release a week. docs/REFERENCE.md said such a change "is not held back
for a special release", and both REFERENCE.md and CLAUDE.md said there
is no gap between releases, which conflicts.

- docs/REFERENCE.md, "How often, and what may break": states WC-REL-9 in
plain words with a link. A change to a stable export counts unless all
three parity jobs (tg-cli, max-cli, whatsapp-cli) pass with each CLI's
main unchanged; it also counts when it passes only against a CLI branch
made for it, or compiles but changes behaviour a CLI must adapt to; when
in doubt, it counts. Those changes go into one release a week, and every
CLI moves to it the same day. The "not held back" clause and "CLIs pace
their own" go; "no gap" now excepts the weekly limit.
- CLAUDE.md constraint 5: the same rule in one line with the link; "no
fixed gap" excepts the weekly limit.

Docs only, no changelog line, no impact on callers. pnpm docs:check
passes.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@leemour leemour mentioned this pull request Oct 19, 2026
leemour added a commit that referenced this pull request Oct 19, 2026
## Why

Release the `--qr-file` vocabulary removal (#266) and the WC-REL-9
counting change (#265).

## What

`package.json` 0.47.1 → 0.47.2; `## Unreleased` dated `## 0.47.2 —
19.10.2026`.

A patch, not 0.48.0: nothing new is added to the API (WC-REL-7 raises
the minor for new features), and cli-core accepts `>=0.47.0 <0.48.0`, so
the tools pick it up without a range change.

## Testing

`pnpm docs:check` and `pnpm lint` pass on the dated changelog.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant