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 }