Skip to content

Commit 4d105ae

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 eb0136e commit 4d105ae

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
@@ -46,15 +46,24 @@ The subject is **lowercase** after the colon. Title Case prose (`Add the thing`)
4646

4747
### Solo-owner merge policy
4848

49-
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**:
49+
> **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.
50+
51+
This repo currently runs with a single code owner (`* @constk` in `CODEOWNERS`). While in this state, the intended merge command is:
5052

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

55-
…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.
57+
…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).
58+
59+
**When the exemption ends.** As soon as a second collaborator with merge rights is onboarded:
60+
61+
1. Drop the `--admin` flag from the merge command and adopt standard PR review.
62+
2. Remove this entire subsection.
63+
3. Update `CODEOWNERS` to add the new collaborator.
64+
4. Optionally flip `enforce_admins` to `true` in the branch-protection JSON for both branches.
5665

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

5968
## Line endings (Windows clones)
6069

0 commit comments

Comments
 (0)