CODEOWNERS gating is implied by the file, not chosen #142

closed cmc opened this on 2026-09-04 14:06 UTC · milestone v1.11.0

Discussion

cmc 2026-09-04 14:06 UTC

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