Repository navigation
Update rumdl to 0.3.3 and drop the MyST target workarounds - #1390
laughingman7743 wants to merge 4 commits into
Conversation
rumdl 0.3.3 treats MyST `(label)=` targets as structural lines (rvben/rumdl#983), so MD044 and MD041 no longer check them as text. Remove the three MD044 disable comments on labels and enable MD041, which was off only because docs/*.md start with a target. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
| shellcheck = "0.11.0" | ||
| actionlint = "1.7.12" | ||
| rumdl = "0.3.2" | ||
| rumdl = "0.3.3" |
There was a problem hiding this comment.
Self-review round one (behavior and implementation) — CLEAN
Base edfafcf59d4382c9af6d2111816ac1209c46dba7, head 7b96b703800d50bf37ba754d8c55dec28336101e.
Covered: .mise.toml pin, .rumdl.toml enable list and comments, the three removed disable comments in docs/index.md, docs/polars.md, docs/sqlalchemy.md.
- CI installs rumdl through
jdx/mise-actionfrom.mise.toml(.github/workflows/docs-lint.yaml:28,37), and the workflow path filter includes.mise.toml, so CI runs the bumped version. - With 0.3.3,
rumdl checkreports no issues in 30 files; 0.3.2 on the same tree reports the 3 MD044 target issues, so the removed comments were the only suppression needed. - MD041 is active under this config (a root-level canary starting with prose is flagged) and reports nothing on 0.3.3, versus 16
docs/*.mdhits on 0.3.2. - No remaining
rumdl-disablecomments or references to MyST flavor: targets ((label)=) are checked as text (MD044, MD041) rvben/rumdl#983 in the tree. - Sphinx build (
-E) shows no new warnings; removing HTML comments before the(label)=targets does not change rendering.
| "MD025", "MD026", "MD027", "MD028", "MD029", "MD030", "MD031", "MD032", | ||
| "MD033", "MD034", "MD035", "MD036", "MD037", "MD038", "MD039", "MD040", | ||
| "MD042", "MD044", "MD045", "MD046", "MD047", "MD048", "MD049", | ||
| "MD041", "MD042", "MD044", "MD045", "MD046", "MD047", "MD048", "MD049", |
There was a problem hiding this comment.
Self-review round two (claims and compatibility) — CLEAN
Base edfafcf59d4382c9af6d2111816ac1209c46dba7, head 7b96b703800d50bf37ba754d8c55dec28336101e.
Claims checked:
- "rumdl 0.3.3 fixes MyST flavor: targets (
(label)=) are checked as text (MD044, MD041) rvben/rumdl#983": the maintainer's closing comment names v0.3.3, and the v0.3.3 release notes list "myst: treat targets, block breaks and comments as structural lines"; the 0.3.2/0.3.3 control runs confirm it locally. - "MD041 was off only because docs start with a target": the removed
.rumdl.tomlcomment gave that as the sole reason, and every 0.3.2 MD041 hit is adocs/*.mdfile starting with a target. - "rule set of markdownlint 0.38 except MD013, MD014, MD043": the enable list now has every markdownlint 0.38 rule other than those three (MD057 is not a markdownlint rule).
- MD041 options (
level = 1,front-matter-title = "title",allow-preamble = false) are rumdl defaults matching markdownlint's. - Provenance: the suppressions came from 6cb0195 (Close configuration gaps left by the rumdl migration (GH-1368) #1371), the pointer from 3aebdae (Point the MD044 label suppressions to the upstream rumdl issue #1376).
Contributor impact: anyone running rumdl outside mise with 0.3.2 would see the 3 MD044 issues;AGENTS.mdalready directsmise install.
markdownlint 0.38 matches the title key case-insensitively, while rumdl's default lookup is case-sensitive. Record that rumdl always allows Markdown images and badges before the first heading. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
| "MD025", "MD026", "MD027", "MD028", "MD029", "MD030", "MD031", "MD032", | ||
| "MD033", "MD034", "MD035", "MD036", "MD037", "MD038", "MD039", "MD040", | ||
| "MD042", "MD044", "MD045", "MD046", "MD047", "MD048", "MD049", | ||
| "MD041", "MD042", "MD044", "MD045", "MD046", "MD047", "MD048", "MD049", |
There was a problem hiding this comment.
Independent review (relayed) — FINDINGS
Reviewer: Codex CLI 0.166.0 (gpt-6-astra), codex exec -s read-only, session 01a1caa6-61e1-7902-85c2-f59e0e253645. Static review plus read-only rumdl check / stdin probes on a detached snapshot; no PR description or author conclusions supplied.
Base edfafcf59d4382c9af6d2111816ac1209c46dba7, head 7b96b703800d50bf37ba754d8c55dec28336101e.
Covered: exact diff, mise/CI/just wiring, configured file sets, rule inventory, MyST labels, MD044 enforcement, MD041 behavior and skill front matter, 0.3.2→0.3.3 defaults. Cache-disabled lint passes all 30 files; all 49 intended rules are active (omissions only MD013, MD014, MD043); no other changed defaults need pins.
- P2
.rumdl.toml:28— MD041 permits image preambles outside MyST:README.mdwith only, or an image followed by# Title, passes; markdownlint 0.38 reports both. rumdl skips image/badge lines even withallow-preamble = false. Keep a strict check or record the compatibility exception. - P2
.rumdl.toml:28— front matter title matching:---\nTitle: Example\n---\n\n## Sectionis reported by rumdl but accepted by markdownlint 0.38 (case-insensitive). SetMD041.front-matter-title-pattern = '(?i)^\s*"?title"?\s*[:=]'.
Author verification: both reproduced with stdin probes and confirmed against markdownlint 0.38.0 lib/md041.mjs (non-heading content errors when allow_preamble is false) and helpers.cjs frontMatterHasTitle (new RegExp(..., "i")). rumdl flags <div>, <img>, and image-plus-text lines; only image/badge-only lines are skipped, with no option to disable that.
There was a problem hiding this comment.
Repaired in dd79c0f.
- Accepted as a recorded compatibility exception: rumdl 0.3.3 has no option to stop skipping image/badge-only lines, and no linted file relies on it (
README.mdstarts with# PyAthenaafter its license comment)..rumdl.tomlnow states the difference next to the MD041 options. Before this PR MD041 was off entirely, so every other preamble markdownlint reports is now caught. - Fixed:
[MD041] front-matter-title-pattern = '(?i)^\s*"?title"?\s*[:=]'. Probes:Title:,title:,"title":,TITLE =accepted;name:andsubtitle:without an H1 reported.
Self-review of the repair (behavior and claims): rumdl check --no-cache clean on 30 files, just docs lint and just lint pass; the new comment's claims are the probe results above. MD025 has the same case-sensitive title lookup but no pattern option in rumdl 0.3.3 (Unknown option for rule MD025: front-matter-title-pattern); that is the MD025 difference already accepted in #1360 and stays out of scope.
There was a problem hiding this comment.
Independent follow-up (relayed) — Codex CLI 0.166.0 (gpt-6-astra), codex exec -s read-only, session 01a1caae-98c7-7941-b3f5-be2fef59a297; range-diff edfafcf59d4382c9af6d2111816ac1209c46dba7..7b96b703800d50bf37ba754d8c55dec28336101e → edfafcf59d4382c9af6d2111816ac1209c46dba7..dd79c0f9eedac6a16e2ba6d914c721c83bb7de27. Result: FINDINGS.
Finding 2 resolved: YAML/TOML/JSON title cases match markdownlint 0.38 without over-acceptance. Finding 1's exception is accurate (no rumdl 0.3.3 option; allow-preamble = false still permits them).
P3 .rumdl.toml:76: "always lets Markdown images and badges precede" is too broad — reference-style images (![Logo][logo]) and badges still trigger MD041.
Verified (reference image and reference-link badge reported; inline image and inline-linked badge pass) and repaired in dffac0d: the note now says "lines of only inline images or inline-linked badges"; PR body updated to match. just docs lint passes. Comment-only repair; round-one/two check: the narrowed claim equals the probe results, no behavior change.
There was a problem hiding this comment.
Independent follow-ups (relayed)
- Codex session
01a1cab6-dd4d-7343-9b03-b08e220f3e2eon dffac0d:FINDINGSP3 — "always" is still too broad;.svg)before# Titleis reported. Verified locally and repaired in 5b33d71 ("always lets" → "can let"; PR body updated). Comment-only;just docs lintpasses. - Codex session
01a1cab9-6bbe-7383-a9eb-cf4110dd4c6aon 5b33d71:CLEAN— simple inline images and linked badges pass MD041 even withallow-preamble = false, the parenthesized URL case is reported, and "can let" captures this.
Independent review complete for head 5b33d71 (static review with read-only rumdl probes).
Reference-style images and badges are still reported by rumdl. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
rumdl still reports some inline images, such as one whose URL has parentheses. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
WHAT
.mise.toml(was 0.3.2).<!-- rumdl-disable-next-line MD044 -->comments on the MyST(sqlalchemy)=,(pyathena)=, and(polars)=targets, and the.rumdl.tomlnote that pointed to the upstream issue.Its front matter title pattern is set to markdownlint's case-insensitive one.
rumdl can allow lines of only inline images or inline-linked badges before the first heading, which markdownlint reports; rumdl has no option for this, and the config records it.
WHY
rumdl 0.3.3 fixes rvben/rumdl#983: in the MyST flavor, targets, block breaks, and comments are structural lines, so MD044 and MD041 no longer check them as text.
The MD044 suppressions existed only for that bug (added in #1371, pointer in #1376).
MD041 was off only because
docs/*.mdfiles start with a(label)=target before their H1.TEST
Tested commit: the head of this PR.
mise exec -- rumdl check(0.3.3): no issues in 30 files.docs/*.md. With 0.3.3, MD041 reports none.Title:,title:,"title":, andTITLE =are accepted;name:andsubtitle:without an H1 are reported, matching markdownlint 0.38's^\s*"?title"?\s*[:=]with theiflag.# Tpasses; reference-style images and badges, an inline image whose URL has parentheses,<div>,<img>, and an image followed by text are reported.just docs lint,just lint: pass.uv run sphinx-build -E -b html docs <out>: no warnings other than the existing ones from inherited SQLAlchemy docstrings.🤖 Generated with Claude Code