- gate job needs [fast-checks, changes, api, harness] with if: always() - gate fails (exit 1) when fast-checks != success - gate accepts success OR skipped for api and harness, fails on any other result - uses individual needs.X.result checks (not wildcard) — Gitea 1.26.2 bug #31007 - once merged, emits CI / gate commit-status required by Plan 03 branch-protection update