ci: changelog lint fails on near-identical entries, the union-merge re-add after a reword - #1645
Merged
Merged
Conversation
…e-add after a reword Two entries in one subsection with three quarters or more of their words in common, or an [Unreleased] entry that close to a released one, now fail the build rather than warn. The eight-word opening check stays a warning because two genuinely different fixes to one component open the same way; word overlap separates them (0.56 at most in the file's history) from re-adds (0.63 to 1.0). Replaying the two resurrections that reached main, this fails both; the previous rules only warned on one and saw two of 0.14.0's seven re-adds as different entries. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Mw5XPncvpoN78zeazx5jgi
JayVDZ
enabled auto-merge (squash)
September 8, 2026 06:45
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
scripts/Lint-Changelog.ps1now hard-fails two entries in one subsection that are near-identical (three quarters or more of their words in common, Sørensen-Dice on word bags), and an[Unreleased]entry that close to one in a released section. This is themerge=unionre-add after a reword: #1644 removed one that had reachedmainbecause, opening the same way as its rewrite, it only warned.Why not simply promote the eight-word opening warning to an error: two of the three same-opening pairs in
[Unreleased]today are genuinely different fixes to one component (dark theme vs light themes; two settings-save bugs), so that would break CI onmainand keep producing false failures that could only be silenced by rewording. Word overlap separates the two cases with room: measured over the file's history, every genuinely different pair scores 0.56 or less, every union-merge re-add 0.63 or more, and the two resurrections that reachedmain0.97 and 1.0. The threshold is 0.75, nearer the re-adds, because a re-add below it still warns on its opening while a genuine pair failing has no clean fix.Replayed against history: the pre-#1644 file now fails on the 97% pair; the pre-#1201 file (0.14.0's seven re-adds) now fails on all six that the exact check found plus the two reworded ones (80%, 92%) it could not see. The current
CHANGELOG.mdpasses. The opening-clause warning is unchanged. Entry shapes are computed once and a length-ratio bound skips impossible pairs, so the all-pairs comparison over 900 entries runs in about 6 s.engineering/CLAUDE.mdand the rootCLAUDE.mddescribe the new rule where they described the old ones.Type of change
Testing
dotnet build JIM.slnsucceeds with zero errors (not applicable: no .NET change)dotnet test JIM.slnpasses (not applicable: no .NET change)Pester: three new cases in
scripts/Tests/Lint-Changelog.Tests.ps1, written first and failing on exit code before the change (near-identical pair in one subsection fails; same-opening-but-different pair still passes with the warning; near-identical to a shipped entry fails naming the version). 11 of 11 pass.Lint-Changelog.ps1run against the current changelog and the two historical resurrections as described above.Documentation
docs/); page(s):engineering/) where a design/architecture doc would otherwise be staleDocs: n/a - developer tooling; no user-facing change or changelog entry.
Screenshots / output (if applicable)
Checklist
docs/DEVELOPER_GUIDE.mdAdditional context
Follow-up to #1644. A re-add reworded more heavily than any seen so far (below 0.75) degrades to the existing opening-clause warning rather than going unseen, provided it still opens the same way; that is the accepted gap.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Mw5XPncvpoN78zeazx5jgi
Generated by Claude Code