Skip to content

Fix the separator so Vale is passed a file list it can read - #2590

Merged
kcmartin merged 7 commits into
mainfrom
vale-ci-debug
Oct 21, 2026
Merged

kcmartin merged 7 commits into
mainfrom
vale-ci-debug

Conversation

@kcmartin

@kcmartin kcmartin commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

The Vale check has been passing without reading most of what it was given. Fixes https://github.com/superfly/docs-tracking/issues/375.

The bug. tj-actions/changed-files emits a space-separated list, and this step told vale-action it was comma-separated. The action split on a comma that wasn't 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 went green having linted nothing.

That joined string is a valid path when a PR changed exactly one file. So since the separator was introduced in #1050 on 19 September 2023, this check has worked on single-file PRs and silently skipped every PR that changed two or more files, which is most of them and all the large content ones.

vale --output=JSON 'litefs/faq.mdx'                          -> findings
vale --output=JSON 'litefs/faq.mdx litefs/how-it-works.mdx'  -> {}

Vale had been saying so all along, in a line buried under a passing check:

User-specified path (.github/workflows/vale-docs-linter.yml litefs/how-it-works.mdx) is in...

The fix is separator: " ", plus a comment so the next person doesn't read "," as deliberate.

Verified, rather than assumed. This PR deliberately leaves one known finding in place, an in order to at litefs/how-it-works.mdx:30, and CI now annotates it:

litefs/how-it-works.mdx:30 [warning] [vale] reported by reviewdog
Consider using 'to' instead of 'in order to'.

That is the first real Vale annotation this repo has produced on a multi-file PR. A green check proves nothing here, which is the whole point of the bug, so the annotation is the evidence.

Also included: one utilize to use fix on litefs/how-it-works, which is what puts a prose file with a remaining finding into the diff. Without it the run would have had nothing to lint and would have proved nothing.

Related. The glob fix in #2544 was correct; this was masking it. sprites-docs has the same one-line bug, fixed in superfly/sprites-docs#274. The checkout's fetch-depth: 2 leaves the changed-files step unable to find the merge base, which is the same class of problem one layer up: https://github.com/superfly/docs-tracking/issues/377

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.
@mintlify

mintlify Bot commented Oct 21, 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 21, 2026, 5:52 PM

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

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.
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.
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.
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.
@kcmartin kcmartin changed the title Debug the Vale CI run Fix the separator so Vale is passed a file list it can read Oct 21, 2026
@kcmartin
kcmartin merged commit 72cf61c into main Oct 21, 2026
2 checks passed
@kcmartin
kcmartin deleted the vale-ci-debug branch October 21, 2026 18:33
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