Each release unit keeps a discoverable changelog in its declared format
A changelog exists so a user upgrading two versions can read what changed without diffing tags. Generated commit lists do not answer that, because commit subjects address the maintainer, not the user.
Observable check
each release unit has a discoverable changelog following the project's declared convention. For Keep a Changelog 2.0.0, it opens with # Changelog and a pinned convention link, carries ## [Unreleased], lists dated releases newest first, groups notable changes under the six standard types, marks incompatible entries **Breaking:**, and resolves version headings to tag or comparison links.