Dedupe fragment-summary vs conventional-commit subject at the CHANGELOG generation layer #258
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#258
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Empirical anchor
tmux-tell#630 (first-ever release-toolkit-driven cut, v0.23.0) surfaced this on Surveyor's re-review at fresh HEAD post-#633 rebase: the v0.23.0 cut listed
#623TWICE in## [0.23.0] ### Fixed—changelog.d/623.fixed.md(rich OOM-cascade narrative)- **mutation**: cap --workers=4 ... (#623)emitted by the conventional-commit-subject parser, from thefix(mutation): ... (#623)commitThe CHANGELOG renderer composes BOTH sources without deduplication. Manual dedup IS prescribed in
docs/conventions.md§"When to use which":But manual dedup DOES NOT SURVIVE rolling-PR regenerate-on-rebase semantics: every push to main triggers release-prep regeneration on the rolling PR, which re-emits the conventional-commit-subject bullets, which wipes any prior manual dedup. So an adopter's dedup-→merge sequence MUST be ephemeral-protected by tight sequencing (last edit before merge) with no subsequent rebase.
tmux-tell#630 had to dedupe TWICE in the same PR session: first at 7473468 after the initial Surveyor catch, wiped by the #633 rebase, then again at 73ae5fe after the regeneration re-emitted the bullet. The convention works AS DOCUMENTED but only on linear cut paths, not on regenerate-on-rebase paths.
Durable fix path (this tracker)
Generation-layer dedup: when composing the CHANGELOG section for a cut, after emitting fragment summaries + conventional-commit-subject bullets, check for
(#NNN)issue references that appear in BOTH sources. For duplicates:docs/conventions.md(replacing the current "manual dedup" guidance)This eliminates the manual-dedup-wipe cycle for all consumers, not just the first-cut adopter.
Composition
check-changelog-placementskip regex (consumer-side; shipped)Three of four are consumer-side adopter-gotchas + worth a
docs/integration.md"common adopter gotchas" section. The toolkit-side ones (#257 + this issue) are the durable fixes that eliminate the gotchas at the source.What this issue does NOT do
docs/conventions.md"manual dedup" guidance immediately — leave as fallback until this landsRefs
priority/medium · size/M (generation-layer + docs update + bats test for the dedup precedence)
release-bot referenced this issue2026-06-29 21:22:51 +02:00
fix(#NNN):scope-as-issue-ref shape #293