Skip to content

ci: add docs-only status-check shim so docs PRs aren't blocked#1455

Merged
obiot merged 1 commit into
masterfrom
ci/docs-only-shim
May 19, 2026
Merged

ci: add docs-only status-check shim so docs PRs aren't blocked#1455
obiot merged 1 commit into
masterfrom
ci/docs-only-shim

Conversation

@obiot
Copy link
Copy Markdown
Member

@obiot obiot commented May 19, 2026

Summary

  • New workflow .github/workflows/main-docs.yml: mirror image of main.yml — triggers only on docs/media paths and emits lint + test jobs that succeed immediately
  • Together the two workflows form a partition: source-only PRs run real CI, docs-only PRs get instant-pass shim, mixed PRs run real CI (real code → real checks)
  • Tidies the now-stale "needs admin merge or no-op nudge" comment at the top of main.yml

Why

The master ruleset requires lint and test checks. main.yml's paths-ignore means docs-only PRs never produce those checks, so they sit in BLOCKED state with no path forward short of admin bypass (which the ruleset has none configured) or a no-op non-md commit. PR #1453 (single-line CONTRIBUTING.md change) is the current example. The shim fixes this permanently.

How it works

  • Job names (lint, test) match the contexts required by the master ruleset → GitHub treats the shim's success runs as satisfying the gate.
  • paths (the inverse of paths-ignore) means exactly one of the two workflows runs per event — no double CI on real changes.
  • Trigger names (name: Build & Test) and concurrency group are identical, so the existing required-checks config keeps working.

Test plan

  • After merge: PR docs: align CONTRIBUTING Node requirement with package engine #1453 (docs-only) should automatically get lint=success and test=success from the shim, unblocking merge
  • Confirm a regular source-change PR still triggers only main.yml and not the shim (paths filters are mutually exclusive)
  • If you ever rename lint/test in main.yml, rename them in main-docs.yml too — the names must match the required contexts in the ruleset

🤖 Generated with Claude Code

`main.yml` skips docs/media paths via `paths-ignore`, which leaves the
required `lint`/`test` checks unsatisfiable on docs-only PRs and BLOCKED
by branch protection. `main-docs.yml` is the mirror image: triggers only
on those paths, emits matching job names (`lint`, `test`) that succeed
immediately. Together the two workflows form a partition — exactly one
runs per push/PR.

Also tidies the now-stale header comment on `main.yml`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 19, 2026 12:54
@obiot obiot merged commit bf490ea into master May 19, 2026
8 checks passed
@obiot obiot deleted the ci/docs-only-shim branch May 19, 2026 12:57
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR introduces a GitHub Actions “docs-only” CI shim so documentation/media-only changes still emit the required lint and test check contexts needed by the master ruleset, preventing such PRs from being permanently blocked.

Changes:

  • Added a new workflow (main-docs.yml) that runs only on selected docs/media paths and immediately succeeds lint/test.
  • Updated main.yml header comment to point to the shim workflow as the mechanism that satisfies required checks for docs-only changes.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
.github/workflows/main.yml Updates the top-of-file comment to reference the new docs-only shim workflow.
.github/workflows/main-docs.yml Adds the docs-only “status-check shim” workflow emitting immediate-success lint and test jobs.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +11 to +27
on:
push:
branches: [master]
paths:
- '*.md'
- 'media/**'
- 'packages/melonjs/DOC_README.md'
pull_request:
types: [opened, synchronize]
paths:
- '*.md'
- 'media/**'
- 'packages/melonjs/DOC_README.md'

concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
Comment on lines +3 to +6
# Required `lint`/`test` checks are satisfied for those PRs by the shim in
# `main-docs.yml`, which mirrors this file's path filters and emits matching
# job names that succeed immediately. Together the two form a partition —
# exactly one runs per push/PR.
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.

2 participants