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:
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",