Skip to content

docs(#1125): transcribe nine missed CHANGELOG entries, and stop the audit reporting a correct one - #1126

Merged
kilo-code-bot[bot] merged 1 commit into
mainfrom
docs/transcribe-changelog-backlog
Aug 25, 2026
Merged

kilo-code-bot[bot] merged 1 commit into
mainfrom
docs/transcribe-changelog-backlog

Conversation

@gsdali

@gsdali gsdali commented Aug 25, 2026

Copy link
Copy Markdown
Collaborator

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.md names this as the failure the policy
introduces, 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.md is expected in this diff: changelog-on-merge.md lists a batch transcription PR
as one of its three exceptions.

SemVer impact

NONE. Documentation and one report script. No Sources/ change, nothing a consumer can observe.

Checklist

  • New or changed behavior is covered by a unit test in the same PR (not just manual
    verification), see SecondMouseAU/OCCTReconstruct#397
    for the ecosystem-wide test-coverage standard this is piloting.
  • Every new test and every new --self-test case was run once with its subject broken, and the
    failure is reported here, see okf/policies/prove-the-test-fails.md.
  • The CHANGELOG entry above is complete, and docs/CHANGELOG.md is not in this diff.
    This is the batch-transcription exception, named in changelog-on-merge.md; the file is
    in the diff by design and the section above says why there is no entry of its own.
  • The SemVer impact above is stated, and docs/SEMVER.md is 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.md bans 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.md contains zero
today, 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 of
the 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 when
the 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-test cases added, 23 to 25, both run with their subject broken:

Injected defect Result
the em-dash fallback removed entirely FAIL #1125: a heading repunctuated to drop a banned em-dash is still found (22/25)
MIN_DISTINCTIVE_PREFIX dropped to 0, so any stub matches FAIL #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 late and missing sets, so a misclassified fixture has to show
up 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:

  • no assembled heading duplicates one already in docs/CHANGELOG.md
  • triple-backtick fences balanced across the assembled block
  • em-dash count in docs/CHANGELOG.md after the change: 0, unchanged
  • the resulting ## Unreleased heading order is reverse-chronological by merge

Spot-checked against the shipped tree rather than trusting the prose, since a wrong entry is worse
than a missing one: Shape.selfIntersects exists and carries @available(*, deprecated) naming
#1088 (Shape+Topology.swift:92), Surface.nlPlateDeformed and its siblings exist, and
Tests/OCCTXCAFTests/Issue1030DatumLookupGuardTests.swift exists.

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.md
explicitly assigns to the PR author rather than the merger ("The merger transcribes; they do not
draft"). Classified, for whoever picks it up:

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: e6fdb4e8 has no PR number in its subject.

…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>
@kilo-code-bot

kilo-code-bot Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Files Reviewed (2 files)
  • Scripts/check-changelog-transcription.py
  • docs/CHANGELOG.md

Reviewed by nemotron-3-ultra-550b-a55b:free · Input: 206.2K · Output: 1.9K · Cached: 185.8K

@kilo-code-bot
kilo-code-bot Bot merged commit 44f4e4a into main Aug 25, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Nine merged PRs' CHANGELOG entries were never transcribed, and repunctuating a banned em-dash defeats the audit

1 participant