commit 687aab080bfe0d79a13ef526c6f47b9e70cdbbe7
parent a1efe6c011bef75b325a2dd182d6f3da69cf4380
Author: triesap <tyson@radroots.org>
Date: Thu, 9 Jul 2026 01:38:01 +0000
transport: remove Nostr dependency alias
- depend on radroots_transport_nostr by its real crate name
- update daemon transport imports and tests directly
- add a source-boundary guard against the removed alias
- verify daemon transport publish focused gates
Diffstat:
5 files changed, 31 insertions(+), 9 deletions(-)
diff --git a/Cargo.toml b/Cargo.toml
@@ -15,7 +15,7 @@ radroots_events = { path = "../lib/crates/events" }
radroots_identity = { path = "../lib/crates/identity" }
radroots_nostr = { path = "../lib/crates/nostr" }
radroots_transport_publish_protocol = { path = "../lib/crates/transport_publish_protocol" }
-radroots_relay_transport = { package = "radroots_transport_nostr", path = "../lib/crates/transport_nostr", default-features = false }
+radroots_transport_nostr = { path = "../lib/crates/transport_nostr", default-features = false }
radroots_transport = { path = "../lib/crates/transport", default-features = false }
radroots_runtime = { path = "../lib/crates/runtime" }
@@ -27,7 +27,7 @@ radroots_events = { workspace = true, features = ["serde"] }
radroots_identity = { workspace = true }
radroots_nostr = { workspace = true, features = ["client", "codec", "events", "http"] }
radroots_transport_publish_protocol = { workspace = true, features = ["std", "serde"] }
-radroots_relay_transport = { workspace = true, features = ["std", "client"] }
+radroots_transport_nostr = { workspace = true, features = ["std", "client"] }
radroots_transport = { workspace = true }
radroots_runtime = { workspace = true, features = ["cli"] }
radroots_runtime_paths = { path = "../lib/crates/runtime_paths" }
diff --git a/src/core/transport_publish.rs b/src/core/transport_publish.rs
@@ -16,12 +16,12 @@ use radroots_nostr::prelude::{
RadrootsNostrClient, RadrootsNostrEventVerification, RadrootsNostrFilter, RadrootsNostrKind,
RadrootsNostrPublicKey, radroots_nostr_verify_event,
};
-use radroots_relay_transport::{
+use radroots_transport::{RadrootsTransportKind, RadrootsTransportSatisfactionPolicy};
+use radroots_transport_nostr::{
RadrootsNostrClientPublishAdapter, RadrootsRelayOutcome, RadrootsRelayOutcomeKind,
RadrootsRelayPublishAdapter, RadrootsRelayPublishRelayReceipt, RadrootsRelayPublishRequest,
RadrootsRelayTargetSet, RadrootsRelayTransportError, RadrootsRelayUrl, RadrootsRelayUrlPolicy,
};
-use radroots_transport::{RadrootsTransportKind, RadrootsTransportSatisfactionPolicy};
use radroots_transport_publish_protocol::{
NostrPublishTargetSourcePolicy, SignedNostrEventWire, TransportPublishDeliveryPolicy,
TransportPublishEventRequest, TransportPublishEventResponse, TransportPublishJobStatus,
@@ -2886,7 +2886,7 @@ mod tests {
use radroots_nostr::prelude::{
RadrootsNostrEventVerification, RadrootsNostrTimestamp, radroots_nostr_build_event,
};
- use radroots_relay_transport::{RadrootsMockRelayPublishAdapter, RadrootsRelayOutcome};
+ use radroots_transport_nostr::{RadrootsMockRelayPublishAdapter, RadrootsRelayOutcome};
use radroots_transport_publish_protocol::{
NostrPublishTargetSourcePolicy, SignedNostrEventWire, TransportPublishDeliveryPolicy,
TransportPublishEventRequest, TransportPublishJobStatus, TransportPublishOutcomeKind,
@@ -3275,7 +3275,7 @@ mod tests {
impl super::PublishRelayResolver for StaticPublishRelayResolver {
fn resolve<'a>(
&'a self,
- url: &'a radroots_relay_transport::RadrootsRelayUrl,
+ url: &'a radroots_transport_nostr::RadrootsRelayUrl,
) -> super::PublishRelayResolveFuture<'a> {
Box::pin(async move {
match self.results.get(url.as_str()) {
diff --git a/src/transport/jsonrpc/methods/transport_publish.rs b/src/transport/jsonrpc/methods/transport_publish.rs
@@ -144,7 +144,7 @@ mod tests {
use radroots_nostr::prelude::{
RadrootsNostrMetadata, RadrootsNostrTimestamp, radroots_nostr_build_event,
};
- use radroots_relay_transport::RadrootsMockRelayPublishAdapter;
+ use radroots_transport_nostr::RadrootsMockRelayPublishAdapter;
use radroots_transport_publish_protocol::{
NostrPublishTargetSourcePolicy, SignedNostrEventWire, TransportPublishTargetPolicyName,
};
diff --git a/src/transport/jsonrpc/server.rs b/src/transport/jsonrpc/server.rs
@@ -93,7 +93,7 @@ mod tests {
use radroots_nostr::prelude::{
RadrootsNostrMetadata, RadrootsNostrTimestamp, radroots_nostr_build_event,
};
- use radroots_relay_transport::RadrootsMockRelayPublishAdapter;
+ use radroots_transport_nostr::RadrootsMockRelayPublishAdapter;
use radroots_transport_publish_protocol::{
NostrPublishTargetSourcePolicy, TransportPublishTargetPolicyName,
};
@@ -222,7 +222,7 @@ mod tests {
impl PublishRelayResolver for StaticPublishRelayResolver {
fn resolve<'a>(
&'a self,
- _url: &'a radroots_relay_transport::RadrootsRelayUrl,
+ _url: &'a radroots_transport_nostr::RadrootsRelayUrl,
) -> PublishRelayResolveFuture<'a> {
Box::pin(async move { Ok(self.addresses.clone()) })
}
diff --git a/tests/source_boundary.rs b/tests/source_boundary.rs
@@ -49,6 +49,10 @@ const FORBIDDEN_DAEMON_TRANSPORT_CONCEPTS: &[ForbiddenConcept] = &[
pattern: "PublishRelaySource",
reason: "old relay-shaped publish source names must not return",
},
+ ForbiddenConcept {
+ pattern: "radroots_relay_transport",
+ reason: "daemon must depend on radroots_transport_nostr directly without a dependency alias",
+ },
];
#[test]
@@ -77,6 +81,24 @@ fn transport_publish_sources_reject_removed_protocol_identifiers() {
}
}
+ let manifest_source = read_source(manifest_dir.join("Cargo.toml").as_path());
+ for concept in FORBIDDEN_DAEMON_TRANSPORT_CONCEPTS {
+ if contains_forbidden_concept(manifest_source.as_str(), concept.pattern) {
+ findings.push(format!(
+ "Cargo.toml contains removed daemon transport concept `{}`: {}",
+ concept.pattern, concept.reason
+ ));
+ }
+ }
+ assert!(
+ manifest_source.contains("radroots_transport_nostr = { path = "),
+ "Cargo.toml must depend on radroots_transport_nostr directly"
+ );
+ assert!(
+ !manifest_source.contains("package = \"radroots_transport_nostr\""),
+ "Cargo.toml must not disguise radroots_transport_nostr through a package alias"
+ );
+
assert!(
findings.is_empty(),
"daemon transport source-boundary violations:\n{}",