cli

Command-line interface for Radroots
git clone https://radroots.dev/git/cli.git
Log | Files | Refs | README | LICENSE

commit 9c486cdaae18014c682aaf70c563c53eb4c5ea24
parent 807f52bb87a2a6bf32f97653c2cd18f2fe47a4fd
Author: triesap <tyson@radroots.org>
Date:   Sat,  4 Jul 2026 00:11:07 +0000

trade: use SDK mutation evidence modes

- pass resync-before-mutation mode into trade lifecycle requests
- route locator status reads through SDK resync-then-local source
- update migrated path guards for evidence-mode mutations
- keep raw evidence ingestion out of CLI trade paths

Diffstat:
Msrc/runtime/order.rs | 27+++++++++++++++------------
Msrc/runtime/sdk.rs | 5++++-
2 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/src/runtime/order.rs b/src/runtime/order.rs @@ -54,12 +54,13 @@ use radroots_replica_db_schema::trade_product::{ use radroots_sdk::{ AckPolicy, PrivacyPreflightConfirmation, ProductSensitivityField, PublishMode, PushOutboxEventReceipt, PushOutboxEventState, PushOutboxReceipt, PushOutboxRelayOutcomeKind, - RelayResolutionPolicy, SdkMutationState, TradeAcceptRequest, TradeCancelRequest, - TradeCancellationPlan, TradeCancellationReceipt, TradeDecisionPlan, TradeDecisionReceipt, - TradeDeclineRequest, TradeMutationOutcome, TradeProposeRequest, TradeRevisionDecisionPlan, - TradeRevisionDecisionReceipt, TradeRevisionDecisionRequest, TradeRevisionProposalPlan, - TradeRevisionProposalReceipt, TradeRevisionProposalRequest, TradeStatusReceipt, - TradeStatusRequest, TradeSubmitPlan, TradeSubmitReceipt, TradeWorkflowEnqueueReceipt, + RelayResolutionPolicy, SdkMutationState, SdkTradeStatusSource, TradeAcceptRequest, + TradeCancelRequest, TradeCancellationPlan, TradeCancellationReceipt, TradeDecisionPlan, + TradeDecisionReceipt, TradeDeclineRequest, TradeEvidenceMode, TradeMutationOutcome, + TradeProposeRequest, TradeRevisionDecisionPlan, TradeRevisionDecisionReceipt, + TradeRevisionDecisionRequest, TradeRevisionProposalPlan, TradeRevisionProposalReceipt, + TradeRevisionProposalRequest, TradeStatusReceipt, TradeStatusRequest, TradeSubmitPlan, + TradeSubmitReceipt, TradeWorkflowEnqueueReceipt, }; use radroots_sql_core::SqliteExecutor; use radroots_trade::identity::RadrootsTradeLocator; @@ -1322,6 +1323,7 @@ fn decide_trade_via_sdk( trade_relay_resolution_policy(), publish_mode, ack_policy, + TradeEvidenceMode::ResyncBeforeMutation, ) .with_privacy_confirmation(trade_privacy_confirmation()); if let Some(idempotency_key) = args.idempotency_key.as_deref() { @@ -1345,6 +1347,7 @@ fn decide_trade_via_sdk( trade_relay_resolution_policy(), publish_mode, ack_policy, + TradeEvidenceMode::ResyncBeforeMutation, ) .with_privacy_confirmation(trade_privacy_confirmation()); if let Some(idempotency_key) = args.idempotency_key.as_deref() { @@ -1384,6 +1387,7 @@ fn propose_revision_via_sdk( trade_relay_resolution_policy(), publish_mode, ack_policy, + TradeEvidenceMode::ResyncBeforeMutation, ) .with_privacy_confirmation(trade_privacy_confirmation()); if let Some(idempotency_key) = args.idempotency_key.as_deref() { @@ -1444,6 +1448,7 @@ fn decide_revision_via_sdk( trade_relay_resolution_policy(), publish_mode, ack_policy, + TradeEvidenceMode::ResyncBeforeMutation, ) .with_privacy_confirmation(trade_privacy_confirmation()); if let Some(idempotency_key) = args.idempotency_key.as_deref() { @@ -1490,6 +1495,7 @@ fn cancel_trade_via_sdk( trade_relay_resolution_policy(), publish_mode, ack_policy, + TradeEvidenceMode::ResyncBeforeMutation, ) .with_privacy_confirmation(trade_privacy_confirmation()); if let Some(idempotency_key) = args.idempotency_key.as_deref() { @@ -1508,12 +1514,9 @@ fn trade_status_for_locator( session: &CliSdkSession, locator: RadrootsTradeLocator, ) -> Result<TradeStatusReceipt, CliSdkAdapterError> { - Ok(session.block_on( - session - .sdk() - .trades() - .status(TradeStatusRequest::new(locator)), - )?) + Ok(session.block_on(session.sdk().trades().status( + TradeStatusRequest::new(locator).with_source(SdkTradeStatusSource::ResyncThenLocal), + ))?) } fn inventory_commitments_from_status( diff --git a/src/runtime/sdk.rs b/src/runtime/sdk.rs @@ -940,10 +940,11 @@ mod tests { end: "fn inventory_commitments_from_status(", required_tokens: &[ "TradeStatusRequest::new(locator)", + "SdkTradeStatusSource::ResyncThenLocal", "session.block_on(", ".sdk()", ".trades()", - ".status(TradeStatusRequest::new(locator))", + ".with_source(SdkTradeStatusSource::ResyncThenLocal)", ], }, MigratedCliPathGuard { @@ -1003,6 +1004,7 @@ mod tests { "decide_trade_via_sdk", "TradeAcceptRequest::new", "TradeDeclineRequest::new", + "TradeEvidenceMode::ResyncBeforeMutation", "session.sdk().trades().seller().accept_trade", "session.sdk().trades().seller().decline_trade", ], @@ -1019,6 +1021,7 @@ mod tests { "TradeRevisionProposalRequest::new", "TradeRevisionDecisionRequest::new", "TradeCancelRequest::new", + "TradeEvidenceMode::ResyncBeforeMutation", "session.sdk().trades().seller().propose_revision", "session.sdk().trades().buyer().accept_revision", "session.sdk().trades().buyer().decline_revision",