Skip to content

Lint MDX pages with Vale - #2544

Merged
kcmartin merged 1 commit into
mainfrom
vale-lint-mdx
Oct 9, 2026
Merged

kcmartin merged 1 commit into
mainfrom
vale-lint-mdx

Conversation

@kcmartin

@kcmartin kcmartin commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

.vale.ini has matched *.markerb and *md since before the cutover, so no .mdx page has been linted. Vale has been running on every PR and finding nothing to apply rules to.

Checked with Vale 3.9.1 and this repo's own styles: byte-identical content in probe.md and probe.mdx gave 1 alert and 0. With the two lines here, both give 1.

Fly.Spelling goes off in the same commit. It accounts for 663 of the 764 alerts the fix surfaces, and the words are redis, Ecto, tcp, Lua, rsync and example identifiers like mypostgres, so it wants a vocabulary pass rather than page edits. With it off the repo reports 101 alerts across 74 pages, 76 of them Fly.WordList.

Nothing starts failing. The workflow sets fail_on_error: false, so Vale annotates and does not block.

sprites-docs is broken too, for an unrelated reason, and needs its own fix.

The only rule section matched `*.markerb` and `*md`, so no `.mdx` page has
been linted since the cutover. Vale ran on every docs PR and found nothing
to apply rules to.

Fly.Spelling stays off until the vocabulary covers these pages. It is 663 of
the 764 alerts the fix surfaces, and the words are overwhelmingly product
and tool names rather than mistakes.
@mintlify

mintlify Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
fly-io 🟢 Ready View Preview Oct 9, 2026, 8:41 PM

💡 Tip: Enable Automations to automatically generate PRs for you.

@kcmartin
kcmartin merged commit 0fc1a74 into main Oct 9, 2026
2 checks passed
@kcmartin
kcmartin deleted the vale-lint-mdx branch October 9, 2026 21:30
@kcmartin kcmartin mentioned this pull request Oct 9, 2026
kcmartin added a commit that referenced this pull request Oct 21, 2026
tj-actions/changed-files emits a space-separated list, and the step told
vale-action the list was comma-separated. The action split on a comma that
was not there, so Vale received a single argument holding every path joined
by spaces. Vale answers an unmatched path with an empty result and exit 0,
so the check has reported nothing at all.

Reproduced both ways with the same binary and config:

  vale --output=JSON 'a.yml b.mdx'   -> {}
  vale --output=JSON a.yml b.mdx     -> the findings in b.mdx

This predates the Mintlify migration, so the glob fix in #2544 was correct
and this was masking it. docs-tracking#375.

Keeps one 'utilize' fix on litefs/how-it-works so a prose file with a
remaining finding is in the diff and CI has something to report.
kcmartin added a commit that referenced this pull request Oct 21, 2026
* Debug the Vale CI run

Temporary: adds debug: true to the vale-action step so the job log shows how
Vale resolves .vale.ini and StylesPath in CI. Vale has returned {} on every
run since the glob fix in #2544 while finding issues locally, tracked in
docs-tracking#375.

Also fixes one 'utilize' on litefs/how-it-works so a prose file with a known
remaining finding is in the diff for Vale to be handed.

* Probe Vale's config resolution in CI

Temporary. The action's debug flag only logs its own inputs, so this runs
vale sync, ls-config and a direct lint in a plain step to see StylesPath,
the matched sections and the loaded styles as CI sees them.

* Extend the probe: run the action's exact args, and dump VALE env vars

* Probe the action's own vale binary after it runs

Same args and cwd give findings with a binary from errata-ai releases and {}
with the one the action installs, so compare the two directly: version, the
Fly checks each loads, and a direct lint.

* Test whether a wrong cwd explains the empty result

* Fix the separator so Vale is passed a file list it can read

tj-actions/changed-files emits a space-separated list, and the step told
vale-action the list was comma-separated. The action split on a comma that
was not there, so Vale received a single argument holding every path joined
by spaces. Vale answers an unmatched path with an empty result and exit 0,
so the check has reported nothing at all.

Reproduced both ways with the same binary and config:

  vale --output=JSON 'a.yml b.mdx'   -> {}
  vale --output=JSON a.yml b.mdx     -> the findings in b.mdx

This predates the Mintlify migration, so the glob fix in #2544 was correct
and this was masking it. docs-tracking#375.

Keeps one 'utilize' fix on litefs/how-it-works so a prose file with a
remaining finding is in the diff and CI has something to report.

* Correct the comment: it skipped multi-file PRs, not every PR

Kristin remembered Vale flagging things before the migration, which is right.
A one-file PR joins to a single valid path, so the check worked on those from
2023 and silently skipped anything larger. Kaelyn's #2217 last September is an
example: one file changed, and Vale reported on it.

This branch was successfully deployed

1 active deployment
staging — 07c4ffe9 Deployed Oct 9, 2026 by mintlify[bot]
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.

1 participant