Menu

#476 chore(changelog): adopt per-PR fragments

closed
nobody
None
2026-08-28
2026-08-26
Anonymous
No

Originally created by: slegarraga

Closes [#456]

What

  • Adds changelog.d/<PR-number>.md as the contribution workflow for changelog entries.
  • Adds a deterministic stdlib compiler that orders fragments by PR number and removes them after compilation.
  • Supports both the legacy Unreleased section and the current release history without one, creating a fresh section at compile time.
  • Updates contributor and maintainer workflows; this PR ships its own 456.md fragment to exercise the convention.

Validation

  • .venv/bin/pytest tests/unit/test_compile_changelog.py — 6 passed.
  • .venv/bin/ruff check . — passed.
  • .venv/bin/ruff format --check . — 393 files already formatted.
  • python scripts/check_markdown_links.py — checked 33 Markdown files, no broken links.
  • .venv/bin/lint-imports — all 4 contracts kept.
  • Full suite: 3213 passed, 12 skipped, coverage 90.59%. One unrelated integration test fails on a clean origin/main checkout in this local environment (doberman missing from an isolated plugin env); it is not touched by this diff.

Related

Tickets: #456
Tickets: #495
Tickets: #509

Discussion

  • Anonymous

    Anonymous - 2026-08-27

    Ticket changed by: fu351

    • status: open --> closed
     
  • Anonymous

    Anonymous - 2026-08-27

    Ticket changed by: fu351

    • status: closed --> open
     
  • Anonymous

    Anonymous - 2026-08-28

    Ticket changed by: fu351

    • status: open --> closed
     
  • Anonymous

    Anonymous - 2026-08-28

    Originally posted by: fu351

    Merged, thanks @slegarraga! Shipping this PR's own 456.md through the new convention is the right way to prove it, and having the compiler create the Unreleased section when the file has none means the release step works on our CHANGELOG as it is today. I ran it against the real file before merging and the bullets land in the right place. The one quirk is two blank lines after the heading and none before the next version heading, I'll fix that in a follow-up along with the fragments for this week's merges. This one saves every open PR a rebase, so it was the one I most wanted merged this week. If you want another dash one after your Refresh control, [#443] (level-3) adds a Copy details button to each pending-approval card.

     

    Related

    Tickets: #443

  • Anonymous

    Anonymous - 2026-08-28

    Originally posted by: slegarraga

    Thank you for the detailed review and merge! I’m especially glad the fragment convention removes recurring rebase churn from the other open PRs — that is a much bigger operational win than the size of the diff suggests.

    [#443] looks like a useful next dash improvement. I’m finishing an urgent deploy-blocker follow-up first; after that I’ll check its current state and comment on the issue before starting so I don’t duplicate anyone’s work. Thanks for pointing me to it!

     

    Related

    Tickets: #443


Log in to post a comment.