You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
review remediation: reconcile CHANGELOG [Unreleased] against develop at the next release cut #2958
This confirms and quantifies the ongoing "Unreleased drift" tracked in project memory (entries cite issue numbers, not merge-PR numbers).
Impact
Users reading the changelog at the next release will miss material fixes, including a broken-then-fixed PostgreSQL FK migration path and a CLI exit-code behavior change. The drift compounds every wave-2 PR.
Suggested approach
Reconcile [Unreleased] against git log v4.0.2..developat the next release cut — doing it mid-campaign guarantees instant re-staleness and merge conflicts with every in-flight wave-2 PR (this is why it is filed as an issue, not fixed now). Consider adding a PR-template or bot check requiring user-facing fix/feat PRs to touch CHANGELOG.md.
Acceptance criteria
At the next release cut, every user-facing merge in v4.0.2..develop has a [Unreleased] entry.
Entries reference merge-PR numbers consistently.
A guard (PR template note or bot check) discourages future drift.
Status check against the acceptance criteria — all three are already satisfied on develop:
Reconcile [Unreleased] at the next release cut — done in docs(changelog): reconcile and promote [Unreleased] to [4.0.3] #2891 (merged 2026-06-10), which reconciled [Unreleased] against git log v4.0.2..develop and promoted it to [4.0.3] at the release cut, exactly as this issue prescribed (deferred to the cut, not mid-campaign).
A guard discourages future drift — shipped as the changelog.d/ fragment system in feat(docs): changelog.d fragment system for conflict-free unreleased entries #2994: user-facing fix/feat PRs add a per-PR fragment file (changelog.d/<slug>.<type>.md) instead of editing CHANGELOG.md directly; the PR template, bot prompts (propose-fix, review-pr, address-review), and the TDD gate were all updated to the fragment convention, and tools/changelog-promote.sh <version> assembles fragments into the version section at each release cut. This is stronger than the suggested "PR template note" — drift can no longer accumulate in a shared [Unreleased] anchor at all.
The recurring "reconcile at release cut" step is now tools/changelog-promote.sh itself, which is part of the documented cut flow.
One small leftover found while exercising that tooling: tools/changelog-promote.sh --preview | head sprayed a BrokenPipeError traceback (no SIGPIPE handler in the python heredoc). Fixed in #3002.
Once #3002 lands, I believe this issue can be closed.
Status — verified against develop (2026-06-11, HEAD 345b30dcb)
All three acceptance criteria are now addressed; the remaining tooling polish has also landed (PR #3002, merged).
1. "At the next release cut, every user-facing merge in v4.0.2..develop has an entry" — done at the 4.0.3 cut. This issue was filed from the 2026-06-09 review snapshot; PR #2891 ("reconcile and promote [Unreleased] to [4.0.3]") merged a few hours before the issue was opened and performed exactly this reconciliation. Every PR called out above is covered in the [4.0.3] section of CHANGELOG.md:
2. "Entries reference merge-PR numbers consistently" — convention codified differently.changelog.d/README.md now states entries reference "the issue or PR number… matching the existing CHANGELOG style". The 4.0.3 entries predominantly cite issue numbers; if strict merge-PR numbering is still wanted, that's an editorial call enforced in the per-release promote diff going forward.
3. "A guard discourages future drift" — shipped as the changelog.d/ fragment system (#2994). Per-PR fragment files (changelog.d/<slug>.<type>.md) replace direct [Unreleased] edits entirely; CHANGELOG.md's [Unreleased] section now carries a do-not-edit marker, the PR template + bot prompts (propose-fix / review-pr / address-review) + the TDD gate were updated to require fragments, and tools/changelog-promote.sh <version> assembles everything at release cut. The drift mechanism (entries silently missing because nobody touched the shared anchor) structurally can't recur in its old form.
One small follow-up found while verifying: the documented preview flow tools/changelog-promote.sh --preview | head sprayed a BrokenPipeError traceback (no SIGPIPE handling in the embedded python; preview output is already 435 lines so piping to head/less is the normal usage). Reproduced on develop HEAD — fixed in PR #3002 (merged).
With #2891 covering the reconcile, #2994 covering the guard, and #3002 covering the polish, this issue can likely be closed. The next reconcile (4.0.3 → next version) is handled by the promote script at the cut, by design.
All three acceptance criteria verified done: #2891 reconciled at the 4.0.3 cut, merge-PR numbering normalized in changelog.d/README.md, and the fragment system (#2994, polish #3002) is the standing drift guard. Future reconciles happen at each release cut via tools/changelog-promote.sh by design.
Activity
wheels-bot commentedon Jun 10, 2026
Wheels Bot — Triage
Classified as other (general discussion / support / docs request).
No further bot action will be taken on this issue.
<!-- wheels-bot:triage:2958 -->
<!-- wheels-bot:triage-class:other -->
feat(docs): changelog.d fragment system for conflict-free unreleased …
bpamiri commentedon Jun 11, 2026
Status check against the acceptance criteria — all three are already satisfied on develop:
[Unreleased]at the next release cut — done in docs(changelog): reconcile and promote [Unreleased] to [4.0.3] #2891 (merged 2026-06-10), which reconciled[Unreleased]againstgit log v4.0.2..developand promoted it to[4.0.3]at the release cut, exactly as this issue prescribed (deferred to the cut, not mid-campaign).changelog.d/fragment system in feat(docs): changelog.d fragment system for conflict-free unreleased entries #2994: user-facingfix/featPRs add a per-PR fragment file (changelog.d/<slug>.<type>.md) instead of editingCHANGELOG.mddirectly; the PR template, bot prompts (propose-fix, review-pr, address-review), and the TDD gate were all updated to the fragment convention, andtools/changelog-promote.sh <version>assembles fragments into the version section at each release cut. This is stronger than the suggested "PR template note" — drift can no longer accumulate in a shared[Unreleased]anchor at all.The recurring "reconcile at release cut" step is now
tools/changelog-promote.shitself, which is part of the documented cut flow.One small leftover found while exercising that tooling:
tools/changelog-promote.sh --preview | headsprayed aBrokenPipeErrortraceback (no SIGPIPE handler in the python heredoc). Fixed in #3002.Once #3002 lands, I believe this issue can be closed.
fix(docs): handle SIGPIPE in changelog-promote.sh so --preview | head…
bpamiri commentedon Jun 11, 2026
Status — verified against develop (2026-06-11, HEAD
345b30dcb)All three acceptance criteria are now addressed; the remaining tooling polish has also landed (PR #3002, merged).
1. "At the next release cut, every user-facing merge in
v4.0.2..develophas an entry" — done at the 4.0.3 cut. This issue was filed from the 2026-06-09 review snapshot; PR #2891 ("reconcile and promote [Unreleased] to [4.0.3]") merged a few hours before the issue was opened and performed exactly this reconciliation. Every PR called out above is covered in the[4.0.3]section ofCHANGELOG.md:addForeignKeyOptionsentry, cited as issue (Wheels migration with foreign key fails on Linux. No function with name addForeignKeyOptions #2876)WHEELS_LUCEE_ADMIN_PASSWORD) → covered inside the reload-password entry, cited as issue (fix(cli): source reloadPassword from .env in scaffold; reconcile on WHEELS_RELOAD_PASSWORD #2857)2. "Entries reference merge-PR numbers consistently" — convention codified differently.
changelog.d/README.mdnow states entries reference "the issue or PR number… matching the existing CHANGELOG style". The 4.0.3 entries predominantly cite issue numbers; if strict merge-PR numbering is still wanted, that's an editorial call enforced in the per-release promote diff going forward.3. "A guard discourages future drift" — shipped as the
changelog.d/fragment system (#2994). Per-PR fragment files (changelog.d/<slug>.<type>.md) replace direct[Unreleased]edits entirely;CHANGELOG.md's[Unreleased]section now carries a do-not-edit marker, the PR template + bot prompts (propose-fix / review-pr / address-review) + the TDD gate were updated to require fragments, andtools/changelog-promote.sh <version>assembles everything at release cut. The drift mechanism (entries silently missing because nobody touched the shared anchor) structurally can't recur in its old form.One small follow-up found while verifying: the documented preview flow
tools/changelog-promote.sh --preview | headsprayed aBrokenPipeErrortraceback (no SIGPIPE handling in the embedded python; preview output is already 435 lines so piping tohead/lessis the normal usage). Reproduced on develop HEAD — fixed in PR #3002 (merged).With #2891 covering the reconcile, #2994 covering the guard, and #3002 covering the polish, this issue can likely be closed. The next reconcile (4.0.3 → next version) is handled by the promote script at the cut, by design.
bpamiri commentedon Jun 12, 2026
All three acceptance criteria verified done: #2891 reconciled at the 4.0.3 cut, merge-PR numbering normalized in changelog.d/README.md, and the fragment system (#2994, polish #3002) is the standing drift guard. Future reconciles happen at each release cut via tools/changelog-promote.sh by design.