@@ -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+
873890Check the actual live settings under
874891**Settings → Branches** and **Settings → Tags** on the GitHub UI.
875892
0 commit comments