build-release: never let Publish depend on the unschedulable Windows label #40

Merged
founder merged 1 commit from windows-native-gate into main 2026-08-16 08:22:28 +00:00
Owner

Build (Windows Native Payload) needs key-store-winrunner (libvirt VM lane, no runner since 06-14). Forgejo evaluates job if: only after a runner picks the job up, so it waits forever, Build (Windows)Publish block behind it, and forgejo-requeue-stale-action-tasks (30-min waiting-job TTL) cancels the run — every release since June died this way; tonight’s 17094 had a fully green Apple chain 8 min in. Adds a forge-runner gate job (no-op unless Windows is in the plan; bounded wait otherwise) so Publish never depends on an unschedulable label. Publish still refuses incomplete releases.

🤖 Generated with Claude Code

`Build (Windows Native Payload)` needs `key-store-winrunner` (libvirt VM lane, no runner since 06-14). Forgejo evaluates job `if:` only after a runner picks the job up, so it waits forever, `Build (Windows)` → `Publish` block behind it, and `forgejo-requeue-stale-action-tasks` (30-min waiting-job TTL) cancels the run — every release since June died this way; tonight’s 17094 had a fully green Apple chain 8 min in. Adds a forge-runner gate job (no-op unless Windows is in the plan; bounded wait otherwise) so Publish never depends on an unschedulable label. Publish still refuses incomplete releases. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
build-release: never let Publish depend on the unschedulable Windows label
All checks were successful
Release: If Needed / Check (Release Needed) (push) Successful in 6s
Release: Signing Preflight / Release (Signing Preflight) (push) Successful in 1m6s
Deploy: Web / Deploy (Web) (push) Successful in 2m20s
Deploy: API / Deploy (API) (push) Successful in 3m6s
90e4c8aa4c
Build (Windows Native Payload) runs on key-store-winrunner, the libvirt VM
lane, which has had no runner since 2026-06-14. Forgejo evaluates a job's
`if:` only once a runner picks the job up, so that job sits in "waiting"
forever regardless of the plan, Build (Windows) -> Publish (Release) block
behind it, and forgejo-requeue-stale-action-tasks (30-minute waiting-job
TTL on that label) then marks it cancelled and flips the whole run to
cancelled. Every release run since June has ended that way, including
tonight's 17094 whose entire Apple chain was green eight minutes in.

Add windows-native-gate on the forge runner: a no-op when BUILD_WINDOWS is
not in the plan, otherwise a bounded (25 min) wait on the native payload
job via the tasks API. Build (Windows) now needs the gate instead of the
native job, so Publish's dependency chain only ever contains schedulable
labels. Publish's own "refuse incomplete release" logic is unchanged: a
plan that includes Windows still refuses to publish until the lane is back.

Co-Authored-By: Claude Opus 5 <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!40
No description provided.