Skip to content

revert: undo 7-day soak toolchain changes - #1039

Merged
jdx merged 3 commits into
mainfrom
codex/revert-soak-toolchain
Jul 14, 2026
Merged

jdx merged 3 commits into
mainfrom
codex/revert-soak-toolchain

Conversation

@jdx

@jdx jdx commented Jul 14, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Why

aube 1.27.0 raised its MSRV to Rust 1.95 immediately before release, but Ubuntu Resolute currently provides Rust 1.93.1. The PPA source package still declared rustc (>= 1.93), so Launchpad scheduled the build and Cargo then rejected it.

This restores Rust 1.93 compatibility and keeps the Debian build dependency synchronized with the workspace MSRV.

Validation

  • cargo fmt --check
  • cargo clippy --all-targets -- -D warnings
  • cargo test
  • actionlint .github/workflows/ppa-publish.yml

Note

Medium Risk
Large removal of supply-chain CI gates and MSRV downgrade affect release/PPA compatibility; PPA metadata sync reduces future MSRV drift risk on Launchpad.

Overview
Reverts the 7-day soak and related supply-chain tooling from #1020: removes scripts/soak/, external-tools.json, the soak Claude skill, cargo min-publish-age, docs soak config (pnpm-workspace.yaml, .npmrc, taze), Renovate minimumReleaseAge, and Linux CI steps for soak, pinned PMs, and Socket Firewall shims. Buildkite agent image drops pre-baked sfw/shims and nightly toolchain pins in favor of stable + 1.93.0 MSRV rustup.

Workspace rust-version / MSRV goes 1.95 → 1.93 (Cargo.toml, .rules); rust-toolchain.toml is removed. Strips core::hint::cold_path() from hot-path error arms in linker, lockfile parser, resolver caches, and tarball handling.

PPA publish adds a step that reads a single workspace rust-version via cargo metadata and sets Build-Depends: rustc (>= ${MSRV}) so Launchpad matches the declared floor (fixes 1.95 vs Ubuntu 1.93.1).

Docs deps simplify: drops taze/untracked catalog tooling and refreshes docs/aube-lock.yaml accordingly.

Reviewed by Cursor Bugbot for commit 9a43a6a. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitai Bot commented Jul 14, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

@jdx, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 39 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Central YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: 2ff84326-b46d-4e6c-8d8c-b343d1585f12

📥 Commits

Reviewing files that changed from the base of the PR and between 310470d and 9a43a6a.

📒 Files selected for processing (37)
  • .buildkite/linux-agent.Dockerfile
  • .buildkite/sfw-shim-template.sh
  • .cargo/config.toml
  • .claude/skills/soak/SKILL.md
  • .github/renovate.json
  • .github/workflows/ci.yml
  • .github/workflows/ppa-publish.yml
  • .gitignore
  • .rules
  • Cargo.toml
  • crates/aube-linker/src/materialize.rs
  • crates/aube-lockfile/src/pnpm/subset.rs
  • crates/aube-lockfile/src/source.rs
  • crates/aube-resolver/src/semver_util.rs
  • crates/aube-store/src/tarball.rs
  • docs/.gitignore
  • docs/.npmrc
  • docs/aube-lock.yaml
  • docs/package.json
  • docs/pnpm-workspace.yaml
  • docs/taze.config.mts
  • external-tools.json
  • mise.toml
  • rust-toolchain.toml
  • scripts/soak/constants.mts
  • scripts/soak/constants.test.mts
  • scripts/soak/dockerignore.test.mts
  • scripts/soak/external-tools.mts
  • scripts/soak/external-tools.test.mts
  • scripts/soak/paths.mts
  • scripts/soak/rack.test.mts
  • scripts/soak/remotes.mts
  • scripts/soak/remotes.test.mts
  • scripts/soak/soak.mts
  • scripts/soak/soak.test.mts
  • scripts/soak/update-deps.mts
  • scripts/soak/update-deps.test.mts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Jul 14, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

Reverts the 7-day supply-chain soak, dated nightly toolchain, Socket Firewall CI gates, and core::hint::cold_path() calls introduced in #1020, and lowers the workspace MSRV from 1.95 to 1.93 to restore compatibility with Ubuntu Resolute's rustc. The main net-new addition is a cargo metadata-driven MSRV derivation in ppa-publish.yml that keeps Build-Depends: rustc (>= ${MSRV}) in sync with the workspace automatically.

  • MSRV & PPA: Cargo.toml rust-version is reset to 1.93; ppa-publish.yml now resolves it at build time via cargo metadata --no-deps with jq guards that fail loudly if any workspace crate omits rust-version or if values diverge.
  • CI / Dockerfile: soak gates, tools:check, Socket Firewall shims, and the pinned nightly toolchain are removed; the Buildkite image goes back to stable + a minimal 1.93.0 MSRV toolchain with rustfmt/clippy on stable.
  • Rust source: all core::hint::cold_path() calls are dropped (the intrinsic was stabilised in 1.95, above the new MSRV floor), and the exec: prefix branch in source.rs is rewritten as an explicit if-let/else for clarity with no semantic change.

Confidence Score: 5/5

Safe to merge — this is a targeted revert that restores a working build state and adds a robust MSRV-derivation mechanism to prevent the same PPA drift from recurring.

Every changed file is internally consistent: the MSRV downgrade, cold_path() removal, toolchain simplification, and PPA metadata derivation all move in the same direction. The new jq MSRV logic in ppa-publish.yml correctly errors on missing or inconsistent rust-version fields, and the regex guard catches malformed output before it reaches debian/control. No logic bugs, data-loss paths, or broken contracts were found across the 37 changed files.

No files require special attention.

Important Files Changed

Filename Overview
.buildkite/linux-agent.Dockerfile Removes Socket Firewall pre-baking and dated nightly; installs stable + 1.93.0 (both --profile minimal); curl flags (-fsSL, --proto, --tlsv1.2) preserved from before
.github/workflows/ppa-publish.yml Adds new Resolve minimum supported Rust version step that derives MSRV from cargo metadata and validates the format; Build-Depends now uses the dynamic ${MSRV}; logic correctly errors on missing or inconsistent rust-version fields
.github/workflows/ci.yml Removes soak/tools:check/test:scripts gates, socket firewall setup steps, and SFW_SHIM_ACTIVE_CARGO env var; straightforward revert
Cargo.toml Workspace MSRV downgraded from 1.95 to 1.93; matches Ubuntu Resolute's available rustc and the PPA Build-Depends derivation
crates/aube-lockfile/src/source.rs Refactors the exec: prefix match from a ?-inside-else trick to an explicit if-let/else chain; semantically identical, cleaner without cold_path()
crates/aube-lockfile/src/pnpm/subset.rs Removes core::hint::cold_path() from parse error branches; necessary for MSRV 1.93 since cold_path was stabilized in 1.95, no logic change
crates/aube-resolver/src/semver_util.rs Removes cold_path() from cache-miss branches; the hint was semantically incorrect since cache misses are warm paths for new inputs
crates/aube-linker/src/materialize.rs Removes cold_path() from three link-error arms; no logic change
crates/aube-store/src/tarball.rs Removes cold_path() from four tarball-rejection branches; no logic change
.cargo/config.toml Removes [unstable] min-publish-age and [registry] global-min-publish-age; the unstable feature required the pinned nightly toolchain which is also being removed
.rules Updates MSRV, removes soak section, removes cold_path() from performance guidance, drops supply_chain priority from 4 to 2
.gitignore Simplifies .claude/ gitignore to exclude entire directory; consistent with removal of the committed soak skill

Reviews (2): Last reviewed commit: "fix: harden build toolchain validation" | Re-trigger Greptile

Comment thread .buildkite/linux-agent.Dockerfile Resolved
Comment thread .github/workflows/ppa-publish.yml Resolved
Comment thread .buildkite/linux-agent.Dockerfile Resolved
@jdx
jdx merged commit 61c6af7 into main Jul 14, 2026
19 checks passed
@jdx
jdx deleted the codex/revert-soak-toolchain branch July 14, 2026 21:22
@cursor cursor Bot mentioned this pull request Jul 14, 2026
jdalton added a commit to jdalton/aube that referenced this pull request Jul 28, 2026
test-linux failed because the sfw shims were staged BEFORE : the aube-registry retry tests hit local mocks addressed as
registry.npmjs.org:<port>, and sfw's loopback NO_PROXY exemption keys
on the address, not the socket — hostname-addressed mocks route into
the proxy and its registry semantics 405 the mock's write endpoints.
The firewall step now sits after the cargo suite, immediately before
the one step that does network installs (docs:build), which is exactly
the traffic it exists to scan.

Review fixes (greptile + coderabbit):
- soak-autofix: lease-checked force push (fetch the bot branch, then
  --force-with-lease) so a concurrent actor's commits are never
  clobbered.
- checkDockerPrebake: parse the rustup install line's argument list
  instead of substring-matching — 'toolchain install 1.91.0 1.93.0'
  must satisfy msrv 1.93 even though 'toolchain install 1.93' never
  appears as a substring.
- RUSTUP_CARGO resolves cargo.exe on Windows.
- remotes: accept credential-bearing https remotes
  (https://user@github.com/...).
- .cargo/config.toml: comment no longer claims a pinned nightly —
  documents the per-invocation  path (aubepkg#1039).
jdalton added a commit to jdalton/aube that referenced this pull request Jul 28, 2026
test-linux failed because the sfw shims were staged BEFORE `mise run
test`: the aube-registry retry tests hit local mocks addressed as
registry.npmjs.org:<port>, and sfw's loopback NO_PROXY exemption keys
on the address, not the socket — hostname-addressed mocks route into
the proxy and its registry semantics 405 the mock's write endpoints.
The firewall step now sits after the cargo suite, immediately before
the one step that does network installs (docs:build), which is exactly
the traffic it exists to scan.

Review fixes (greptile + coderabbit):
- soak-autofix: lease-checked force push (fetch the bot branch, then
  --force-with-lease) so a concurrent actor's commits are never
  clobbered.
- checkDockerPrebake: parse the rustup install line's argument list
  instead of substring-matching — 'toolchain install 1.91.0 1.93.0'
  must satisfy msrv 1.93 even though 'toolchain install 1.93' never
  appears as a substring.
- RUSTUP_CARGO resolves cargo.exe on Windows.
- remotes: accept credential-bearing https remotes
  (https://user@github.com/...).
- .cargo/config.toml: comment no longer claims a pinned nightly —
  documents the per-invocation 'cargo +nightly update' path (aubepkg#1039).
jdalton added a commit to jdalton/aube that referenced this pull request Jul 30, 2026
…ubepkg#1020, aubepkg#1039)

Re-lands the 7-day dependency soak window and the pinned-tooling setup,
guarded so it can't push the MSRV ceiling. Folds in the follow-up review
and adversarial-review fixes made on top of the original re-land: loud
failures when cargo silently ignores min-publish-age, npm
min-release-age-exclude gating, unauthenticated download fallback with a
single 5xx retry, scoping the firewall past the cargo suite, and the
soak-fixer no longer reformatting files it does not own.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant