magus v0.4.3 is out. See what's new
¶ View markdown source · ✎ Suggest an edit
2 min read

changelog-heading

A rule that is off by default: it reports a changelog version heading that is not "## [version] - date" or "## [Unreleased]" once a decisions table turns it on.

What it catches

A changelog version heading that is not "## [version] - date" or "## [Unreleased]".

Dimension

conventions: a house or genre convention is broken. A finding is counted on the dimension of its rule, the cost it names to the reader.

Why

Keep a Changelog heads each release "[version] - date", so a reader and a tool find a release by its number and see when it shipped; "[Unreleased]" carries no date because nothing has shipped. A fragment under changes/unreleased/ has no version heading and is not judged by it. Measured 2026-10-11 over the adjudicated labeling round 2: 27.3% precision (3 of 11) before, 100% (3 of 3) after. Every false positive was a tag-named version ("## [v0.4.3] - 2026-09-06"), which follows the shape, so a "v" inside the brackets is accepted. It stays off until a fresh labeling round measures it.

Default decision

The code is PRF1030. The decision depends on the kind of text judged:

Kind Default
changelog off

Changing it

A decisions table sets this rule to deny, advise or off, for everything judged or for the files a glob matches. Proofread reads the table from the file its -decisions flag names:

{
  "rules": {"changelog-heading": "deny"},
  "paths": {"blog/**": {"changelog-heading": "off"}}
}

rules applies to every file. A glob in paths applies to the files it matches, and the last match wins. A rule set to off never reports.

Seeing it

A finding names the rule, its code and the decision that applies, and links here:

{"rule": "changelog-heading", "code": "PRF1030", "decision": "off", "url": "https://eli.gladman.cc/magus/reference/proofread/changelog-heading/"}

proofread rules prints this entry with every other rule's.

See also

proofreadruleschangelog-headingoff
Last updated (29d8b3de)
Earlier changes on this page (1)

Full history ↗ · Blame source ↗

Glossary

CI

An ordinary target you compose yourself with ctx.needs; magus does not hardcode its stages. It is the anchor magus affected ci keys off, and ci strips the rw charm. CI in full.

Tool

An action a model can call through its host: a name, a description, a typed input and a result. magus serves its tools over MCP, each a read of the workspace model or a run of the CLI it already has. Tool in full.

Lease

The grant a holder takes on a job: the write and read paths that job declared, enforced in the checkout that took it with magus job exec. A job is the piece of work; a lease is permission over it. Lease in full.

Conventions

This page uses none of the site's convention markers. The full set is on the conventions page.