lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

commit 05530a10ed58910f9309e1560820c9091edf300e
parent a4c9f542d50475f1d0f290214e29f68d3aa75e1f
Author: triesap <tyson@radroots.org>
Date:   Wed,  1 Jul 2026 07:33:27 +0000

sdk: expose validation trust receipt fields

- carry shared validation authority and confidence types in DVM ingest receipts
- re-export the shared trust contract from the runtime SDK surface
- preserve local-only confidence until product validation APIs classify RHI evidence
- validate with radroots_sdk fmt, focused DVM test, and all-features check

Diffstat:
Mcrates/sdk/src/dvm_runtime.rs | 15+++++++++++++++
Mcrates/sdk/src/lib.rs | 4++++
Mcrates/sdk/tests/dvm_runtime.rs | 14++++++++++----
3 files changed, 29 insertions(+), 4 deletions(-)

diff --git a/crates/sdk/src/dvm_runtime.rs b/crates/sdk/src/dvm_runtime.rs @@ -26,6 +26,7 @@ use radroots_events_codec::wire::{WireEventParts, canonicalize_tags, to_frozen_d use radroots_trade::dvm::RadrootsTradeInventoryBinWitnessDto; #[cfg(feature = "runtime")] use radroots_trade::validation_receipt::{ + RadrootsTradeCommitmentConfidence, RadrootsTradeValidationAuthority, RadrootsValidationReceiptExpectedBinding, RadrootsValidationReceiptProofSystem, RadrootsValidationReceiptResult, RadrootsValidationReceiptType, verify_validation_receipt_event, @@ -393,6 +394,8 @@ pub struct DvmValidationReceiptIngestReceipt { pub receipt_type: RadrootsValidationReceiptType, pub result: RadrootsValidationReceiptResult, pub proof_system: RadrootsValidationReceiptProofSystem, + pub validation_authority: Option<RadrootsTradeValidationAuthority>, + pub commitment_confidence: RadrootsTradeCommitmentConfidence, pub local_event_seq: i64, pub inserted: bool, pub refresh: SyncProjectionRefreshReceipt, @@ -518,6 +521,8 @@ impl<'sdk> DvmClient<'sdk> { receipt_type: verified.receipt.receipt_type, result: verified.receipt.result, proof_system: verified.receipt.proof.system, + validation_authority: None, + commitment_confidence: validation_receipt_ingest_confidence(verified.receipt.result), local_event_seq: ingest.seq, inserted: ingest.inserted, refresh, @@ -526,6 +531,16 @@ impl<'sdk> DvmClient<'sdk> { } #[cfg(feature = "runtime")] +fn validation_receipt_ingest_confidence( + result: RadrootsValidationReceiptResult, +) -> RadrootsTradeCommitmentConfidence { + match result { + RadrootsValidationReceiptResult::Valid => RadrootsTradeCommitmentConfidence::LocalOnly, + RadrootsValidationReceiptResult::Invalid => RadrootsTradeCommitmentConfidence::Invalid, + } +} + +#[cfg(feature = "runtime")] fn dvm_trade_transition_proof_plan( request: DvmTradeTransitionProofPrepareRequest, created_at: RadrootsSdkTimestamp, diff --git a/crates/sdk/src/lib.rs b/crates/sdk/src/lib.rs @@ -176,3 +176,7 @@ pub use crate::trade_storage::{ }; #[cfg(feature = "runtime")] pub use radroots_trade::dvm::RadrootsTradeInventoryBinWitnessDto; +#[cfg(feature = "runtime")] +pub use radroots_trade::validation_receipt::{ + RadrootsTradeCommitmentConfidence, RadrootsTradeValidationAuthority, +}; diff --git a/crates/sdk/tests/dvm_runtime.rs b/crates/sdk/tests/dvm_runtime.rs @@ -37,10 +37,11 @@ use radroots_sdk::{ #[cfg(feature = "signer-adapters")] use radroots_sdk::{RadrootsSdkLocalKeySigner, RadrootsSdkSignerProvider}; use radroots_trade::validation_receipt::{ - RadrootsTradeValidationReceipt, RadrootsValidationReceiptProof, - RadrootsValidationReceiptProofSystem, RadrootsValidationReceiptResult, - RadrootsValidationReceiptStatement, RadrootsValidationReceiptType, - validation_receipt_event_build, validation_receipt_public_values_hash_hex, + RadrootsTradeCommitmentConfidence, RadrootsTradeValidationReceipt, + RadrootsValidationReceiptProof, RadrootsValidationReceiptProofSystem, + RadrootsValidationReceiptResult, RadrootsValidationReceiptStatement, + RadrootsValidationReceiptType, validation_receipt_event_build, + validation_receipt_public_values_hash_hex, }; const BUYER_SECRET_KEY_HEX: &str = @@ -313,6 +314,11 @@ async fn dvm_validation_receipt_ingest_commits_pending_trade_status() { ingest.proof_system, RadrootsValidationReceiptProofSystem::None ); + assert_eq!(ingest.validation_authority, None); + assert_eq!( + ingest.commitment_confidence, + RadrootsTradeCommitmentConfidence::LocalOnly + ); assert_eq!(ingest.local_event_seq, 3); assert!(ingest.inserted); assert_eq!(ingest.refresh.validation_receipts, 1);