commit 7bec72501c3253b75040097c68f478b12714789a
parent 58fd4bb48ef0dd29fa3171d45607ce29f339b8e2
Author: triesap <tyson@radroots.org>
Date: Fri, 31 Jul 2026 06:25:21 +0000
transport: quarantine superseded package surface
- Exercise canonical transport target construction in SDK runtime boundary tests.
- Freeze the remaining SDK-local target and satisfaction mapping until exact Step 235 removal.
- Record out-of-scope CLI and daemon compatibility aliases as publication blockers through Step 305.
- Verify the standalone SDK with formatting, tests, architecture checks, and strict Clippy.
Diffstat:
3 files changed, 51 insertions(+), 11 deletions(-)
diff --git a/crates/sdk/tests/source_boundary.rs b/crates/sdk/tests/source_boundary.rs
@@ -141,6 +141,36 @@ fn active_sources_use_canonical_transport_type_names() {
}
#[test]
+fn temporary_transport_mapping_is_publish_frozen_until_step_235() {
+ let manifest = manifest_dir();
+ let cargo_manifest = read_source(&manifest.join("Cargo.toml"));
+ let transport = read_source(&manifest.join("src/transport.rs"));
+ let deviations = read_source(&manifest.join("../../docs/implementation/deviations.toml"));
+
+ assert!(cargo_manifest.contains("publish = false"));
+ for required in [
+ "pub enum SatisfactionPolicy",
+ "pub struct TargetSet",
+ "transport_satisfaction_policy",
+ ] {
+ assert!(
+ transport.contains(required),
+ "the bounded Step 235 migration inventory is missing `{required}`"
+ );
+ }
+ for required in [
+ "id = \"RCRV1-DEV-007\"",
+ "affected_steps = [\"122\", \"170\", \"235\", \"305\"]",
+ "SDK-local unpublished target-set and satisfaction-policy mapping only until Step 235",
+ ] {
+ assert!(
+ deviations.contains(required),
+ "the Step 235 final-removal record is missing `{required}`"
+ );
+ }
+}
+
+#[test]
fn active_sources_do_not_describe_compatibility_paths() {
for path in active_source_files() {
let source = read_source(&path).to_lowercase();
diff --git a/crates/sdk/tests/unit/sync_runtime_tests.rs b/crates/sdk/tests/unit/sync_runtime_tests.rs
@@ -1009,7 +1009,7 @@ async fn radrootsd_delivery_policy_rejects_non_accepted_satisfaction_before_daem
#[cfg(feature = "radrootsd-execution")]
#[test]
fn radrootsd_outbox_target_conversion_rejects_reticulum_targets_before_behavior_loss() {
- let target = Target::reticulum().expect("Reticulum target");
+ let target = Target::new(TransportId::RETICULUM, "reticulum:local").expect("Reticulum target");
let record = RadrootsOutboxDeliveryTargetRecord {
delivery_target_id: 1,
delivery_plan_id: 1,
@@ -1190,7 +1190,8 @@ async fn radrootsd_local_validation_errors_release_claim_before_daemon_publish()
.expect("stored before");
assert!(!stored_before.event_store_ingested);
assert_eq!(stored_before.event_store_ingested_at_ms, None);
- let reticulum_target = Target::reticulum().expect("Reticulum target");
+ let reticulum_target =
+ Target::new(TransportId::RETICULUM, "reticulum:local").expect("Reticulum target");
claimed.delivery_targets[0].transport_kind = *reticulum_target.kind();
claimed.delivery_targets[0].endpoint_uri = reticulum_target.uri().clone();
claimed.delivery_targets[0].endpoint_fingerprint = reticulum_target.fingerprint().clone();
@@ -1320,7 +1321,8 @@ async fn radrootsd_local_validation_failure_keeps_sibling_plan_ready_and_claimab
.expect("stored before");
let ingested_before = stored_before.event_store_ingested;
let ingested_at_before = stored_before.event_store_ingested_at_ms;
- let reticulum_target = Target::reticulum().expect("Reticulum target");
+ let reticulum_target =
+ Target::new(TransportId::RETICULUM, "reticulum:local").expect("Reticulum target");
claimed.delivery_targets[0].transport_kind = *reticulum_target.kind();
claimed.delivery_targets[0].endpoint_uri = reticulum_target.uri().clone();
claimed.delivery_targets[0].endpoint_fingerprint = reticulum_target.fingerprint().clone();
diff --git a/crates/sdk/tests/unit/transport_tests.rs b/crates/sdk/tests/unit/transport_tests.rs
@@ -294,20 +294,28 @@ fn reticulum_agent_endpoint_rejects_non_agent_endpoint_families() {
#[test]
fn explicit_target_sets_reject_noncanonical_reticulum_endpoints() {
- for invalid in [
- " reticulum:local".to_owned(),
- "reticulum:local ".to_owned(),
+ for invalid in [" reticulum:local", "reticulum:local "] {
+ assert_eq!(
+ Target::new(TransportId::RETICULUM, invalid)
+ .expect_err("syntactically invalid transport target"),
+ RadrootsTransportError::InvalidTargetUri
+ );
+ }
+
+ for noncanonical in [
"RETICULUM:deferred-until-implemented".to_owned(),
"reticulum:Preview-Unavailable".to_owned(),
["reticulum:", "pre", "view"].concat(),
"reticulum:local-alt".to_owned(),
"reticulum:custom".to_owned(),
] {
- assert_eq!(
- Target::new(TransportId::RETICULUM, invalid.as_str())
- .expect_err("invalid Reticulum target"),
- RadrootsTransportError::InvalidTargetUri
- );
+ let target = Target::new(TransportId::RETICULUM, noncanonical.as_str())
+ .expect("transport-neutral target");
+ assert!(matches!(
+ TargetSet::transport_targets(vec![target]),
+ Err(RadrootsSdkError::InvalidRequest { ref message })
+ if message == "Reticulum endpoint must be reticulum:local"
+ ));
}
}