Skip to content

Commit 67a1512

Browse files
docs(ci): Expand major bump criteria to include blast radius
1 parent b231e39 commit 67a1512

1 file changed

Lines changed: 28 additions & 16 deletions

File tree

.github/blocks/determine-publish-version/action.yaml

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -123,24 +123,36 @@ runs:
123123
was truncated you may run `git diff` yourself (read-only) for any file.
124124
125125
How to choose the bump (apply in order):
126-
1. MAJOR — if a commit message carries an explicit `BREAKING CHANGE:`
127-
footer or a `type!:` marker, that is authoritative: bump major.
128-
ALSO bump major if the DIFF itself is backward-incompatible even when
129-
no commit said so — e.g. a public endpoint/route/exported symbol is
130-
removed or renamed, a request/response schema or required field
131-
changes shape, default behavior changes in a way that breaks existing
132-
callers, or a config/runtime contract changes. You are explicitly
133-
allowed to bump the major from the diff alone.
134-
2. MINOR — backward-COMPATIBLE new functionality: a new endpoint, flag,
135-
exported symbol, or capability is ADDED without breaking existing
136-
ones (corresponds to `feat:`).
126+
1. MAJOR — a breaking or broadly-disruptive change. Bump major if ANY
127+
of these hold:
128+
- a commit message carries an explicit `BREAKING CHANGE:` footer or
129+
a `type!:` marker (authoritative); OR
130+
- the DIFF is backward-incompatible even when no commit said so —
131+
e.g. a public endpoint/route/exported symbol is removed or
132+
renamed, a request/response schema or required field changes
133+
shape, default behavior changes in a way that breaks existing
134+
callers, or a config/runtime contract changes; OR
135+
- the change lands on the common path for the vast majority of
136+
users (roughly 90%+ of them) — e.g. it changes a default everyone
137+
relies on, forces a migration / re-config / re-auth, or alters
138+
output or UX that nearly all users will hit. A high blast radius
139+
is breaking even if old code technically still compiles.
140+
You are explicitly allowed to bump the major from the diff alone.
141+
2. MINOR — backward-COMPATIBLE new functionality that users opt into: a
142+
new endpoint, flag, exported symbol, or capability is ADDED without
143+
breaking existing ones and without changing what current users
144+
already experience (corresponds to `feat:`).
137145
3. PATCH — bug fixes, performance, internal refactors, docs, chores, or
138-
anything else that neither adds public surface nor breaks it.
146+
anything else that neither adds public surface nor breaks it, and
147+
that most users won't actively notice.
139148
140-
Be conservative about MAJOR to avoid false positives: purely additive
141-
changes are MINOR, not MAJOR. Only call it breaking if existing public
142-
behavior is actually removed or changed incompatibly. When genuinely
143-
unclear between two levels, pick the lower one (default to patch).
149+
Be conservative about MAJOR to avoid false positives. "Could affect 90%
150+
of users" means the change alters something on the common path that
151+
nearly all users already depend on — NOT merely that a new, opt-in
152+
feature is available to them. A purely additive feature is MINOR even
153+
if every user could eventually adopt it, because it doesn't disrupt
154+
what they already do. When genuinely unclear between two levels, pick
155+
the lower one (default to patch).
144156
PROMPT
145157
echo
146158
echo "A major bump of ${STABLE_VERSION} increments the first number and"

0 commit comments

Comments
 (0)