# Rule: Changelog policy

## Requirement

Every A2C-governed **software** repository must maintain root-level **`CHANGELOG.md`**.

## Standards

- Format: [Keep a Changelog 1.1.0](https://keepachangelog.com/en/1.1.0/)
- Versioning: [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html)

## When to update

Update for user-visible or release-relevant work: features, fixes, breaking changes, deprecations, removals, security.

Curate `## [Unreleased]` as work lands; finalize at release into `## [X.Y.Z] - YYYY-MM-DD`.

Skip changelog updates for minor internal refactors and trivial non-release documentation tweaks.

## ADRs vs changelog

ADRs capture **why**; changelog captures **what** per version. Optional ADR references in changelog bullets are encouraged when helpful.

## AI behavior

- **Bootstrap:** create `CHANGELOG.md` from template if missing
- **Release-worthy changes:** propose and, when approved, update `[Unreleased]`
- **Release:** ensure version entry matches semver and changes; use `bump_release.py` to finalize at release time ([ADR-0004](../docs/adr/0004-standardized-ci-bump-and-release-flow.md))
- **Routine internal work:** do not update changelog unless release-relevant

## Canonical reference

[docs/workflow/changelog-policy.md](../docs/workflow/changelog-policy.md), [ADR-0002](../docs/adr/0002-standardized-changelog-and-release-documentation.md), and [ADR-0004](../docs/adr/0004-standardized-ci-bump-and-release-flow.md).
