lib

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

commit 0b64195fcb5e3df40dcfc76e2356694b48302992
parent c774e8e1ed68e7232177e464efc65770e477ba46
Author: triesap <tyson@radroots.org>
Date:   Fri, 10 Jul 2026 19:15:52 +0000

transport: remove SDK transport aliases

- export Radroots-prefixed transport core types directly from the SDK
- drop Transport-prefixed alias reexports from the transport module and root facade
- update TransportReceipt to accept the core satisfaction class type
- add source-boundary coverage against public transport alias reexports

Diffstat:
Mcrates/sdk/src/lib.rs | 9+++++----
Mcrates/sdk/src/transport.rs | 17++++++++---------
Mcrates/sdk/tests/source_boundary.rs | 25++++++++++++++++++++++++-
3 files changed, 37 insertions(+), 14 deletions(-)

diff --git a/crates/sdk/src/lib.rs b/crates/sdk/src/lib.rs @@ -232,10 +232,11 @@ pub use crate::trade_storage::{ #[cfg(feature = "runtime")] pub use crate::transport::{ HybridProfile, MeshScopeId, NostrProfile, NostrRelayUrlPolicy, ProxyAuth, ProxyProfile, - PublishMode, ReticulumPreviewAgentEndpoint, ReticulumPreviewBehavior, ReticulumPreviewProfile, - SDK_TRANSPORT_TARGET_MAX_COUNT, SatisfactionPolicy, TargetPolicy, TargetSet, - TransportDeliveryReceipt, TransportDeliveryTargetStatus, TransportKind, TransportOutcome, - TransportProfile, TransportReceipt, TransportSatisfactionClass, TransportTargetReceipt, + PublishMode, RadrootsTransportDeliveryReceipt, RadrootsTransportDeliveryTargetStatus, + RadrootsTransportKind, RadrootsTransportOutcome, RadrootsTransportSatisfactionClass, + RadrootsTransportTargetReceipt, ReticulumPreviewAgentEndpoint, ReticulumPreviewBehavior, + ReticulumPreviewProfile, SDK_TRANSPORT_TARGET_MAX_COUNT, SatisfactionPolicy, TargetPolicy, + TargetSet, TransportProfile, TransportReceipt, }; #[cfg(feature = "runtime")] pub use radroots_trade::dvm::RadrootsTradeInventoryBinWitnessDto; diff --git a/crates/sdk/src/transport.rs b/crates/sdk/src/transport.rs @@ -1,21 +1,17 @@ use crate::RadrootsSdkError; use radroots_transport::{ RADROOTS_RETICULUM_PREVIEW_ENDPOINT_URI, RADROOTS_RETICULUM_UNAVAILABLE_MESSAGE, - RadrootsTransportDeliveryReceipt, RadrootsTransportImplementationState, RadrootsTransportKind, - RadrootsTransportMeshScopeId, RadrootsTransportSatisfactionClass, + RadrootsTransportImplementationState, RadrootsTransportMeshScopeId, RadrootsTransportSatisfactionPolicy, RadrootsTransportStatus, RadrootsTransportTarget, - RadrootsTransportTargetFingerprint, RadrootsTransportTargetReceipt, RadrootsTransportTargetSet, + RadrootsTransportTargetFingerprint, RadrootsTransportTargetSet, }; use radroots_transport_nostr::{RadrootsRelayUrl, RadrootsRelayUrlPolicy}; use serde::ser::{SerializeStruct, Serializer}; use std::collections::BTreeSet; pub use radroots_transport::{ - RadrootsTransportDeliveryReceipt as TransportDeliveryReceipt, - RadrootsTransportDeliveryTargetStatus as TransportDeliveryTargetStatus, - RadrootsTransportKind as TransportKind, RadrootsTransportOutcome as TransportOutcome, - RadrootsTransportSatisfactionClass as TransportSatisfactionClass, - RadrootsTransportTargetReceipt as TransportTargetReceipt, + RadrootsTransportDeliveryReceipt, RadrootsTransportDeliveryTargetStatus, RadrootsTransportKind, + RadrootsTransportOutcome, RadrootsTransportSatisfactionClass, RadrootsTransportTargetReceipt, }; pub const SDK_TRANSPORT_TARGET_MAX_COUNT: usize = 20; @@ -790,7 +786,10 @@ pub struct TransportReceipt { } impl TransportReceipt { - pub fn satisfied_target_count(&self, satisfaction_class: TransportSatisfactionClass) -> usize { + pub fn satisfied_target_count( + &self, + satisfaction_class: RadrootsTransportSatisfactionClass, + ) -> usize { self.target_receipts .iter() .filter(|receipt| receipt.status.counts_as_satisfied(satisfaction_class)) diff --git a/crates/sdk/tests/source_boundary.rs b/crates/sdk/tests/source_boundary.rs @@ -583,6 +583,7 @@ fn sdk_transport_nostr_features_do_not_retain_relay_named_aliases() { #[test] fn sdk_transport_public_api_rejects_removed_relay_aliases_and_neutral_target_constructor() { let manifest_dir = Path::new(env!("CARGO_MANIFEST_DIR")); + let lib_source = read_source(manifest_dir.join("src/lib.rs").as_path()); let nostr_adapter = read_source(manifest_dir.join("src/adapters/nostr.rs").as_path()); let transport_source = read_source(manifest_dir.join("src/transport.rs").as_path()); let target_set_impl = source_between( @@ -597,11 +598,19 @@ fn sdk_transport_public_api_rejects_removed_relay_aliases_and_neutral_target_con "RadrootsNostrError", "RadrootsNostrEventId", "RadrootsNostrOutput", + "RadrootsTransportDeliveryReceipt", + "RadrootsTransportDeliveryTargetStatus", + "RadrootsTransportKind", + "RadrootsTransportOutcome", + "RadrootsTransportSatisfactionClass", + "RadrootsTransportTargetReceipt", "pub fn nostr_relays", "pub fn transport_targets", ] { assert!( - nostr_adapter.contains(required) || transport_source.contains(required), + nostr_adapter.contains(required) + || transport_source.contains(required) + || lib_source.contains(required), "SDK public transport API must retain explicit target-state witness `{required}`" ); } @@ -622,6 +631,20 @@ fn sdk_transport_public_api_rejects_removed_relay_aliases_and_neutral_target_con ); } + for forbidden in [ + "RadrootsTransportDeliveryReceipt as TransportDeliveryReceipt", + "RadrootsTransportDeliveryTargetStatus as TransportDeliveryTargetStatus", + "RadrootsTransportKind as TransportKind", + "RadrootsTransportOutcome as TransportOutcome", + "RadrootsTransportSatisfactionClass as TransportSatisfactionClass", + "RadrootsTransportTargetReceipt as TransportTargetReceipt", + ] { + assert!( + !transport_source.contains(forbidden) && !lib_source.contains(forbidden), + "SDK transport public API must not retain removed transport alias `{forbidden}`" + ); + } + for relative_root in ["src", "tests", "examples"] { let root = manifest_dir.join(relative_root); if !root.exists() {