Skip to content

chore(security): require one approval before merging - #13

Merged
sjungwon03 merged 1 commit into
devfrom
chore/require-pr-approval
Aug 18, 2026
Merged

sjungwon03 merged 1 commit into
devfrom
chore/require-pr-approval

Conversation

@sjungwon03

Copy link
Copy Markdown
Member

Summary

Pull requests were merging without review. The dev and main-release rulesets had
required_approving_review_count: 0, so the pull-request rule enforced "must go through a PR" but
not "must be reviewed".

That zero was a deliberate bootstrap choice: with a single account, requiring an approval makes
every pull request unmergeable, because GitHub does not let you approve your own. There are now two
accounts on the repository (sjungwon03, sjungwon03-ai), so the gate is enforceable.

Change

Setting Was Now
required_approving_review_count 0 1
dismiss_stale_reviews_on_push false true
require_last_push_approval false true

The last two mean an approval does not carry over to commits pushed after it — what was reviewed is
what merges.

The live rulesets are already updated (they enforce immediately regardless of this file). This
PR brings the checked-in definitions under .github/rulesets/ back in sync and updates the README.

This PR is its own proof

It cannot be merged without an approval from an account other than its author. That is the gate
working.

Checklist

  • This pull request targets dev
  • Conventional Commits
  • All commits signed off with git commit -s (DCO)
  • Updated documentation where behavior changed
  • Everything in this pull request is written in English

Notes for reviewers

Earlier merges (#4, #6, #7, #8, #11) went in with zero approvals under the old setting. Nothing to
undo there, but that is why they merged without review.

Pull requests merged without review because required_approving_review_count
was 0. That was a deliberate bootstrap choice — with a single account, requiring
an approval makes every pull request unmergeable, since GitHub does not let you
approve your own. There are now two accounts on the repository, so the gate is
enforceable and is turned on.

- required_approving_review_count: 0 -> 1 on dev and main-release
- dismiss_stale_reviews_on_push and require_last_push_approval enabled, so an
  approval does not carry over to commits pushed after it

The live rulesets were updated first; this brings the checked-in definitions
back in sync and documents the change.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: sjungwon03 <sjungwon03@gmail.com>
@github-actions github-actions Bot added the chore Tooling, build, or maintenance label Aug 18, 2026
@github-actions github-actions Bot added area:ci CI, build, release automation area:docs AGENTS.md, .agents/, README and friends labels Aug 18, 2026

@sjungwon03-ai sjungwon03-ai left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct follow-up to the bootstrap note in #2: with two accounts on the repo the approval gate is now enforceable. Verified against the live rulesets — both dev (20967376) and main-release (20967377) already report approvals=1, dismiss_stale=true, last_push=true, so the checked-in JSON now matches reality exactly. The rest of the diff is just GitHub's pretty-printed JSON reformat with identical values. README updated to match. This PR requiring a non-author approval is itself the gate working. LGTM.

Comment thread .github/rulesets/dev.json Resolved
Comment thread .github/rulesets/README.md Resolved
@sjungwon03
sjungwon03 merged commit 2209811 into dev Aug 18, 2026
6 checks passed
@sjungwon03
sjungwon03 deleted the chore/require-pr-approval branch August 18, 2026 06:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:ci CI, build, release automation area:docs AGENTS.md, .agents/, README and friends chore Tooling, build, or maintenance

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants