lib

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

commit f758400e8790560105b19f393d1752d1c1b32502
parent 273a24aafa6211b0fa60bc88647d4a57e0edc2b8
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"));