sdk

Radroots SDK and bindings
git clone https://radroots.dev/git/sdk.git
Log | Files | Refs | README

commit e0b77999abf22fccd1ea51e576bd6346f1a13d71
parent b7a74355693c40926bf6a7840fb113d2c77d2529
Author: triesap <tyson@radroots.org>
Date:   Wed,  8 Jul 2026 07:47:45 +0000

sdk: guard transport-neutral sync status

- add SDK sync status source-boundary guard

- require transport target and status summary fields

- reject retired relay-shaped generic status fields

- validate SDK tests, generation, and xtask checks

Diffstat:
Mcrates/sdk/tests/source_boundary.rs | 34++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+), 0 deletions(-)

diff --git a/crates/sdk/tests/source_boundary.rs b/crates/sdk/tests/source_boundary.rs @@ -1457,6 +1457,40 @@ fn sdk_transport_policy_sources_reject_configured_profile_and_proxy_relay_bridge } #[test] +fn sdk_sync_status_sources_reject_retired_relay_shaped_generic_fields() { + let manifest_dir = Path::new(env!("CARGO_MANIFEST_DIR")); + let sync_runtime = read_source(manifest_dir.join("src/sync_runtime.rs").as_path()); + + for required in [ + "pub configured_transport_target_count: usize,", + "pub configured_transport_targets: Vec<SyncTransportTargetSummary>,", + "pub transport_statuses: Vec<SyncTransportStatusSummary>,", + ".configured_transport_targets()?", + ".transport_statuses()", + ] { + assert!( + sync_runtime.contains(required), + "SDK sync status must retain transport-neutral field witness `{required}`" + ); + } + + for forbidden in [ + concat!("configured_nostr", "_relay", "_count"), + concat!("configured_nostr", "_relays"), + concat!("target", "_relays"), + concat!("connected", "_relays"), + concat!("acknowledged", "_relays"), + concat!("failed", "_relays"), + concat!("relay", "_count"), + ] { + assert!( + !sync_runtime.contains(forbidden), + "SDK sync status source must not expose retired relay-shaped generic field `{forbidden}`" + ); + } +} + +#[test] fn sdk_transport_sources_keep_reticulum_preview_push_boundary() { let manifest_dir = Path::new(env!("CARGO_MANIFEST_DIR"));