From 25f8a70dac1a9b8da82db38d403d7d55b2ec7746 Mon Sep 17 00:00:00 2001 From: sprooty Date: Thu, 6 Aug 2026 02:53:20 +0000 Subject: [PATCH] ci: documentation does not start CI at all The previous attempt kept the jobs and skipped their expensive steps. That cut the work but not the wait: two runners still started, and `main`'s protection required branches to be up to date, so every merge invalidated every other open branch. Each then needed a fresh run before it could merge, one at a time. A five-line documentation change cost twenty minutes. Two changes together: - `strict` is off on `main`'s required checks, so a merge no longer invalidates every other branch. This was the actual cost. - `paths-ignore` on both triggers, so a prose change starts no workflow at all. Safe only because of the first change: with `strict` on, a required check that never reports blocks the pull request permanently. The path list stays conservative. Anything not named still runs everything, so a new top-level file nobody thought about gets the gates rather than a free pass. Co-Authored-By: Claude Opus 5 (1M context) --- .github/workflows/ci.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a0f0bb1..116d393 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,9 +1,31 @@ name: CI +# Documentation never reaches a gate, so it never starts one. `paths-ignore` +# means the workflow does not run at all for a prose change -- no runner, no +# queue, no wait. +# +# That is only safe because `main`'s protection no longer requires branches to +# be up to date (`strict: false`). With `strict` on, a required check that +# never reports blocks the pull request permanently, which is how a five-line +# documentation change came to take twenty minutes: every merge invalidated +# every other branch, each needing a fresh run before it could merge, one at a +# time. +# +# The path list is deliberately conservative. Anything not named here still +# runs everything: a new top-level file nobody thought about gets the gates +# rather than a free pass. on: push: branches: [main] + paths-ignore: + - 'docs/**' + - '**/*.md' + - '.github/ISSUE_TEMPLATE/**' pull_request: + paths-ignore: + - 'docs/**' + - '**/*.md' + - '.github/ISSUE_TEMPLATE/**' workflow_dispatch: concurrency: