Skip to content

Commit 649a222

Browse files
committed
docs: add the Rust-core secret refresh to the release runbook
RELEASING.md covered wheels-vs-sdist and feature flags but never mentioned the step that most often breaks a release: src/* is gitignored, so a core change reaches CI and the wheels only via the RUST_SRC_B64_* secrets. Editing src/ and pushing does nothing on its own. Documents pack -> upload -> commit rust_core.sha256, and notes that stale-secrets-check now runs check-manifest against that tracked digest, so a forgotten upload fails CI rather than passing silently. Also warns against the tempting wrong fix - regenerating the manifest alone just re-points the anchor at the drift.
1 parent f9b67cc commit 649a222

1 file changed

Lines changed: 25 additions & 0 deletions

File tree

docs/RELEASING.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,31 @@ ls dist/ # *.whl only
2323
python -m twine check dist/*
2424
```
2525

26+
## Refresh the Rust core secrets after ANY `src/*.rs` change
27+
28+
`src/*` is gitignored, so a change to the core reaches CI and the wheels only
29+
through the `RUST_SRC_B64_*` Actions secrets. Editing `src/` and pushing does
30+
**nothing** on its own: the build keeps compiling whatever the secrets last held.
31+
This has bitten the project — a fix once sat local-only for four hours while
32+
every CI run reported green against older source.
33+
34+
```bash
35+
python scripts/pack_rust_core.py pack # writes .secrets/ + rust_core.sha256
36+
for i in $(seq 1 12); do
37+
gh secret set "RUST_SRC_B64_$i" < ".secrets/RUST_SRC_B64_$i.txt"
38+
done
39+
rm -rf .secrets
40+
git add rust_core.sha256 && git commit # MUST be committed with the change
41+
```
42+
43+
`rust_core.sha256` is the tracked digest of the packed core; it is the only
44+
record of the core's identity that travels with a commit. The
45+
`stale-secrets-check` workflow restores the secrets and runs
46+
`pack_rust_core.py check-manifest` against it, so **forgetting the upload now
47+
fails CI** instead of passing silently. Do not "fix" a red check-manifest by
48+
regenerating the manifest alone — that just re-points the anchor at the drift.
49+
Upload the secrets.
50+
2651
## Feature flags in published wheels
2752

2853
`Cargo.toml` defaults to `["opencl", "cuda"]`, but the release workflow builds with:

0 commit comments

Comments
 (0)