All rules

Heading numbering mixed

heading-numbering-mixon by default (info)Japanese / English

Sibling headings numbered in mixed ways: "1. Overview", "2. Steps", "Summary"

Example

Flagged
# Report ## 1. Overview The overview. ## 2. Steps The steps. ## Summary The summary.
What chaff prints
11:1 The heading "Summary" has no number, while 2 of its siblings do ("1. Overview")
Fixed
# Report ## 1. Overview The overview. ## 2. Steps The steps. ## 3. Summary The summary.
What chaff prints
no finding

How to fix

Number sibling headings the same way. If the unnumbered one is meant to sit outside the numbered body, give it a different parent.

Why it matters

A numbered "1. Overview" and "2. Steps" next to an unnumbered "Summary", or "1." and "2." next to "3)" or "Chapter 4", leave the reader unsure whether the odd one is meant to be different or lost its number, and the numbers stop matching the table of contents and cross-references. chaff does not pick a style; among headings with the same parent and depth (siblings) it points at the minority. Words that carry a number (Chapter 1, 第1章) and front and back matter that is never numbered (Contents, References) are in each language's lexicon.

What it does not flag

Fewer than three siblings, a tie between the two sides, and headings at different depths or under different parents ("1." and "1.1") are not compared. Front and back matter (Contents, References, Appendix, a closing Contact), and unnumbered headings placed before a numbering that starts at 1 (the page title, "Applies to England"), are not counted among the siblings. A number at the head of a heading without a separator ("2026 roadmap", "3 reasons") is not read as a heading number. Nor is a number that names a period or an event ("Week 1", "Day 2", "Phase 3", "第3回"). A letter that every sibling repeats ("Q. Why …?", "Q. 2.0 behaviour, how?") marks a question, and is not a number.

Turning it off or relaxing it

Silence this one spot (in the document)
<!-- stet: heading-numbering-mix — reason -->
Relax it for the team (the reason is kept as a comment in chaff.yaml)
npx chaffjs relax heading-numbering-mix --why "reason"
Turn it off for the team (chaff.yaml)
rules: heading-numbering-mix: off
Technical details
Layer
L1
Status
stable
Severity
info
Languages
Japanese and English
Suited to
business, technical, blog, legal, docs, 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).

strictwarning
normalinfo
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, business/proposal, business/report, business/email, business/press-release, business/meeting-notes, legal/contract, legal/statute, legal/judgment, legal/patent, docs/manual, docs/faq, docs/glossary, academic/paper, literature/fiction, literature/essay, literature/poetry, literature/play, speech/address, speech/transcript

Genres

Message

The heading "{heading}" is numbered differently from its siblings ("{example}" and {count} in all)

The heading "{heading}" has no number, while {count} of its siblings do ("{example}")

The heading "{heading}" is numbered, while {count} of its siblings are not ("{example}")

The heading "{heading}" writes its number differently from {count} of its siblings ("{example}")

Rewrite depth (chaff fix-plan --depth): light — words and sentences; the structure and the voice stay

This page is built from the rule's definition file:packages/chaff/rules/heading-numbering-mix.yaml