fix(changelog): the reconcile script leaves out upstream entries the fork removed

Merged
BO
7d ago
+32-15

The next upstream merge no longer brings back changelog entries the fork removed or reworded, and eight doubled entries are gone from [Unreleased].

Problem

  • scripts/changelog-reconcile.mjs added every entry in upstream's [Unreleased] that the fork's did not have. An entry the fork had removed or reworded came back on each upstream merge, so each reconcile needed a manual override. Run against the current fork and upstream baf19067, it would re-add four such entries (VB.NET type lookup, CRLF store export, the C++ std::unique_ptr call, the C++ string-literal declaration).
  • Eight "codegraph sync and the file watcher …" entries appeared twice in [Unreleased] > Fixes. Upstream's own changelog already had both copies at the 5da4a41d reconcile (#499); upstream has since removed its copies, so the fork's second copies were left over.

Change

  • The script now skips an upstream entry that the merge base's [Unreleased] already had and the fork lacks, and prints it as left out. An entry new since the merge base is still added, and with no merge base nothing is skipped.
  • The second copy of the eight doubled entries is removed. After this, [Unreleased] has no repeated entry and equals the script's rebuild against upstream/main.
  • codegraph-build-validation notes the left out line.

Checks

On head fad31b0a:

CheckResult
New test in fork-tooling-scripts.test.ts (dropped entry stays out, new one is added, no base re-adds)fails on the old script, passes here
fork-tooling-scripts, readme-sync, prepare-release49 passed, 0 failed
check:agent-docsexit 0
Script against HEAD and upstream/main before the changewould add 4 entries; after: adds 0, lists 4 as left out

README rows checked

None: no user-visible behavior, number or README table changes.

Not covered

  • An upstream entry the fork never carried because a union merge lost it (not removed on purpose) also stays out; the left out list is where to spot that.

Summary by cubic

The changelog reconcile script no longer re-adds upstream entries the fork removed or reworded, and the eight doubled codegraph sync and the file watcher entries are gone from [Unreleased].

An upstream [Unreleased] entry that the merge base's [Unreleased] already had and the fork lacks is now skipped and reported as left out, instead of coming back on every upstream merge and needing a manual override. Entries new since the merge base are still added; with no merge base, nothing is skipped.