commit 762ca4d6270bda5855adf5d22e00abb5411ee456
parent cd32f1cb5160e54d77bd296966e4c1050a24cf11
Author: triesap <tyson@radroots.org>
Date: Tue, 7 Jul 2026 04:29:10 +0000
tests: guard daemon transport publish surface
- Add source-boundary checks for removed daemon publish proxy identifiers.
- Cover the SDK radrootsd adapter and sync-runtime proxy surfaces.
- Match retired identifiers on whole boundaries so TransportPublish names remain valid.
- Validate with SDK formatting, generation, source-boundary tests, and xtask check.
Diffstat:
1 file changed, 36 insertions(+), 0 deletions(-)
diff --git a/crates/sdk/tests/source_boundary.rs b/crates/sdk/tests/source_boundary.rs
@@ -106,6 +106,21 @@ const FORBIDDEN_SDK_ROOT_TRADE_ALIAS_NAMES: &[&str] = &[
"trade_validation",
];
+const FORBIDDEN_DAEMON_PUBLISH_PROXY_IDENTIFIERS: &[&str] = &[
+ "radrootsd.publish_proxy.v1",
+ "radroots_publish_proxy_protocol",
+ "publish_proxy_protocol",
+ "publish.relays.resolve",
+ "\"publish.event\"",
+ "PublishRelayPolicy",
+ "PublishDeliveryPolicy",
+ "PublishEventRequest",
+ "PublishEventResponse",
+ "PublishJobView",
+ "PublishRelayOutcome",
+ "PublishRelaySource",
+];
+
const REQUIRED_SDK_README_CONCEPTS: &[&str] = &[
"RadrootsClient::builder()",
"sdk.trades()",
@@ -1275,6 +1290,27 @@ fn sdk_public_api_does_not_export_protocol_workflow_bypass() {
);
}
+#[test]
+fn sdk_proxy_surfaces_reject_removed_daemon_publish_proxy_identifiers() {
+ let manifest_dir = Path::new(env!("CARGO_MANIFEST_DIR"));
+
+ for relative_path in [
+ "Cargo.toml",
+ "src/lib.rs",
+ "src/adapters/radrootsd.rs",
+ "src/sync_runtime.rs",
+ "src/transport.rs",
+ ] {
+ let source = read_source(manifest_dir.join(relative_path).as_path());
+ for forbidden in FORBIDDEN_DAEMON_PUBLISH_PROXY_IDENTIFIERS {
+ assert!(
+ !contains_forbidden_concept(source.as_str(), forbidden),
+ "{relative_path} must not reintroduce removed daemon publish proxy identifier `{forbidden}`"
+ );
+ }
+ }
+}
+
fn product_runtime_file_stays_on_boundary(relative_path: &str) {
let source = read_source(
Path::new(env!("CARGO_MANIFEST_DIR"))