Compare commits

...

1 Commits

Author SHA1 Message Date
fullstack-engineer 0c8cb438a9 fix(ci): remove canvas-deploy-reminder from all-required.needs
lint-required-no-paths / lint-required-no-paths (pull_request) Waiting to run
qa-review / approved (pull_request) Waiting to run
security-review / approved (pull_request) Waiting to run
sop-tier-check / tier-check (pull_request) Waiting to run
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 25s
CI / Detect changes (pull_request) Successful in 1m13s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 28s
E2E API Smoke Test / detect-changes (pull_request) Successful in 1m22s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 1m38s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 39s
gate-check-v3 / gate-check (pull_request) Successful in 39s
Lint workflow YAML (Gitea-1.22.6-hostile shapes) / Lint workflow YAML for Gitea-1.22.6-hostile shapes (pull_request) Successful in 2m17s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 1m55s
lint-mask-pr-atomicity / lint-mask-pr-atomicity (pull_request) Failing after 3m28s
lint-continue-on-error-tracking / lint-continue-on-error-tracking (pull_request) Successful in 4m4s
Lint pre-flip continue-on-error / Verify continue-on-error flips have run-log proof (pull_request) Successful in 3m26s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 19s
CI / Python Lint & Test (pull_request) Successful in 21s
lint-required-context-exists-in-bp / lint-required-context-exists-in-bp (pull_request) Successful in 4m14s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 16s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 14s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 12s
CI / Canvas (Next.js) (pull_request) Successful in 18m30s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / Platform (Go) (pull_request) Failing after 19m12s
CI / all-required (pull_request) Successful in 2s
sop-checklist / all-items-acked (pull_request) acked: 0/7 — missing: comprehensive-testing, local-postgres-e2e, staging-smoke, +4
audit-force-merge / audit (pull_request) Has been skipped
The all-required aggregator was hanging on all PRs because it waited
for canvas-deploy-reminder, which has `if: github.ref ==
'refs/heads/staging'` — always false for PR events. Gitea evaluates
the needs dependency before the if condition, so all-required got stuck
waiting for a job that skips.

The comment at all-required already said canvas-deploy-reminder was
"intentionally excluded" but the needs: list still included it. This
commit removes it from needs: to match the documented intent, and adds
a timeout-minutes: 2 defensive cap on canvas-deploy-reminder itself.

Fixes the deadlock blocking PR #1122 (channels.go marshal-error
checks). Also observed blocking other open PRs on staging.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 05:27:07 +00:00
+11 -5
View File
@@ -403,11 +403,17 @@ jobs:
canvas-deploy-reminder:
name: Canvas Deploy Reminder
runs-on: ubuntu-latest
timeout-minutes: 2
# mc#774 root-fix: added job-level `if:` so ci-required-drift.py's
# ci_job_names() detects this as github.ref-gated and skips it from F1.
# The step-level exit 0 handles the "not main push" case; the job-level
# `if:` makes the gating explicit so the drift script sees it.
# continue-on-error removed (was mc#774 mask): step exits 0 when not applicable.
#
# NOTE: This job is NOT in all-required.needs (fix/channels-marshal-errors PR #1122).
# It has `if: github.ref == refs/heads/staging' which is false for all PR events.
# Including it in all-required.needs caused all-required to hang indefinitely on PRs
# because Gitea waits for a job that skips after the wait begins.
if: ${{ github.ref == 'refs/heads/staging' }}
needs: [changes, canvas-build]
steps:
@@ -573,10 +579,11 @@ jobs:
# audit-force-merge.yml's REQUIRED_CHECKS env (RFC §4 + §6).
#
# 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. Keep it runnable on PRs via its own
# `needs: [changes, canvas-build]` — the sentinel only aggregates the result.
# it has `if: github.ref == 'refs/heads/staging'` which is always false for PRs.
# Including it in all-required.needs caused all-required to hang indefinitely on
# PRs because Gitea waits for the job result before evaluating the `if` condition.
# Keep it runnable on PRs via its own `needs: [changes, canvas-build]` —
# the sentinel only aggregates the result.
#
# 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)
@@ -596,7 +603,6 @@ jobs:
- canvas-build
- shellcheck
- python-lint
- canvas-deploy-reminder
if: ${{ always() }}
steps:
- name: Assert every required dependency succeeded