Skip to content

Promote all mds section headings to level 1 - #587

Merged
d-morrison merged 9 commits into
mainfrom
claude/project-thread-borsc0-all
Nov 3, 2026
Merged

d-morrison merged 9 commits into
mainfrom
claude/project-thread-borsc0-all

Conversation

@d-morrison

Copy link
Copy Markdown
Contributor

One mechanical PR, at Ezra's choice (decision card, 2026-11-02 13:46 PST), replacing the partial PRs #569, #570, #571, #582, #583, #584, #585 and #586. Their reviews each saw a half-converted tree, so none could come back clean. It exceeds the PR size cap on purpose (ALLOW_LARGE_PR).

Why: every page and fragment started its sections at level 2, so number-sections: true numbered them 0.1, 0.2 and so on. The check that required this (gha check-heading-levels) now requires a level 1 start (Morrison-Lab/gha#1399).

What changes:

  • Page bodies and the fragments they include (hosts and fragments together) move their level 2 and 3 headings up one level. Div titles at level 4 stay.
  • _quarto-website.yml sets shift-heading-level-by: 1 for revealjs, so each section is still one slide under slide-level: 2.
  • split-page-headings.lua now drops a level 1 title heading and shifts deeper headings up one.
  • The indicator section is split into one div per subfile (pure move, so check-one-div-per-subfile passes), then its headings are promoted. rem-iverson-indicator is also moved to its own subfile.
  • Section numbers on the HTML pages change, for example from 1.1 to 1; ids and URL anchors are unchanged.

Checked: an include-expanding script finds no page that starts deeper than level 1 or skips a level; a local render numbers sections 1 to 6 with one h2 per section in the slides.


Generated by Claude Code

… 0.1, 0.2

number-sections numbers by heading level and the page title is not a numbered level,
so a page whose first body heading is level 2 numbers its sections 0.1, 0.2.
Heading text is unchanged, so anchors and links are unchanged.
Part of #568

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019xfc9mgFxbUyGpESuW5TVR
… 0.1, 0.2

number-sections numbers by heading level and the page title is not a numbered level,
so a page whose first body heading is level 2 numbers its sections 0.1, 0.2.
Heading text is unchanged, so anchors and links are unchanged.
Part of #568

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019xfc9mgFxbUyGpESuW5TVR
… 0.1, 0.2

number-sections numbers by heading level and the page title is not a numbered level,
so a page whose first body heading is level 2 numbers its sections 0.1, 0.2.
Heading text is unchanged, so anchors and links are unchanged.
Part of #568

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019xfc9mgFxbUyGpESuW5TVR
Pages and the fragments they include started their sections at level 2, so
number-sections rendered 0.1, 0.2 and so on. This moves every page body and
included fragment up one level together, so sections number 1, 2, 3, splits
the indicator section into one div per subfile (a pure move) so the
one-div-per-subfile check can pass, updates split-page-headings.lua for the
new level, and sets the revealjs heading shift to 1 so each section is one
slide. Replaces the partial PRs, whose reviews saw a half-converted tree.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019xfc9r2idFsJ4pHCsRGyGx
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

…er 1.1 to 1.3

The subsections sat one level too deep after the page promotion, so they
rendered as 1.0.1 to 1.0.3.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019xfc9r2idFsJ4pHCsRGyGx
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

Copy link
Copy Markdown
Contributor Author

Annotations read on head 849e3e9 (all 40 check runs; every check green).

  • 3 warnings, check-informal-definitions no-link-in-definition on _def-indicator-function.qmd, _def-predicate-indicator.qmd and _def-iverson-bracket.qmd. This PR moved those definitions into their own subfiles unchanged, so the diff-scoped check saw them as added lines. The text predates the PR, and linking its terms is content work outside a mechanical heading promotion, so it is tracked in Link technical terms in the three indicator-function definitions #590.
  • Notices: the runner-image notice about the ubuntu-latest move to Ubuntu 26 (GitHub infrastructure), the empty SUBMODULES_TOKEN notice (public submodules clone anonymously), and the diff-highlighting cap on the build (569 elements against 500, expected for a 64-file change).

Generated by Claude Code

@github-actions

github-actions Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

Claude finished review — View run


I just fetched PR #587 live. It is open, not a draft, and not merged. Its head is still b3efc28b860b320b74de4ee95e31b23d90420367, the commit I reviewed, so the verdict below applies to the current head.

This is a confirming review. No commit of the PR's own has landed since the last round. I did not re-read the whole diff or render the site.

The PR head moved from 849e3e9 to b3efc28 only by merging main (1a48046) into the branch. git show --remerge-diff shows that merge matches git's automatic result, with no hand-resolved conflicts. The 31 commits it brought in are already on main.

The prior review, posted 2026-11-02 on commit 849e3e9, was CLEAN. It stands. That review built on the earlier CLEAN review of commit 8e213a3.

Two non-blocking observations from the earlier rounds still apply:

  • _subfiles/indicator-functions/_rem-iverson-indicator.qmd:2 links @def-indicator-function where the text means the predicate indicator, @def-predicate-indicator.
  • The commit message for 849e3e9 says the headings number "1.1 to 1.3". They sit under a ## parent, so they render as 1.1.1 to 1.1.3.

Verdict

Ready for merge. The merge of main adds nothing new to review, and the prior CLEAN verdict stands.

Structured Review Data (JSON)
{
  "schema_version": "1.1",
  "reviewer": "claude",
  "commit_sha": "b3efc28b860b320b74de4ee95e31b23d90420367",
  "verdict": "CLEAN",
  "findings": [],
  "detailed_assessment": "The only change since the last round is a clean merge of main whose remerge-diff matches git's automatic result, so the heading demotions and indicator-function subfiles reviewed earlier are unchanged.",
  "holistic_assessment": "No new PR-authored commits, section ids and URL anchors are unchanged, and the earlier CLEAN verdict still applies; the rendered slide output was not built in this review."
}

Stopping Point: Not a clean stopping point / work remains queued: session not done; this was an automated review-only run, so no files were changed or committed and nothing is queued. UMS was not executed.

Reviewed commit: b3efc28

@github-actions

github-actions Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

💰 Cost: $0.2399 (review) — run

@github-actions

github-actions Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.

2026-11-03 00:01 UTC

@d-morrison
d-morrison merged commit 3dff1d8 into main Nov 3, 2026
40 checks passed

Copy link
Copy Markdown
Contributor Author

Merged on Ezra's typed mwc (2026-11-02 14:55 PST) at head b3efc28, after the clean Claude review of that head, all 40 checks green, and the annotation read above.

The cross-harness review is waived: the agy and OpenCode Go quotas are exhausted, and the lab bars Codex and pay-per-use APIs. The waiver follows adversarial-self-review.md.

Posted by Claude Code (AI agent) --- not written by a human.


Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants