Skip to content

chore: add markdownlint configs and fix violations#709

Open
trevor-vaughan wants to merge 2 commits into
mainfrom
chore/706-markdownlint
Open

chore: add markdownlint configs and fix violations#709
trevor-vaughan wants to merge 2 commits into
mainfrom
chore/706-markdownlint

Conversation

@trevor-vaughan

Copy link
Copy Markdown
Member
  • 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
    / 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

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

CRAP Load Analysis

No Go code changes detected in this PR. No CRAP impact.

@trevor-vaughan trevor-vaughan marked this pull request as ready for review July 9, 2026 18:14
@trevor-vaughan trevor-vaughan requested a review from a team as a code owner July 9, 2026 18:14

@gxmiranda gxmiranda left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only one comment/question on the AI_TOOLING.md file.
Everything else LGTM.

Comment thread docs/AI_TOOLING.md Outdated
@trevor-vaughan trevor-vaughan force-pushed the chore/706-markdownlint branch from 324cabc to f3f8d41 Compare July 10, 2026 14:02
gxmiranda
gxmiranda previously approved these changes Jul 10, 2026

@gxmiranda gxmiranda left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Comment thread openspec/changes/opa-devcontainer-content/design.md Outdated
Comment thread .markdownlint.json
Comment thread specs/001-gemara-native-workflow/tasks.md Outdated
sonupreetam
sonupreetam previously approved these changes Jul 10, 2026

@sonupreetam sonupreetam left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 :).

@trevor-vaughan trevor-vaughan dismissed stale reviews from sonupreetam and gxmiranda via 673a58a July 10, 2026 16:22
@trevor-vaughan trevor-vaughan force-pushed the chore/706-markdownlint branch from 673a58a to add88f2 Compare July 10, 2026 16:23
@trevor-vaughan trevor-vaughan enabled auto-merge (squash) July 10, 2026 16:23

@sonupreetam sonupreetam left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@marcusburghardt marcusburghardt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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>
@trevor-vaughan trevor-vaughan force-pushed the chore/706-markdownlint branch from add88f2 to 6ebfa49 Compare July 13, 2026 13:28
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.

chore: triage markdownlint warnings across repo

4 participants