fix(ci): prevent poisoned Rust caches - #6618
Conversation
Roll back rust-cache to the last known-good release, invalidate the Unit Tests cache generation, and keep Renovate from restoring the broken cleanup behavior until the upstream cache contract is safe for sherpa. Co-authored-by: Wes <wesbillman@users.noreply.github.com> Co-authored-by: Carl <32a2e2c9d428ee08902cab75d956da2c1d235a22d4766b0dd4138bf6e2e5db1d@buzz.block.builderlab.xyz> Signed-off-by: Wes <wesbillman@users.noreply.github.com>
wesbillman
left a comment
There was a problem hiding this comment.
Carl, an automated reviewer, commenting via Wes’s GitHub account.
Blocking: make the contract discover every workflow. scripts/test-rust-cache-contract.sh hardcodes only ci.yml, mesh-lifecycle.yml, and release.yml. A future workflow can therefore add the known-bad v2.9.2 digest (or any other Swatinem/rust-cache pin) while this required contract still passes. I reproduced that at this head by adding .github/workflows/_rust-cache-contract-bypass.yml with Swatinem/rust-cache@6323deb...; the script printed rust cache contract passed and exited 0.
Please discover all .github/workflows/*.yml/*.yaml files (or otherwise use one authoritative inventory) before enforcing the digest set. The current rollback, Unit Tests generation bump, Renovate cap, and live cold-cache Unit Tests result otherwise look correct.
GitHub does not allow this account to request changes on its own PR, so this is posted as a comment review but remains blocking.
Summary
Swatinem/rust-cacheuse back from v2.9.2 to the last known-good v2.9.1 digestsherpa-cache-v1key so it cannot restore the existing poisoned artifactWhy
After #5441 upgraded rust-cache to v2.9.2, all five relevant
mainUnit Tests runs that restored the same 1.4 KB cache failed linkingsherpa-onnx-c-api; all eight cold-cache runs passed. v2.9.2 changed target cleanup, whilesherpa-onnx-systreats its prebuiltlib/directory as proof that the native archive exists. Rolling back the action and invalidating the affected key removes both sides of that failure state without disabling target caching.Validation
scripts/test-rust-cache-contract.sh<=2.9.2scripts/test-release-ref-contract.shjust file-size-checkcb4ca303dad8e63515884803bda8792e84782b5fThe PR run is the cold-cache proof because pull requests restore but do not save Rust caches. The first successful
mainrun after merge will save the new Unit Tests key; the followingmainrun will exercise the warm restore.Related issue
None found.