feat(python): implemented pull request vouching and gated review system
- Introduced a vouching mechanism to manage PR authorization via a tracked user list and discussion-based management workflows. - Added automated PR gatekeeping workflows to close contributions from unvouched users and require specific labels for review. - Refactored PR event handling to support label-based review deferral and enforce authorization checks for labelers. - Added comprehensive test coverage for vouch-gate logic, including label activation and unauthorized access scenarios.
This commit is contained in:
@@ -38,6 +38,18 @@ class Settings(BaseSettings):
|
||||
git_author_email: str = Field(..., alias="ROBOMP_GIT_AUTHOR_EMAIL")
|
||||
repo_allowlist_raw: str = Field("", alias="ROBOMP_REPO_ALLOWLIST")
|
||||
pr_review_enabled: bool = Field(True, alias="ROBOMP_PR_REVIEW_ENABLED")
|
||||
# PR review trigger. "open" (default) reviews incoming PRs on
|
||||
# opened/reopened/ready_for_review. "vouched_label" DEFERS review until the
|
||||
# vouch GitHub Action labels the PR `vouch_review_label`, so robomp reviews
|
||||
# only PRs that survive the vouch gate. `pr_review_enabled` remains the
|
||||
# master switch (False disables review under either trigger).
|
||||
pr_review_trigger: Literal["open", "vouched_label"] = Field("open", alias="ROBOMP_PR_REVIEW_TRIGGER")
|
||||
vouch_review_label: str = Field("vouched", alias="ROBOMP_VOUCH_REVIEW_LABEL")
|
||||
# In vouched_label mode, only `labeled` events from this actor trigger a
|
||||
# review, so a manual label by a triage/maintainer cannot bypass the gate.
|
||||
# Default is the actor for the stock GITHUB_TOKEN; set to your App's bot
|
||||
# login (e.g. "vouch-bot[bot]") if the vouch workflow labels via an App.
|
||||
vouch_review_labeler: str = Field("github-actions[bot]", alias="ROBOMP_VOUCH_REVIEW_LABELER")
|
||||
|
||||
# gh-proxy. Set BOTH to route GitHub through the proxy; leave both empty
|
||||
# to keep PAT-on-orchestrator behavior. Mixing the two (PAT + proxy) is
|
||||
|
||||
Reference in New Issue
Block a user