lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

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:
Mcrates/event_codec_wasm/Cargo.toml | 2+-
Mcrates/replica_store_wasm/Cargo.toml | 2+-
Mcrates/replica_sync_wasm/Cargo.toml | 2+-
Mcrates/sdk/Cargo.toml | 2+-
Mcrates/sdk_sql_wasm_runtime/Cargo.toml | 2+-
Mtools/sdk_xtask_import/Cargo.toml | 12++++++------
Mtools/sdk_xtask_import/src/architecture.rs | 78+++++++++++++-----------------------------------------------------------------
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");