fix(ci): the sovereign-ci pin was two commits behind the one that makes gx10 work - #3225
fix(ci): the sovereign-ci pin was two commits behind the one that makes gx10 work#3225noahgift wants to merge 2 commits into
Conversation
…es gx10 work — every container job routed there died before it started
`ci / test`, `ci / coverage` and `ci / lint` have been failing on gx10 with
##[error]Docker pull failed with exit code 1
which names neither the architecture nor the tag. Pulling by hand on gx10
gives what the job log never shows:
no matching manifest for linux/arm64/v8 in the manifest list entries
THE PIN, NOT THE REGISTRY. This file pinned
sovereign-ci.yml@4453399ee (2026-09-05), whose every job runs
image: localhost:5000/sovereign-ci:stable@sha256:66016caa...
an AMD64-ONLY index. paiml/.github fixed that on 2026-09-10 in 70e51ec04,
"pin a two-architecture image index (amd64 + arm64)" — and this repo, which
pins by SHA, never moved. gx10 carries four clean-room runners and the
workflow's default runs_on is ["self-hosted","clean-room"], arch-neutral, so
the router sends work there BY DESIGN (#3100 / PMAT-3138). Routing and image
disagreed for three days.
MEASURED ON gx10, both digests, today:
pull @sha256:66016caa... -> no matching manifest for linux/arm64/v8
pull @sha256:70f2cdc9... -> Status: Image is up to date
THE DELTA IS TWO COMMITS AND ONE FILE (+20/-11), both additive: 23916c00d
adds an OPTIONAL `runs_on` input whose default is exactly the label set this
repo already gets, and 70e51ec04 swaps the digest on every job. No input
this repo passes changes meaning. Full 40-char SHA, as before.
HOW IT WAS FOUND, because the log does not say it: the run's
`referenced_workflows` names the resolved SHA. That is the field to read
when a reusable workflow behaves like an older version of itself.
SEPARATELY, and still worth having: the `:stable` TAG in the registry was
also amd64-only, so any `docker pull localhost:5000/sovereign-ci:stable`
(the mutants job does exactly that) failed on gx10 too. Re-pointed at the
existing multi-arch index — same amd64 digest, so no x86 consumer changed.
That is #3223; this commit is the other half, and neither fixes the other.
Verified: check_workflow_env_defined, check_no_hosted_runners,
check_runner_labels green.
Closes #3223
Pmat-Ticket: PMAT-1098
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
§13.11 rung 1 — quorum shadow verdict Shadow mode: this records a verdict and merges nothing. A refusal |
|
Measured impact on the merge queue, since this is now the thing the queue is waiting on. Across the last 25 merge-group runs, 9 failed. Classifying every failing job by runner:
22 failing jobs, 14 of them (64%) on gx10. The five single-job failures are all Three container jobs per merge group against ~4 gx10 runners in a ~23-runner clean-room pool puts roughly 44% of merge groups on this path. What I deliberately did not do. The obvious lever is to drop the So this sits in the queue like everything else. The measurement is here so the cost of waiting is visible rather than assumed. 🤖 Generated with Claude Code |
|
Reproduced on gx10 itself, with the exact command the runner runs. Earlier in this PR I was reasoning from the workflow diff; this is the metal. So the two facts that matter:
And the fix is measured, not argued — on this PR's own head
Blast radius while this waitsmain has been red since the SHA pin merged at 10:09 ( all five with Merges into main: nine between 06:38 and 11:01, one at 13:34, none since. Merge groups are still building — they are not deadlocked — but any group whose container jobs land on a gx10 clean-room runner fails and ejects its head PR. #2838 was ejected that way at 15:18 (run 34765202728) and is back to I tried to move this PR to the front of the queue so it could heal the fleet sooner; 🤖 Generated with Claude Code |
Closes #3223
ci / test,ci / coverageandci / linthave been failing on gx10 with:which names neither the architecture nor the tag. By hand on gx10:
The pin, not the registry
This repo pinned
sovereign-ci.yml@4453399ee(2026-09-05), whose every job runsan amd64-only index.
paiml/.githubfixed exactly this on 2026-09-10 in70e51ec04— "sovereign-ci: pin a two-architecture image index (amd64 +arm64)" — and this repo, which pins by SHA, never moved.
gx10 carries four
clean-roomrunners and the workflow's defaultruns_onis
["self-hosted","clean-room"]— arch-neutral, so the router sends work thereby design (#3100 / PMAT-3138). Routing and image disagreed for three days.
Measured on gx10, both digests
The delta is two commits, one file, +20/-11 — both additive
23916c00druns_oninput, default["self-hosted","clean-room"]— exactly the label set this repo already gets70e51ec04No input this repo passes changes meaning. Full 40-char SHA, as before.
How it was found
The job log does not say which version of a reusable workflow ran. The run's
referenced_workflowsfield does:against a
maintip of70e51ec04. That is the field to read when a reusableworkflow behaves like an older version of itself.
Separately, and still worth having
The
:stabletag in the registry was also amd64-only, so anydocker pull localhost:5000/sovereign-ci:stable— themutantsjob doesexactly that — failed on gx10 too. I re-pointed it at the existing multi-arch
index (same amd64 digest, so no x86 consumer changed). Neither fix covers the
other: the tag fix does nothing for a digest-pinned
container:, and thisbump does nothing for a tag-based pull.
Verified
check_workflow_env_defined,check_no_hosted_runners,check_runner_labels— green.🤖 Generated with Claude Code