Skip to content

ci: restore the cache key and the package list that did not reach master - #583

Merged
PathGao merged 2 commits into
masterfrom
ci/restore-cache-key-and-package-list
Aug 11, 2026
Merged

ci: restore the cache key and the package list that did not reach master#583
PathGao merged 2 commits into
masterfrom
ci/restore-cache-key-and-package-list

Conversation

@PathGao

@PathGao PathGao commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

Recovery, not new work. Two commits that were reviewed and green on #580 and #581 are not on master.

What happened

#580 → master       squashed as d100f00, containing only its first two commits
                    "ci: key the cargo cache on the runner image" is not in it

#581 → ci/one-linux-runner      merged into #580's branch, not into master
                                so its content never reached master at all

origin/ci/one-linux-runner still holds both. It cannot simply be merged forward: it was branched before #579, so merging it would take snapcraft.yaml, publish-packages.yml and test_snap.yml back to building the snap from source. This is the two commits cherry-picked onto current master instead.

What master is missing

The cargo cache key (test.yml, test_build.yml). rust-cache keys on runner.os, which is Linux for both 22.04 and 24.04 — measured, the key is identical on both:

v0-rust-linux-build-test-Linux-x64-e8b3ee54-a2c94f3a

#580 moved the runner. Without this commit, master's next test_build run on 24.04 restores a target/ built on 22.04 as a full match, and cargo fingerprints do not track system libraries — webkit2gtk-sys's build script probed jammy's headers and that result gets reused against noble's.

This is live on master right now, and it is the half of #580 that made moving the runner safe.

The Linux package list (build.yml). Master still installs sixteen packages where test_build.yml installs six and builds the same three bundles. Six of the extras apt installs anyway as dependencies of libwebkit2gtk-4.1-dev; the four libxcb *-dev and xdg-utils are in no Tauri v2 prerequisite list. Run 31487547674 built the .deb, the .rpm and the AppImage on ubuntu-24.04 with six.

Both assertions come with them, so the two facts stay held: the cache key must name the runner image, and the release's package list must equal the one a pull request exercises.

Verification

Cherry-picked clean onto master; no conflicts. Content confirmed after the pick — IMAGE_OS present in both workflows, build.yml down to six packages. npm test — 977 pass.

The full mutation checks are on the original pull requests; nothing about the assertions changed here.

Note on the branches

origin/ci/one-linux-runner and origin/ci/one-linux-dependency-list can be deleted once this lands — everything on them is either already on master or in this pull request.

🤖 Generated with Claude Code

PathGao and others added 2 commits August 11, 2026 21:08
Moving the Ubuntu would otherwise have restored the wrong cache silently.
rust-cache's key ends in `runner.os`, which is `Linux` for both 22.04 and
24.04. Read off two runs of the same job, one per Ubuntu, it is identical:

  v0-rust-linux-build-test-Linux-x64-e8b3ee54-a2c94f3a
                           ^^^^^ the image is not in here

So master's next run on 24.04 would have restored a target/ built on 22.04 as a
full match. Cargo fingerprints do not track system libraries: webkit2gtk-sys's
build script probes the distribution's headers and caches the result, and that
result would have been reused against a different distribution's, with nothing
to notice.

`$ImageOS` is what the runner calls its own image -- ubuntu22, ubuntu24,
macos15. Keying on it invalidates on this move and on the next one, including
the ones `macos-latest` and `windows-latest` make with no commit at all. Read
from the runner rather than written down, so it is not a fourth thing to
remember.

The previous keys become unreachable and expire on the usual seven-day-unused
or least-recently-used path. One extra set of ~4.45 GB until they do, against
the 10 GB limit that no longer holds the npm caches.

Checked by mutation: dropping IMAGE_OS from the key fails the new assertion and
nothing else. The first attempt at that check reported a pass because bash ate
the `${{ }}` before python saw it and the file was never mutated -- the same
shape as `continue-on-error`, a check that cannot fail looking exactly like a
check that passed. Redone with the edit asserted before the run. 976 pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…eds (#581)

Stacked on ci/one-linux-runner.

build.yml asked apt for sixteen packages; test_build.yml asks for six and
compiles the same tree and bundles the same three formats. Nothing said which
was right, because build.yml only runs on workflow_dispatch -- its apt list is
the one part of the Linux build no pull request has ever exercised.

Six of the ten extras apt installs regardless: libwebkit2gtk-4.1-dev depends on
libwebkit2gtk-4.1-0, libjavascriptcoregtk-4.1-dev, gir1.2-webkit2-4.1 and
libgtk-3-dev, and those pull libjavascriptcoregtk-4.1-0 and
gir1.2-javascriptcoregtk-4.1 behind them. The other four are libxcb1-dev,
libxcb-render0-dev, libxcb-shape0-dev and libxcb-xfixes0-dev, plus xdg-utils --
none of which appear in Tauri v2's Debian/Ubuntu prerequisites.

The evidence is not that reasoning. Run 31487547674 built the .deb, the .rpm and
the AppImage on ubuntu-24.04 -- the release's own runner, after the change
below this one -- with these six and nothing else, and uploaded 101 MB of
bundles.

Making the lists identical is the point rather than making one shorter. Both
workflows compile and bundle, so any difference between them is a release
depending on something nothing tested. An assertion holds them together, and
holds test.yml to the same list minus the bundlers, since it compiles but never
bundles.

Checked by mutation in both directions: adding a package to build.yml fails it,
and removing one from test.yml fails it. 977 pass.

Co-authored-by: PathGao <gaoyanbo@gaoyanbodeMacBook-Air.local>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
@PathGao
PathGao force-pushed the ci/restore-cache-key-and-package-list branch from fdc4834 to bd9992b Compare August 11, 2026 13:08
@PathGao
PathGao merged commit 5bdc129 into master Aug 11, 2026
4 checks passed
@PathGao
PathGao deleted the ci/restore-cache-key-and-package-list branch August 11, 2026 13:33
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.

1 participant