A change that ships needs a changelog entry #7

Merged
marcos-mendez merged 1 commit from ci/require-changelog into main 2026-09-26 19:35:55 -03:00
marcos-mendez commented 2026-09-26 19:30:47 -03:00 (Migrated from github.com)

Today the Instance menu and the console mark were merged into confconsole with no entry in debian/changelog. The code was on master, the gate was green, and the newest installable confconsole stayed 2.2.3+keel1, so neither change reached an appliance. The forum image was then read as proof the menu had never been written. Nothing in the process could have noticed: a coverage gate measures the code, not whether the code can be installed.

require-changelog.yml is the missing check. A pull request that changes a file the package ships must also add a changelog entry with a greater version. Tests, documentation and CI ship nothing and are exempt, and a repository with no changelog requires nothing.

The rule is bin/require-changelog, a script with a bats suite, rather than shell inside the workflow (decision 0004). This repository therefore gains a second gate of its own, tests / coverage, beside actionlint: the tools here run inside every other repository's gate, so they are tested where they live.

Test plan

  • 13 bats cases: a change with a greater entry, a change without one, a test only change, documentation and CI only, a changelog only change, a version that goes backwards, an entry rewritten at the same version, a repository with no changelog, a changelog the pull request adds, a caller giving its own path and exempt expression, a missing argument, a commit that is not there, and a run outside a git repository.
  • tests/coverage.sh: bin/require-changelog 51 of 51 lines, total 100.
  • actionlint clean over all six workflows.
  • After merge: tests / coverage required here too, then callers added to the packaged repositories (confconsole, inithooks, keel, keel-transition).
Today the Instance menu and the console mark were merged into confconsole with no entry in `debian/changelog`. The code was on master, the gate was green, and the newest installable confconsole stayed `2.2.3+keel1`, so neither change reached an appliance. The forum image was then read as proof the menu had never been written. Nothing in the process could have noticed: a coverage gate measures the code, not whether the code can be installed. `require-changelog.yml` is the missing check. A pull request that changes a file the package ships must also add a changelog entry with a greater version. Tests, documentation and CI ship nothing and are exempt, and a repository with no changelog requires nothing. The rule is `bin/require-changelog`, a script with a bats suite, rather than shell inside the workflow (decision 0004). This repository therefore gains a second gate of its own, `tests / coverage`, beside `actionlint`: the tools here run inside every other repository's gate, so they are tested where they live. ## Test plan - 13 bats cases: a change with a greater entry, a change without one, a test only change, documentation and CI only, a changelog only change, a version that goes backwards, an entry rewritten at the same version, a repository with no changelog, a changelog the pull request adds, a caller giving its own path and exempt expression, a missing argument, a commit that is not there, and a run outside a git repository. - `tests/coverage.sh`: `bin/require-changelog` 51 of 51 lines, total 100. - actionlint clean over all six workflows. - After merge: `tests / coverage` required here too, then callers added to the packaged repositories (confconsole, inithooks, keel, keel-transition).
Sign in to join this conversation.
No description provided.