chore(deps): weekly batch — breaking
Weekly batch for the major-breaking group. Replaces the single-dependency Renovate PRs listed under "Supersedes". Batch config: #568. Source changes are limited to call-site ports for the new majors (see "Code changes"); the bumps themselves are in the manifests and lockfile.
Ubuntu 26.04 split
The Ubuntu 26.04-only image and release-host changes were extracted into parked PR #595. That PR is intentionally open and unmerged for later evaluation. This PR keeps the supported Ubuntu 24.04 Dockerfile, release hosts, and golden behavior from #594.
Dependency updates (current -> new)
Workspace manifest (Cargo.toml, [workspace.dependencies]):
- axum 0.7 -> 0.8
- axum-server 0.7 -> 0.8
- base64 0.22 -> 0.23
- cap-std 3.4 -> 4.0
- cron 0.12 -> 0.17
- opentelemetry, opentelemetry_sdk, opentelemetry-otlp, opentelemetry-http, opentelemetry-appender-tracing, opentelemetry-semantic-conventions 0.32 -> 0.33
- rand 0.8 -> 0.10
- rusqlite 0.37 -> 0.40
- similar 2.5 -> 3.0
- thiserror 1.0 -> 2.0
- tokio-tungstenite 0.23 -> 0.30
- toml 0.8 -> 1.0 (see Notes)
- tower-http 0.5 -> 0.7
- tracing-opentelemetry 0.33 -> 0.34
- utoipa 5 -> 6
- zip 2 -> 8
Crate manifests:
- nix 0.27 -> 0.31 (crates/preloop-orchestrator, crates/preloop-runner)
- tree-sitter 0.25 -> 0.27 (crates/runner-watch)
- rsa 0.9 (workspace): version unchanged;
getrandomfeature enabled (see Notes)
Images and runners:
ci/runner.Dockerfileand.github/workflows/release.yml/release-runner.ymlremain on supported Ubuntu 24.04; the former 26.04-only delta is parked in #595.
GitHub Actions (SHA-pinned, comment matches the tag; SHAs resolved with gh api):
- actions/checkout v5.1.0 -> v7.0.1 (15 workflows, 32 uses)
- actions/upload-artifact v4.6.2 -> v7.0.1 (10 workflows, 17 uses)
- actions/cache v4 -> v6 (ci.yml)
- astral-sh/setup-uv v9.0.0 -> v10.2.0 (zizmor.yml)
Supersedes
#527, #529, #530, #533, #536, #539, #541, #543, #544, #551, #554, #555, #557, #558, #561, #562, #563, #564, #565, #566
Not closed by this batch: #542 (toml 0.9, see Notes), #549 (axum; also edits benchmarks/preloop-perf), #556 (checkout v7; also edits fixtures/upstream-workflows), #567 (ubuntu; also edits benchmarks/real-world Dockerfiles).
Code changes
Call-site ports only, with no intended behavior change:
- axum 0.8: route captures
:paramand*restare now{param}and{*rest}in production and test routers, including/{orchestration_id}//idtoken/....rerun_runtakesResult<Json<_>, JsonRejection>, so a malformed or non-JSON body still falls back to the default rerun, as it did under 0.7. - rand 0.10:
thread_rng()becomesrand::rng();RngCoreandgen*becomeRngandRngExt::random*. - rsa: RSA keygen and signing use
rsa::rand_core::OsRng(see Notes for the feature). - nix 0.31:
killpgtakes nix'sSignal.command-groupstill signals through its own nix 0.27, so both signal types stay inprocess.rs. - tokio-tungstenite 0.30 and axum ws:
Utf8Bytesconversions, which shareBytesand do not copy. - clippy 1.99:
chunks_exactbecomesas_chunksinpreloop-runner-server/src/live_log_segments.rs;fetch_updatebecomestry_updateinpreloop-orchestrator. - Tests:
snapshot_publishes_without_staging_in_the_process_temp_dirno longer setsTMPDIR. The mutation raced with concurrent tests and causedENOENTflakes. benchmarks/preloop-perf: axum 0.8 pin.benchmarks/control-load: rand 0.10 renames. Both compile-only, approved by the repo owner. No otherbenchmarks/file changed.
Notes
- toml: the plan lists both 0.8 -> 0.9 (#542) and 0.8 -> 1.0 (#564) for the same
[workspace.dependencies]line. Only one can apply, so 1.0 is applied (resolves to 1.1.8) and #542 stays open. - Frozen paths:
fixtures/upstream-workflows/**is untouched.benchmarks/**has only the compile-only edits listed under Code changes. - rsa
getrandom: the workspace enables rsa'sgetrandomfeature sorsa::rand_core::OsRng(rand_core 0.6) is available after the rand port. No version change. - Metrics label format: HTTP route labels now use axum's matched-path syntax, for example
/api/v1/runs/{run_id}instead of/api/v1/runs/:run_id. Label cardinality is unchanged. Dashboards or alerts that match the:paramform need updating. - #549: this PR's axum 0.8 bump, including the
benchmarks/preloop-perfpin, supersedes #549's content. The Ubuntu 26.04 runner-image/workflow delta is parked separately in #595; #567'sbenchmarks/real-worldDockerfile edits are not included, so #567 stays open for that part. Neither PR is closed by this one. - Supply chain: current main's cargo-vet policy (including the #572 batch exemptions from #593) is retained;
cargo vet --lockedpasses on the rebased tree. - Overlaps with deps/batch-non-breaking (checkout lines, Cargo.lock) and deps/batch-crypto (Cargo.toml adjacent lines, Cargo.lock). Expect rebase conflicts after each earlier merge.
Verification
Rebased head 0463902e1 onto current main 4e9377365:
cargo fmt --all -- --check: passcargo check --workspace --all-targets --locked: passcargo clippy --workspace --all-targets --locked -- -D warnings: passcargo vet --locked: pass (17 fully audited, 2 partially audited, 472 exempted)- Full workspace tests were not rerun after this rebase; the prior #572 run reported 2814 passed and one pre-existing
github::tests::expired_webhook_lease_rejects_all_mutationsdisk-I/O race under parallel load. - Not run:
just conformandjust dogfood; they need official-runner captures and a live runner, so the runner-facing gate remains open.
Summary by cubic
Batches this week's major-version dependency updates into a single PR, replacing 20 separate Renovate PRs. Call sites across the workspace are ported to the new APIs with no intended behavior changes.
Dependency updates
- Workspace manifest:
axum/axum-server0.7→0.8,base640.22→0.23,cap-std3.4→4.0,cron0.12→0.17,rand0.8→0.10,rusqlite0.37→0.40,similar2.5→3.0,thiserror1.0→2.0,toml0.8→1.0,tokio-tungstenite0.23→0.30,tower-http0.5→0.7,tracing-opentelemetry0.33→0.34,utoipa5→6,zip2→8, and the sixopentelemetrycrates 0.32→0.33. - Crate manifests:
nix0.27→0.31 in the runner and orchestrator,tree-sitter0.25→0.27 inrunner-watch. - Runners and images move to Ubuntu 26.04;
actions/checkoutv5→v7,actions/upload-artifactv4→v7,actions/cachev4→v6, andastral-sh/setup-uvv9→v10 move to the SHA-pinned commits matching those tags. toml1.0 wins over the also-listed 0.8→0.9 bump for the same workspace line, so #542 stays open; frozen pathsbenchmarks/**andfixtures/upstream-workflows/**are untouched, leaving #549 and #556 open.- Release jobs need the
ubuntu-26.04runner label provisioned before merge; overlaps with the non-breaking and crypto batches mean rebase conflicts after each earlier merge. The workspace build against the locked lockfile is still being verified.
Porting call sites
axum0.8 drops:param/*wildcardroutes; production and test routes use{param}/{*rest}.rerun_runtakesResult<Json<_>, JsonRejection>to keep the old default-rerun fallback on malformed bodies, and metric route labels followMatchedPath's{param}form.rand0.10 renamesthread_rng→rngandgen/gen_range→random/random_range; RSA call sites usersa::rand_core::OsRng.- WebSocket text messages convert
Utf8Bytesbetweentokio-tungstenite0.30 andaxumwithout copying;nix0.31killpgusesnix'sSignalalongside command-group'snix0.27 type. - The snapshot staging test stops mutating
TMPDIR, fixing an ENOENT flake from racing tempdir creation. - Clippy 1.99 fixes:
fetch_update→try_updatein the orchestrator andchunks_exact→as_chunksinlive_log_segments.
Summary by CodeRabbit
- Bug Fixes
- Rerun requests with missing, malformed, or non-JSON bodies now use the default “rerun all” behavior.
- Chores
- Updated CI, verification, and release workflows, including moving release builds to Ubuntu 26.04.
- Updated request routing and communication handling for compatibility with current platform behavior.
- Refreshed dependencies and test and benchmark tooling while preserving existing workflows and behavior.