Skip to content

feat: an external pull request needs two invited reviewers - #355

Merged
REPPL merged 1 commit into
mainfrom
feat/external-review-gate
Aug 19, 2026
Merged

feat: an external pull request needs two invited reviewers#355
REPPL merged 1 commit into
mainfrom
feat/external-review-gate

Conversation

@REPPL

@REPPL REPPL commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

What (iss-281 — the maintainer's hard rule for external contributions)

A new required check, external-review:

  • External author (not an invited collaborator): green only once ≥2 invited collaborators (role triage or above) have approved. Latest review state per reviewer decides — an approval superseded by changes-requested does not count.
  • Invited collaborator author: passes trivially — the rule prices outside submissions, not maintainer flow.
  • Bots: exempt, loudly, same shape as the attribution gate (dependabot cannot recruit two humans per version bump).
  • Fork-proof by construction: pull_request_target with no checkout — the check runs the base repo's own logic and only reads the reviews/roles API, so a fork cannot edit the workflow green (the neutering hazard that makes plain pull_request unusable for a required check). zizmor's dangerous-triggers finding carries an inline ignore with the justification.
  • Re-evaluates on every review submit/dismiss; reports success on merge-queue entries (queue entry already required it).

Sequencing: the committed ruleset mirror already lists the new context; the live ruleset flips after this merges — a required check must exist on main before it is required, or every PR wedges on "Expected". Same bootstrap order as the merge queue.

Issues half of the rule: GitHub-tracker issues have no native review gate; ledger captures land via PRs and inherit this rule — recorded in iss-281.

Verification

Assisted-by: Claude:claude-fable-5

The external-review required check enforces the maintainer's rule
(iss-281): a PR whose author is not an invited collaborator (role
triage or above) goes green only once two invited collaborators have
approved — latest review state per reviewer decides, so a superseded
approval does not count. A collaborator's own PR passes trivially, and
bots keep the attribution gate's loud exemption. pull_request_target
with no checkout, deliberately: the check runs the base repository's
own logic, so a fork cannot edit the workflow green — the neutering
hazard that rules out plain pull_request for a required check. The
ruleset mirror gains the context; the live ruleset flips after this
merges (a required check must exist on main before it is required, or
every PR wedges on a check that never reports).

Assisted-by: Claude:claude-fable-5
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
✅ Deployment successful!
View logs
abcd b376c82 Aug 19 2026, 02:57 PM

@REPPL
REPPL added this pull request to the merge queue Aug 19, 2026
Merged via the queue into main with commit 738fbeb Aug 19, 2026
11 checks passed
@REPPL
REPPL deleted the feat/external-review-gate branch August 19, 2026 17:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant