You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ContextualWisdomLab/inkspan#60 merged at 2026-08-05T03:30:37Z from exact head b02f1662c7118faf1aaf44b8ea1efb376cfc3a85 into merge commit 45d9bf315a626c686658b3148d3775405c878617 while its PR body still marked Exact-current-head independent approval and protected merge incomplete.
The retrievable review history contains only two dismissed OpenCode CHANGES_REQUESTED reviews, both attached to older head ab32926d84030f0e23cda4a2ca1fd87bf2035761. No approving review attached to the merged head is visible through the PR review API. Direct CI and security success does not substitute for independent approval.
This issue does not assert which actor performed the merge. The available connector does not expose the organization audit-log event, ruleset insight, bypass actor, or merged_by identity. An organization administrator must inspect those records.
Central scheduler defect
scripts/ci/pr_review_merge_scheduler.py currently treats an exact-head OpenCode approval as sufficient to enter direct merge or auto-merge paths. The direct path checks current-head OpenCode evidence, unresolved threads, failed checks, Strix evidence, and mergeability, then invokes gh pr merge --match-head-commit.
It does not require either of these before the mutation:
reviewDecision == APPROVED; or
an exact-head independent Noema/non-OpenCode approving review.
GitHub rulesets can designate users, roles, teams, or GitHub Apps as bypass actors. A scheduler credential that is accidentally or intentionally on a bypass list can therefore convert this omitted application-level gate into a real protected-merge bypass. GitHub documents both required pull-request review rules and ruleset bypass actors, including pull-request-only bypass mode.
Immediate administrative action
Inspect the organization audit log and Rule Insights for the merge of inkspan#60 at 2026-08-05T03:30:37Z.
Identify the merge actor and whether a repository role, organization administrator, user, team, GitHub App, or token source exercised ruleset or branch-protection bypass.
Inspect all active organization and repository rulesets targeting inkspan:main, including required approval count, latest-push approval, required OpenCode/Noema workflows, conversation resolution, and bypass actors/modes.
Remove merge-scheduler credentials and reviewer Apps from bypass lists unless a separately approved break-glass design requires them. A reviewer identity must not also possess an implicit path around its own gate.
require reviewDecision == APPROVED before direct merge and before enabling native auto-merge;
require an exact-current-head approving review from the configured independent reviewer identity, separate from OpenCode and separate from the last pusher;
reject stale, dismissed, commented, fallback-only, body/head-mismatched, or unknown-author reviews;
require the independent review after the current head commit and retain the current unresolved-thread, required-check, Strix, security, freshness, and --match-head-commit guards;
make absent/unknown review metadata a WAIT, never merge evidence;
refuse direct mode when the mutation credential is a configured ruleset bypass actor, or eliminate direct mode in favor of GitHub-native auto-merge after all application-level gates pass;
add an explicit machine-readable reason when reviewDecision or independent approval is missing;
add regression fixtures reproducing an OpenCode-approved, CLEAN, REVIEW_REQUIRED PR and prove merge_pr()/enable_auto_merge() are never called;
add a fixture with stale Noema approval and a current OpenCode approval and prove it remains blocked;
Incident evidence
ContextualWisdomLab/inkspan#60merged at2026-08-05T03:30:37Zfrom exact headb02f1662c7118faf1aaf44b8ea1efb376cfc3a85into merge commit45d9bf315a626c686658b3148d3775405c878617while its PR body still marked Exact-current-head independent approval and protected merge incomplete.The retrievable review history contains only two dismissed OpenCode
CHANGES_REQUESTEDreviews, both attached to older headab32926d84030f0e23cda4a2ca1fd87bf2035761. No approving review attached to the merged head is visible through the PR review API. Direct CI and security success does not substitute for independent approval.This issue does not assert which actor performed the merge. The available connector does not expose the organization audit-log event, ruleset insight, bypass actor, or
merged_byidentity. An organization administrator must inspect those records.Central scheduler defect
scripts/ci/pr_review_merge_scheduler.pycurrently treats an exact-head OpenCode approval as sufficient to enter direct merge or auto-merge paths. The direct path checks current-head OpenCode evidence, unresolved threads, failed checks, Strix evidence, and mergeability, then invokesgh pr merge --match-head-commit.It does not require either of these before the mutation:
reviewDecision == APPROVED; orGitHub rulesets can designate users, roles, teams, or GitHub Apps as bypass actors. A scheduler credential that is accidentally or intentionally on a bypass list can therefore convert this omitted application-level gate into a real protected-merge bypass. GitHub documents both required pull-request review rules and ruleset bypass actors, including pull-request-only bypass mode.
Immediate administrative action
inkspan#60at2026-08-05T03:30:37Z.inkspan:main, including required approval count, latest-push approval, required OpenCode/Noema workflows, conversation resolution, and bypass actors/modes.Required code repair
Implement test-first, fail-closed merge eligibility:
reviewDecision == APPROVEDbefore direct merge and before enabling native auto-merge;--match-head-commitguards;WAIT, never merge evidence;reviewDecisionor independent approval is missing;CLEAN,REVIEW_REQUIREDPR and provemerge_pr()/enable_auto_merge()are never called;reviewDecision=APPROVEDfixture;docs/org-required-workflow-rollout.mdandCHANGELOG.mdwith the incident boundary and rollback.Acceptance
Official GitHub documentation
No formal GitHub conformity claim is made.