Skip to content

191 merged PRs carry a CHANGELOG entry in the PR body that never reached the file #1681

Description

@gsdali

python3 Scripts/check-changelog-transcription.py --verify-transcribed, run on main at
24364cef with #1680 applied:

Merges audited since 03bf315a: 367
  entry transcribed:      46
  explicitly opted out:   2
  NO entry, no opt-out:   319

Verified against each PR body (#788):
  transcribed late, nothing to do:  68
  entry in the PR body, NOT in the CHANGELOG:  191
  PR body has no entry section at all:  32
  PR body says None, by design:  26
  could not verify:  1

#1680 cleared the most recent 42 (#1590 through #1676). 191 remain, spread from #1118 to #1560:

PR range Count
#1100s 23
#1200s 32
#1300s 60
#1400s 42
#1500s 33
#1600s 1

Why this blocks v4.0.0

Step 2 of the release process in CLAUDE.md is "transcribe the CHANGELOG; at release you check the
## Unreleased section is complete". It is not complete: 191 shipped changes have no release note,
including the bulk of the #1413 bridge-correctness sweep (the #1300s and #1400s) and most of the
#1551 Swift-layer sweep (the #1500s). Several are MAJOR, and
semver-at-release assembles docs/SEMVER.md from the same PR
bodies, so it inherits the same gap.

What the work is

Not a reconstruction. The text is in each PR body forever, which is the property
changelog-on-merge relies on. It is a lookup, a
repunctuation pass for em-dashes, and placement in merge order. #1680 is the worked example for 42
of them, tooling included: fetch the bodies, extract the ## CHANGELOG entry block, insert at the
right merge-order anchor, then re-run --verify-transcribed and confirm "transcribed late" rose by
exactly the number transcribed.

Two things #1680 learned that the next batch should carry:

  • The audit over-reports. docs(#1399): read the booleans family of the unlaned refman-coverage lane #1649's entry was in the file; the audit called it missing because the
    PR body's heading writes #1399 as a markdown link and the file's writes it bare. Match on the
    normalised heading (links flattened, backticks stripped) before believing any single row.
  • A batch this size wants one PR per few dozen entries, not one PR for 191, and the batch route
    requires no other open PR touching docs/CHANGELOG.md, so they go in sequence.

The separate 32

PR body has no entry section at all is a different job: there is nothing to transcribe and the
entry has to be written from the merged diff. #1680 did seven of those and named each one in its
body. Worth splitting out once the 191 are done.

Related

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    cluster:kernelOCCTSwift core geometry/meshing/IO librariespriority:P1Hightype:docsDocumentation / OKF catalog

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions