bug(ci): build-ref-check asks for a runner label that does not exist, so it has never run #1361
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#1361
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?
build-ref-check.ymlasks for a runner label that does not exist, so it has never run once. The operator noticed the warning on the Actions page.Measured
No runner offers
docker. It is the only workflow in the repo using that label; every other Go job usesgo, and the two non-Go ones useplaywrightanddocker-build.It triggers on
push: tags: v*, so it should have fired on every cut since it was added. Nothing can claim the job, so it queues and the Actions page shows a warning — the only surface where this is visible.The fix is one word
The job's own step is
go build -o "$RUNNER_TEMP/rt" ./cmd/rt. It needs the Go image.runs-on: gomaps togit.frankenbit.de/frankenbit/forgejo-ci-go:latest, which is what every other Go job in this repo uses.docker-buildis the near neighbour and is wrong — it is:hostand exists for image builds.What it means that this went unnoticed
This workflow exists to catch a tree tagged without being baked for its tag. Its own header records why that matters: "the release being bad and nobody knowing for fourteen months — which is what happened to v1.0.0-alpha.0."
And its positive-control step carries this comment:
The author anticipated the exact failure mode, wrote a positive control against it, and the control has never executed.
¶34on a workflow that cites¶34.The reason a never-run workflow is invisible here is that it produces no status on any PR — it runs on tag push, so its silence appears on no surface a reviewer reads.
#1348is the same shape formirror-drift-check, which at least reddens its own run.AC
build-ref-check.ymlnames a label a registered runner offers —go, which maps toforgejo-ci-go:latestand is what every other Go job here uses..giteatwin matches.rt gitea-twin --checkrc=0. Only one file carried the label; the twin is generated and was regenerated clean.v1.0.0-alpha.0. Run 23972:status=success— the first run this workflow has ever produced. The job's success DEPENDS on the control: the step exits 1 unlessv1.0.0-alpha.0grades exactly 1. Verified independently rather than inferred:\n\n\nrt build-ref-check --ref v1.0.0-alpha.0 rc=1 marker holds \"main\", want \"v1.0.0-alpha.0\"\nrt build-ref-check --ref v0.61.1 rc=0 9/9 canonical files carry v0.61.1\n\n\n⚠️ Caveat: this was aworkflow_dispatch, not a tag push. Thepush: tags: v*path is unchanged by this fix and has not fired since. The observable @engineer named still applies to that path — a run APPEARING, not a waiting job being claimed.runs-on:in.forgejo/workflowsand.gitea/workflowsagainst the runner's eight declared labels: before = 1 unclaimable (docker), after = 0.Related
#1348(a gate's red reaching nobody),#1214(what this workflow grades),¶34Anchor
Noticed by the operator on the Actions page — the only surface it appears on. Measured by @bosun against the runner's declared labels.
bosun referenced this issue2026-09-06 17:49:12 +02:00
Closing. The workflow has now produced its first run, and the positive control has fired.
build-ref-check.ymlalso carries aworkflow_dispatchwith arefinput — the same escape that let#1348prove its never-executed reporting steps. Dispatched againstv0.61.1afterruns-on: golanded:The job's success is not incidental: its positive-control step exits 1 unless
v1.0.0-alpha.0grades exactlyrc=1. Verified independently rather than inferred from the green:So the verb discriminates in both directions, and the gate whose green would otherwise be vacuous has a control that demonstrably refuses.
Caveat kept rather than dropped: this was a dispatch, not a tag push. The
push: tags: v*trigger is unchanged and has not fired since the fix. @engineer's note still governs that path — the observable is a run APPEARING, not a waiting job being claimed, because there was never a waiting job to claim.The operator found this as a warning on the Actions page, which was the only surface it appeared on. It ran on tag push, produced no status on any PR, and its silence therefore showed up nowhere a reviewer reads.
Its own positive-control comment cites
/srv/CLAUDE.md§ "A GATE'S SILENCE" — a gate whose green is usually vacuous is indistinguishable from a gate that never ran. The author anticipated the exact failure mode, wrote a control against it, and the control had never executed. It has now.