Stop re-dispatching known-failing release builds every 30 minutes #12

Merged
founder merged 1 commit from codex/release-loop-fix into main 2026-07-26 03:04:14 +00:00
Owner

Root cause of the Namespace usage spike: */30 cron + a gate keyed on the last SUCCESSFUL build tag meant a failing build re-dispatched forever. Cron backed off to 6h; dispatch now skipped when a build was already attempted for the same commit (terminal runs count). workflow_dispatch still forces a rebuild. 🤖 Generated with Claude Code

Root cause of the Namespace usage spike: */30 cron + a gate keyed on the last SUCCESSFUL build tag meant a failing build re-dispatched forever. Cron backed off to 6h; dispatch now skipped when a build was already attempted for the same commit (terminal runs count). workflow_dispatch still forces a rebuild. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
release: stop re-dispatching known-failing builds every 30 minutes
All checks were successful
Release: If Needed / Check (Release Needed) (push) Successful in 5s
Deploy: API / Deploy (API) (push) Successful in 2m54s
Deploy: Web / Deploy (Web) (push) Successful in 6m54s
41286f4fb5
release-if-needed ran on a */30 cron and dispatched a full multi-platform
release build (macOS 12x28 + Linux + 16cpu + Bazel cache instances) whenever
its gate said a release was needed. That gate compares app inputs against the
last successful build tag, so once build-release started failing the tag never
advanced, every tick answered 'needed', and the same doomed build was
re-dispatched indefinitely -- burning Namespace capacity continuously. The
existing guard only skipped when a build was currently active, so a failed
build simply freed the slot for the next tick to refill.

- Back the schedule off to every 6 hours; pushes to main still trigger
  immediately, so the cron is only a safety net.
- Skip dispatch when a release build was already attempted for this exact
  commit, not merely when one is still running. Terminal (failed) runs now
  count, so a broken build waits for a new commit instead of retrying forever.
  workflow_dispatch still forces a rebuild for deliberate retries.

Scripts/forgejo-active-release-runs-via-host.sh gains
KEYSTORE_RELEASE_INCLUDE_TERMINAL=1 to answer 'was one attempted?' alongside
the existing 'is one running?'.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
key-store/key.store!12
No description provided.