You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(ci): ci-fresh-install had two defects, both firing after every release
11 red jobs looked like many problems. It was two, each able to redden the
whole matrix on its own, and neither introduced by any particular release —
both fire after EVERY release. Analysis:
.agents/docs/2026-08-04-ci-fresh-install-two-defects.md
A. THE REPO'S WORKSPACE PIN AMBUSHED THE VERSION UNDER TEST.
`actions/checkout` is the first step, so the repo's .xlings.json — which
pins the BOOTSTRAP mcpp, hand-maintained and deliberately lagging — lands in
the working directory. That pin is directory-scoped and beats anything
installed globally, so the jobs installed MCPP_PIN and then ran something
else, which was not installed at all:
✓ 1 package(s) installed
[error] xlings: version '2026.8.3.2' not found for 'mcpp'
[error] available: 2026.8.3.4
ci-aarch64-fresh-install.yml hit this and solved it by ordering the checkout
last, with a thorough comment. That does not transfer: the `build mcpp`
steps here run `mcpp clean && mcpp run` INSIDE the repo, so a checkout must
be present while mcpp is invoked. The pin goes instead — this workflow
tests the RELEASED mcpp, and the bootstrap pin has no standing in that.
B. wait-index GUARDED A DIFFERENT DISTRIBUTION CHANNEL.
It polled the index's GIT source, which updates the instant the bump PR
merges. The jobs install from the PUBLISHED ARTIFACT (xlings-res/xim-index →
pointer → tarball), which lags git by however long Publish Index Artifact
plus release-CDN propagation takes. Measured on 2026.8.3.5: the guard
reported ready and all 11 jobs then failed with
[error] package 'mcpp@2026.8.3.5' not found
A guard that measures a channel nobody installs from is not a guard. It now
polls the artifact — verified against the live pointer, which resolves
xim-index-e8ad461.tar.gz and does contain the released version.
Both fixes, plus activation (`-u` and `xlings use`) and an ASSERTION, are
collapsed into one shared script, .github/tools/install_released_mcpp.sh, called
from all five jobs. The two Windows install steps move from pwsh to bash to
share it. The knowledge existed in this repo — fully written out in
ci-aarch64's comment — and the other workflow never learned it; a script is
where that stops being a thing people have to remember.
The assertion is the only part that defends against the NEXT one. It evaluates
`mcpp` as resolved through PATH — the binary the later steps actually invoke —
so any future silent redirection becomes a named failure instead of a matrix
that quietly tests the wrong binary and reports green.
It earned that on the bench, twice, before ever reaching CI:
* my first version probed a GUESSED install path instead of PATH. That
verifies a copy nobody runs — the exact mistake the analysis doc is about,
made while writing the fix for it.
* `-u` alone did not move the shim in an isolated environment (payload
reported 2026.8.3.5, shim reported 2026.7.29.1). `xlings use` is a
different code path; both are done now, with the assertion still final.
Also bumps the bundled xlings 2026.7.28.4 → 2026.8.4.1 across all 16 pin sites
(check_version_pins.sh found every one). That release implements the index
snapshot version contract and auto-routing this repo asked for
(openxlings/xlings#476): an index declares the client version it needs, and the
client routes to the newest snapshot it can use — version skew becomes a
routing decision instead of a hard failure. It supplies the half mcpp cannot do
alone, since mcpp does not fetch indexes (update_index shells out to `xlings
update`) and had no way to ask for a specific snapshot. `xlings index list
--json` passes non-`xlings` `requires` keys through verbatim and `xlings index
use` pins. Consuming that from mcpp needs the index to declare `requires.mcpp`
first, so this commit only bumps and verifies: mcpp new/build/run all work
against 2026.8.4.1, and all four platform artifacts (including the aarch64 one
release.yml hardcodes) are published.
echo "::error::index never tracked $VER within 15min — merge the bump PR (openxlings/xim-pkgindex) and re-run"
129
+
echo "::error::the published index artifact never tracked $VER within 20min — check that the xim-pkgindex bump PR merged AND that Publish Index Artifact ran"
0 commit comments