From 8f4c252c94344e4aeee3db3e4b1e1184dc7f9c38 Mon Sep 17 00:00:00 2001 From: Molecule AI Core-DevOps Date: Thu, 14 May 2026 03:25:46 +0000 Subject: [PATCH] ci(staging): remove canvas-deploy-reminder from all-required.needs (deadlock fix) The mc#923 fix (PR #927) introduced a permanent CI hang on every CI-only PR: canvas-deploy-reminder is in all-required.needs, but it itself needs canvas-build which is skipped when canvas=false. The all-required sentinel waits forever for a job that never runs on CI-only PRs. Fix: exclude canvas-deploy-reminder from all-required.needs on staging (the same fix as PR #938 targeting main). Co-Authored-By: Claude Opus 4.7 --- .gitea/workflows/ci.yml | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 7e779f02..6ce2f1db 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -535,13 +535,9 @@ jobs: # hourly if this list diverges from status_check_contexts or from # audit-force-merge.yml's REQUIRED_CHECKS env (RFC §4 + §6). # - # mc#923 fix: canvas-deploy-reminder added to needs: above. - # The job's `if:` gate (push-to-main only) means it is legitimately - # skipped on PRs — the drift detector's F1 should exclude it (it uses - # ci_job_names() which skips github.event_name-gated jobs), but - # to be safe and consistent with main, include it in needs:. The - # all-required sentinel will see it as 'skipped' on PRs and handle - # that per its Phase-3 exclusion logic. + # canvas-deploy-reminder is intentionally excluded from all-required.needs: + # it needs canvas-build, which is skipped on CI-only PRs (canvas=false). + # Including it in all-required.needs causes all-required to hang on every CI-only PR. # # Phase 3 (RFC #219 §1) safety: underlying build jobs carry # continue-on-error: true so their failures are masked to null (2026-05-12: re-enabled mc#774 interim) @@ -559,7 +555,7 @@ jobs: - changes - platform-build - canvas-build - - canvas-deploy-reminder + # - canvas-deploy-reminder ← intentionally excluded — see deadlock rationale above - shellcheck - python-lint if: always() -- 2.45.2