Make Forgejo runner recycling job-aware #706
Labels
No labels
burndown-2026-06
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/infrastructure#706
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Outcome
Prevent runner recovery or recycle operations from terminating active Forgejo Actions jobs.
Evidence
During agentic-os dev-base publication run 2595, Node, Go, and .NET publication completed and Python plus Rust began on the dedicated image-build runner.
Around 09:10Z on 2026-07-31, Kubernetes recorded a burst of normal
Killingevents across every flight-deck runner pod, including both general runners and the dedicated image-build runner. The StatefulSet revision did not change. There was no eviction, OOM, rollout, renewed disk pressure, or scheduledforgejo-runner-recyclejob at that time.The build-runner replacement interrupted Python and Rust. Forgejo held the orphaned tasks until run 2595 failed at 09:19:06Z.
Required live action
Acceptance
A recovery or scheduled recycle cannot kill an active Actions job, and the operator path reports which runners were recycled versus deferred.
Cause identified after filing
The runner termination was caused by the deliberate infrastructure change in #705, landed as
317bfbe86da591bf2880b5e50447978b1be17707. That change sets the scoped image-build runner to zero replicas because resuming dev-base publication raised root filesystem use back toward the disk-pressure threshold. Flux is correctly enforcing0/0.The immediate safety choice in #705 was correct. Keep this issue scoped to future job-awareness for non-emergency maintenance and migration work. A planned disable or recycle should drain or defer when jobs are active. An emergency disk-pressure action may terminate work, but it should report that explicitly. Capacity root cause remains #624 and runner migration remains #693.