Skip to content

docs content: 4 pages under content/docs/releases/ still render two or three <h1> — three of them need a cascading demotion, not a mechanical one #12250

Description

@os-zhuang

One-liner

Four pages under content/docs/releases/** render two or three <h1>. #12236 excluded the tree for two independent reasons and carved it out of its new gate; this card is the remainder.

Measured on origin/main at 20b0fdb

content/docs/releases/implementation-status.mdx:6 # Implementation Status Matrix (== the frontmatter title)
content/docs/releases/v15.mdx:66,342 # 15.0.0 in detail / # What's new in 15.1.0
content/docs/releases/v16.mdx:117,860 # 16.0.0 in detail / # What's new in 16.1.0
content/docs/releases/v17.mdx:209,3382 # 17.0.0 in detail / # What's new in 17.1.0

Why it is two different jobs

implementation-status.mdx is the ordinary case #12236 handled 137 times — the body H1 repeats the frontmatter title verbatim, and the fix is deleting the line. It was left only because CLAUDE.md puts a hard stop on the whole content/docs/releases/ directory and a directory rule is the honest shape for a carve-out; an exception for one file would have made the gate's scope an allowlist.

The three v*.mdx are NOT mechanical. Their # headings are genuine top-level section dividers with ## children:

## Highlights — 15.0.0
# 15.0.0 in detail <- demoting this alone makes it a sibling of its own children
## New features in 15.0.0 (additive)
## Breaking changes & migration (15.0.0)
# What's new in 15.1.0
## New capabilities in 15.1.0

A correct fix cascades every descendant down one level, which is a structural rewrite of release notes, not a heading demotion. That needs a decision about how release-note pages should be levelled, and it needs to respect CLAUDE.md's rule that these pages are written centrally at release time.

Acceptance

  • no page under content/docs/releases/** contains a body-level # heading
  • the section hierarchy of each v*.mdx still nests (a "in detail" section still owns its subsections)
  • the content/docs/releases/** carve-out is deleted from scripts/check-docs-single-h1.mjs — that gate FAILS when an excluded tree becomes clean, so this is mechanical, not a thing to remember

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions