chore: Rust 1.98.0 (latest stable) + refresh every dependency #61

Closed
dcharlot wants to merge 1 commit from chore/rust-1.98-and-deps into main
Owner

⛔ CLOSED — superseded, and one part of it was wrong

main now carries everything this PR delivered, landed independently while it was in flight: both rust-toolchain.toml files at 1.98.0; the 33 CI workflow pins (6cdc9238); the workspace-wide dependency refresh (84fc3244); the budget_funds/caveats Grant fixes in jouleclaw, mesh and joule-ui (be643d12); the smart-byte-zk phantom rand_core alloc removal; and the eoc-tools reqwest query feature, with the same reasoning.

The only thing unique to this branch was bumping 26 workspaces' rust-version from 1.97 to 1.98. That was a mistake, and I checked rather than argued it:

cargo +1.97.1 check -p proof-schema -p proof-cascade   ->   clean

The code compiles on 1.97.1, so rust-version = "1.97" is accurate. MSRV should state what the code actually requires, not mirror whichever toolchain happens to be pinned — bumping it would have excluded 1.97 users for no reason. Leaving MSRV alone while bumping only the toolchain was the correct call.

One item is still outstanding and has moved to #63: rand 0.10.2 does not compile (use rand::RngExt; inside its own src/rng.rs:168 — a crate referring to itself by name). It is still in main's lock and still breaks cargo check --workspace for eoc-rs.


Toolchain 1.97.1 → 1.98.0 (latest stable, released 2026-08-18) and a full dependency refresh.

Scope

rust-toolchain.toml 2 files
CI workflow pins 33 across 5 workflows
workspace rust-version (MSRV) 26
dependency changes 1,751 across 25 workspaces, all semver-compatible

Nothing pinned to 1.97 remains. The vendored jouledesk-rs/vendor/libwebrtc tree is deliberately excluded — it's a patched vendor drop, not a managed dependency.

The 1.97 in jouleclaw-loader-gguf/BENCHMARKS.md is a benchmark timing (1.97 ms), not a version. A blind find-and-replace would have corrupted a results table, so pins were matched by field rather than by string.

Also: finishes a cross-workspace regression the repo was carrying

When budget_funds and caveats were added to jcp_schema::Grant, the workspaces that path-depend on jcp-schema were fixed a wave at a time and three were missed — joule-ui, jouleclaw and mesh still constructed Grant without the new fields and had been failing to compile since.

cargo test --workspace inside jcp-rs never builds them, which is precisely why it went unseen. Checking every workspace independently is what surfaced it. Two of the six sites used field-init shorthand (budget_uj, with no colon) and needed a second pass — a reminder that a regex over initializers is no substitute for compiling.

Verified

21 of 25 workspaces pass cargo check --workspace --all-targets.

Not fixed here — and NOT caused by this change

Each verified against the pristine tree rather than assumed:

  • eoc/eoc-rs — RequestBuilder::query is unavailable because reqwest is taken with default-features = false, dropping the feature that provides it. reqwest is 0.13.4 before and after, and serde_urlencoded is absent from the lock in both. Fixing it is a choice between enabling the feature and changing the call sites.
  • openpay — Hmac::new_from_slice unresolved. hmac 0.12.1, digest 0.10.7, sha2 0.10.9 — identical before and after. Same versions in, same result.
  • smart-byte/smart-byte-rs — never resolved on main. Its manifest requested two features that do not exist: rand_core's alloc (no version has ever had it) and cbc's std (0.2 offers alloc, which is what encrypt_padded_vec_mut actually needs). Both corrected here, which advances it from will not resolve to will not compile — exposing the real problem: the manifest wants rand = "0.10" while the lock pinned rand 0.8.8, and 38 files still use the 0.8-era API (thread_rng, rand::rngs::OsRng). That's a two-major-version source migration and deserves its own change, not a side effect of a toolchain bump.

wai/wai-rs needs libjxl present for its default feature set; CI installs libjxl-dev, so that's a local environment gap rather than a repo failure.

> ## ⛔ CLOSED — superseded, and one part of it was wrong > > `main` now carries everything this PR delivered, landed independently while it was in flight: both `rust-toolchain.toml` files at 1.98.0; the 33 CI workflow pins (`6cdc9238`); the workspace-wide dependency refresh (`84fc3244`); the `budget_funds`/`caveats` Grant fixes in `jouleclaw`, `mesh` and `joule-ui` (`be643d12`); the `smart-byte-zk` phantom `rand_core` `alloc` removal; and the `eoc-tools` reqwest `query` feature, with the same reasoning. > > The **only** thing unique to this branch was bumping 26 workspaces' `rust-version` from 1.97 to 1.98. **That was a mistake**, and I checked rather than argued it: > > ``` > cargo +1.97.1 check -p proof-schema -p proof-cascade -> clean > ``` > > The code compiles on 1.97.1, so `rust-version = "1.97"` is **accurate**. MSRV should state what the code actually requires, not mirror whichever toolchain happens to be pinned — bumping it would have excluded 1.97 users for no reason. Leaving MSRV alone while bumping only the toolchain was the correct call. > > One item is still outstanding and has moved to #63: **`rand 0.10.2` does not compile** (`use rand::RngExt;` inside its own `src/rng.rs:168` — a crate referring to itself by name). It is still in `main`'s lock and still breaks `cargo check --workspace` for `eoc-rs`. --- Toolchain **1.97.1 → 1.98.0** (latest stable, released 2026-08-18) and a full dependency refresh. ## Scope | | | |---|---| | `rust-toolchain.toml` | 2 files | | CI workflow pins | **33** across 5 workflows | | workspace `rust-version` (MSRV) | **26** | | dependency changes | **1,751** across 25 workspaces, all semver-compatible | Nothing pinned to `1.97` remains. The vendored `jouledesk-rs/vendor/libwebrtc` tree is deliberately excluded — it's a patched vendor drop, not a managed dependency. > The `1.97` in `jouleclaw-loader-gguf/BENCHMARKS.md` is a benchmark timing (`1.97 ms`), **not** a version. A blind find-and-replace would have corrupted a results table, so pins were matched by field rather than by string. ## Also: finishes a cross-workspace regression the repo was carrying When `budget_funds` and `caveats` were added to `jcp_schema::Grant`, the workspaces that path-depend on `jcp-schema` were fixed a wave at a time and **three were missed** — `joule-ui`, `jouleclaw` and `mesh` still constructed `Grant` without the new fields and had been failing to compile since. `cargo test --workspace` inside `jcp-rs` never builds them, which is precisely why it went unseen. Checking every workspace independently is what surfaced it. Two of the six sites used field-init shorthand (`budget_uj,` with no colon) and needed a second pass — a reminder that a regex over initializers is no substitute for compiling. ## Verified **21 of 25 workspaces** pass `cargo check --workspace --all-targets`. ## Not fixed here — and NOT caused by this change Each verified against the pristine tree rather than assumed: - **`eoc/eoc-rs`** — `RequestBuilder::query` is unavailable because reqwest is taken with `default-features = false`, dropping the feature that provides it. reqwest is **0.13.4 before and after**, and `serde_urlencoded` is absent from the lock in **both**. Fixing it is a choice between enabling the feature and changing the call sites. - **`openpay`** — `Hmac::new_from_slice` unresolved. hmac `0.12.1`, digest `0.10.7`, sha2 `0.10.9` — **identical before and after**. Same versions in, same result. - **`smart-byte/smart-byte-rs`** — **never resolved on `main`.** Its manifest requested two features that do not exist: `rand_core`'s `alloc` (no version has ever had it) and `cbc`'s `std` (0.2 offers `alloc`, which is what `encrypt_padded_vec_mut` actually needs). Both corrected here, which advances it from *will not resolve* to *will not compile* — exposing the real problem: the manifest wants `rand = "0.10"` while the lock pinned **`rand 0.8.8`**, and **38 files** still use the 0.8-era API (`thread_rng`, `rand::rngs::OsRng`). That's a two-major-version source migration and deserves its own change, not a side effect of a toolchain bump. `wai/wai-rs` needs `libjxl` present for its default feature set; CI installs `libjxl-dev`, so that's a local environment gap rather than a repo failure.
chore: Rust 1.98.0 (latest stable) + refresh every dependency
Some checks failed
wai cross-architecture byte-equality / windows-x86_64 (pull_request) Successful in 30s
wai cross-architecture byte-equality / linux-aarch64 (pull_request) Successful in 42s
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Failing after 1m3s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 1m1s
WAI conformance / cargo-class corpora · windows (pull_request) Successful in 1m21s
jouleclaw public surface must stay documented / Public-surface audit (jouleclaw-rs) (pull_request) Successful in 58s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 20s
WAI conformance / cross-arch byte-equality · windows (pull_request) Successful in 22s
wai cross-architecture byte-equality / linux-x86_64 (pull_request) Successful in 14s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 29s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 15s
wai cross-architecture byte-equality / macos-arm64 (reference) (pull_request) Successful in 55s
WAI neural decoders end-to-end / synthetic fixtures → Rust decode → reference (±4) (pull_request) Failing after 1m5s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 13m25s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 3m42s
28c48b46e2
Toolchain 1.97.1 -> 1.98.0 (released 2026-08-18) in both `rust-toolchain.toml`
files, 33 pins across 5 CI workflows, and 26 workspace `rust-version`
declarations. Nothing pinned to 1.97 remains.

Dependencies refreshed in all 25 workspaces: 1,751 changes, every one
semver-compatible. The vendored `jouledesk-rs/vendor/libwebrtc` tree is
deliberately excluded — it is a patched vendor drop, not a managed dependency.

Note the `1.97` in `jouleclaw-loader-gguf/BENCHMARKS.md` is a benchmark timing
("1.97 ms"), not a version; a blind find-and-replace would have corrupted a
results table, so pins were matched by field rather than by string.

Also completes a cross-workspace regression this repo has been carrying. When
`budget_funds` and `caveats` were added to `jcp_schema::Grant`, the workspaces
that path-depend on `jcp-schema` were fixed one wave at a time, and three were
missed: `joule-ui`, `jouleclaw` and `mesh` still built `Grant` without the new
fields and had been failing to compile since. `cargo test --workspace` inside
`jcp-rs` never builds them, which is exactly why it went unseen; checking every
workspace independently is what surfaced it. Two of the six sites used field-init
shorthand (`budget_uj,` with no colon), so they needed a separate pass — a
reminder that a regex over initializers is not a substitute for compiling.

Verified: 21 of 25 workspaces `cargo check --workspace --all-targets` clean.

Not fixed here, and NOT caused by this change — each verified against the
pristine tree rather than assumed:

- `eoc/eoc-rs`: `RequestBuilder::query` is unavailable because reqwest is taken
  with `default-features = false`, which drops the feature providing it.
  reqwest is 0.13.4 before and after, and `serde_urlencoded` is absent from the
  lock in both, so this predates the refresh. Fixing it is a choice between
  enabling the feature and changing the call sites.
- `openpay`: `Hmac::new_from_slice` unresolved. hmac 0.12.1, digest 0.10.7 and
  sha2 0.10.9 are identical before and after — same versions in, same result.
- `smart-byte/smart-byte-rs`: never resolved on main. Its manifest asked for two
  features that do not exist (`rand_core`'s `alloc`, which no version has ever
  had, and `cbc`'s `std`, where 0.2 offers `alloc`); both are corrected here,
  which advances it from "will not resolve" to "will not compile" and exposes
  the real problem — the manifest wants `rand = "0.10"` while the lock pinned
  `rand 0.8.8` and 38 files still use the 0.8-era API (`thread_rng`,
  `rand::rngs::OsRng`). That is a two-major-version source migration and wants
  its own change, not a side effect of a toolchain bump.

`wai/wai-rs` needs libjxl present to build its default feature set; CI installs
`libjxl-dev`, so this is a local environment gap rather than a repo failure.
dcharlot closed this pull request 2026-08-27 13:34:51 -04:00
Some checks failed
wai cross-architecture byte-equality / windows-x86_64 (pull_request) Successful in 30s
wai cross-architecture byte-equality / linux-aarch64 (pull_request) Successful in 42s
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Failing after 1m3s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 1m1s
WAI conformance / cargo-class corpora · windows (pull_request) Successful in 1m21s
jouleclaw public surface must stay documented / Public-surface audit (jouleclaw-rs) (pull_request) Successful in 58s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 20s
WAI conformance / cross-arch byte-equality · windows (pull_request) Successful in 22s
wai cross-architecture byte-equality / linux-x86_64 (pull_request) Successful in 14s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 29s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 15s
wai cross-architecture byte-equality / macos-arm64 (reference) (pull_request) Successful in 55s
WAI neural decoders end-to-end / synthetic fixtures → Rust decode → reference (±4) (pull_request) Failing after 1m5s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 13m25s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 3m42s

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Transaction-Science/open-standards!61
No description provided.