Repository navigation
Conversation
24 tasks done
ChristianPavilonis
approved these changes
Oct 27, 2026
ChristianPavilonis
left a comment
Collaborator
There was a problem hiding this comment.
😃 Approving the cache-seed hardening while keeping deployment smoke jobs independent of cache probes.
🤔 One non-blocking concern remains: compiler write counters can report success despite failed remote finalization. A bounded remote read-back hit and finalization-failure coverage would close that publication gap; details are inline.
dhruv8sh
approved these changes
Oct 27, 2026
dhruv8sh
left a comment
Collaborator
There was a problem hiding this comment.
PR Review
Summary
This PR checks that the cache-probe seed actually publishes its compiler, source and target caches, with bounded retries, while the deploy and release jobs stay independent of it. The change is well-scoped and thoroughly covered by mutation tests. Approving.
😃 Praise
- 😃 The final check doesn't trust
fail-on-cache-missalone: the "Require exact … seed publication" steps demand a literaltruefrom one of the lookup outputs, and all 16 input combinations are exercised (fixture.sh:85-97). This coversactions/cachev5 returning early without applyingfail-on-cache-miss. - Inline: workflow mutation guards (
publication.sh) and confined directory cleanup (seed-compiler-cache.sh).
Findings
Blocking
None.
Non-blocking
- 🤔 A cache-outage run can add up to about 8 minutes: retry waits are 60s then 120s per target (360s for native plus WASM), and the source and target saves can each add another 60s. That's acceptable because only the cache-probe jobs are affected, not the deploy jobs. Just confirming the bound is intended (
seed-compiler-cache.sh:40). - 📝 Release jobs were already independent on
main:fixture-releaseandstore-free-releasealready had noneeds. The new assertion infixture.sh:44-47locks that in as a regression guard. - 📝 A duplicate source-cache save is harmless: when there is no exact source-cache hit (including a partial match through
restore-keys), the action's post-job hook tries to save the same key again and the cache rejects it with a warning only. The workflow comment already explains this. - Inline: ♻️ the source cache paths are copied four times; ⛏ the deploy workflow runs a script from a
tests/directory.
CI Status
- fmt: PASS
- clippy: PASS
- tests: PASS
tests/seed.sh: PASS (fixture.shandpublication.shwere not run locally becauseyqisn't installed; the hosted checks pass)
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
fail-on-cache-miss.Changes
setup-rust-build-cache/tests/seed-compiler-cache.shsetup-rust-build-cache/tests/seed.shsetup-rust-build-cache/tests/{fixture,publication,run}.sh.github/workflows/deploy-action.ymlfail-on-cache-missdiagnostics and enforce an exact lookup-hit assertion. Exhaustion fails only the cache-probe chain.Closes
Closes #433
Test plan
Verified locally with Rust 1.98.1 after the independent review corrections:
cargo test --workspace --all-targetscargo clippy --workspace --all-targets --all-features -- -D warningscargo fmt --all -- --checkcargo check --workspace --all-targets --features "fastly cloudflare spin"cargo check -p edgezero-adapter-spin --target wasm32-wasip2 --features spinbash .github/actions/setup-rust-build-cache/tests/run.sh— action, revision, review, fixture, workflow mutation and seed regressions pass.git diff --check.3373552e, including cache publication/reuse and deployment smoke jobs, runtime tests and CodeQL.Compiler seed retry backoff can add up to 180 seconds per target; source and target publication can each add 60 seconds. These waits affect only the cache-probe chain.
Review decisions
The review reproduced three publication/cleanup gaps and fixed all three:
actions/cachev5 restore can return success withcache-hit=falsebefore parsingfail-on-cache-misswhen feature availability fails. The final shell gate therefore requirestruefrom one of the actual lookup outputs. Tests check both the expressions feeding that gate and its behavior; the assertion is not redundant.rm -rfoutside it. Cleanup now rejects namespace/debug symlinks and unsafe host components; tests preserve sentinels outside the confined directory.The existing compiler retry strategy remains: pinned sccache v0.16.0 waits for cache writes before reporting compilation completion. Immediate stats inspection is valid, and an existing hit proves publication. Polling/restarting the server is unnecessary. Moving each attempt to another target directory would complicate compiler-cache identity and final archive ownership; guarded cleanup preserves the existing layout.
Local mutation tests simulate publication failures without relying on live outages. Hosted happy-path checks do not prove recovery during an actual cache-service outage.
Checklist
CLAUDE.md; changes limited to cache CI/tooling.