Branch protection on main blocks all merges despite CI passing #29
Reference in New Issue
Block a user
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?
Why: Branch protection on
mainrequires a status check context that the Woodpecker CI pipeline never posts, silently blocking all merges regardless of real CI outcome.Evidence:
GET /api/v1/repos/kotkan/claude-plugin-inference-arbitrage/branch_protectionsshows themainrule requires contextcontinuous-integration/woodpeckerci/woodpecker/push/test,ci/woodpecker/pr/test), verified on PRs #27 and #28 which both showed CI success but couldn't mergepull_request_write merge,tea pulls merge, and likely the web UI merge button all fail with generic errors that don't expose the root causeReproduction:
Will show real CI passed, but the PR cannot be merged via API, CLI, or UI.
Fix:
Update
branch_protections/mainto require the actual context names Woodpecker posts. Verify the exact list via.woodpecker.ymlor a recent commit's status list, thenPATCH /api/v1/repos/kotkan/claude-plugin-inference-arbitrage/branch_protections/mainwith matchingstatus_check_contexts.Impact: PRs #27, #28 (and any future PRs) are unmergeable despite passing CI.
Fixed directly via the Gitea API (no code change needed — this was a repo-config issue).
Evidence of exact context name:
GET /api/v1/repos/kotkan/claude-plugin-inference-arbitrage/commits/5f5462571cb347a32bf480068b8912e28518762f/statusesshows real Woodpecker statuses posted asci/woodpecker/pr/testandci/woodpecker/push/test— confirming the branch protection's required context (continuous-integration/woodpecker) never matched either.Fix applied:
(Used the
prcontext specifically, since that's the one Gitea evaluates for merge-gating on a pull request, not thepushcontext which runs on direct pushes to main.)Verified: re-read
branch_protections/mainback —status_check_contextsnow correctly shows["ci/woodpecker/pr/test"]. Closing.