Skip to content

Commit bf19135

Browse files
committed
docs: mark admin-merge policy as transitional solo-owner state (#93)
The existing "Solo-owner merge policy" section accurately documented how merges work today, but read as standing policy. From an external contributor's perspective it could look like the maintainer routinely bypasses their own gates. Adds a leading "Transitional" blockquote framing this as a single-owner workaround, not standing policy, and replaces the closing sentence with a numbered exit checklist (drop --admin, remove the subsection, update CODEOWNERS, optionally flip enforce_admins to true). All four changes land together when a second collaborator is onboarded. Mechanics of the merge command itself are unchanged. Closes #93
1 parent ea6b8b1 commit bf19135

1 file changed

Lines changed: 12 additions & 3 deletions

File tree

CONTRIBUTING.md

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,24 @@ The subject is **lowercase** after the colon. Title Case prose (`Add the thing`)
4545

4646
### Solo-owner merge policy
4747

48-
This repo runs with a single code owner (`* @constk` in `CODEOWNERS`). GitHub forbids a PR author from approving their own PR, so the standard "1 code-owner review" gate cannot be satisfied without an admin override. While in this state, the **intended workflow is**:
48+
> **Transitional — only while this repo has a single code owner.** Standard practice is a code-owner review on every PR. The flow below exists because GitHub forbids self-approval, so a single-owner repo cannot satisfy the "1 code-owner review" gate any other way. The exemption is **removed** the moment a second collaborator with merge rights joins.
49+
50+
This repo currently runs with a single code owner (`* @constk` in `CODEOWNERS`). While in this state, the intended merge command is:
4951

5052
```sh
5153
gh pr merge <N> --admin --squash --delete-branch
5254
```
5355

54-
…for `feat:` / `fix:` / `chore:` PRs, and `--admin --merge` (preserves history) for `release:` PRs. The `enforce_admins: false` line in `.github/branch-protection/{develop,main}.json` is the documented escape hatch — admin merge here is the policy, not a deviation from it.
56+
…for `feat:` / `fix:` / `chore:` PRs, and `--admin --merge` (preserves history) for `release:` PRs. The `enforce_admins: false` line in `.github/branch-protection/{develop,main}.json` is the documented escape hatch — admin merge here is the documented single-owner workaround, not bypass of the gates (every required status check still has to pass).
57+
58+
**When the exemption ends.** As soon as a second collaborator with merge rights is onboarded:
59+
60+
1. Drop the `--admin` flag from the merge command and adopt standard PR review.
61+
2. Remove this entire subsection.
62+
3. Update `CODEOWNERS` to add the new collaborator.
63+
4. Optionally flip `enforce_admins` to `true` in the branch-protection JSON for both branches.
5564

56-
When a second collaborator joins, drop the `--admin` flag and adopt standard PR review. Update this section + `CODEOWNERS` in the same PR.
65+
All four changes land in a single PR.
5766

5867
## Local pre-push gate
5968

0 commit comments

Comments
 (0)