Let a pure-docs PR skip the draft, and stop [skip ci] stranding one #11
Loading…
Reference in a new issue
No description provided.
Delete branch "docs/pure-docs-prs-skip-draft"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Two rules in
VCS.mdcombined into a deadlock, and neither was wrong on its own:[skip ci].Together: a docs-only PR has no run, so it can never be green, so it can never leave draft.
Hit for real on someones.computer#350,
which is a 25-line
docs/database.mdchange that cannot be marked ready under the rules asthey stand.
Untangled from both ends
[skip ci]is for a push with no PR open. On a PR, let CI run. Where the pipelineclassifies the diff and gates its expensive jobs on the verdict — which
someones.computer'sci.ymldoes, via achangesjob every costly step reads — adocs-only run has already collapsed to the Markdown lint. Skipping it saves seconds and buys
a PR nobody can merge, because pending checks are not passing ones.
A pull request whose diff is documentation and nothing else opens ready, not draft. Draft
exists to advertise that something is still unknown: a check that hasn't run, or ran red.
A docs change has nothing unknown about it — the entire gate is runnable locally before you
push, and CI's docs-only path runs that same lint and nothing else. A
WIP:prefix theremeans only "this is finished but the title says otherwise", and on a squash-merge repo it is
one forgotten edit away from becoming the permanent commit subject.
Opening ready costs no extra pipeline:
docs_onlygates the expensive jobs off already,exactly as
draftwould have.Also recorded
A submodule bump is code, however prose-only the change inside it is — the parent sees a
gitlink, not a
*.mdpath, and a pointer can carry anything. So a change to these standardslands as two PRs. This is the first of that pair; the consuming repo's pointer bump is the
second, and it correctly does not qualify for the exemption this PR adds.
On the shared-standard coupling
The docs-only classifier is introduced as this estate's implementation rather than as a
required path, and the rule (
*.md,*.markdown,docs/**, everything else is code) isstated so a repo without the script can still apply it — with
falseas the safe answer foranything uncertain.
That is a deliberate departure from how the rest of
VCS.mdis written: it hardcodescomposer test:coverage,bin/coverage-gate.php,bin/lint-markdown.shand the Symfonyconsole lints as though every consumer has them, which contradicts
README.md's ownRequirements on the consuming project. Filed as #10 rather than fixed here, to keep this PR
to one change.
Verification
markdownlintclean on the changed file, apart from a pre-existingMD040at line 82 (abare fence in the commit-message examples) that is present on
mainand untouched here.Every anchor introduced or renamed was checked to resolve, and no other file in the estate
referenced the old
#skipping-ci-on-docs-only-commitsanchor.This PR is itself pure docs and is therefore not a draft — which is the rule it adds.