Run the Markdown Linter on markdownlint-cli2 instead of Super Linter - #10640
Open
Jakub Jareš (nohwnd) wants to merge 1 commit into
Open
Run the Markdown Linter on markdownlint-cli2 instead of Super Linter#10640Jakub Jareš (nohwnd) wants to merge 1 commit into
Jakub Jareš (nohwnd) wants to merge 1 commit into
Conversation
The Markdown Linter workflow has never run. All 63 runs since 2026-05-22 ended in
startup_failure, because it is the only workflow in the repository that references an
action outside actions/* and github/*, and this repository restricts Actions to a
selected list:
patterns_allowed: dotnet/arcade/.github/workflows/*,
peter-evans/create-pull-request@*,
DavidAnson/markdownlint-cli2-action@*
verified_allowed: false
super-linter/super-linter is not on that list, so the run was rejected before any job
started. This is the same failure that took out the markdownlint gate in #10636.
Swap Super Linter for markdownlint-cli2, pinned to 0.23.1, the version bundled by
DavidAnson/markdownlint-cli2-action@v24.1.0 that markdownlint.yml already runs on every
pull request. The scheduled report and the pull request gate now apply the same rules
from .markdownlint-cli2.jsonc, including its ignores, so the report cannot flag anything
the gate would let through.
Two more bugs fixed along the way:
- The lint step no longer fails the job when it finds violations. Super Linter failed the
job, which skipped the agent that was supposed to write the report, so the workflow
could not have reported violations even if it had started.
- Super Linter ran with VALIDATE_ALL_CODEBASE=false, which lints only files that differ
from the default branch. On a scheduled run on main that is nothing. markdownlint-cli2
scans all 86 tracked Markdown files.
Also drop the now-unused packages: read and statuses: write permissions, and the dead
check-results step whose output no job consumed.
The workflow keeps no source: field. It came from
githubnext/agentics/workflows/markdown-linter.md@main, and relinking it would let
gh aw update restore the blocked action and break the workflow again.
Compiled with gh aw v0.86.0 using --action-mode release --action-tag 435186c5, matching
the pins in the other lock files; .github/scripts/check_action_pins.py passes.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Replaces the blocked Super Linter job with markdownlint-cli2 for scheduled Markdown reporting.
Changes:
- Aligns scheduled linting with the pull-request Markdown gate.
- Preserves lint logs while reducing permissions.
- Regenerates the compiled agentic workflow.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
.github/workflows/markdown-linter.md |
Defines the new markdownlint-cli2 workflow. |
.github/workflows/markdown-linter.lock.yml |
Compiles the updated workflow definition. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| name: markdownlint-log | ||
| path: /tmp/gh-aw/ | ||
| description: Runs Markdown quality checks using Super Linter and creates issues for violations | ||
| description: Runs Markdown quality checks using markdownlint-cli2 and creates issues for violations |
Comment on lines
+50
to
+54
| set +e | ||
| npx --yes markdownlint-cli2@0.23.1 "**/*.md" > markdownlint.log 2>&1 | ||
| status=$? | ||
| cat markdownlint.log | ||
| echo "markdownlint-cli2 exit code: $status (0 = clean, 1 = violations found)" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The
Markdown Linteragentic workflow has never run. Every one of its 63 runs since 2026-05-22 ended instartup_failure, so it has produced exactly zero reports since it was added.It is the only workflow in the repository that references an action outside
actions/*andgithub/*, and this repository restricts Actions to a selected list:super-linter/super-linteris not on that list, so the run was rejected before any job started. That is the same failure that took out the markdownlint gate, fixed in #10636 by allow-listing the action. There is no annotation and no job log on a startup failure, which is why this sat unnoticed for three months.What changed
Super Linter is replaced by
markdownlint-cli2, pinned to0.23.1— the version bundled byDavidAnson/markdownlint-cli2-action@v24.1.0, whichmarkdownlint.ymlalready runs on every pull request. The scheduled report and the pull request gate now apply the same rules from.markdownlint-cli2.jsonc, including itsignores, so the report cannot flag anything the gate would let through. Bump the two together.Two more bugs turned up while rewriting the job:
agentjob that writes the report, so even if the workflow had started, it could not have reported a violation — only a clean run would have produced output.VALIDATE_ALL_CODEBASE=false, which lints only files that differ from the default branch. On a scheduled run onmainthat is nothing.markdownlint-cli2scans all 86 tracked Markdown files.Also dropped the now-unused
packages: readandstatuses: writepermissions (the job only needscontents: read), and the deadcheck-resultsstep whose output no job consumed.The workflow deliberately keeps no
source:field. It came fromgithubnext/agentics/workflows/markdown-linter.md@main, and relinking it would letgh aw updaterestore the blocked action and break the workflow again. A comment in the frontmatter records that.Security review
Required by the gh-aw safe-update warning on this compile.
super-linter/super-linter@4ce20838b8ab83717e78138c5b3a1407148e0918(v8.7.0). Removal only — it drops a third-party Docker action that the Actions policy already refused to run.actions/checkoutandactions/upload-artifactmove within the file at their existing pins; nouses:line changed SHA.GITHUB_TOKEN, which Super Linter consumed.npx --yes markdownlint-cli2@0.23.1, which fetches that exact pinned version from the npm registry on a standard runner. Nothing I could not fully verify.Verification
python .github/scripts/check_action_pins.pypasses: 2273 references across 49 files.gh aw v0.86.0(matchingcompiler_version) using--action-mode release --action-tag 435186c5. A plaingh aw compilerewrote thegh-awsetup pins to a different repository and edited.gitattributesand.github/aw/actions-lock.json— Localgh aw compilesilently corrupts two pinned actions in generated.lock.ymlfiles #10258 again. Those flags reproduce what CI emits, and the lock diff now contains no unintendeduses:change.nooprather than filing an issue.Worth considering separately: with
markdownlint.ymlgating every pull request,mainshould always be clean, so this scheduled report will usually have nothing to say. If that turns out to be true over a few weeks, deleting it is reasonable. I did not want to make that call inside a fix.🤖