Skip to content

ci(cache): setup-soldr v0.9.78 save-cache: auto, share the Linux dev cook base, cache-policy guard (#355) - #356

Merged
zackees merged 1 commit into
mainfrom
ci/355-cache-footprint
Sep 26, 2026
Merged

zackees merged 1 commit into
mainfrom
ci/355-cache-footprint

Conversation

@zackees

@zackees zackees commented Sep 26, 2026

Copy link
Copy Markdown
Owner

Fixes #355
Part of zackees/setup-soldr#528

Changes

  • Pin bump: all seven zackees/setup-soldr steps (ci.yml x3, release.yml x2, auto-release.yml, macos-x64-tests.yml) move from c2a3b96 (v0.9.77) to fabebf4 (v0.9.78, setup-soldr#527). Each step now sets save-cache: auto explicitly, so pull-request runs still restore but upload no durable cache layers.
  • No save-cache: "true" anywhere: in a PR run, no job restores an entry that another job in that run saved. linux, each build target and dylints key their own caches, and test compiles nothing.
  • Cook-base sharing (audit):
    • The only same-target, same-graph pair was ci.yml linux and release.yml validate-and-package, both x86_64 Linux. The release job cooked --release with no suffix, although every step it runs (cargo test, crate package verification) compiles the dev profile. That was a second ~2.4 GB base that nothing reused.
    • It now cooks the dev profile with suffix linux and CARGO_PROFILE_DEV_DEBUG: line-tables-only, so it restores linux's base saved on main.
    • These graphs genuinely differ and stay separate: the five build targets (one base each, keyed by matrix.target), dylints (prebuild-deps: none), and the cache: false release, auto-release and macOS x64 steps.
  • Guard: ci/test_cache_policy.py, added to ci.yml's guard-step unittest invocation. It checks:
    • every setup-soldr step uses one pinned 40-char SHA;
    • every step is classified by target and profile;
    • cook flags match the profile;
    • each target and graph uses one suffix, unless JUSTIFIED_SPLITS names a reason;
    • every step states save-cache;
    • no step on a pull_request workflow saves without a v0.9.78+ pin and save-cache auto or false, unless PR_SAVE_JUSTIFICATIONS names a reason (empty today);
    • stale justifications fail.

RED -> GREEN

Against the old workflows (v0.9.77 pins), with the new test in place: FAILED (failures=12).

  • test_no_step_saves_on_pull_request fails for ci.yml linux, build and dylints: they need a v0.9.78+ pin with save-cache unset or auto.
  • test_every_step_states_its_save_policy fails for all 7 steps.
  • test_cook_flags_match_the_compiled_profile fails for release validate-and-package: '--release' != ''.
  • test_one_suffix_per_target_and_graph fails: {'linux': ['ci.yml:linux'], '': ['release.yml:validate-and-package']}.

After this change: Ran 8 tests ... OK.

Local validation

  • soldr cargo fmt --all -- --check: OK.
  • CI unittests (ci.test_native_proof ci.test_native_proof_jobs ci.test_macos_x64_guest ci.test_ci_modes ci.test_release_ci_gate ci.test_nextest_config ci.test_deny_warnings ci.test_target_features ci.test_cache_policy): 92 tests, OK.
  • soldr cargo clippy --locked --all-features --all-targets -- --deny warnings: OK with OPENSSL_NO_VENDOR=1. Local-only issue: on this host, vendored OpenSSL fails at providers/liblegacy.a under the zccache C wrapper. No Rust changed here.
  • soldr cargo build --locked --all-features: OK, with the same local workaround.
  • Platform-boundary scan (--lib -- --skip ui): 21 passed.
    • It ran with the pinned nightly's cargo called directly. Under soldr rustup run, this host's orphaned soldr daemon refused the broker route ("soldr root ownership is busy").
  • soldr cargo check --locked --lib with the ci/target_features.py feature set: OK for x86_64-pc-windows-msvc and for aarch64-apple-darwin.

🤖 Generated with Claude Code

…inux dev cook base, guard the policy (#355)

- Bump all seven setup-soldr pins to v0.9.78 (fabebf4), which adds
  `save-cache` (setup-soldr#527); every step sets `save-cache: auto`, so
  pull-request runs restore but upload no durable caches.
- release.yml validate-and-package cooked a `--release` base under no
  suffix although every step compiles the dev profile. It now cooks the dev
  profile with suffix `linux` and ci.yml's CARGO_PROFILE_DEV_DEBUG, so it
  restores the one ~2.4 GB base ci.yml's `linux` job saves on main.
- ci/test_cache_policy.py (run by ci.yml's guard step): one pinned SHA,
  every step classified by target and profile, cook flags match the
  profile, one suffix per target and graph unless justified, and no step
  saves on pull_request without a v0.9.78+ pin and `save-cache: auto`
  (or a listed justification for `true`).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@zackees zackees added the ci-full Run the complete release-equivalent CI matrix on this PR SHA label Sep 26, 2026
@zackees
zackees merged commit fc11eb8 into main Sep 26, 2026
14 of 19 checks passed
@zackees
zackees deleted the ci/355-cache-footprint branch September 27, 2026 05:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-full Run the complete release-equivalent CI matrix on this PR SHA

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ci(cache): setup-soldr PR saves blow the 10 GB cache (one PR offered ~23 GB, 14.6 GB of cook bases) — adopt setup-soldr#527 and guard it

1 participant