rhi

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

services_hardening_reconciliation_commit_contract.rs (3581B)


      1 #![forbid(unsafe_code)]
      2 
      3 use rhi::RHI_RECONCILIATION_COMMIT_CONTRACT_VERSION;
      4 use serde_json::json;
      5 
      6 const CONTRACT: &str =
      7     include_str!("../contracts/services_hardening/reconciliation_commit.v1.json");
      8 const ROOT: &str = include_str!("../src/lib.rs");
      9 const SOURCE: &str = include_str!("../src/reconciliation_commit.rs");
     10 const README: &str = include_str!("../README");
     11 
     12 #[test]
     13 fn machine_contract_freezes_the_complete_step_190_boundary() {
     14     let contract: serde_json::Value = serde_json::from_str(CONTRACT).expect("contract");
     15     assert_eq!(contract["schema"], "radroots.rhi.reconciliation-commit");
     16     assert_eq!(contract["schema_version"], 1);
     17     assert_eq!(
     18         contract["contract_version"],
     19         RHI_RECONCILIATION_COMMIT_CONTRACT_VERSION
     20     );
     21     assert_eq!(contract["state_schema_version"], 6);
     22     assert_eq!(
     23         contract["transaction"]["fences_before_mutation"],
     24         json!([
     25             "exact_live_lease_row",
     26             "exact_trade_dirty_generation",
     27             "exact_evidence_policy_digest",
     28             "exact_per_source_prior_checkpoint"
     29         ])
     30     );
     31     assert_eq!(
     32         contract["checkpoint"]["advance_only_when"],
     33         "completion_is_complete_and_candidate_is_strictly_newer_than_prior"
     34     );
     35     assert_eq!(
     36         contract["checkpoint"]["public_evidence"],
     37         "sealed_and_minted_only_after_durable_commit_confirmation"
     38     );
     39     assert_eq!(
     40         contract["dirty_generation"]["advance_count_maximum_per_attempt"],
     41         1
     42     );
     43     assert_eq!(
     44         contract["idempotency"]["lost_success_retry"],
     45         "checked_before_live_lease_and_generation_fences"
     46     );
     47     assert_eq!(
     48         contract["idempotency"]["source_inventory_identity"],
     49         "domain_separated_sha256_over_exact_ordered_persisted_facts_and_provenance"
     50     );
     51     assert_eq!(contract["effects"]["source_or_relay"], false);
     52     assert_eq!(contract["effects"]["ambient_clock"], false);
     53 }
     54 
     55 #[test]
     56 fn commit_boundary_is_private_bounded_transactional_and_documented() {
     57     assert!(ROOT.contains("mod reconciliation_commit;"));
     58     assert!(!ROOT.contains("pub mod reconciliation_commit;"));
     59     for required in [
     60         "RhiReconciliationCommitError",
     61         "RhiReconciliationCommitErrorKind",
     62         "RhiReconciliationSourceCommitOutcome",
     63         "RHI_RECONCILIATION_COMMIT_CONTRACT_VERSION",
     64     ] {
     65         assert!(ROOT.contains(required), "root API is missing {required}");
     66     }
     67     for required in [
     68         ".take(plan.requests().len().saturating_add(1))",
     69         "validate_exact_lease(transaction, lease)",
     70         "reconcile_existing(transaction, &plan, &parts)",
     71         "SOURCE_INVENTORY_DIGEST_DOMAIN",
     72         "accepted_inventory_sha256",
     73         "advance_dirty_generation(",
     74         "write_checkpoint(",
     75         "committed_cursor_evidence(",
     76         "ServiceSqliteTransactionErrorKind::CommitOutcomeUnknown",
     77     ] {
     78         assert!(
     79             SOURCE.contains(required),
     80             "commit boundary is missing {required}"
     81         );
     82     }
     83     for forbidden in [
     84         "std::fs",
     85         "std::net",
     86         "tokio::spawn",
     87         "SystemTime",
     88         "thread_rng",
     89         "OsRng",
     90         "pub fn transaction",
     91         "pub fn sqlite_host",
     92     ] {
     93         assert!(
     94             !SOURCE.contains(forbidden),
     95             "commit boundary gained forbidden authority {forbidden}"
     96         );
     97     }
     98     assert!(README.contains("## Atomic reconciliation result commit"));
     99     assert!(README.contains(
    100         "[`reconciliation_commit.v1.json`](contracts/services_hardening/reconciliation_commit.v1.json)"
    101     ));
    102 }