Changelog convention
scaffold seeds every package with a NEWS.md (package-owned, written once, never overwritten — see Infrastructure and template sync). This page is the org-wide convention for what goes in it, decided in EpiAwarePackageTools#286 after an audit found four different shapes in use across the ecosystem.
CensoredDistributions.jl's NEWS.md is the reference; ModifiedDistributions.jl follows it closely. Match that shape in a new or updated entry.
The shape
## Unreleased
### Added
- A one-sentence-per-line description of the change, written for a user
reading the changelog rather than the diff. Closes
[#123](https://github.com/OWNER/REPO/issues/123).
### Fixed
- ...
## v0.2.0 - Some milestone
### Breaking
- ...One
## Unreleasedsection at the top, holding every entry since the last release.### <category>subsections underneath it, added only when they have an entry:Added,Fixed,Deprecated,Removed,Breakingcover most changes, and a repo-specific category (CensoredDistributions.jl's "AD gradient infrastructure") is fine when a change doesn't fit the standard set.One sentence per line, matching the org's prose convention elsewhere.
A full Markdown link for the closing reference —
Closes [#123](https://github.com/OWNER/REPO/issues/123))— not a bare#123or a lowercase inlinecloses #123, so the changelog is readable standalone (it renders on the docs site) as well as on GitHub.At release,
## Unreleasedis renamed to the version heading (## vX.Y.Z - <short label>) and a fresh empty## Unreleasedis added above it.
When to add an entry
Add a bullet in the PR that makes the change, not after the fact. A change belongs in NEWS.md if a user of the package (not a contributor reading the diff) would want to know about it: a new public function, a behaviour change, a bug fix, a deprecation. Internal refactors, test-only changes, and CI/infrastructure updates usually don't need an entry.
This is advisory, not enforced by a quality gate — see EpiAwarePackageTools#286 for the discussion of whether to add one later.
Migrating an existing NEWS.md
The convention is a target for new entries, not a mandate to rewrite history. A repo whose NEWS.md predates this page keeps its existing entries as they are; write new entries in the shape above going forward. Backfilling old entries to match (adding Closes links, splitting a paragraph into per-category bullets) is a judgement call for that repo's maintainer, not something update will ever do for you — NEWS.md stays package-owned and untouched by sync.