Skip to content

fix(changelog): emit one bullet per dependency change - #12

Closed
upbqdn wants to merge 1 commit into
fix/semver-req-classificationfrom
fix/one-changelog-bullet-per-dep
Closed

fix(changelog): emit one bullet per dependency change#12
upbqdn wants to merge 1 commit into
fix/semver-req-classificationfrom
fix/one-changelog-bullet-per-dep

Conversation

@upbqdn

@upbqdn upbqdn commented Jul 31, 2026

Copy link
Copy Markdown
Member

Motivation

A dependency whose types are reachable in a crate's public API produced two
### Changed bullets naming the same dependency:

### Changed
- Migrated to `ext_dep 0.30.0`.
- Public dependency `ext_dep` upgraded to `0.30.0` (major); it appears in this crate's public API, so this is a breaking change.

The first comes from the per-crate dependency diff, which emits a line for every
requirement change; the second from the public-dependency reachability join. A changelog
entry is per change and written for the user adapting to it, so this left the curator
merging the two by hand on every such dependency.

Solution

Fold the note into the Migrated to line, keeping the standalone bullet only where no
such line exists:

### Changed
- Migrated to `ext_dep 0.30.0`; its types appear in this crate's public API, so downstream users must upgrade `ext_dep` in lockstep.

The wording stays conditional on the classification introduced in #11: a major change
states the lockstep upgrade, an unknown requirement change only asks for review, so an
unproven change still cannot read as a break.

Stacked on #11, which the fold reuses for that distinction.

Tests

The reachable case now asserts the folded line and guards against a second bullet
appearing beside it. Adds branch coverage for the external Migrated to line itself,
which the fold rewrites in place.

Ran locally: shellcheck -S warning zc tests/run.sh, bash -n zc, bash -n tests/run.sh, tests/run.sh (133 tests, 0 failures).

A dependency whose types are reachable in a crate's public API produced two
`### Changed` bullets naming it: the `Migrated to ...` line every requirement
change emits, and a second `Public dependency ...` line from the reachability
join. A changelog entry is per change and written for the user adapting to it, so
the curator had to merge the two by hand on every such dependency.

Fold the note into the `Migrated to` line instead, keeping the standalone bullet
only for the case where no such line exists. The wording stays conditional on the
classification: a proven-incompatible bump states the lockstep upgrade, an unknown
requirement change only asks for review.
@upbqdn

upbqdn commented Jul 31, 2026

Copy link
Copy Markdown
Member Author

Superseded by #13: GitHub auto-closed this when its stacked base branch was deleted on merge of #11. Same commit, rebased onto main.

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