Skip to content

Commit 570aac8

Browse files
committed
docs: name the required check version-forward, document planned ruleset migration (#308)
1 parent 5a12884 commit 570aac8

1 file changed

Lines changed: 22 additions & 5 deletions

File tree

docs/GITHUB_OPERATIONS.md

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -861,15 +861,32 @@ settings (not in this repo as config-as-code). The expected invariants:
861861

862862
- All PRs require at least one approval.
863863
- `ci` must pass before merge.
864-
- `verify-release-pr-version` should be a required status check. Its job always
865-
runs and reports `success` on non-release PRs (only `release-please--branches--*`
866-
branches are actually compared), so requiring it never blocks an ordinary PR —
867-
it gates only a release PR that regressed the version (#308). Until it is marked
868-
required it is advisory: visible on the PR but non-blocking.
864+
- `version-forward` should be a required status check. That is the *job* name in
865+
[`verify-release-pr-version.yml`](../.github/workflows/verify-release-pr-version.yml),
866+
and GitHub's required-check picker lists checks by their check-run (job) name —
867+
so searching for the workflow **file** name (`verify-release-pr-version`) finds
868+
nothing; search for `version-forward`. The job always runs and reports `success`
869+
on non-release PRs (only `release-please--branches--*` branches are actually
870+
compared), so requiring it never blocks an ordinary PR — it gates only a release
871+
PR that regressed the version (#308). Until it is marked required it is advisory:
872+
visible on the PR but non-blocking.
869873
- Force-push and deletion are blocked.
870874
- Tags matching `v*.*.*` can only be pushed by maintainers (enforced via
871875
tag protection rules, separate from branch protection).
872876

877+
**Planned — migrate `main` to a ruleset after 1.0.0.** These invariants are
878+
enforced today via GitHub's *classic* branch protection.
879+
[Rulesets](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets)
880+
are the successor: layerable (multiple can apply to one branch and the enforced
881+
requirements are their union), readable by anyone with repo access (classic
882+
rules are admin-only), and able to govern branches **and** tags — the `v*.*.*`
883+
rule above — in one place. We intend to convert `main` to a ruleset once the
884+
1.0.0 release has shipped, not during the release-candidate cycle, so
885+
branch-gating mechanics don't change mid-release. Classic rules and rulesets
886+
coexist and the most restrictive combination wins, so the switch can be staged
887+
and verified without a protection gap. After converting, update this section to
888+
point at **Settings → Rules → Rulesets** instead of **Settings → Branches**.
889+
873890
Check the actual live settings under
874891
**Settings → Branches** and **Settings → Tags** on the GitHub UI.
875892

0 commit comments

Comments
 (0)