Skip to content

chore(ci): bump the dev-env image to v2.2.1 and drop the mops prewarm - #1483

Merged
marc0olo merged 1 commit into
masterfrom
chore/dev-env-v2.2.1
Sep 15, 2026
Merged

marc0olo merged 1 commit into
masterfrom
chore/dev-env-v2.2.1

Conversation

@marc0olo

@marc0olo marc0olo commented Sep 15, 2026

Copy link
Copy Markdown
Member

Stack

PR Base Contents
2 #1483 (you are here) fix/flaky-example-tests dev-env image → v2.2.1, drops the mops prewarm
1 #1482 master the three flakiness fixes

Merge bottom-up. GitHub has no stacked-PR view, so this table is maintained by hand.


Bumps the dev-env image v2.0.0v2.2.1 and removes the mops install prewarm step #1482 added, in one commit, because the two are coupled: dropping the prewarm before CI runs mops ≥ 3.2.1 brings the flake straight back.

Why the prewarm can go

mops 3.2.1 fixed caffeinelabs/mops#818 — a version is now extracted into a staging directory and renamed into place under a per-version lock, and the project-local .mops/_tmp scratch directory is gone. Verified against the real example rather than the changelog:

scenario mops 3.1.0 (in v2.0.0) mops 3.2.2 (in v2.2.1)
icp build on motoko/pub-sub, cold moc cache, no prewarm 3/3 fail 3/3 clean
two concurrent mops build, cold cache 3/6 fail 0/8 clean

The waiting process now prints Waiting for another mops process to install moc <version>... and uses the finished install. 3.2.1 also replaced the opaque exit code: undefined with the actual signal or spawn error.

What else rides along

v2.2.1 is not only mops:

ICP_CLI_VERSION  1.3.0   → 1.5.0
NODE_VERSION     24.15.0 → 24.21.0
PNPM_VERSION     11.4.0  → 11.26.0
IC_MOPS_VERSION  3.1.0   → 3.2.2
YQ_VERSION       4.53.3  → 4.53.6

It also carries a security fix: mops 3.2.2 closes GHSA-7w5x-hrqm-74c2 / CVE-2026-85730 (CVSS 8.2, CWE-835), where smol-toml never returns on a value followed by an unterminated comment inside an array or inline table. mops reads each installed dependency's own mops.toml during resolution, so the exposure is through third-party manifests, not just your own file.

Neither icp-cli 1.4.0 nor 1.5.0 has a breaking change, but 1.5.0 changes one behaviour worth watching here:

Env-specific builds previously did not affect which canisters were being built. Now, any canisters not listed in that environment will not be built.

Eleven of 72 example icp.yaml files declare environments:, so that is the most likely place for this bump to bite. Keeping the bump separate from #1482 is what makes a red check here attributable to the toolchain rather than to the flakiness fixes.

🤖 Generated with Claude Code

Base automatically changed from fix/flaky-example-tests to master September 15, 2026 15:53
@marc0olo
marc0olo requested review from a team as code owners September 15, 2026 15:53
v2.2.1 ships mops 3.2.2, which fixes the toolchain download race
(caffeinelabs/mops#818) that the prewarm step worked around, so the step
goes with it. Verified locally: `icp build` on motoko/pub-sub with a cold
moc cache and no prewarm is 3/3 clean on 3.2.2, against 3/3 failures on
the 3.1.0 that v2.0.0 shipped.

3.2.2 also closes GHSA-7w5x-hrqm-74c2 (CVSS 8.2), where a malformed
mops.toml reached during dependency resolution hangs the parser.

The image also moves icp-cli 1.3.0 -> 1.5.0, Node 24.15 -> 24.21,
pnpm 11.4 -> 11.26 and yq 4.53.3 -> 4.53.6.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@marc0olo
marc0olo force-pushed the chore/dev-env-v2.2.1 branch from d373a00 to 89a96dd Compare September 15, 2026 15:53
@marc0olo
marc0olo merged commit 73899bd into master Sep 15, 2026
91 checks passed
@marc0olo
marc0olo deleted the chore/dev-env-v2.2.1 branch September 15, 2026 16:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Concurrent mops build invocations race on the moc toolchain download and extraction

2 participants