commit 89577853c46e58a4f0d519bb7612b42802a2b279
parent bface7702c4c08216bcca1dadd689dfb94a2dca3
Author: triesap <tyson@radroots.org>
Date: Tue, 7 Jul 2026 05:35:40 +0000
transport: align Reticulum preview SDK defaults
- default SDK Reticulum preview profiles to reticulum:preview-unavailable
- map SDK workflow policies onto accepted-level shared transport policies
- update proxy policy tests for the new shared satisfaction constructors
- validate SDK fmt, check, and transport-filtered test lanes
Diffstat:
7 files changed, 27 insertions(+), 19 deletions(-)
diff --git a/crates/sdk/src/sync_runtime.rs b/crates/sdk/src/sync_runtime.rs
@@ -787,9 +787,9 @@ fn proxy_delivery_policy_from_satisfaction(
}
let required = satisfaction_policy.required_target_count(target_count)?;
Ok(match satisfaction_policy {
- RadrootsTransportSatisfactionPolicy::AnyTarget => TransportPublishDeliveryPolicy::Any,
- RadrootsTransportSatisfactionPolicy::AllTargets => TransportPublishDeliveryPolicy::All,
- RadrootsTransportSatisfactionPolicy::AtLeast(_) => {
+ RadrootsTransportSatisfactionPolicy::Any { .. } => TransportPublishDeliveryPolicy::Any,
+ RadrootsTransportSatisfactionPolicy::All { .. } => TransportPublishDeliveryPolicy::All,
+ RadrootsTransportSatisfactionPolicy::Quorum { .. } => {
TransportPublishDeliveryPolicy::Quorum { quorum: required }
}
})
diff --git a/crates/sdk/src/transport.rs b/crates/sdk/src/transport.rs
@@ -1,7 +1,8 @@
use crate::RadrootsSdkError;
use radroots_transport::{
- RadrootsTransportDeliveryReceipt, RadrootsTransportKind, RadrootsTransportTarget,
- RadrootsTransportTargetFingerprint, RadrootsTransportTargetReceipt, RadrootsTransportTargetSet,
+ RadrootsTransportDeliveryReceipt, RadrootsTransportKind, RadrootsTransportSatisfactionClass,
+ RadrootsTransportTarget, RadrootsTransportTargetFingerprint, RadrootsTransportTargetReceipt,
+ RadrootsTransportTargetSet,
};
use radroots_transport_nostr::{RadrootsRelayUrl, RadrootsRelayUrlPolicy};
use serde::ser::{SerializeStruct, Serializer};
@@ -295,7 +296,7 @@ pub struct ReticulumPreviewProfile {
impl ReticulumPreviewProfile {
pub fn preview_unavailable() -> Self {
Self {
- endpoint_uri: "reticulum:preview".to_owned(),
+ endpoint_uri: "reticulum:preview-unavailable".to_owned(),
behavior: ReticulumPreviewBehavior::RejectDeliveryAttempts,
}
}
@@ -522,7 +523,11 @@ impl TransportReceipt {
pub fn satisfied_target_count(&self) -> usize {
self.target_receipts
.iter()
- .filter(|receipt| receipt.status.counts_as_satisfied())
+ .filter(|receipt| {
+ receipt
+ .status
+ .counts_as_satisfied(RadrootsTransportSatisfactionClass::Accepted)
+ })
.count()
}
}
diff --git a/crates/sdk/src/workflow_runtime.rs b/crates/sdk/src/workflow_runtime.rs
@@ -203,11 +203,11 @@ fn transport_satisfaction_policy(
) -> RadrootsTransportSatisfactionPolicy {
match satisfaction_policy {
SatisfactionPolicy::NoWait | SatisfactionPolicy::AllTargets => {
- RadrootsTransportSatisfactionPolicy::AllTargets
+ RadrootsTransportSatisfactionPolicy::all_accepted()
}
- SatisfactionPolicy::AtLeastOneTarget => RadrootsTransportSatisfactionPolicy::AnyTarget,
+ SatisfactionPolicy::AtLeastOneTarget => RadrootsTransportSatisfactionPolicy::any_accepted(),
SatisfactionPolicy::AtLeast { required } => {
- RadrootsTransportSatisfactionPolicy::AtLeast(required)
+ RadrootsTransportSatisfactionPolicy::quorum_accepted(required)
}
}
}
diff --git a/crates/sdk/tests/sync_runtime.rs b/crates/sdk/tests/sync_runtime.rs
@@ -484,7 +484,7 @@ where
radroots_outbox::RadrootsOutboxDeliveryPlanInput::new(
"explicit",
1,
- radroots_transport::RadrootsTransportSatisfactionPolicy::AllTargets,
+ radroots_transport::RadrootsTransportSatisfactionPolicy::all_accepted(),
target_set.into_targets(),
)
}
diff --git a/crates/sdk/tests/unit/adapters_radrootsd_tests.rs b/crates/sdk/tests/unit/adapters_radrootsd_tests.rs
@@ -529,17 +529,17 @@ async fn relay_publish_adapter_derives_delivery_policy_and_timeout() {
for (target_count, satisfaction_policy, expected_policy) in [
(
2,
- radroots_transport::RadrootsTransportSatisfactionPolicy::AllTargets,
+ radroots_transport::RadrootsTransportSatisfactionPolicy::all_accepted(),
TransportPublishDeliveryPolicy::All,
),
(
2,
- radroots_transport::RadrootsTransportSatisfactionPolicy::AnyTarget,
+ radroots_transport::RadrootsTransportSatisfactionPolicy::any_accepted(),
TransportPublishDeliveryPolicy::Any,
),
(
3,
- radroots_transport::RadrootsTransportSatisfactionPolicy::AtLeast(2),
+ radroots_transport::RadrootsTransportSatisfactionPolicy::quorum_accepted(2),
TransportPublishDeliveryPolicy::Quorum { quorum: 2 },
),
] {
diff --git a/crates/sdk/tests/unit/sync_runtime_tests.rs b/crates/sdk/tests/unit/sync_runtime_tests.rs
@@ -554,7 +554,7 @@ async fn proxy_push_empty_queue_and_private_helpers_are_deterministic() {
assert_eq!(
proxy_delivery_policy_from_satisfaction(
0,
- &RadrootsTransportSatisfactionPolicy::AllTargets
+ &RadrootsTransportSatisfactionPolicy::all_accepted()
)
.expect("zero-target proxy policy"),
TransportPublishDeliveryPolicy::Any
@@ -562,14 +562,17 @@ async fn proxy_push_empty_queue_and_private_helpers_are_deterministic() {
assert_eq!(
proxy_delivery_policy_from_satisfaction(
2,
- &RadrootsTransportSatisfactionPolicy::AllTargets
+ &RadrootsTransportSatisfactionPolicy::all_accepted()
)
.expect("all-target proxy policy"),
TransportPublishDeliveryPolicy::All
);
assert_eq!(
- proxy_delivery_policy_from_satisfaction(2, &RadrootsTransportSatisfactionPolicy::AnyTarget)
- .expect("any-target proxy policy"),
+ proxy_delivery_policy_from_satisfaction(
+ 2,
+ &RadrootsTransportSatisfactionPolicy::any_accepted()
+ )
+ .expect("any-target proxy policy"),
TransportPublishDeliveryPolicy::Any
);
assert_eq!(
diff --git a/crates/sdk/tests/unit/workflow_runtime_tests.rs b/crates/sdk/tests/unit/workflow_runtime_tests.rs
@@ -100,7 +100,7 @@ fn workflow_delivery_plan() -> radroots_outbox::RadrootsOutboxDeliveryPlanInput
radroots_outbox::RadrootsOutboxDeliveryPlanInput::new(
"explicit",
1,
- radroots_transport::RadrootsTransportSatisfactionPolicy::AllTargets,
+ radroots_transport::RadrootsTransportSatisfactionPolicy::all_accepted(),
target_set.into_targets(),
)
}