mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-03 01:29:33 +00:00
A required status check whose job is skipped by its own if: still materializes a check run with conclusion "skipped", which GitHub branch protection / rulesets treat as SATISFIED (mergeable). The prior design assumed an if:-false job would leave the required check "pending" and block merge without a red X; that pending state does not exist for a job that is part of a triggered workflow. As a result, a successful compile-only fork pull_request build reported build-gate as "skipped" = passed, and PRs #53/#54 became mergeable WITHOUT the secret-bearing test build ever running (#53 was merged this way). Fix: build-gate now runs unconditionally (if: always()) and, for a successful compile-only run (build success AND skip_tests==true), exits 1 instead of skipping, so the required check goes red and the PR stays un-mergeable. Only a genuine full build with tests, or a legitimate trivial-change skip, satisfies the gate. Merge qualification for fork code still comes solely from a maintainer pushing a *-reviewed-for-build tag. compile-gate (advisory) is unchanged and still shows the compile succeeded. Assisted-By: Claude Opus 4.8