main protected; decision recorded #11
Labels
No labels
needs-info
needs-triage
ready-for-agent
ready-for-human
wontfix
needs-info
needs-triage
ready-for-agent
ready-for-human
review/merge-ready
review/needs-fix
review/needs-human
review/needs-review
wayfinder:grilling
wayfinder:map
wayfinder:prototype
wayfinder:research
wayfinder:task
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
olympus/infra-forge#11
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Part of #7
What to build
Make "nothing goes directly to main" a fact rather than a sentence. Protect main at the forge so a direct push is rejected for everyone, admins included, while pull-request merges still land — and record the decision, because a single-operator repo that blocks its own operator is surprising without the reasoning.
Acceptance criteria
Blocked by
pit referenced this issue2026-10-06 12:17:55 +00:00
Implemented on
hermes/11-protect-main, PR #20: pit/infra-forge#20Documentation-scoped: an ADR 0002 (what was decided / why / consequences / update when), a row in
docs/adr/index.md, and the ADR added to the publish manifestdocs/wiki-pages.yml. No tofu or role change.The live step, read back
Protection is applied to the live repo through the API (manual, at merge time):
Read back exactly:
Direct push observed rejected (for the admin)
Recorded for the acceptance criterion "A direct push to main is observed rejected" — the observation is live, so it is written down here rather than only asserted in the ADR.
PR merge with zero approvals
The rule sets
required_approvals: 0, so the sole Operator is not blocked from merging. Merging PR #20 is what exercises that criterion.Follow-up
Provisioning the protection from the
forgejorole is left as a separate issue, as the ticket asks.