docs(#1125): transcribe nine missed CHANGELOG entries, and stop the audit reporting a correct one - #1126
Merged
Conversation
…udit reporting a correct one Nine merges landed with an entry in the PR body that nobody copied into docs/CHANGELOG.md, which is the failure changelog-on-merge.md names as the one the policy introduces, and a batch transcription PR is the repair route it names for it. #961 and #963 carry byte-identical entries (the second is the reapply of the first), so they transcribe as one. Two entries could not be copied verbatim. #870 and #961 carry 17 em-dashes between them, writing-style.md bans em-dashes in changelogs specifically, and docs/CHANGELOG.md contains zero, so a verbatim copy would have introduced the file's first ones. Each was repunctuated individually, a comma where the clause is parenthetical, a colon where it expands on what precedes it, a semicolon where both halves stand alone, and parentheses for the one interrupted clause. That repunctuation then defeated the audit, which matches an entry by looking for its first ### or - line as a substring: a heading changed to obey one policy reads as never transcribed. entry_is_present() now falls back to the part before the first em-dash when the PR body's own line has one, requiring that part to be long enough to identify an entry on its own so the relaxation cannot become a rubber stamp. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Files Reviewed (2 files)
Reviewed by nemotron-3-ultra-550b-a55b:free · Input: 206.2K · Output: 1.9K · Cached: 185.8K |
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.
What & why
Nine merges landed with a CHANGELOG entry written in the PR body that nobody copied into
docs/CHANGELOG.md.okf/policies/changelog-on-merge.mdnames this as the failure the policyintroduces, and names a batch transcription PR as the repair route, subject to two conditions this
PR meets: it transcribes and does nothing else, and it was the only open PR touching the file when
it was opened (checked against every open PR's file list, not assumed).
Transcribed, newest merge first: #1122, #1112, #1097, #1079, #1069, #1053, #1043, #961, #870.
#961 and #963 carry byte-identical entries, since #963 is the reapply of #961, so they land as one.
After this the audit reports 0 entries in a PR body but not in the file, down from 9.
Closes #1125
CHANGELOG entry
None, this PR is the transcription. Adding an entry describing the act of transcribing entries would
be the loop the policy's "the PR must transcribe and nothing else" condition exists to prevent.
docs/CHANGELOG.mdis expected in this diff:changelog-on-merge.mdlists a batch transcription PRas one of its three exceptions.
SemVer impact
NONE. Documentation and one report script. No
Sources/change, nothing a consumer can observe.Checklist
verification), see SecondMouseAU/OCCTReconstruct#397
for the ecosystem-wide test-coverage standard this is piloting.
--self-testcase was run once with its subject broken, and thefailure is reported here, see okf/policies/prove-the-test-fails.md.
docs/CHANGELOG.mdis not in this diff.This is the batch-transcription exception, named in
changelog-on-merge.md; the file isin the diff by design and the section above says why there is no entry of its own.
docs/SEMVER.mdis not in this diff.The two entries that could not be copied verbatim
#870 and #961 carry 17 em-dashes between them.
okf/policies/writing-style.mdbans em-dashes"in every code comment, doc comment, markdown doc, changelog, commit message, and PR body", and
instructs clearing them from any file you are already editing.
docs/CHANGELOG.mdcontains zerotoday, so a verbatim transcription would have introduced the file's first ones. Each was
repunctuated individually rather than by blanket substitution, using the replacements the policy
itself names: a comma where the clause is parenthetical, a colon where it expands on what precedes
it, a semicolon where both halves stand alone, and real parentheses for the one interrupted clause
in #870.
Two headings were normalised. #961/#963 led with a bold line where every entry in the file uses
a
###heading, which is what the page navigation keys on. #870's heading had no issue number and,after the em-dash repair, read with two colons; the trailing clause became its own sentence. The
issue numbers added to both (
#382,#384) come from the branch names the merges themselves record(
refactor/382-pass2a,reapply/384-pass3), not from a guess.These are the only departures from verbatim, and they are the reason this PR touches the detector
as well.
The detector fix, and why it belongs here
entry_is_present()matches an entry by looking for its first###or-line as a substring ofthe changelog. Repunctuating a heading is therefore indistinguishable from never transcribing it,
so #870 would have been reported as missing forever, for having been transcribed correctly. That
is a report that cries wolf, and the next person either re-transcribes #870 (producing a duplicate)
or starts ignoring the report.
entry_is_present()now falls back to the part of the line before the first em-dash, and only whenthe PR body's own line contains one. The prefix must be at least 24 characters after the marker to
count, so a heading that is mostly em-dash clause does not qualify and is still reported: a stub
prefix would match almost anything and turn the relaxation into a rubber stamp.
Prove-the-test-fails
Two
--self-testcases added, 23 to 25, both run with their subject broken:FAIL #1125: a heading repunctuated to drop a banned em-dash is still found(22/25)MIN_DISTINCTIVE_PREFIXdropped to 0, so any stub matchesFAIL #1125: a heading with nothing distinctive before the em-dash is still MISSING(22/25)Each injection also trips the two pre-existing bucket-membership assertions, which is correct: those
assert the exact contents of the
lateandmissingsets, so a misclassified fixture has to showup in both places. 25/25 with neither defect.
Scripts/git-hooks/pre-commit(every gate, both censuses, and the clang-format check) exits 0.Verification of the transcription itself
The entries were extracted from the PR bodies programmatically rather than retyped, then checked:
docs/CHANGELOG.mddocs/CHANGELOG.mdafter the change: 0, unchanged## Unreleasedheading order is reverse-chronological by mergeSpot-checked against the shipped tree rather than trusting the prose, since a wrong entry is worse
than a missing one:
Shape.selfIntersectsexists and carries@available(*, deprecated)naming#1088 (
Shape+Topology.swift:92),Surface.nlPlateDeformedand its siblings exist, andTests/OCCTXCAFTests/Issue1030DatumLookupGuardTests.swiftexists.Notes for the reviewer
16 merges have no entry section in the PR body at all, so there is nothing to transcribe and
they are deliberately not in this PR. Writing those is drafting, which
changelog-on-merge.mdexplicitly assigns to the PR author rather than the merger ("The merger transcribes; they do not
draft"). Classified, for whoever picks it up:
(report-only script), fix(#829, #877): add #595 to SEMVER.md v2.0.0 break table; remove orphaned doc comment #939 (SEMVER table plus an orphaned doc comment), Add test for PocketFeature.isOpen on compound where solidGroups cannot partition (#1089) #1115 (test-only).
fix(#794): factor shared scaffolding for 4 sibling-entry-point pairs #935, fix(#930): fix four over-coverage findings + sibling from Pass 2b retro #937, Merge PR #933: fix(#793) share int->TopAbs_Orientation decoder (with review fixes) #940.
ShapeAnalysis_Wirebridge functions, a refusal where there was a crash. This one should not shipin a release with no entry.
6 more are "transcribed late" and are correct in the file; the commit-level check asks what the
merge did, so they are not retroactively fixable and need nothing.
1 is unverifiable:
e6fdb4e8has no PR number in its subject.