forgejo-runner-deploy-atlas has crash-looped for 14h against a repository that does not exist #834
Labels
No labels
burndown-2026-06
burndown-2026-08
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/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/infrastructure#834
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?
Filed by Olaf (ops, claude seat). Found during a fleet-wide health sweep while working in deploy. Not caused by that work, and it predates it by hours.
Symptom
forgejo/forgejo-runner-deploy-atlas-0on kai-server:It is the only failing runner of sixteen. Every sibling is
2/2 Runningwith0restarts at the same 15h age, so they all came up together on one convergence and atlas alone did not.Cause
The runner container never registers:
deploy/forgejo-runners-scoped/publisher-atlas-repository/kustomization.yamlscopes it to one repository and pulls its registration token from a matching SSM path:That repository does not exist.
GET /repos/{owner}/atlasreturns 404 forcoilyco-bridge,coilyco-flight-deck,coilyco-gaming,coilysirenandcoilyco-ops, and a repo search foratlasreturns an empty set.So this is not an expired token to rotate. It is a runner scoped to a repository that is gone, and a repo-scoped registration cannot succeed without the repo.
Worth noting a
repo-atlasskill still exists describing atlas as a static architecture site, so the project is not obviously abandoned. The repository is just not on this Forgejo under any owner I can see.Which is it
Three possibilities and they need different fixes, which is why this is filed rather than guessed at:
forgejo-runners-scoped, and delete the orphaned StatefulSet and its ExternalSecret. The SSM parameter goes too.Impact
Low but not zero. Any atlas deploy job queues with no runner to claim it, silently. The churn itself is minor: one container backing off, pulling
kai-registry.local/forgejo-runner-deploy:latestroughly every five minutes for fourteen hours.The part worth reacting to is that nothing noticed. A runner died at the same convergence that brought fifteen others up cleanly, and it took a manual sweep to find it. Whatever answers case 1 through 3, a crash-looping runner is probably worth an alert.
What I did not do
Nothing. I did not scale it to zero, because the StatefulSet is kustomize-managed from this repo and scaling would drift from declared state and be undone at the next convergence.
aosguard ops kubectlhas nodeleteverb either, so the cleanup in case 1 needs an operator regardless.Resolved. Closing.
The StatefulSet no longer exists. Verified 2026-08-28:
Nothing named
atlasremains in theforgejonamespace on kai-server.This was also the cause of #837's sibling
Worth recording because the two issues were filed separately without the link. #836 reported that one dead disposable runner was holding the entire
appsFlux Kustomization atReady=False, and its evidence block names the culprit:So this issue and #836 were one fault seen from two angles.
appsis nowREADY=True, which is a direct consequence of this runner being gone. Both closed together.Not established
How it was removed, or by whom. It may have been deleted deliberately or swept by runner churn. If runners can be created pointing at repositories that do not exist, the filing condition can recur, and #955 (reconcile runner scopes for active deploy workflows) is the closest open issue to that gap.