commit 7b21fd126a677eeabe3dc7b2d5901d9946465101
parent 2338e109ef2ffa527f3ac4219817071acbdfbf14
Author: triesap <tyson@radroots.org>
Date: Thu, 16 Jul 2026 13:52:31 +0000
sdk: align runtime contract trade operations
Replace retired trade request/decision operation descriptors with the release-product proposal, revision, candidate, cancellation, query, evidence, and private-artifact operation catalog.
Update CLI host metadata so generated runtime contract bindings expose file-backed trade mutation commands.
Diffstat:
2 files changed, 155 insertions(+), 46 deletions(-)
diff --git a/crates/runtime_contract_v1/src/lib.rs b/crates/runtime_contract_v1/src/lib.rs
@@ -110,12 +110,18 @@ runtime_operation_ids! {
BasketItemUpdate => "basket.item.update",
BasketItemRemove => "basket.item.remove",
BasketQuote => "basket.quote",
- TradeRequest => "trade.request",
+ TradeProposalSubmit => "trade.proposal.submit",
+ TradeRevisionPropose => "trade.revision.propose",
+ TradeCandidateDecide => "trade.candidate.decide",
+ TradeCancellationSubmit => "trade.cancellation.submit",
+ TradeOperationResume => "trade.operation.resume",
TradeGet => "trade.get",
TradeList => "trade.list",
- TradeAccept => "trade.accept",
- TradeDecline => "trade.decline",
- TradeCancel => "trade.cancel",
+ TradeEvidenceRefresh => "trade.evidence.refresh",
+ TradeEvidenceInspect => "trade.evidence.inspect",
+ TradePrivateArtifactSeal => "trade.private_artifact.seal",
+ TradePrivateArtifactOpen => "trade.private_artifact.open",
+ TradePrivateArtifactDelete => "trade.private_artifact.delete",
ValidationStatus => "validation.status",
ValidationReceiptGet => "validation.receipt.get",
ValidationReceiptVerify => "validation.receipt.verify",
@@ -681,7 +687,7 @@ pub const RUNTIME_OPERATION_DESCRIPTORS_V1: &[RuntimeOperationDescriptorV1] = &[
ProjectionEffectV1::WritesProjection,
),
mutation(
- RuntimeOperationIdV1::TradeRequest,
+ RuntimeOperationIdV1::TradeProposalSubmit,
OperationRiskV1::High,
ApprovalRequirementV1::ConditionalOrRequiredByMode,
SignerRequirementV1::Required,
@@ -689,22 +695,17 @@ pub const RUNTIME_OPERATION_DESCRIPTORS_V1: &[RuntimeOperationDescriptorV1] = &[
PrivacyEffectV1::PrivateCoordination,
ProjectionEffectV1::MayUpdateProjection,
),
- read(
- RuntimeOperationIdV1::TradeGet,
- OperationRiskV1::Low,
- TransportCapabilityRouteV1::local(),
- PrivacyEffectV1::PrivateCoordination,
- ProjectionEffectV1::ReadsProjection,
- ),
- read(
- RuntimeOperationIdV1::TradeList,
- OperationRiskV1::Low,
- TransportCapabilityRouteV1::local(),
+ mutation(
+ RuntimeOperationIdV1::TradeRevisionPropose,
+ OperationRiskV1::High,
+ ApprovalRequirementV1::ConditionalOrRequiredByMode,
+ SignerRequirementV1::Required,
+ TransportCapabilityRouteV1::delivery(),
PrivacyEffectV1::PrivateCoordination,
- ProjectionEffectV1::ReadsProjection,
+ ProjectionEffectV1::MayUpdateProjection,
),
mutation(
- RuntimeOperationIdV1::TradeAccept,
+ RuntimeOperationIdV1::TradeCandidateDecide,
OperationRiskV1::High,
ApprovalRequirementV1::ConditionalOrRequiredByMode,
SignerRequirementV1::Required,
@@ -713,7 +714,7 @@ pub const RUNTIME_OPERATION_DESCRIPTORS_V1: &[RuntimeOperationDescriptorV1] = &[
ProjectionEffectV1::MayUpdateProjection,
),
mutation(
- RuntimeOperationIdV1::TradeDecline,
+ RuntimeOperationIdV1::TradeCancellationSubmit,
OperationRiskV1::High,
ApprovalRequirementV1::ConditionalOrRequiredByMode,
SignerRequirementV1::Required,
@@ -722,7 +723,7 @@ pub const RUNTIME_OPERATION_DESCRIPTORS_V1: &[RuntimeOperationDescriptorV1] = &[
ProjectionEffectV1::MayUpdateProjection,
),
mutation(
- RuntimeOperationIdV1::TradeCancel,
+ RuntimeOperationIdV1::TradeOperationResume,
OperationRiskV1::High,
ApprovalRequirementV1::ConditionalOrRequiredByMode,
SignerRequirementV1::Required,
@@ -731,6 +732,61 @@ pub const RUNTIME_OPERATION_DESCRIPTORS_V1: &[RuntimeOperationDescriptorV1] = &[
ProjectionEffectV1::MayUpdateProjection,
),
read(
+ RuntimeOperationIdV1::TradeGet,
+ OperationRiskV1::Low,
+ TransportCapabilityRouteV1::local(),
+ PrivacyEffectV1::PrivateCoordination,
+ ProjectionEffectV1::ReadsProjection,
+ ),
+ read(
+ RuntimeOperationIdV1::TradeList,
+ OperationRiskV1::Low,
+ TransportCapabilityRouteV1::local(),
+ PrivacyEffectV1::PrivateCoordination,
+ ProjectionEffectV1::ReadsProjection,
+ ),
+ mutation(
+ RuntimeOperationIdV1::TradeEvidenceRefresh,
+ OperationRiskV1::Medium,
+ ApprovalRequirementV1::None,
+ SignerRequirementV1::None,
+ TransportCapabilityRouteV1::local(),
+ PrivacyEffectV1::PrivateCoordination,
+ ProjectionEffectV1::WritesProjection,
+ ),
+ read(
+ RuntimeOperationIdV1::TradeEvidenceInspect,
+ OperationRiskV1::Low,
+ TransportCapabilityRouteV1::local(),
+ PrivacyEffectV1::PrivateCoordination,
+ ProjectionEffectV1::ReadsProjection,
+ ),
+ mutation(
+ RuntimeOperationIdV1::TradePrivateArtifactSeal,
+ OperationRiskV1::High,
+ ApprovalRequirementV1::ConditionalOrRequiredByMode,
+ SignerRequirementV1::None,
+ TransportCapabilityRouteV1::local(),
+ PrivacyEffectV1::PrivateCoordination,
+ ProjectionEffectV1::WritesProjection,
+ ),
+ read(
+ RuntimeOperationIdV1::TradePrivateArtifactOpen,
+ OperationRiskV1::High,
+ TransportCapabilityRouteV1::local(),
+ PrivacyEffectV1::PrivateCoordination,
+ ProjectionEffectV1::ReadsProjection,
+ ),
+ mutation(
+ RuntimeOperationIdV1::TradePrivateArtifactDelete,
+ OperationRiskV1::Critical,
+ ApprovalRequirementV1::Required,
+ SignerRequirementV1::None,
+ TransportCapabilityRouteV1::local(),
+ PrivacyEffectV1::PrivateCoordination,
+ ProjectionEffectV1::WritesProjection,
+ ),
+ read(
RuntimeOperationIdV1::ValidationStatus,
OperationRiskV1::Low,
TransportCapabilityRouteV1::local(),
@@ -1625,10 +1681,11 @@ fn validate_operation_descriptors() -> Result<(), RuntimeContractErrorV1> {
RuntimeOperationIdV1::ListingPublish,
RuntimeOperationIdV1::ListingPause,
RuntimeOperationIdV1::ListingWithdraw,
- RuntimeOperationIdV1::TradeRequest,
- RuntimeOperationIdV1::TradeAccept,
- RuntimeOperationIdV1::TradeDecline,
- RuntimeOperationIdV1::TradeCancel,
+ RuntimeOperationIdV1::TradeProposalSubmit,
+ RuntimeOperationIdV1::TradeRevisionPropose,
+ RuntimeOperationIdV1::TradeCandidateDecide,
+ RuntimeOperationIdV1::TradeCancellationSubmit,
+ RuntimeOperationIdV1::TradeOperationResume,
RuntimeOperationIdV1::SyncPush,
RuntimeOperationIdV1::TransportDeliveryRetry,
] {
@@ -1780,7 +1837,11 @@ mod tests {
for operation_id in [
RuntimeOperationIdV1::FarmPublish,
RuntimeOperationIdV1::ListingPublish,
- RuntimeOperationIdV1::TradeRequest,
+ RuntimeOperationIdV1::TradeProposalSubmit,
+ RuntimeOperationIdV1::TradeRevisionPropose,
+ RuntimeOperationIdV1::TradeCandidateDecide,
+ RuntimeOperationIdV1::TradeCancellationSubmit,
+ RuntimeOperationIdV1::TradeOperationResume,
RuntimeOperationIdV1::SyncPush,
] {
let descriptor = operation_descriptor(operation_id).expect("descriptor");
diff --git a/tools/xtask/src/cli_host.rs b/tools/xtask/src/cli_host.rs
@@ -279,18 +279,50 @@ const CLI_OPERATION_METADATA: &[CliOperationMetadata] = &[
false,
),
meta(
- "trade.request",
- "TradeRequest",
- "radroots trade request",
- "Request a trade from a quoted basket.",
+ "trade.proposal.submit",
+ "TradeProposalSubmit",
+ "radroots trade proposal submit <file>",
+ "Submit a trade proposal from a complete candidate draft.",
"Buyer",
false,
),
meta(
+ "trade.revision.propose",
+ "TradeRevisionPropose",
+ "radroots trade revision propose <file>",
+ "Propose a complete replacement candidate for a trade.",
+ "Any",
+ false,
+ ),
+ meta(
+ "trade.candidate.decide",
+ "TradeCandidateDecide",
+ "radroots trade candidate decide <file>",
+ "Decide a candidate proposal.",
+ "Any",
+ false,
+ ),
+ meta(
+ "trade.cancellation.submit",
+ "TradeCancellationSubmit",
+ "radroots trade cancellation submit <file>",
+ "Submit a trade cancellation mutation.",
+ "Any",
+ false,
+ ),
+ meta(
+ "trade.operation.resume",
+ "TradeOperationResume",
+ "radroots trade operation resume <file>",
+ "Resume a prepared trade operation envelope.",
+ "Any",
+ false,
+ ),
+ meta(
"trade.get",
"TradeGet",
"radroots trade get <key>",
- "Get trade details.",
+ "Get SDK trade projection details.",
"Any",
false,
),
@@ -298,32 +330,48 @@ const CLI_OPERATION_METADATA: &[CliOperationMetadata] = &[
"trade.list",
"TradeList",
"radroots trade list",
- "List trades.",
+ "List SDK trade projections.",
"Any",
true,
),
meta(
- "trade.accept",
- "TradeAccept",
- "radroots trade accept <key>",
- "Accept a trade request.",
- "Seller",
+ "trade.evidence.refresh",
+ "TradeEvidenceRefresh",
+ "radroots trade evidence refresh <trade-id>",
+ "Refresh SDK trade evidence projections.",
+ "Any",
false,
),
meta(
- "trade.decline",
- "TradeDecline",
- "radroots trade decline <key>",
- "Decline a trade request.",
- "Seller",
+ "trade.evidence.inspect",
+ "TradeEvidenceInspect",
+ "radroots trade evidence inspect <trade-id>",
+ "Inspect protected trade evidence metadata.",
+ "Any",
+ true,
+ ),
+ meta(
+ "trade.private_artifact.seal",
+ "TradePrivateArtifactSeal",
+ "radroots trade private-artifact seal <trade-id>",
+ "Seal a protected private trade artifact.",
+ "Any",
false,
),
meta(
- "trade.cancel",
- "TradeCancel",
- "radroots trade cancel <key>",
- "Cancel a trade request.",
- "Buyer",
+ "trade.private_artifact.open",
+ "TradePrivateArtifactOpen",
+ "radroots trade private-artifact open <artifact-id>",
+ "Open a protected private trade artifact.",
+ "Any",
+ false,
+ ),
+ meta(
+ "trade.private_artifact.delete",
+ "TradePrivateArtifactDelete",
+ "radroots trade private-artifact delete <artifact-id>",
+ "Delete a protected private trade artifact.",
+ "Any",
false,
),
meta(