internal/control/mr.go:1062 reads CODEOWNERS from the target branch and gates on it whenever the file exists and is non-empty. #99 made that unconditional on purpose, but the presence of a file is not a decision an admin took: a repository that adds CODEOWNERS to record who to ask about what silently acquires a merge gate, and there is no way to keep the file without the gate.
Every other merge requirement is a setting — require_approvals, require_resolved, require_checks, require_signed_commits.
Remedy: require_codeowners in RepoSettings, repo settings require-codeowners <owner/name> on|off, and a checkbox on the repository settings page. Off by default; still independent of require_approvals (#99).
closed by commit 1f8076c655 by cmc: merge gates: CODEOWNERS is a setting, not a file that happens to exist
2026-09-04 14:25 UTC