lib

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

commit c4d7ebfd91d4725fa440578df7d59de400c0065b
parent 02ecef9424453f4aa274ec33ac8d7ee3856be26e
Author: triesap <tyson@radroots.org>
Date:   Mon, 27 Jul 2026 18:52:09 +0000

workspace: correct crate names to snake case

- rename the SDK package and lower registry identities to snake case
- align local patches, lock resolution, and dependency selectors
- update release contracts, synchronized specs, and documentation
- teach architecture fixtures to enforce exact snake-case package names

Diffstat:
Mcrates/sdk/Cargo.toml | 2+-
Mcrates/sdk/README.md | 10+++++-----
Mtools/sdk_xtask_import/src/architecture.rs | 11+++++------
Mtools/sdk_xtask_import/src/architecture/api_leakage.rs | 12++++++------
Mtools/sdk_xtask_import/src/architecture/dependency_boundary.rs | 18+++++++++---------
Mtools/sdk_xtask_import/src/check.rs | 40++++++++++++++++++++--------------------
Mtools/sdk_xtask_import/src/smoke.rs | 2+-
Mtools/sdk_xtask_import/tests/fixtures/dependency-boundaries/domain-to-storage.json | 16++++++++--------
Mtools/sdk_xtask_import/tests/fixtures/dependency-boundaries/service-to-sdk.json | 16++++++++--------
Mtools/sdk_xtask_import/tests/fixtures/dependency-boundaries/spi-to-adapter.json | 16++++++++--------
Mtools/sdk_xtask_import/tests/fixtures/dependency-boundaries/valid-downward.json | 16++++++++--------
11 files changed, 79 insertions(+), 80 deletions(-)

diff --git a/crates/sdk/Cargo.toml b/crates/sdk/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "radroots-sdk" +name = "radroots_sdk" publish = false version.workspace = true edition.workspace = true diff --git a/crates/sdk/README.md b/crates/sdk/README.md @@ -1,4 +1,4 @@ -# radroots-sdk +# radroots_sdk Curated Radroots Rust SDK for local-first Radroots product workflows. @@ -78,10 +78,10 @@ not expose a public workflow-bypass namespace for product callers. Compile the SDK v1 product examples with: ```bash -cargo check -p radroots-sdk --example sdk_v1_listing_prepare --features runtime -cargo check -p radroots-sdk --example sdk_v1_knowledge_prepare --features knowledge -cargo check -p radroots-sdk --example sdk_v1_local_enqueue_and_mock_sync --features runtime,signer-adapters -cargo check -p radroots-sdk --example sdk_v1_myc_nip46_signer_setup --features runtime,signer-adapters +cargo check -p radroots_sdk --example sdk_v1_listing_prepare --features runtime +cargo check -p radroots_sdk --example sdk_v1_knowledge_prepare --features knowledge +cargo check -p radroots_sdk --example sdk_v1_local_enqueue_and_mock_sync --features runtime,signer-adapters +cargo check -p radroots_sdk --example sdk_v1_myc_nip46_signer_setup --features runtime,signer-adapters ``` `sdk_v1_listing_prepare` shows `RadrootsClient::builder()`, diff --git a/tools/sdk_xtask_import/src/architecture.rs b/tools/sdk_xtask_import/src/architecture.rs @@ -589,10 +589,9 @@ fn validate_public_dependency_table( } else { None }; - let normalized_key = dependency_key.replace('_', "-"); let dependency_name = declared_package .or(path_package.as_deref()) - .unwrap_or(normalized_key.as_str()); + .unwrap_or(dependency_key.as_str()); if !policy.public_packages.contains(dependency_name) { continue; } @@ -1198,7 +1197,7 @@ 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\" }}\n", + "{}\n[workspace.dependencies]\nradroots_core = {{ package = \"radroots_core\", path = \"crates/dependency\", version = \"=0.1.0\" }}\n", complete_workspace_manifest("\"crates/radroots\"") ), ) @@ -1210,19 +1209,19 @@ adr_required = false .expect("write public manifest"); fs::write( root.join("crates/dependency/Cargo.toml"), - "[package]\nname = \"radroots-core\"\nversion = \"0.1.0\"\n", + "[package]\nname = \"radroots_core\"\nversion = \"0.1.0\"\n", ) .expect("write dependency manifest"); let mut architecture = architecture(); architecture.package.push(ArchitecturePackage { - name: "radroots-core".to_owned(), + name: "radroots_core".to_owned(), }); architecture .repositories .get_mut("sdk") .expect("sdk repository") .packages - .push("radroots-core".to_owned()); + .push("radroots_core".to_owned()); validate_public_dependency_versions(&root, &architecture) .expect("path plus exact version public dependency"); diff --git a/tools/sdk_xtask_import/src/architecture/api_leakage.rs b/tools/sdk_xtask_import/src/architecture/api_leakage.rs @@ -1364,7 +1364,7 @@ mod tests { #[test] fn generic_sqlx_public_field_is_forbidden() { - let findings = scan_fixture("radroots-storage", GENERIC_SQLX); + let findings = scan_fixture("radroots_storage", GENERIC_SQLX); assert_eq!(findings.len(), 1); assert_eq!(findings[0].item, "StorageHandle"); assert_eq!(findings[0].forbidden_path, "sqlx"); @@ -1373,7 +1373,7 @@ mod tests { #[test] fn renamed_tokio_return_type_is_resolved() { - let findings = scan_fixture("radroots-sync", GENERIC_RENAMED_TOKIO); + let findings = scan_fixture("radroots_sync", GENERIC_RENAMED_TOKIO); assert_eq!(findings.len(), 1); assert_eq!(findings[0].item, "executor"); assert_eq!(findings[0].forbidden_path, "tokio"); @@ -1382,13 +1382,13 @@ mod tests { #[test] fn specified_nostr_adapter_may_expose_protocol_types() { - let findings = scan_fixture("radroots-nostr", ALLOWED_ADAPTER); + let findings = scan_fixture("radroots_nostr", ALLOWED_ADAPTER); assert!(findings.is_empty()); } #[test] fn private_implementation_types_are_not_public_api() { - let findings = scan_fixture("radroots-sdk", PRIVATE_IMPLEMENTATION); + let findings = scan_fixture("radroots_sdk", PRIVATE_IMPLEMENTATION); assert!(findings.is_empty()); } @@ -1405,7 +1405,7 @@ mod tests { let mut policy = policy(); policy.exception.push(ApiException { id: "RCRV1-API-999".to_owned(), - package: "radroots-sdk".to_owned(), + package: "radroots_sdk".to_owned(), source: "src/lib.rs".to_owned(), forbidden_path: "reqwest".to_owned(), items: vec!["temporary_client".to_owned()], @@ -1418,7 +1418,7 @@ mod tests { let finding = scan_workspace( root.path(), &policy, - &fixture_metadata(root.path(), "radroots-sdk", ADR_EXCEPTION), + &fixture_metadata(root.path(), "radroots_sdk", ADR_EXCEPTION), ) .expect("scan exception fixture") .pop() diff --git a/tools/sdk_xtask_import/src/architecture/dependency_boundary.rs b/tools/sdk_xtask_import/src/architecture/dependency_boundary.rs @@ -623,8 +623,8 @@ mod tests { let policy = policy(); let error = validate_metadata(&policy, &placements(&policy), &metadata(DOMAIN_TO_STORAGE)) .expect_err("domain must not depend on storage"); - assert!(error.contains("radroots-event (tier=domain rank=1)")); - assert!(error.contains("radroots-storage (tier=spi rank=2)")); + assert!(error.contains("radroots_event (tier=domain rank=1)")); + assert!(error.contains("radroots_storage (tier=spi rank=2)")); assert!(error.contains("alias=storage_alias")); assert!(error.contains("kind=normal")); assert!(error.contains("target=cfg(unix)")); @@ -636,8 +636,8 @@ mod tests { let policy = policy(); let error = validate_metadata(&policy, &placements(&policy), &metadata(SPI_TO_ADAPTER)) .expect_err("SPI must not depend on adapter"); - assert!(error.contains("radroots-transport (tier=spi rank=2)")); - assert!(error.contains("radroots-nostr (tier=adapter rank=3)")); + assert!(error.contains("radroots_transport (tier=spi rank=2)")); + assert!(error.contains("radroots_nostr (tier=adapter rank=3)")); assert!(error.contains("alias=protocol_adapter")); assert!(error.contains("kind=build")); assert!(error.contains("target=cfg(target_arch = \"wasm32\")")); @@ -649,8 +649,8 @@ mod tests { let policy = policy(); let error = validate_metadata(&policy, &placements(&policy), &metadata(SERVICE_TO_SDK)) .expect_err("service orchestration must not depend on SDK"); - assert!(error.contains("radroots-sync (tier=orchestration rank=4)")); - assert!(error.contains("radroots-sdk (tier=sdk rank=5)")); + assert!(error.contains("radroots_sync (tier=orchestration rank=4)")); + assert!(error.contains("radroots_sdk (tier=sdk rank=5)")); assert!(error.contains("alias=client_engine")); } @@ -666,12 +666,12 @@ mod tests { let policy = policy(); let owner = super::CargoPackage { id: "owner".to_owned(), - name: "radroots-trade".to_owned(), + name: "radroots_trade".to_owned(), dependencies: Vec::new(), }; let dependency = super::CargoPackage { id: "dependency".to_owned(), - name: "radroots-nostr".to_owned(), + name: "radroots_nostr".to_owned(), dependencies: Vec::new(), }; let kind = super::CargoDependencyKind { @@ -679,7 +679,7 @@ mod tests { target: None, }; let exact = super::CargoDependency { - name: "radroots-nostr".to_owned(), + name: "radroots_nostr".to_owned(), kind: Some("dev".to_owned()), features: vec!["std".to_owned(), "events".to_owned()], target: None, diff --git a/tools/sdk_xtask_import/src/check.rs b/tools/sdk_xtask_import/src/check.rs @@ -2144,24 +2144,24 @@ mod tests { }; const APPROVED_CRATES: [&str; 19] = [ - "radroots-core", - "radroots-identity", - "radroots-blossom", - "radroots-protocol", - "radroots-event", - "radroots-event-codec", - "radroots-trade", - "radroots-signing", - "radroots-transport", - "radroots-nostr", - "radroots-nostr-connect", - "radroots-secrets", - "radroots-storage", - "radroots-storage-sqlite", - "radroots-transport-nostr", - "radroots-sync", - "radroots-geonames", - "radroots-sdk", + "radroots_core", + "radroots_identity", + "radroots_blossom", + "radroots_protocol", + "radroots_event", + "radroots_event_codec", + "radroots_trade", + "radroots_signing", + "radroots_transport", + "radroots_nostr", + "radroots_nostr_connect", + "radroots_secrets", + "radroots_storage", + "radroots_storage_sqlite", + "radroots_transport_nostr", + "radroots_sync", + "radroots_geonames", + "radroots_sdk", "radroots", ]; @@ -2203,7 +2203,7 @@ registry = "crates-io" final_enablement_step = 305 spec_id = "radroots.crates.release.v1" approved_packages = [{}] -local_packages = ["radroots-sdk", "radroots"] +local_packages = ["radroots_sdk", "radroots"] external_packages = [{}] [workspace_classification] @@ -2320,7 +2320,7 @@ retired = [] .expect("write policy"); fs::write( root.join("crates/sdk/Cargo.toml"), - "[package]\nname = \"radroots-sdk\"\nversion = \"0.1.0\"\npublish = [\"crates-io\"]\n", + "[package]\nname = \"radroots_sdk\"\nversion = \"0.1.0\"\npublish = [\"crates-io\"]\n", ) .expect("write SDK manifest"); fs::write( diff --git a/tools/sdk_xtask_import/src/smoke.rs b/tools/sdk_xtask_import/src/smoke.rs @@ -218,7 +218,7 @@ mod tests { #[test] fn smoke_consumer_manifest_uses_exact_direct_dependency_pin() { let manifest = - render_consumer_manifest(Path::new("/tmp/radroots-sdk"), "=0.44.2").expect("manifest"); + render_consumer_manifest(Path::new("/tmp/radroots_sdk"), "=0.44.2").expect("manifest"); assert!(manifest.contains("nostr = \"=0.44.2\"")); assert!(!manifest.contains("nostr = \"0.44.2\"")); diff --git a/tools/sdk_xtask_import/tests/fixtures/dependency-boundaries/domain-to-storage.json b/tools/sdk_xtask_import/tests/fixtures/dependency-boundaries/domain-to-storage.json @@ -1,11 +1,11 @@ { "packages": [ { - "id": "fixture#radroots-event@0.1.0", - "name": "radroots-event", + "id": "fixture#radroots_event@0.1.0", + "name": "radroots_event", "dependencies": [ { - "name": "radroots-storage", + "name": "radroots_storage", "rename": "storage_alias", "kind": null, "features": ["memory"], @@ -15,19 +15,19 @@ ] }, { - "id": "fixture#radroots-storage@0.1.0", - "name": "radroots-storage", + "id": "fixture#radroots_storage@0.1.0", + "name": "radroots_storage", "dependencies": [] } ], "resolve": { "nodes": [ { - "id": "fixture#radroots-event@0.1.0", + "id": "fixture#radroots_event@0.1.0", "deps": [ { "name": "storage_alias", - "pkg": "fixture#radroots-storage@0.1.0", + "pkg": "fixture#radroots_storage@0.1.0", "dep_kinds": [ { "kind": null, @@ -38,7 +38,7 @@ ] }, { - "id": "fixture#radroots-storage@0.1.0", + "id": "fixture#radroots_storage@0.1.0", "deps": [] } ] diff --git a/tools/sdk_xtask_import/tests/fixtures/dependency-boundaries/service-to-sdk.json b/tools/sdk_xtask_import/tests/fixtures/dependency-boundaries/service-to-sdk.json @@ -1,11 +1,11 @@ { "packages": [ { - "id": "fixture#radroots-sync@0.1.0", - "name": "radroots-sync", + "id": "fixture#radroots_sync@0.1.0", + "name": "radroots_sync", "dependencies": [ { - "name": "radroots-sdk", + "name": "radroots_sdk", "rename": "client_engine", "kind": null, "features": ["memory"], @@ -15,19 +15,19 @@ ] }, { - "id": "fixture#radroots-sdk@0.1.0", - "name": "radroots-sdk", + "id": "fixture#radroots_sdk@0.1.0", + "name": "radroots_sdk", "dependencies": [] } ], "resolve": { "nodes": [ { - "id": "fixture#radroots-sync@0.1.0", + "id": "fixture#radroots_sync@0.1.0", "deps": [ { "name": "client_engine", - "pkg": "fixture#radroots-sdk@0.1.0", + "pkg": "fixture#radroots_sdk@0.1.0", "dep_kinds": [ { "kind": null, @@ -38,7 +38,7 @@ ] }, { - "id": "fixture#radroots-sdk@0.1.0", + "id": "fixture#radroots_sdk@0.1.0", "deps": [] } ] diff --git a/tools/sdk_xtask_import/tests/fixtures/dependency-boundaries/spi-to-adapter.json b/tools/sdk_xtask_import/tests/fixtures/dependency-boundaries/spi-to-adapter.json @@ -1,11 +1,11 @@ { "packages": [ { - "id": "fixture#radroots-transport@0.1.0", - "name": "radroots-transport", + "id": "fixture#radroots_transport@0.1.0", + "name": "radroots_transport", "dependencies": [ { - "name": "radroots-nostr", + "name": "radroots_nostr", "rename": "protocol_adapter", "kind": "build", "features": ["events"], @@ -15,19 +15,19 @@ ] }, { - "id": "fixture#radroots-nostr@0.1.0", - "name": "radroots-nostr", + "id": "fixture#radroots_nostr@0.1.0", + "name": "radroots_nostr", "dependencies": [] } ], "resolve": { "nodes": [ { - "id": "fixture#radroots-transport@0.1.0", + "id": "fixture#radroots_transport@0.1.0", "deps": [ { "name": "protocol_adapter", - "pkg": "fixture#radroots-nostr@0.1.0", + "pkg": "fixture#radroots_nostr@0.1.0", "dep_kinds": [ { "kind": "build", @@ -38,7 +38,7 @@ ] }, { - "id": "fixture#radroots-nostr@0.1.0", + "id": "fixture#radroots_nostr@0.1.0", "deps": [] } ] diff --git a/tools/sdk_xtask_import/tests/fixtures/dependency-boundaries/valid-downward.json b/tools/sdk_xtask_import/tests/fixtures/dependency-boundaries/valid-downward.json @@ -1,11 +1,11 @@ { "packages": [ { - "id": "fixture#radroots-transport-nostr@0.1.0", - "name": "radroots-transport-nostr", + "id": "fixture#radroots_transport_nostr@0.1.0", + "name": "radroots_transport_nostr", "dependencies": [ { - "name": "radroots-transport", + "name": "radroots_transport", "rename": "transport_spi", "kind": "dev", "features": [], @@ -15,19 +15,19 @@ ] }, { - "id": "fixture#radroots-transport@0.1.0", - "name": "radroots-transport", + "id": "fixture#radroots_transport@0.1.0", + "name": "radroots_transport", "dependencies": [] } ], "resolve": { "nodes": [ { - "id": "fixture#radroots-transport-nostr@0.1.0", + "id": "fixture#radroots_transport_nostr@0.1.0", "deps": [ { "name": "transport_spi", - "pkg": "fixture#radroots-transport@0.1.0", + "pkg": "fixture#radroots_transport@0.1.0", "dep_kinds": [ { "kind": "dev", @@ -38,7 +38,7 @@ ] }, { - "id": "fixture#radroots-transport@0.1.0", + "id": "fixture#radroots_transport@0.1.0", "deps": [] } ]