rhi

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

services_hardening_reconciliation_finalization_commit_contract.rs (2517B)


      1 #![forbid(unsafe_code)]
      2 
      3 const CONTRACT: &str =
      4     include_str!("../contracts/services_hardening/reconciliation_finalization_commit.v1.json");
      5 const SOURCE: &str = include_str!("../src/reconciliation_finalization_commit.rs");
      6 const ROOT: &str = include_str!("../src/lib.rs");
      7 
      8 #[test]
      9 fn contract_freezes_one_atomic_effect_boundary() {
     10     let contract: serde_json::Value = serde_json::from_str(CONTRACT).expect("contract JSON");
     11     assert_eq!(
     12         contract["schema"],
     13         "radroots.rhi.reconciliation-finalization-commit"
     14     );
     15     assert_eq!(contract["contract_version"], 1);
     16     assert_eq!(contract["transaction"]["count"], 1);
     17     assert_eq!(
     18         contract["transaction"]["reconcile_exact_prior_success_before_consumed_lease_validation"],
     19         true
     20     );
     21     assert_eq!(contract["effects"]["sqlite_write"], true);
     22     assert_eq!(contract["effects"]["network"], false);
     23     assert_eq!(contract["effects"]["task_spawn"], false);
     24     assert_eq!(
     25         contract["publication"]["disabled"],
     26         "no_outbox_and_no_target_rows"
     27     );
     28 }
     29 
     30 #[test]
     31 fn implementation_retains_exact_bytes_and_has_no_external_effect_authority() {
     32     for required in [
     33         "pub async fn commit_finalization(",
     34         "reconcile_existing(transaction, record)",
     35         "validate_finalization_identity(transaction, record.lease, record.identity, record.now)",
     36         "validate_source_inventory(transaction, record)",
     37         "validate_advanced_checkpoints(transaction, record)",
     38         "validate_supersession(transaction, record)",
     39         "INSERT_MANIFEST_SQL",
     40         "INSERT_PROJECTION_SQL",
     41         "INSERT_REPORT_SQL",
     42         "INSERT_SIGNED_EVENT_SQL",
     43         "INSERT_OUTBOX_SQL",
     44         "INSERT_TARGET_SQL",
     45         "COMPLETE_JOB_SQL",
     46         "record.canonical_manifest.as_ref()",
     47         "record.canonical_report.as_ref()",
     48         "record.canonical_event_json.as_ref()",
     49     ] {
     50         assert!(
     51             SOURCE.contains(required),
     52             "missing finalization guard {required}"
     53         );
     54     }
     55     for forbidden in [
     56         "tokio::spawn",
     57         "spawn_blocking",
     58         "SystemTime",
     59         "std::fs",
     60         "reqwest",
     61         "EventSink",
     62         "publish(",
     63         "send(",
     64     ] {
     65         assert!(
     66             !SOURCE.contains(forbidden),
     67             "finalization gained forbidden effect authority {forbidden}"
     68         );
     69     }
     70     assert!(ROOT.contains("mod reconciliation_finalization_commit;"));
     71     assert!(!ROOT.contains("pub mod reconciliation_finalization_commit;"));
     72 }