Problem
Confirmed while reviewing the release process: doc-only changes correctly
publish nothing. .github/scripts/release-version.sh ranks feat a minor,
fix/perf a patch, ! a major, and "everything else — docs, chore, test, ci,
refactor — publishes nothing at all", and #32 (docs-only) published nothing,
riding into 0.14.0's notes through its promoted Unreleased entry. That part
works.
One edge is decided but perhaps not deliberate: a breaking change of an
otherwise silent type. docs!: currently publishes a major, because the !
is ranked before the type is consulted.
Proposed behavior
Pick one and make the rank table say so explicitly. Two defensible answers:
- Keep it. A
! means a breaking change whatever the type, and
documentation that breaks a documented contract — removing a command from the
docs, changing a config key's meaning — is a real break for users.
- Narrow it. Only types that can publish at all get to publish a major, so
docs!: would be a no-op and a genuine break would have to be feat!: or
fix!:. Makes the rank table read as "silent types are always silent".
Whichever way it goes, tests/test_release_version.sh should pin it, so the
next person reading cp_rank does not have to infer the intent.
Alternatives considered
Leaving it undocumented and unpinned. No behaviour is wrong today, which is why
this is a question rather than a bug — but the next edit to cp_rank could flip
it either way without anything noticing.
Additional context
Surface: CI and release automation (.github/scripts/release-version.sh,
tests/test_release_version.sh).
Worth knowing: the ! is checked first deliberately in the current code — the
comment there says a breaking change of an otherwise silent type "still has"
somewhere to go. So this may already be the intended answer, in which case the
work is a test and a sentence rather than a behaviour change.
Problem
Confirmed while reviewing the release process: doc-only changes correctly
publish nothing.
.github/scripts/release-version.shranksfeata minor,fix/perfa patch,!a major, and "everything else — docs, chore, test, ci,refactor — publishes nothing at all", and #32 (docs-only) published nothing,
riding into 0.14.0's notes through its promoted
Unreleasedentry. That partworks.
One edge is decided but perhaps not deliberate: a breaking change of an
otherwise silent type.
docs!:currently publishes a major, because the!is ranked before the type is consulted.
Proposed behavior
Pick one and make the rank table say so explicitly. Two defensible answers:
!means a breaking change whatever the type, anddocumentation that breaks a documented contract — removing a command from the
docs, changing a config key's meaning — is a real break for users.
docs!:would be a no-op and a genuine break would have to befeat!:orfix!:. Makes the rank table read as "silent types are always silent".Whichever way it goes,
tests/test_release_version.shshould pin it, so thenext person reading
cp_rankdoes not have to infer the intent.Alternatives considered
Leaving it undocumented and unpinned. No behaviour is wrong today, which is why
this is a question rather than a bug — but the next edit to
cp_rankcould flipit either way without anything noticing.
Additional context
Surface: CI and release automation (
.github/scripts/release-version.sh,tests/test_release_version.sh).Worth knowing: the
!is checked first deliberately in the current code — thecomment there says a breaking change of an otherwise silent type "still has"
somewhere to go. So this may already be the intended answer, in which case the
work is a test and a sentence rather than a behaviour change.