chore: harden packaging environment to enforce 4-eyes review on signed releases
- Dominant language
- Rust
- Stars
- 467
- Forks
- 54
- Avg merge
- 4h 25m
- Merged PRs (30d)
- 310
Description
Follow-up to #1 A-section.
The `packaging` GitHub deployment environment currently has:
- `required_reviewers`: `inureyes` (1 user)
- `prevent_self_review`: `false`
- `can_admins_bypass`: `true`
This means the person who triggers a signing or homebrew-bump deployment can also self-approve it — which provides an "abort window" before the deployment proceeds, but is not a true 4-eyes gate. This was an intentional choice while release tooling was still being automated (see the follow-up note in #1 A-section).
Once the release pipeline is fully automated (manual signing/notarization no longer required, manual homebrew bump no longer required), this configuration should be hardened:
## Tasks
- [ ] Decide on the release-manager pool (≥1 additional GitHub user beyond `inureyes`) — discuss in this issue's comments before applying
- [ ] Register the additional reviewer(s) at https://github.com/lablup/mlxcel/settings/environments/15464823920/edit → "Deployment protection rules" → "Required reviewers"
- [ ] Enable **"Prevent self-review"** so the trigger-er cannot self-approve
- [ ] (Optional) Disable `can_admins_bypass` if org admins should not be able to skip the gate
- [ ] Verify via:
```bash
gh api repos/lablup/mlxcel/environments/packaging \
--jq '.protection_rules[] | select(.type == "required_reviewers") | {prevent_self_review, reviewer_count: (.reviewers | length)}'
```
Expected: `prevent_self_review: true`, `reviewer_count >= 2`
## Triggering conditions
Open this issue for action when **all** of the following are true:
- [ ] Release signing and notarization are non-interactive (no manual step inside the workflow)
- [ ] Homebrew formula bump runs end-to-end without manual intervention (verified after the first auto-bump from a real release)
- [ ] There is at least one additional release manager identified and reachable for approvals (otherwise enabling `prevent_self_review` would block legitimate releases)
Until all three are satisfied, keep the current 1-reviewer + self-approve configuration to avoid blocking releases on a missing second reviewer.
## Refs
- Follows up on #1 A-section
- Current env config recorded in #1 A-section closing note
Contributor guide
Assessment
This issue has not been assessed yet.