Problem
scripts/ci/test-ci-storage-policy.py still encodes a GitHub Actions cache-era policy (ban maturin sccache because of GHA backend; forbid large trees in actions/cache). We run on Blacksmith, where sticky disks (~3s hydrate) and colocated cache are the right tools—and Binding RC does not mount sticky target/ today.
Objective
Rewrite CI storage policy around Blacksmith primitives so Binding RC and publish-track can use sticky disks and colocated cache honestly.
Parent
Blocks #383.
Requirements
| Allowed |
Purpose |
useblacksmith/stickydisk for target/, optional .sccache, large build trees |
Persist compile products across RC/publish-track runs |
Upstream actions/cache@v6 for ~/.cargo/registry + git (and pnpm/uv) |
Colocated Blacksmith cache; exact lockfile keys |
Local sccache with SCCACHE_DIR on a sticky disk |
Cross-crate compile cache without GHA-backend maturin sccache |
| Bigger Blacksmith runners for RC cells |
Documented as allowed |
| Still forbidden |
Why |
Putting target/ into actions/cache blobs |
Wrong tool — use sticky disks |
Maturin-action sccache: true (GHA-integrated) |
Prefer sticky SCCACHE_DIR / sticky target/ |
| Unbounded artifact uploads |
Keep consumer-driven retention for candidate partitions |
Update scripts/ci/test-ci-storage-policy.py and .github/workflows/README.md with Blacksmith-first rules and expected sticky key patterns for Binding RC.
Acceptance Criteria
- Storage policy tests pass and encode the allowed/forbidden table above.
- README documents Blacksmith-first rules.
- No Binding RC speed work is required to close this issue if policy + docs land; wiring sticky mounts may land here or in the Binding RC sub-issue without overlap of concern (policy vs RC workflow). Prefer policy/tests/docs in this issue; RC workflow mounts in the Binding RC issue.
BDD Completion Scenarios
Policy allows sticky target
Given a workflow uses useblacksmith/stickydisk for target/ with a lockfile-keyed identity
When storage policy tests run
Then the pattern is allowed
And target/ inside actions/cache remains forbidden.
Maturin GHA sccache still banned
Given maturin-action sccache: true
When storage policy tests run
Then the pattern fails
And sticky SCCACHE_DIR is documented as the replacement.
Non-Goals
- Achieving Binding RC ≤20m (sibling issue).
- Changing publish.yaml honesty.
Testing
python scripts/ci/test-ci-storage-policy.py (or repo-equivalent CI job) green.
Problem
scripts/ci/test-ci-storage-policy.pystill encodes a GitHub Actions cache-era policy (ban maturin sccache because of GHA backend; forbid large trees inactions/cache). We run on Blacksmith, where sticky disks (~3s hydrate) and colocated cache are the right tools—and Binding RC does not mount stickytarget/today.Objective
Rewrite CI storage policy around Blacksmith primitives so Binding RC and publish-track can use sticky disks and colocated cache honestly.
Parent
Blocks #383.
Requirements
useblacksmith/stickydiskfortarget/, optional.sccache, large build treesactions/cache@v6for~/.cargo/registry+ git (and pnpm/uv)sccachewithSCCACHE_DIRon a sticky disktarget/intoactions/cacheblobssccache: true(GHA-integrated)SCCACHE_DIR/ stickytarget/Update
scripts/ci/test-ci-storage-policy.pyand.github/workflows/README.mdwith Blacksmith-first rules and expected sticky key patterns for Binding RC.Acceptance Criteria
BDD Completion Scenarios
Policy allows sticky target
Given a workflow uses
useblacksmith/stickydiskfortarget/with a lockfile-keyed identityWhen storage policy tests run
Then the pattern is allowed
And
target/insideactions/cacheremains forbidden.Maturin GHA sccache still banned
Given maturin-action
sccache: trueWhen storage policy tests run
Then the pattern fails
And sticky
SCCACHE_DIRis documented as the replacement.Non-Goals
Testing
python scripts/ci/test-ci-storage-policy.py(or repo-equivalent CI job) green.