rhi

Coordinated trade for connected markets
git clone https://radroots.dev/git/rhi.git
Log | Files | Refs | README | LICENSE

services_hardening_publication_execution_contract.rs (3162B)


      1 #![forbid(unsafe_code)]
      2 
      3 use serde_json::json;
      4 
      5 const CONTRACT: &str =
      6     include_str!("../contracts/services_hardening/publication_execution.v1.json");
      7 const SOURCE: &str = include_str!("../src/publication_execution.rs");
      8 const ROOT: &str = include_str!("../src/lib.rs");
      9 
     10 #[test]
     11 fn execution_sequence_and_recovery_contract_are_exact() {
     12     let contract: serde_json::Value = serde_json::from_str(CONTRACT).expect("contract JSON");
     13     assert_eq!(contract["schema"], "radroots.rhi.publication-execution");
     14     assert_eq!(contract["schema_version"], 1);
     15     assert_eq!(contract["contract_version"], 1);
     16     assert_eq!(
     17         contract["claim"]["authority"],
     18         "exact_current_required_authority_and_target_set"
     19     );
     20     assert_eq!(
     21         contract["attempt"]["prepare_sequence"],
     22         json!([
     23             "revalidate_exact_unexpired_lease",
     24             "validate_complete_immutable_target_inventory",
     25             "select_first_due_target_by_ordinal",
     26             "increment_attempt_and_persist_submitted",
     27             "read_and_verify_exact_committed_event_bytes",
     28             "return_sealed_exact_byte_capability"
     29         ])
     30     );
     31     assert_eq!(contract["attempt"]["remote_io_outside_transaction"], true);
     32     assert_eq!(
     33         contract["retry"]["algorithm"],
     34         "full_jitter_exponential_cap"
     35     );
     36     assert_eq!(
     37         contract["retry"]["retryable_outcomes"],
     38         json!(["rate_limited", "failed", "unknown"])
     39     );
     40     assert_eq!(
     41         contract["cancellation_and_recovery"]["lost_acknowledgement"],
     42         "unknown_until_independent_evidence"
     43     );
     44     assert_eq!(contract["exact_byte_sink"]["parse"], false);
     45     assert_eq!(contract["exact_byte_sink"]["rebuild"], false);
     46     assert_eq!(contract["exact_byte_sink"]["reserialize"], false);
     47     assert_eq!(contract["exact_byte_sink"]["resign"], false);
     48 }
     49 
     50 #[test]
     51 fn source_uses_only_the_sealed_sqlx_and_exact_byte_boundaries() {
     52     for required in [
     53         "pub trait RhiExactPublicationSink: Send + Sync",
     54         "pub const fn exact_signed_event_bytes(&self) -> &[u8]",
     55         "PREPARE_TARGET_SQL",
     56         "INSERT_ATTEMPT_SQL",
     57         "UPDATE_TARGET_OUTCOME_SQL",
     58         "UPDATE_OUTBOX_AFTER_ATTEMPT_SQL",
     59         "UPDATE_OUTBOX_RECOVERY_SQL",
     60         "read_committed(transaction, lease.outbox.id)",
     61         "RhiPublicationAttemptOutcome::Unknown",
     62         "sample_full_jitter(bound)",
     63         "CommitOutcomeUnknown",
     64     ] {
     65         assert!(
     66             SOURCE.contains(required),
     67             "missing execution guard {required}"
     68         );
     69     }
     70     for forbidden in [
     71         "radroots_event_codec",
     72         "Nip01EventWire",
     73         "SignedEvent",
     74         "DeliveryPayload",
     75         "EventSink",
     76         "serde_json",
     77         "SystemTime",
     78         "thread_rng",
     79         "OsRng",
     80         "tokio::spawn",
     81         "SqliteConnection",
     82         "SqlitePool",
     83         "std::fs",
     84         "std::net",
     85     ] {
     86         assert!(
     87             !SOURCE.contains(forbidden),
     88             "execution gained forbidden authority {forbidden}"
     89         );
     90     }
     91     assert!(ROOT.contains("mod publication_execution;"));
     92     assert!(!ROOT.contains("pub mod publication_execution;"));
     93 }