Context
Pre-merge review of #17 (signed-tag verification) surfaced that .github/allowed_signers and .github/workflows/release.yml are repo-tracked and editable by anyone with write access. The default-branch ruleset enforces required status checks only — no required reviewers, no CODEOWNERS enforcement — because `require_code_owner_review` would deadlock a solo-owner repo (documented in `modules/ruleset-default-branch/main.tf`).
Within the solo-owner threat model this is accepted: the owner could add a malicious signing key in a PR and self-merge, but they could equally push directly to main via break-glass. The control set is "trust the owner."
If/when a second maintainer onboards, this control gap widens — a single rogue/compromised contributor could add a key to `allowed_signers` in a PR and self-merge to grant release-signing authority.
Proposed change at that future point
- Flip `require_code_owner_review = true` on the default-branch ruleset (currently false for the solo-owner deadlock reason in modules/ruleset-default-branch/main.tf).
- Tighten CODEOWNERS so `.github/allowed_signers` and `.github/workflows/release.yml` (and other release-trust paths) require explicit owner review.
- Consider scoping a tag-protection ruleset rule that requires modifications to those paths route via a separate `security-paths` branch protection.
Trigger
Onboarding of a second maintainer to the org. Until then, this stays parked.
References
Context
Pre-merge review of #17 (signed-tag verification) surfaced that
.github/allowed_signersand.github/workflows/release.ymlare repo-tracked and editable by anyone with write access. The default-branch ruleset enforces required status checks only — no required reviewers, no CODEOWNERS enforcement — because `require_code_owner_review` would deadlock a solo-owner repo (documented in `modules/ruleset-default-branch/main.tf`).Within the solo-owner threat model this is accepted: the owner could add a malicious signing key in a PR and self-merge, but they could equally push directly to main via break-glass. The control set is "trust the owner."
If/when a second maintainer onboards, this control gap widens — a single rogue/compromised contributor could add a key to `allowed_signers` in a PR and self-merge to grant release-signing authority.
Proposed change at that future point
Trigger
Onboarding of a second maintainer to the org. Until then, this stays parked.
References