fix(deps): bump Wasmtime to 46.0.2 for RUSTSEC-2026-0222 - #184
fix(deps): bump Wasmtime to 46.0.2 for RUSTSEC-2026-0222#184flyingrobots wants to merge 1 commit into
Conversation
RUSTSEC-2026-0222 ("Stores can mix up type indices between engines")
affects the pinned Wasmtime 46.0.1 engine. The advisory's fixed ranges are
>=24.0.12 <25, >=36.0.13 <37, >=46.0.2 <47, or >=47.0.3; 46.0.2 is the
smallest move from the current pin and stays patch-level within 46.x.
The pin is exact and asserted in more than one place, so the bump moves
them together:
- crates/edict-provider-host-wasmtime/Cargo.toml (`=46.0.1` -> `=46.0.2`)
- xtask/src/provider_dependencies.rs (WASMTIME_VERSION, the `req` check,
and its failure message)
- docs/topics/providers/architecture.md engine prose
- Cargo.lock (wasmtime plus its 13 internal crates and pulley)
The provider component fixture inventory records a new `sourceDigest`
because the workspace Cargo.lock is one of its hashed provenance inputs.
All five component digests are byte-identical: the guest components are
built for wasm32-unknown-unknown and do not depend on the host engine
version.
docs-impact: providers architecture shelf updated with the engine version;
no behavior, ABI, or golden artifact change. The historical CHANGELOG entry
naming 46.0.1 is left intact as a record of what shipped at the time.
Verified with cargo deny --locked check (advisories ok, bans ok, licenses
ok, sources ok) and cargo xtask verify (full gate, 25 shelves, Wasmtime
boundary verified).
|
Warning Review limit reached
Next review available in: 32 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the 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 configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (5)
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. Comment |
|
@codex review please CodeRabbit reports Scope for review: a patch-level Wasmtime bump ( All four CI checks pass, including |
|
Codex Review: Didn't find any major issues. 🚀 Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Plain-English Walkthrough
TL;DR
cargo denybegan failing onmainbecause a new advisory, RUSTSEC-2026-0222,covers the Wasmtime version this workspace pins. This raises the pinned engine
from
46.0.1to46.0.2, the smallest move that clears the advisory, andupdates the four places that assert the pin plus the one provenance digest that
depends on the lockfile.
Contract-visible result: none. Patch-level within
46.x, no host API change, noprovider ABI change, no golden artifact change.
advisories ok, bans ok, licenses ok, sources ok[claim:deny-clean, confidence:1.00].No issues are closed by this PR.
Walkthrough
The advisory
RUSTSEC-2026-0222, "Stores can mix up type indices between engines", affects
the Wasmtime engine that
edict-provider-host-wasmtimeembeds[claim:advisory-applies, confidence:1.00]. The advisory lists four fixed ranges:
>=24.0.12 <25,>=36.0.13 <37,>=46.0.2 <47, and>=47.0.3. This workspacepins
46.0.1, so46.0.2is the smallest move that clears it and the only onethat avoids a major-version jump.
This failure is not new work landing badly; it is a fresh advisory published
against an unchanged dependency. CI last ran green on this repository on
2026-07-30, and nothing in the dependency graph has moved since
[claim:preexisting, confidence:0.95].
Why one bump touches five files
The Wasmtime version is not a loose range. It is an exact pin, and that pin is
independently asserted by the provider dependency boundary check, so the two
must move together or the gate fails.
crates/edict-provider-host-wasmtime/Cargo.toml=46.0.2xtask/src/provider_dependencies.rs—WASMTIME_VERSIONxtask/src/provider_dependencies.rs—reqcheckxtask/src/provider_dependencies.rs— failure messagedocs/topics/providers/architecture.mdCargo.lockmoves too, carrying Wasmtime plus its thirteen internal crates andpulley-interpreter/pulley-macros, all46.0.1 -> 46.0.2.The one fixture digest that moves, and why it is not a behavior change
The local gate flagged that provider component fixtures needed regeneration,
which is worth explaining rather than silently regenerating. The fixture
inventory stores two different kinds of digest, and only one of them depends on
the lockfile.
flowchart TD LOCK["Cargo.lock<br/>(host dependency set)"] --> SD["inventory.sourceDigest<br/>provenance of the build inputs"] WAT[".wat sources + guest crates"] --> SD WIT["edict-target-provider.wit"] --> SD WAT --> CD["inventory.components.*<br/>digests of the built .wasm bytes"] GUEST["wasm32-unknown-unknown<br/>guest toolchain"] --> CD SD -.->|"moved by this PR"| CHANGED["1 digest changed"] CD -.->|"unaffected by host engine"| SAME["5 digests identical"]Caption: Which inventory digests depend on the host lockfile
sourceDigesthashes every declared build input, andCargo.lockis thefirst entry in that list, so any dependency change moves it by design.
.wasmbytes.wasm32-unknown-unknownand never link the hostengine, so a host-side Wasmtime bump cannot change their bytes.
sourceDigestchanged, five component digestsbyte-identical.
That distinction is the reason this stays a dependency bump rather than an
artifact change. If a component digest had moved, the guests would have been
sensitive to the host engine version, which would be a genuine finding worth
stopping for [claim:fixture-scope, confidence:1.00].
Verification
cargo deny --locked checkreportsadvisories ok, bans ok, licenses ok, sources ok, and the full local gate passes including theprovider-runtime-dependenciesboundary check that pins the engine[claim:gate-green, confidence:1.00].
The historical
CHANGELOG.mdentry that names46.0.1is deliberately leftintact: it records what shipped at the time and is not a statement about the
current pin.
Appendix: Citations
claim:advisory-appliessupply-chain (cargo-deny)on PR #183 →error[vulnerability]: Stores can mix up type indices between engines,ID: RUSTSEC-2026-0222,Solution: Upgrade to >=24.0.12, <25.0.0 OR >=36.0.13, <37.0.0 OR >=46.0.2, <47.0.0 OR >=47.0.3; https://rustsec.org/advisories/RUSTSEC-2026-0222claim:preexistinggit diff --name-only origin/main...docs/release-date-guardscontains noCargo.toml,Cargo.lock, ordeny.toml; the most recent green run before this was2026-07-30T12:33:52Zclaim:fixture-scopegit diff fixtures/providers/components/inventory.json@cb0ca6d8→ onlysourceDigestchanges;SOURCE_INPUTSinxtask/src/provider_components.rs#17listsCargo.lockas a hashed input; the five entries undercomponentsare unchangedclaim:deny-cleancargo deny --locked check→advisories ok, bans ok, licenses ok, sources okclaim:gate-greencargo xtask verify→ all stages pass, includingprovider-runtime-dependencies: Wasmtime boundary verified,provider-component-fixtures: checked 5 fixture(s), andcontract-check: 25 topic shelf(s) validated-D warningsunder pedantic.