diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index a49e71b6..354c19d0 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -564,9 +564,21 @@ jobs: echo "$results" | python3 -c ' import json, sys ns = json.load(sys.stdin) - # Exclude null (Phase 3 suppressed / in-flight) from the bad list. + # TEMPORARY (interim per #664, 2026-05-12, Release-Manager-approved): demote + # `platform-build` back to Phase-3 treatment in this check. It has a pre-existing + # `internal/handlers` test regression (sqlmock/symlink/MCP fixes are on `staging` + # at af95561f / #634, not yet ported to `main` because main↔staging diverged on + # internal/handlers/ ~1841 ins/745 del — a clean cherry-pick conflicts; needs a + # fresh re-apply against main). Gitea ignores job-level `continue-on-error: true` + # (quirk #10), so `platform-build`'s result is `failure` not `null` — hence it + # would otherwise hard-fail this sentinel. Exempting it here stops the cascade to + # `CI / all-required` WITHOUT hiding the failure: `CI / Platform (Go)` stays red + # and #664 stays open as the fix tracker. **DELETE PHASE4_EXEMPT (and this block) + # when #634’s fix lands on main / #664 closes — that re-enforces RFC #219 Phase 4.** + PHASE4_EXEMPT = {"platform-build"} + # Exclude null (Phase 3 suppressed / in-flight) and PHASE4_EXEMPT from the bad list. bad = [(k, v.get("result")) for k, v in ns.items() - if v.get("result") not in ("success", None)] + if v.get("result") not in ("success", None) and k not in PHASE4_EXEMPT] if bad: print(f"FAIL: jobs not green:", file=sys.stderr) for k, r in bad: