Repository navigation
Decide: .github main branch protection allows admin-merge bypass of Strix/scheduler gate (enforce_admins: false) #1737
Description
Summary
.github's own main branch protection currently has enforce_admins: false, and strix is not in the required-status-check context list (verified live just now):
$ gh api repos/ContextualWisdomLab/.github/branches/main/protection --jq '{enforce_admins: .enforce_admins.enabled, required_checks: .required_status_checks.contexts}'
{
"enforce_admins": false,
"required_checks": ["close-empty","Detect CodeQL languages","CodeQL compatibility analysis (actions)","CodeQL compatibility analysis (python)","scan-pr-queue","dependency-review","osv-scan","osv-scan / osv-scan","trivy-fs","scorecard","noema-review","required-workflow-bootstrap","coverage-evidence","opencode-review"]
}
This means:
- An admin-credentialed merge (
gh pr merge --admin, or any caller withadmin: trueon the repo) can land a PR on.github's ownmainwithout Strix's result ever being platform-required, and enforce_admins: falsemeans even a scheduler bug or a bypassed scheduler has no platform backstop — an admin merge goes through regardless of check state.
Directly observed evidence this is not theoretical: PR #1658 merged at a head SHA whose only recorded opencode-review/strix check-runs at or before merged_at were cancelled (no SUCCESS conclusion anywhere in that head's history), and the surrounding pr-review-merge-scheduler.yml runs were themselves cancelled/skipped in that window — consistent with an admin-credentialed merge bypassing the scheduler's own gate via enforce_admins: false. Full writeup: docs/doctoring/contextual-orchestrator-gateway-enforcement-audit-20260902.md, "Item 2" section.
Why this needs an explicit owner decision, not a unilateral agent fix
This is a branch-protection (security/system) configuration change on the org's central governance repository, with real operational trade-offs on both sides:
enforce_admins: truewould also block the repo owner's own legitimate emergency admin merges (e.g. the "Chicken-and-egg" bypass-merge cases the standing operating directive explicitly allows).- Adding
strixas a hard-required context on.github's own branch could deadlock the self-modifying-PR casescripts/ci/pr_review_merge_scheduler.py'sstrix_evidence_state()docstring already documents: a PR editingstrix.ymlitself can legitimately fail the base branch's trusted CheckRun evidence against its own change.
Both are real, not hypothetical — which is why no agent session has applied this change unilaterally across at least two independent audits now.
Proposed options (owner to choose, or refine)
- Enable
enforce_admins: true. Closes the bypass path entirely, including for the repo owner. Would need an explicit process for legitimate emergency/chicken-and-egg admin merges (e.g. a documented, logged "temporarily disable, merge, re-enable" runbook) so it doesn't block the org's own standing bypass-merge authorization. - Add
strix(and/oropencode-review) to the required-status-check contexts, paired with the self-modifying-PR deadlock mitigation the scheduler's own docstring anticipates (e.g. a documented exception path for PRs that touchstrix.yml/opencode-review.ymlitself). - Both, sequenced to land the deadlock mitigation first.
- Explicitly accept the current trade-off (fast admin-merge capability over hard enforcement) and document it as a deliberate, recorded exception in
docs/pr-review-and-merge-procedure.md/PR_GOVERNANCE_AUDIT.md— currently neither document mentionsenforce_adminsat all, so today's state reads as an oversight rather than a decision either way.
References
docs/doctoring/contextual-orchestrator-gateway-enforcement-audit-20260902.md— full audit, Item 2- Raised independently by Devin Review on PR docs(orchestrator): confirm orchestrator/free pin, audit gateway enforcement #1661 (comment id 3915359261): "Merge enforcement remains unresolved. Strix remains advisory here, and administrators can bypass configured checks."
Activity
docs(doctoring): track the enforce_admins bypass gap as an owner-deci…
seonghobae commentedon Sep 2, 2026
Update: this is a re-discovered gap, not a first-time find. A peer session's own private memory (written in an earlier, separate conversation, unrelated to this issue) already recorded the identical finding: ".github main branch protection missing strix + enforce_admins off, lets admin merges bypass review; needs owner action, never self-fix." That peer also independently noticed the same
enforce_admins: falsestate while working on an unrelated PR today and, per that same "never self-fix" principle, did not act on it either.That means this gap has now been surfaced independently at least twice by different agent sessions across different work, and left unresolved both times — not because no one noticed, but because every session correctly treats it as an owner-only decision and stops there. Flagging this for prioritization: the options in the issue body above are ready to act on whenever there's owner bandwidth; no further investigation is needed to move forward on any of the four.