Repository navigation
build: 7-day soak across toolchain and deps, cold-path hints, pinned tooling #1020
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
29 commits
Select commit
Hold shift + click to select a range
254a9c4
build: pin rust 1.95.0 toolchain and bump msrv to 1.95
jdalton c99106d
perf: mark rare branches in hot install loops with cold_path()
jdalton c27c5fe
build: switch toolchain pin to nightly-2026-07-04 (7-day soak)
jdalton 297e659
build: enable cargo min-publish-age with a 7-day soak
jdalton 8e4684d
ci: pre-bake pinned nightly and 1.95 msrv floor in buildkite image
jdalton 5a228bc
build: add 7-day soak manager, taze via catalog, pinned external tools
jdalton 1d06f6a
ci: gate soak + tool pins and route installs through socket firewall
jdalton b813143
ci: shrink buildkite image via minimal toolchains, prebake sfw shims
jdalton 19abecd
refactor(soak): single paths.mts reference, neutral tool-rack layout
jdalton 5cd4f68
feat(soak): enforce catalog-shadowed pin lockstep
jdalton aa2f172
fix(soak): make update-deps dry-run actually dry
jdalton 7a593b5
fix(soak): timeout stalled external-tool downloads
jdalton f2c6590
fix(soak): harden gates and installer against review findings
jdalton 269bfab
build: gate docker prebake pins against tracked sources, add untracked
jdalton e16c379
build: pin pnpm 11.8 + npm 12 via the tool rack, dogfood dep installs
jdalton 0676cf0
fix(soak): shim self-clobber, windows .exe resolve, date guards; add …
jdalton 9166cfd
refactor(soak): perfectionist pass — dead code out, tests isolated, g…
jdalton 1caeae6
feat(soak): enforce the toolchain nightly soak, add the soak skill
jdalton 3c1e24e
docs(soak): align skill with claude prompting and skill-authoring gui…
jdalton cb6edd6
test(soak): cover cli paths, fixers, download token gating, installer…
jdalton eb89281
refactor(soak): dedupe the rust-toolchain.toml path, complete the hea…
jdalton d7d95f3
ci: bypass sfw for cargo — the proxy breaks local registry-mock tests
jdalton 4d99f93
style(lockfile): satisfy nightly clippy question_mark in local source…
jdalton 806bc95
fix(soak): windows-safe relative tar extraction; shfmt the shim template
jdalton d23f610
fix(soak): use System32 bsdtar on windows — Git Bash's GNU tar can't …
jdalton 699d0a0
fix(soak): windows handles forward to the rack — symlinks strand SEA …
jdalton 8be5a02
fix(deps): strip .exe from win32 tool handle base name
jdalton 7117e19
chore: encode PR home + push fork as a checked remote map
jdalton d7cf256
fix(deps): close the renovate soak bypass — explicit minimumReleaseAg…
jdalton File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| #!/usr/bin/env bash | ||
| # sfw shim for __CMD__ — pre-baked into the agent image; mirrors what | ||
| # scripts/soak/external-tools.mts --shims writes on dev machines. Routes the | ||
| # real package-manager invocation through Socket Firewall; the sentinel env | ||
| # var breaks recursion when sfw re-invokes the tool, and the real binary is | ||
| # found by stripping the tool-rack bin dir out of PATH. | ||
| set -euo pipefail | ||
| CLEAN_PATH=$(printf '%s' "$PATH" | tr ':' '\n' | grep -vFx '/root/.local/share/aube/dev-tools/bin' | paste -sd ':' -) | ||
| REAL=$(PATH="$CLEAN_PATH" command -v '__CMD__' || true) | ||
| if [ -n "${__SENTINEL__:-}" ] || [ -z "$REAL" ] || ! command -v sfw >/dev/null 2>&1; then | ||
| [ -n "$REAL" ] && exec "$REAL" "$@" | ||
| echo "__CMD__: not found" >&2 | ||
| exit 127 | ||
| fi | ||
| export __SENTINEL__=1 | ||
| exec sfw '__CMD__' "$@" |
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,89 @@ | ||
| --- | ||
| name: soak | ||
| description: Manages the repo's supply-chain soak window (SOAK_DAYS) — checks and fixes the derived surfaces, bumps or disables the window, adds dated per-package exclusions, and bumps pinned external tools. Use when a task touches minimumReleaseAge, min-release-age, min-publish-age, the nightly toolchain pin, external-tools.json, renovate.json, or taze cooldowns, or when investigating why a freshly published version won't install. | ||
| --- | ||
|
|
||
| # The soak window | ||
|
|
||
| One rule: a release must be at least `SOAK_DAYS` old before this repo | ||
| adopts it. The delay gives the ecosystem time to catch a malicious or | ||
| yanked release before we ever install it. The window is defined exactly | ||
| once — read the current value from `scripts/soak/constants.mts` and never | ||
| hardcode it elsewhere. Every surface derives from or is parity-checked | ||
| against it: | ||
|
|
||
| | Surface | Key | Units | | ||
| |---|---|---| | ||
| | `.cargo/config.toml` | `global-min-publish-age` | `"N days"` | | ||
| | `rust-toolchain.toml` | nightly channel date vs `# adopted:` line | days | | ||
| | `docs/pnpm-workspace.yaml` | `minimumReleaseAge` | minutes | | ||
| | `docs/.npmrc` | `min-release-age` | days | | ||
| | `docs/taze.config.mts` | `maturityPeriod` | imports `SOAK_DAYS` | | ||
| | `external-tools.json` | `soakBypass` annotations | days | | ||
| | `.github/renovate.json` | `minimumReleaseAge` (explicit — an `extends:` preset doesn't count) | `"N days"` | | ||
|
|
||
| ## Commands (mise tasks — the scripts live in `scripts/soak/`) | ||
|
|
||
| - `mise run soak` — parity-check every surface (CI-gated in test-linux) | ||
| - `mise run soak:fix` — rewrite drifted windows, prune expired exclusions | ||
| - `mise run deps:update` — bump npm (taze) + cargo deps through the window | ||
| - `mise run tools:check` / `tools:install` — validate / install the | ||
| SRI-pinned external tools (`external-tools.json`) | ||
| - `mise run test:scripts` — the scripts' own unit tests | ||
|
|
||
| A soak change is done when `mise run soak` and `mise run test:scripts` | ||
| both exit 0 — the same gates CI runs. Re-run them after every fix. | ||
|
|
||
| ## Change the window (one place) | ||
|
|
||
| 1. Edit `SOAK_DAYS` in `scripts/soak/constants.mts`. | ||
| 2. `mise run soak:fix` (rewrites cargo/npmrc/yaml; taze follows by import). | ||
| 3. `mise run soak` + `mise run test:scripts` — existing exclusion | ||
| annotations encode the old window and will be flagged; re-date or | ||
| remove them, then re-run until both pass. | ||
|
|
||
| **Opt out entirely**: set `SOAK_DAYS = 0` and run the same two steps — | ||
| cargo, pnpm/aube (`minimumReleaseAge: 0`), npm, and taze all treat zero as | ||
| disabled. There is deliberately no env-var bypass: opting out is a | ||
| committed, reviewable change, never a silent one. | ||
|
|
||
| ## Skip the soak for ONE package (dated, temporary) | ||
|
|
||
| Add to `minimumReleaseAgeExclude` in `docs/pnpm-workspace.yaml` with the | ||
| annotation on the line above (block list only — flow `[..]` is rejected | ||
| because a comment line can't attach to an inline entry): | ||
|
|
||
| ```yaml | ||
| # published: 2026-07-08 | removable: 2026-07-15 | ||
| - 'name@1.2.3' | ||
| ``` | ||
|
|
||
| `removable` = `published + SOAK_DAYS` (this example assumes a 7-day | ||
| window). `published` must be the real registry publish date. Once | ||
| `removable` passes, `mise run soak` fails until the pin is pruned | ||
| (`soak:fix` does it). Bare names / `@scope/*` globs are standing trust and | ||
| need no annotation. External tools use the same shape via a `soakBypass` | ||
| object in `external-tools.json`. | ||
|
|
||
| ## Bump the nightly toolchain | ||
|
|
||
| Pick the newest nightly at least `SOAK_DAYS` old **today**, set it as | ||
| `channel`, and update the `# adopted: <today>` line in | ||
| `rust-toolchain.toml` — `mise run soak` enforces the arithmetic. Also bump | ||
| the pre-baked toolchain in `.buildkite/linux-agent.Dockerfile` | ||
| (`mise run tools:check` fails on any drift between the image and the | ||
| tracked pins). | ||
|
|
||
| ## Maintaining this skill | ||
|
|
||
| `scripts/soak/` is the law; this file only documents it — when they | ||
| disagree, fix this file. When editing, follow Anthropic's guidance: | ||
|
|
||
| - [Prompting best practices](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices) | ||
| - [Prompting Claude Fable 5](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5) | ||
| - [Skill authoring best practices](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices) | ||
| - [Write an effective CLAUDE.md](https://code.claude.com/docs/en/best-practices#write-an-effective-claude-md) | ||
|
|
||
| Keep it concise (goal + constraints, not step enumeration), keep the | ||
| description in third person with explicit "use when" triggers, and keep | ||
| the window value in `constants.mts` rather than restating it here. |
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
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
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
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.