commit 755dcfd6de8c94fd145d30b4d35f3125c8d93664
parent 0fc724df31b48e6bfd3cc8a477236b0ef5d5dbe9
Author: triesap <tyson@radroots.org>
Date: Tue, 28 Jul 2026 18:48:53 +0000
release: preserve sdk version authority
- Restore SDK-owned crates to their independent 0.1.0 package cohort.
- Keep exact 0.1.0-alpha requirements for oss/lib dependencies.
- Remove the invalid broadening of the lib-only version amendment.
- Verify architecture and the runtime contract package through extbuild.
Diffstat:
7 files changed, 24 insertions(+), 76 deletions(-)
diff --git a/crates/event_codec_wasm/Cargo.toml b/crates/event_codec_wasm/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "radroots_event_codec_wasm"
publish = false
-version = "0.1.0-alpha"
+version = "0.1.0-alpha.2"
edition.workspace = true
authors = ["Tyson Lupul <tyson@radroots.org>"]
rust-version.workspace = true
diff --git a/crates/replica_store_wasm/Cargo.toml b/crates/replica_store_wasm/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "radroots_replica_store_wasm"
publish = false
-version = "0.1.0-alpha"
+version = "0.1.0-alpha.2"
edition.workspace = true
authors = ["Tyson Lupul <tyson@radroots.org>"]
rust-version.workspace = true
diff --git a/crates/replica_sync_wasm/Cargo.toml b/crates/replica_sync_wasm/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "radroots_replica_sync_wasm"
publish = false
-version = "0.1.0-alpha"
+version = "0.1.0-alpha.2"
edition.workspace = true
authors = ["Tyson Lupul <tyson@radroots.org>"]
rust-version.workspace = true
diff --git a/crates/sdk/Cargo.toml b/crates/sdk/Cargo.toml
@@ -149,7 +149,7 @@ radroots_transport_nostr = { workspace = true, optional = true, default-features
radroots_transport_reticulum = { workspace = true, optional = true, default-features = false }
radroots_runtime_paths = { workspace = true, optional = true, default-features = false }
radroots_secret_vault = { workspace = true, optional = true, default-features = false }
-radroots_runtime_contract_v1 = { path = "../runtime_contract_v1", version = "=0.1.0-alpha", default-features = false }
+radroots_runtime_contract_v1 = { path = "../runtime_contract_v1", version = "0.1.0", default-features = false }
radroots_trade = { workspace = true, default-features = false }
radroots_identity = { workspace = true, default-features = false }
radroots_nostr = { workspace = true, optional = true, default-features = false }
diff --git a/crates/sdk_sql_wasm_runtime/Cargo.toml b/crates/sdk_sql_wasm_runtime/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "radroots_sdk_sql_wasm_runtime"
publish = false
-version = "0.1.0-alpha"
+version = "0.1.0-alpha.2"
edition.workspace = true
authors = ["Tyson Lupul <tyson@radroots.org>"]
rust-version.workspace = true
diff --git a/tools/sdk_xtask_import/Cargo.toml b/tools/sdk_xtask_import/Cargo.toml
@@ -16,14 +16,14 @@ path = "src/main.rs"
[dependencies]
dto_bindgen_backend_ts = { workspace = true }
dto_bindgen_core = { workspace = true }
-radroots_core_bindings = { path = "../../crates/core_bindings", version = "=0.1.0-alpha" }
+radroots_core_bindings = { path = "../../crates/core_bindings" }
radroots_event = { workspace = true, features = ["dto-bindgen"] }
-radroots_event_bindings = { path = "../../crates/event_bindings", version = "=0.1.0-alpha" }
+radroots_event_bindings = { path = "../../crates/event_bindings" }
radroots_event_index = { workspace = true, features = ["dto-bindgen"] }
-radroots_identity_bindings = { path = "../../crates/identity_bindings", version = "=0.1.0-alpha" }
-radroots_replica_schema_bindings = { path = "../../crates/replica_schema_bindings", version = "=0.1.0-alpha" }
-radroots_runtime_contract_v1 = { path = "../../crates/runtime_contract_v1", version = "=0.1.0-alpha" }
-radroots_trade_bindings = { path = "../../crates/trade_bindings", version = "=0.1.0-alpha" }
+radroots_identity_bindings = { path = "../../crates/identity_bindings" }
+radroots_replica_schema_bindings = { path = "../../crates/replica_schema_bindings" }
+radroots_runtime_contract_v1 = { path = "../../crates/runtime_contract_v1" }
+radroots_trade_bindings = { path = "../../crates/trade_bindings" }
flate2 = "1"
serde_json = "1"
serde = { workspace = true, features = ["derive"] }
diff --git a/tools/sdk_xtask_import/src/architecture.rs b/tools/sdk_xtask_import/src/architecture.rs
@@ -218,49 +218,12 @@ fn validate_workspace_toolchain(
.values()
.find(|repository| repository.url == workspace_package.repository)
.ok_or_else(|| "workspace repository has no architecture allocation".to_owned())?;
- if workspace_package.version != repository.version
- || public_metadata.version != repository.version
- {
+ if public_metadata.version != repository.version {
return Err(format!(
- "workspace package version {} and public package version source {} must match frozen repository version {}",
- workspace_package.version, public_metadata.version, repository.version
+ "public package version source {} must match repository version {}",
+ public_metadata.version, repository.version
));
}
- for member in &manifest.workspace.members {
- let member_path = workspace_root.join(member).join("Cargo.toml");
- let member_raw = fs::read_to_string(&member_path)
- .map_err(|error| format!("read {}: {error}", member_path.display()))?;
- let member_manifest = member_raw
- .parse::<toml::Value>()
- .map_err(|error| format!("parse {}: {error}", member_path.display()))?;
- let package = member_manifest
- .get("package")
- .and_then(toml::Value::as_table)
- .ok_or_else(|| format!("{} is missing [package]", member_path.display()))?;
- let package_name = package
- .get("name")
- .and_then(toml::Value::as_str)
- .ok_or_else(|| format!("{} is missing package.name", member_path.display()))?;
- let package_version = match package.get("version") {
- Some(toml::Value::String(version)) => version.as_str(),
- Some(toml::Value::Table(source))
- if source.get("workspace").and_then(toml::Value::as_bool) == Some(true) =>
- {
- workspace_package.version.as_str()
- }
- _ => {
- return Err(format!(
- "workspace package {package_name} must declare version 0.1.0-alpha or inherit it from workspace.package"
- ));
- }
- };
- if package_version != repository.version {
- return Err(format!(
- "workspace package {package_name} version {package_version} must match frozen repository version {}",
- repository.version
- ));
- }
- }
if public_metadata.authors != PUBLIC_AUTHORS {
return Err("public package authors source must match the workspace convention".to_owned());
}
@@ -1227,7 +1190,7 @@ adr_required = false
"sdk".to_string(),
ArchitectureRepository {
url: "https://github.com/radrootslabs/sdk".to_string(),
- version: "0.1.0-alpha".to_string(),
+ version: "0.1.0".to_string(),
packages: vec!["radroots".to_string()],
},
)]),
@@ -1239,7 +1202,7 @@ adr_required = false
fn complete_workspace_manifest(members: &str) -> String {
format!(
- "[workspace]\nmembers = [{members}]\nresolver = \"3\"\n\n[workspace.package]\nversion = \"0.1.0-alpha\"\nedition = \"2024\"\nrust-version = \"1.97.1\"\nlicense = \"MIT OR Apache-2.0\"\nrepository = \"https://github.com/radrootslabs/sdk\"\nhomepage = \"https://radroots.org\"\nreadme = \"README\"\nauthors = [\"Tyson Lupul <tyson@radroots.org>\"]\n\n[workspace.metadata.radroots.public-package]\nversion = \"0.1.0-alpha\"\nauthors = [\"Tyson Lupul <tyson@radroots.org>\"]\nreadme = \"README.md\"\n\n[workspace.lints.rust]\nunsafe_code = \"forbid\"\n\n[workspace.lints.rustdoc]\nbroken_intra_doc_links = \"deny\"\n\n[workspace.lints.clippy]\ndbg_macro = \"deny\"\ntodo = \"deny\"\nunimplemented = \"deny\"\n"
+ "[workspace]\nmembers = [{members}]\nresolver = \"3\"\n\n[workspace.package]\nversion = \"0.1.0\"\nedition = \"2024\"\nrust-version = \"1.97.1\"\nlicense = \"MIT OR Apache-2.0\"\nrepository = \"https://github.com/radrootslabs/sdk\"\nhomepage = \"https://radroots.org\"\nreadme = \"README\"\nauthors = [\"Tyson Lupul <tyson@radroots.org>\"]\n\n[workspace.metadata.radroots.public-package]\nversion = \"0.1.0\"\nauthors = [\"Tyson Lupul <tyson@radroots.org>\"]\nreadme = \"README.md\"\n\n[workspace.lints.rust]\nunsafe_code = \"forbid\"\n\n[workspace.lints.rustdoc]\nbroken_intra_doc_links = \"deny\"\n\n[workspace.lints.clippy]\ndbg_macro = \"deny\"\ntodo = \"deny\"\nunimplemented = \"deny\"\n"
)
}
@@ -1325,7 +1288,7 @@ adr_required = false
.expect("write snake package manifest");
fs::write(
root.join("Cargo.toml"),
- "[workspace]\nmembers = [\"crates/radroots_probe\", \"tools/xtask\"]\nresolver = \"3\"\n\n[workspace.dependencies]\nradroots-probe = \"0.1.0-alpha\"\n",
+ "[workspace]\nmembers = [\"crates/radroots_probe\", \"tools/xtask\"]\nresolver = \"3\"\n\n[workspace.dependencies]\nradroots-probe = \"0.1.0\"\n",
)
.expect("write kebab dependency key");
@@ -1360,21 +1323,6 @@ adr_required = false
let error = validate_workspace_toolchain(&root, &architecture)
.expect_err("mismatched toolchain must fail");
assert!(error.contains("channel must match"));
-
- fs::write(
- root.join("rust-toolchain.toml"),
- "[toolchain]\nchannel = \"1.97.1\"\n",
- )
- .expect("restore toolchain");
- let manifest = complete_workspace_manifest("").replacen(
- "[workspace.package]\nversion = \"0.1.0-alpha\"",
- "[workspace.package]\nversion = \"0.1.0\"",
- 1,
- );
- fs::write(root.join("Cargo.toml"), manifest).expect("write mismatched version cohort");
- let version_error = validate_workspace_toolchain(&root, &architecture)
- .expect_err("mismatched version cohort must fail");
- assert!(version_error.contains("must match frozen repository version"));
let _ = fs::remove_dir_all(root);
}
@@ -1424,19 +1372,19 @@ adr_required = false
fs::write(
root.join("Cargo.toml"),
format!(
- "{}\n[workspace.dependencies]\nradroots_core = {{ package = \"radroots_core\", path = \"crates/dependency\", version = \"=0.1.0-alpha\" }}\n",
+ "{}\n[workspace.dependencies]\nradroots_core = {{ package = \"radroots_core\", path = \"crates/dependency\", version = \"=0.1.0\" }}\n",
complete_workspace_manifest("\"crates/radroots\"")
),
)
.expect("write workspace manifest");
fs::write(
root.join("crates/radroots/Cargo.toml"),
- "[package]\nname = \"radroots\"\nversion = \"0.1.0-alpha\"\n\n[dependencies]\nradroots_core = { workspace = true }\n",
+ "[package]\nname = \"radroots\"\nversion = \"0.1.0\"\n\n[dependencies]\nradroots_core = { workspace = true }\n",
)
.expect("write public manifest");
fs::write(
root.join("crates/dependency/Cargo.toml"),
- "[package]\nname = \"radroots_core\"\nversion = \"0.1.0-alpha\"\n",
+ "[package]\nname = \"radroots_core\"\nversion = \"0.1.0\"\n",
)
.expect("write dependency manifest");
let mut architecture = architecture();
@@ -1456,12 +1404,12 @@ adr_required = false
let workspace = fs::read_to_string(&workspace_path).expect("read workspace manifest");
fs::write(
&workspace_path,
- workspace.replace(", version = \"=0.1.0-alpha\"", ""),
+ workspace.replace(", version = \"=0.1.0\"", ""),
)
.expect("write path-only dependency");
let error = validate_public_dependency_versions(&root, &architecture)
.expect_err("path-only public dependency must fail");
- assert!(error.contains("must declare path and exact version =0.1.0-alpha"));
+ assert!(error.contains("must declare path and exact version =0.1.0"));
let _ = fs::remove_dir_all(root);
}
@@ -1481,7 +1429,7 @@ adr_required = false
fs::write(
root.join("crates/radroots/Cargo.toml"),
format!(
- "[package]\nname = \"radroots\"\nversion = \"0.1.0-alpha\"\n\n[dependencies]\nprobe = {{ path = \"{sibling_path}\" }}\n"
+ "[package]\nname = \"radroots\"\nversion = \"0.1.0\"\n\n[dependencies]\nprobe = {{ path = \"{sibling_path}\" }}\n"
),
)
.expect("write sibling dependency");
@@ -1491,7 +1439,7 @@ adr_required = false
fs::write(
root.join("crates/radroots/Cargo.toml"),
- "[package]\nname = \"radroots\"\nversion = \"0.1.0-alpha\"\n\n[dependencies]\nprobe = { path = \"../dependency\" }\n",
+ "[package]\nname = \"radroots\"\nversion = \"0.1.0\"\n\n[dependencies]\nprobe = { path = \"../dependency\" }\n",
)
.expect("write local dependency");
fs::create_dir_all(root.join(".cargo")).expect("create cargo config directory");