Repository navigation
[PLA-2303] Report the human-review-policy status on PRs - #180
devtools-agent[bot] wants to merge 2 commits into
Conversation
Adds the two caller workflows for rollbar/human-review-policy: a no-op trigger on PR and review events, and a workflow_run workflow (always run from main) that posts the human-review-policy commit status: 1 human approval besides the author on a human-authored PR, 2 on a bot-authored one. PRs merged without meeting it are labelled needs-post-merge-review. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Trigger on merge_group so a merge queue isn't left waiting for the required status, and write the workflow name unquoted so Prettier accepts it whatever the repo's quote style. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AI Agent Review LGTM (openai, openai-astra)LGTM. No blocking findings were found. No findings. I read both new workflows in full, along with the repo's existing workflows ( What I checked:
Not verified (code not in this checkout):
Notes:
I didn't run anything, and the diff doesn't show that anything was run. |
|
Closing without merging. The Caliper will post the status from its GitHub App, so this repo doesn't need any workflow files. It starts as an optional check. Tracking: PLA-2303. |
Linear: PLA-2303
What changed
Adds the two caller workflows for the shared
human-review-policycheck from rollbar/human-review-policy. That repo is public so SDK repos can use it; the private repos use the same code through rollbar/github-workflows#130..github/workflows/human-review-policy-trigger.yaml: a no-op that runs on PR events (opened, reopened, synchronize, ready_for_review, edited, closed) and review events (submitted, edited, dismissed)..github/workflows/human-review-policy.yaml: runs onworkflow_runof the trigger and calls the reusable workflow, which posts ahuman-review-policycommit status on the PR's head commit.The status passes with 1 human approval besides the author on a human-authored PR and 2 distinct human approvals on a bot-authored one (e.g.
devtools-agent[bot]). That way every production PR has two distinct humans on it. Approvals from bots androllbar-circleci-machinedon't count. Pushing commits to a PR doesn't stop someone from approving it.Post-merge tracking: if a PR is merged without meeting the policy, e.g. through an admin break-glass bypass, it gets the
needs-post-merge-reviewlabel and a comment saying how many approvals it still needs. Reviewers can still approve a merged PR. Once the policy is met, the label is removed and a closing comment is posted. To list what's still owed:is:pr is:merged label:needs-post-merge-review org:rollbar.Why two files
pull_requestworkflows run the YAML from the PR's own branch, so a PR could rewrite the check that judges it.workflow_runworkflows always run the copy onmain. If a PR breaks the trigger, the status is never updated and the PR stays blocked.Rollout order
Human review policyruns here fail with "workflow not found". That's harmless, but noisy.human-review-policy.yamlis onmain, becauseworkflow_runonly fires for workflows that are on the default branch.ruleset.json:gh api -X POST repos/rollbar/rollbar-react/rulesets --input ruleset.json. Org and repo admins can bypass it through a PR for incidents (break glass); post-merge review is required in those cases.Not part of this PR: the ruleset itself (step 3).
Pull requests from forks
These work. The trigger runs on the fork PR, and the evaluation runs in this repo with this repo's token, finding the PR by its head branch. If first-time contributors need approval before their workflows run, the status appears once a maintainer approves the trigger run.
Merge queues
The trigger also runs on
merge_group, so in repos with a merge queue the status is written on each merge group's commit as well, and the queue isn't left waiting for it.Validation
🤖 Generated with Claude Code