cli

Command-line interface for Radroots
git clone https://radroots.dev/git/cli.git
Log | Files | Refs | README | LICENSE

commit ff3133f85a5f28ad326c46a131845ba0c503c078
parent aeda0daab1770993d9741adf93e659c769e53149
Author: triesap <tyson@radroots.org>
Date:   Sat, 11 Jul 2026 08:29:57 +0000

tests: guard mesh preview denial output

- require mesh.policy.check to keep structured denial fields
- require CLI mesh policy output to derive from the mesh policy model
- reject Reticulum preview fallback and success wording in mesh runtime output
- preserve transport-neutral view field guards for mesh policy checks

Diffstat:
Mtests/target_cli.rs | 65+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 61 insertions(+), 4 deletions(-)

diff --git a/tests/target_cli.rs b/tests/target_cli.rs @@ -2064,14 +2064,71 @@ fn transport_source_boundary_rejects_removed_relay_and_publish_proxy_surfaces() "pub struct MeshPolicyCheckView", "pub struct RpcStatusView", ); - assert!( - mesh_policy_view_source.contains("pub transport: String,"), - "mesh policy view must retain canonical transport field" - ); + for required in [ + "pub transport: String,", + "pub usable_for_delivery: bool,", + "pub decision: String,", + "pub deny_reason: String,", + "pub payload_bytes: u64,", + "pub frame_bytes: u64,", + "pub max_payload_bytes: u64,", + "pub max_frame_bytes: u64,", + "pub compression: String,", + "pub custom_scopes_enabled: bool,", + ] { + assert!( + mesh_policy_view_source.contains(required), + "mesh policy view must retain structured denial field `{required}`" + ); + } assert!( !mesh_policy_view_source.contains("pub transport_kind:"), "mesh policy view must not expose removed transport_kind field" ); + for forbidden in [ + "pub accepted:", + "pub delivered:", + "pub forwarded:", + "pub stored:", + "pub seen:", + ] { + assert!( + !mesh_policy_view_source.contains(forbidden), + "mesh policy view must not expose preview-success field `{forbidden}`" + ); + } + + let mesh_runtime_source = + fs::read_to_string(manifest_dir.join("src/runtime/mesh.rs")).expect("read mesh runtime"); + for required in [ + "RadrootsMeshPayloadPolicy::preview_unavailable()", + "policy.evaluate(&input)", + "decision.usable_for_delivery()", + "deny_reason", + "policy.max_payload_bytes", + "policy.max_frame_bytes", + "policy.compression.label()", + "policy.custom_scopes_enabled", + ] { + assert!( + mesh_runtime_source.contains(required), + "src/runtime/mesh.rs must derive structured preview denial from mesh policy witness `{required}`" + ); + } + for forbidden in [ + "fallback to Nostr", + "falls back to Nostr", + "accepted delivery", + "delivered delivery", + "forwarded delivery", + "stored delivery", + "seen delivery", + ] { + assert!( + !mesh_runtime_source.contains(forbidden), + "src/runtime/mesh.rs must not imply Reticulum preview success or fallback `{forbidden}`" + ); + } let sdk_source = fs::read_to_string(manifest_dir.join("src/runtime/sdk.rs")).expect("read sdk"); for required in [