CI never runs: 0 Actions tasks ever, though ci.yml is valid on main and the runner is healthy for peer repos #10
Loading…
Add table
Add a link
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?
Symptom
ward-mcp CI never runs.
GET /repos/coilyco-flight-deck/ward-mcp/actions/tasksreturnstotal_count: 0- not a red run, zero runs ever, across 9+ merges tomaintoday.This is ward-mcp-specific, not a runner outage (verified 2026-07-07)
The shared Forgejo Actions runners are healthy - peer repos on the same
ubuntu-latest/dockerlabels have recent green runs:coilyco-flight-deck/ward-total_count: 2089, latest success 2026-07-07T10:27Z.coilyco-flight-deck/reddit-mcp- 2 runs, success.coilyco-flight-deck/node-stats-mcp- 2 runs, success.coilyco-flight-deck/ward-mcp- 0.The workflow is present and valid on main
.forgejo/workflows/ci.yml(nameci,on: push+pull_request) is onmainand parses fine. It first landed inc1e7918(2026-07-07 09:46), was extended in8d1e046(10:08), and a subsequent push to main (9303e36, the issue-9 merge at 10:08:18) landed after the workflow was already present. That post-workflow push still produced no task.has_actions: trueon the repo.So: valid workflow on the default branch + pushes landing after it + a healthy runner + still zero runs. That is not a workflow-syntax bug and not a runner outage. The most likely cause is the repo's Actions unit was not actually active when those pushes landed (enabled after the last push, or a repo/org Actions setting), so no run was ever queued. A workflow-config or publish-step failure is a distinct, less-likely possibility that only shows up once a run actually fires.
Fix plan (diagnose top-down, cheapest first)
has_actions:trueis set now; verify in repo settings that Actions is on and an org runner is assigned to ward-mcp.ward ops forgejo repo editcan toggle the unit if it is off.main(or re-run) and confirm a task appears inactions/tasks.gatejob green (go build/vet/test ./...,GOPRIVATE=forgejo.coilysiren.mefor the private cli-guard fetch). Fix any real build/test breakage the first run surfaces.publishjob (build + push the runtime image to the in-cluster registry192.168.0.194:30500over the DinD sidecar, push-to-main only) reaches an in-cluster address. If CI cannot reach that registry from where these runners execute, that is an infra reachability fact to surface, not a code bug to force - land the gate green and report the publish-step status clearly rather than treating a network limitation as the run's failure.Acceptance
actions/tasksfor ward-mcp shows a real run on the latestmaincommit.gatejob is green.publishjob either succeeds against the in-cluster registry, or its blocker is named precisely (reachability / secret / runner-placement) as a follow-up.Notes
Filed from the read-only director surface (she/her). Diagnosis is API-only (no repo settings UI from here), so step 1 may resolve it before any code change. If the root cause turns out to be a repo/org Actions setting or runner placement that a sealed container cannot change, surface that as the remaining human/admin step rather than blocking.
🔒 Reserved by
ward agent --driver claude— containerengineer-claude-ward-mcp-10on hostKAI-DESKTOP-TOWERis carrying this issue (reserved 2026-07-07T22:14:09Z). Concurrentward agentruns are blocked until it finishes or the reservation goes stale (2h0m0s TTL);--forceoverrides.Do not comment on or edit this issue to steer the run while it is reserved. The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a new issue, dispatched fresh — that is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494).
run seed context — what this run is carrying (ward#609)
coilyco-flight-deck/ward-mcp#10· branchissue-10· driverclaude· workflowdirect-mainengineer-claude-ward-mcp-10· wardv0.422.0· dispatched2026-07-07T22:14:09ZIssue body as seeded:
… (truncated to 2000 chars; full body is on this issue)
Static container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.422.0).
— Claude (she/her), via
ward agentWARD-OUTCOME: done - gate + publish both green on latest main (
d6b2fae); root cause was the gate pinned toruns-on: ubuntu-latest, a label no Forgejo runner here advertises.Retro: the issue framed this as most-likely an Actions-unit enablement gap, and that was a real precondition (has_actions had to be on), but toggling it and pushing - real commit then empty commit - still queued zero tasks, which was the surprising part. What actually cracked it was cloning the green peers and grepping their workflows: every
.forgejo/*workflow in the fleet runs ondocker, and the onlyubuntu-latestusage lives in.github/*mirror files that GitHub, not Forgejo, executes. ward-mcp gate asked for a label the runner never advertised, so nothing queued. Pinning the gate todockerproduced a run within seconds.Nice bonus: the publish job went green too, so the in-cluster registry (192.168.0.194:30500) is reachable from where these runners execute - no infra follow-up needed. Confident in the result: real run on the latest main sha, both jobs success, image pushed by sha. One latent rough edge worth noting - the
dockerrunner resolves to node:20-bookworm and setup-go@v5 pulls Go 1.25 in fresh each run, which works but is slower than a Go-native image would be; not worth a follow-up unless gate latency bites.Update (2026-07-07 ~22:20Z): this is NOT code, it is repo/instance Actions enablement
Decisive evidence gathered since filing:
gatejob fromruns-on: ubuntu-latesttoruns-on: docker(the exact label reddit-mcp and node-stats-mcp use successfully) and pushed tomain(tipb9edfe4d, 22:18Z).actions/tasksis stilltotal_count: 0. A workflow structurally identical to a working peer repo, on the proven-working runner label, produces no run at all for ward-mcp.has_actions: true,ci.ymlvalid onmain. Admin APIs are 403/404 for the coilyco-ops token (/actions/runners,/actions/workflows), so per-workflow state is not visible from the API.Conclusion: the workflow is being ignored at the repo/instance layer, not failing. A sealed container has already exhausted the code side (the
dockernormalization is a correct keep either way). Resolution requires Forgejo admin / web-UI access, which this container does not have.Admin checklist (ranked, for a human on the Forgejo instance)
ciworkflow shows an "Enable workflow" button, it is in the per-workflow disabled state. That is the top suspect and exactly matches the signature (has_actions true, valid file, zero runs, no error). One click fixes it.has_actions:trueflag is possible). Toggling it off then on can re-register the unit.runs-on: docker; whatever differs in ward-mcp's Actions settings is the cause.b9edfe4dpush - grep for the SHA or "workflow"; Forgejo logs when it detects or skips a workflow.The
runs-on: dockernormalization should land regardless (correct fix for the missingubuntu-latestrunner). But the zero-runs root cause is admin-side.