require_checks waits only on CI that would report !391

merged merged by cmc on 2026-09-13 06:57 UTC · krz/gitbay:fix/checks-gate-no-jobs into main

Discussion

cmc

require_checks refuses a head that carries no statuses. A repository with the setting on and no .gitbay/ci.yml has no mergeable merge request at all, and no remedy but turning the setting off (krz/hypo!1).

The gate now refuses silence only from a head whose CI would have spoken: .gitbay/ci.yml present, parseable, and carrying at least one job that is neither schedule:- nor tags:-only. A config that will not parse counts as running jobs — the push recorded a ci/config failure for it, so that head is not silent.

#172's skipped statuses are unaffected: a path-filtered job still reports, and a head whose ci.yml has push jobs still needs their statuses.

Tests: TestRequireChecks{PassesWithNoCIConfig,PassesWithNoPushJobs,RefusesSilentPushJob} in internal/control, and TestRequireChecksWithoutCIConfigMerges in e2e. The first two fail before the change.

Closes #216