From 5b85a8837ed543aff3b8913809e820fe1fb1af4a Mon Sep 17 00:00:00 2001 From: Ryan P Date: Fri, 10 Jul 2026 11:22:45 -0400 Subject: [PATCH 1/3] clarify single-world requirement in extract_resolve_and_world_id --- crates/wasm-pkg-client/src/decoded_component.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/crates/wasm-pkg-client/src/decoded_component.rs b/crates/wasm-pkg-client/src/decoded_component.rs index 8c8767d..5485319 100644 --- a/crates/wasm-pkg-client/src/decoded_component.rs +++ b/crates/wasm-pkg-client/src/decoded_component.rs @@ -208,10 +208,14 @@ fn extract_package_version(decoded: &DecodedWasm) -> Result<(PackageRef, Version Ok((package, version)) } -/// Borrow the inner `wit_parser::Resolve` and resolve a concrete `WorldId`. -/// For a decoded component the world is fixed; for a WIT package we ask -/// `Resolve::select_world` to pick one — deferred until needed so a -/// multi-world WIT package can publish its first version unambiguously. +/// Borrow the inner `wit_parser::Resolve` and resolve a concrete `WorldId` +/// for semver checking. +/// +/// Semver checks compare two versions of the same component, and a +/// component is defined by exactly one world; thus a `WitPackage` must +/// define exactly one world. +/// +/// A multi-world `WitPackage` describes multiple components that must be handled individually. fn extract_resolve_and_world_id( decoded: &DecodedWasm, ) -> Result<(&wit_parser::Resolve, wit_parser::WorldId), Error> { From 31649f396ddf2b4c520d0268c3922a376211862c Mon Sep 17 00:00:00 2001 From: Ryan P Date: Fri, 10 Jul 2026 11:42:07 -0400 Subject: [PATCH 2/3] tighten up wording --- crates/wasm-pkg-client/src/decoded_component.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/crates/wasm-pkg-client/src/decoded_component.rs b/crates/wasm-pkg-client/src/decoded_component.rs index 5485319..cbf8e31 100644 --- a/crates/wasm-pkg-client/src/decoded_component.rs +++ b/crates/wasm-pkg-client/src/decoded_component.rs @@ -212,10 +212,8 @@ fn extract_package_version(decoded: &DecodedWasm) -> Result<(PackageRef, Version /// for semver checking. /// /// Semver checks compare two versions of the same component, and a -/// component is defined by exactly one world; thus a `WitPackage` must -/// define exactly one world. -/// -/// A multi-world `WitPackage` describes multiple components that must be handled individually. +/// component is defined by exactly one world. Therefore it is considered +/// an error if a `WitPackage` defines more than one world. fn extract_resolve_and_world_id( decoded: &DecodedWasm, ) -> Result<(&wit_parser::Resolve, wit_parser::WorldId), Error> { From 5fcecc4a222fc93c2f5d4d4c76b385a83dac7f05 Mon Sep 17 00:00:00 2001 From: Ryan Pridgeon Date: Fri, 10 Jul 2026 13:52:03 -0400 Subject: [PATCH 3/3] Update crates/wasm-pkg-client/src/decoded_component.rs Co-authored-by: Mikhail Katychev --- crates/wasm-pkg-client/src/decoded_component.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/wasm-pkg-client/src/decoded_component.rs b/crates/wasm-pkg-client/src/decoded_component.rs index cbf8e31..b6377c1 100644 --- a/crates/wasm-pkg-client/src/decoded_component.rs +++ b/crates/wasm-pkg-client/src/decoded_component.rs @@ -222,7 +222,7 @@ fn extract_resolve_and_world_id( DecodedWasm::WitPackage(resolve, pkg) => { let world_id = resolve .select_world(&[*pkg], None) - .map_err(Error::InvalidPackage)?; + .map_err(|e| Error::InvalidPackage(e.context("we currently do not support multiple wolds, etc...")))?; Ok((resolve, world_id)) } }