chore: add markdownlint configs and fix violations#709
Conversation
CRAP Load AnalysisNo Go code changes detected in this PR. No CRAP impact. |
gxmiranda
left a comment
There was a problem hiding this comment.
Only one comment/question on the AI_TOOLING.md file.
Everything else LGTM.
324cabc to
f3f8d41
Compare
sonupreetam
left a comment
There was a problem hiding this comment.
The config additions and rule justifications are solid, well-reasoned exclusions with clear rationale for each disabled rule.
- One pattern worth flagging: several of the automated fixes strip content that was semantically meaningful in context, not just formatting noise, added 2 comments as an example.
- These are cases where the linter can't distinguish formatting from intent. In a codebase where specs and design docs encode precise instructions (search patterns, cross-repo references), bulk lint-fixing can silently alter semantics.
Worth a manual pass over the non-table, non-code-fence changes to catch any other instances where the fix changed meaning rather than just presentation. The table reformatting and code block language tags all look clean :).
673a58a
673a58a to
add88f2
Compare
marcusburghardt
left a comment
There was a problem hiding this comment.
The changes LGTM but some of them belong to org-infra. @trevor-vaughan similarly to #710 there are files changed in this PR that are synchronized from org-infra and should be updated there. You can check the synced files here. The README.md contains the information about the syncing process and you can also get more detailed information from SYNC_REPOSITORIES_SETUP.md
- Add .markdownlint.json at root, specs/, and openspec/ to align local linting with MegaLinter; configure rule exceptions explained below - Exclude .opencode/ from MegaLinter markdown scanning in .mega-linter.yml - Fix MD040: add language identifiers (bash, go, yaml, text) to bare fenced code blocks across docs/, specs/, openspec/, README.md, and .opencode/ files - Fix MD041: add H1 heading to .github/pull_request_template.md - Fix MD024: merge duplicate Changed/Fixed sections in CHANGELOG.md; rename duplicate heading in specs/001 tasks.md - Fix MD052: add [US1]-[US4] reference link definitions in specs/004-providers-repository-split/tasks.md - Fix MD060: realign table column widths in AGENTS.md, README.md, docs/, specs/, tests/e2e/README.md, and .opencode/ agent/command files - Fix escaped indentation in divisor-scribe.md changelog format examples Lint configuration (root .markdownlint.json): - MD004 (unordered list style) disabled: mixed bullet styles appear in agent and command files authored by different contributors; enforcing a single style requires cosmetic churn across non-owned content - MD013 (line length) disabled globally: spec prose, AGENTS.md tables, and generated command docs regularly exceed 80/99 chars; the project enforces line length for Go source via golangci-lint, not for docs. Much of this information is LLM authored. If line length adherence is desired, a tool like `mdformat` should be used - MD024 siblings_only: duplicate headings under different parents are legitimate (e.g. "Description" in every command section); only flag true duplicates at the same level within the same parent - MD029 (ordered list prefix) disabled: specs use 1. 2. 3. style but some legacy files use 1. 1. 1. for easier reordering; both are valid in CommonMark and enforcing one style triggers excessive diffs - MD033 (inline HTML) disabled: docs use <details>/<summary> for collapsible evidence blocks in scan reports and spec examples; these are intentional, not accidental HTML injection - MD036 (emphasis as heading) disabled: openspec templates use bold text as section labels inside prose paragraphs, not as structural headings; treating them as heading violations creates false positives - MD041 (first-line heading) disabled globally at root: CHANGELOG.md, PR templates, and sub-directory index files intentionally omit an H1 because their title is supplied by the surrounding context (GitHub UI, tool rendering, etc.); disabled per-directory in openspec/ for the same reason with template stubs - blank_lines disabled: MegaLinter and local markdownlint disagree on blank-line rules around fenced blocks; disabling prevents CI/local churn while both tools are in use specs/.markdownlint.json: disables MD013 only — spec prose routinely uses long requirement sentences and code-reference lines that cannot be wrapped without breaking semantic meaning. openspec/.markdownlint.json: disables MD013 and MD041 — tactical change templates are stubs without top-level titles; forcing an H1 would require editing every new template before use. CHANGELOG.md restructure: - Consolidated duplicate Fixed entries into the primary Fixed section - Consolidated duplicate Changed entries into the primary Changed section - Removed the now-empty duplicate sections Formatting only, no content or behavior changes. Fixes: #706 Assisted-by: Claude Sonnet 4.6 Signed-off-by: Trevor Vaughan <tvaughan@redhat.com>
add88f2 to
6ebfa49
Compare
linting with MegaLinter; configure rule exceptions explained below
fenced code blocks across docs/, specs/, openspec/, README.md, and
.opencode/ files
rename duplicate heading in specs/001 tasks.md
specs/004-providers-repository-split/tasks.md
docs/, specs/, tests/e2e/README.md, and .opencode/ agent/command files
Lint configuration (root .markdownlint.json):
agent and command files authored by different contributors; enforcing
a single style requires cosmetic churn across non-owned content
and generated command docs regularly exceed 80/99 chars; the project
enforces line length for Go source via golangci-lint, not for docs.
Much of this information is LLM authored. If line length adherence is
desired, a tool like
mdformatshould be usedlegitimate (e.g. "Description" in every command section); only flag
true duplicates at the same level within the same parent
some legacy files use 1. 1. 1. for easier reordering; both are valid
in CommonMark and enforcing one style triggers excessive diffs
for
collapsible evidence blocks in scan reports and spec examples;
these are intentional, not accidental HTML injection
text as section labels inside prose paragraphs, not as structural
headings; treating them as heading violations creates false positives
PR templates, and sub-directory index files intentionally omit an H1
because their title is supplied by the surrounding context (GitHub UI,
tool rendering, etc.); disabled per-directory in openspec/ for the
same reason with template stubs
blank-line rules around fenced blocks; disabling prevents CI/local
churn while both tools are in use
specs/.markdownlint.json: disables MD013 only — spec prose routinely
uses long requirement sentences and code-reference lines that cannot be
wrapped without breaking semantic meaning.
openspec/.markdownlint.json: disables MD013 and MD041 — tactical change
templates are stubs without top-level titles; forcing an H1 would
require editing every new template before use.
CHANGELOG.md restructure:
Formatting only, no content or behavior changes.
Fixes: #706
Assisted-by: Claude Sonnet 4.6
Signed-off-by: Trevor Vaughan tvaughan@redhat.com