All rules

A version out of order in a changelog

version-orderon by defaultJapanese / English

One version out of order in a changelog or a list of releases

Example

Flagged
# Changelog ## 3.2.0 - 2026-09-14 ## 3.1.1 - 2026-07-08 ## 3.3.0 - 2026-06-02 ## 3.0.0 - 2026-03-20
What chaff prints
7:4 3.3.0 breaks the order of the versions around it (after 3.1.1)
Fixed
# Changelog ## 3.2.0 - 2026-09-14 ## 3.1.1 - 2026-07-08 ## 3.1.0 - 2026-06-02 ## 3.0.0 - 2026-03-20
What chaff prints
no finding
chaff.yaml used for this example
genre: technical/readme

How to fix

Check the version number. Correct it if it is a typo, or move the entry to where it belongs.

Why it matters

A changelog lists its versions newest first (or oldest first). One version out of that order makes the reader mistake which release is the latest, or which change went into which release. It happens when a version is mistyped or an entry is added in the wrong place. The versions at the start of headings, list items or table rows (3.2.0, v3.2.0, [3.2.0]) are read as a sequence; its direction is taken from most of its steps, and a version that fits in no longest run along that direction is pointed out.

What it does not flag

Fewer than three versions, a sequence with as many steps up as down, a list where no more than half of the versions follow one direction (sorted by name), a repeated version, versions in running text, examples in a code block, and numbers not in three dotted parts (3.1, 22.04) are not checked. A sequence that goes up with no version ending in zero (1.2.1, 1.2.2) is read as section numbers, which numbering-gap checks. Headings are compared with headings of the same depth, and list items and table rows with the lines they run on from.

Turning it off or relaxing it

Silence this one spot (in the document)
<!-- stet: version-order — reason -->
Relax it for the team (the reason is kept as a comment in chaff.yaml)
npx chaffjs relax version-order --why "reason"
Turn it off for the team (chaff.yaml)
rules: version-order: off
Technical details
Layer
L1
Status
stable
Severity
warning
Languages
Japanese and English
Suited to
technical, docs, blog, legal, academic, literature, speech
Reads from the document
markdown

Levels

Set a level for this rule under rules in chaff.yaml. With nothing set, it runs at the level its genre gives it (see By genre below).

stricterror
normalwarning
relaxedinfo

This rule has no limit to count to. A level sets how a finding is marked: relaxed keeps the finding and marks it a step lower.

By genre

Runs by default in
technical/spec, technical/readme, blog/tech, blog/essay, blog/owned-media, docs/manual, docs/faq, docs/glossary
Turned off by the genre in
legal/contract, legal/statute, legal/judgment, legal/patent, academic/paper, literature/fiction, literature/essay, literature/poetry, literature/play, speech/address, speech/transcript
Not suited to, and not run in
business/proposal, business/report, business/email, business/press-release, business/meeting-notes

Genres

Message

{version} breaks the order of the versions around it (after {previous})

This page is built from the rule's definition file:packages/chaff/rules/version-order.yaml