Skip to main content

effect_runtime/
vocab.rs

1//! Controlled vocabulary enums for effect-runtime artifact fields.
2//!
3//! Each enum represents a closed set of domain values used across effect
4//! lifecycle artifacts. All variants serialize as `snake_case`.
5
6use schemars::JsonSchema;
7use serde::{Deserialize, Serialize};
8
9/// Atomicity guarantee level for an effect commit operation.
10#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
11#[serde(rename_all = "snake_case")]
12pub enum CommitAtomicityV1 {
13    BoundedMultiStep,
14    ExactlyOnce,
15    AtLeastOnce,
16    BestEffort,
17}
18
19/// Entity responsible for retrying a failed or timed-out effect.
20#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
21#[serde(rename_all = "snake_case")]
22pub enum RetryOwnerV1 {
23    EffectRuntime,
24    ForgeOrchestration,
25    Verification,
26    Provider,
27    Operator,
28}
29
30/// Behavior to apply when an effect window closes while execution is still in flight.
31#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
32#[serde(rename_all = "snake_case")]
33pub enum CloseMidflightBehaviorV1 {
34    AbortAndEmitReceipt,
35    FailClosed,
36    ContinueObservation,
37    BestEffortCompensation,
38}
39
40/// Classification of the type of side-effect an intent describes.
41#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
42#[serde(rename_all = "snake_case")]
43pub enum EffectClassV1 {
44    ExternalWrite,
45    ExternalRead,
46    ExternalDelete,
47    StateTransition,
48    Compensation,
49}
50
51/// Upper bound on the scope of impact an effect may have.
52#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
53#[serde(rename_all = "snake_case")]
54pub enum BlastRadiusCeilingV1 {
55    SingleTenant,
56    SingleService,
57    Regional,
58    Global,
59}
60
61/// Classification of how reversible an effect is after execution.
62#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
63#[serde(rename_all = "snake_case")]
64pub enum ReversibilityClassV1 {
65    Compensatable,
66    Replayable,
67    Irreversible,
68}
69
70/// Execution mode governing whether an effect produces real side-effects.
71#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
72#[serde(rename_all = "snake_case")]
73pub enum RunModeV1 {
74    Live,
75    Simulated,
76    DryRun,
77    Replay,
78}
79
80/// Whether an effect intent must be published to governance observers.
81#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
82#[serde(rename_all = "snake_case")]
83pub enum PublicationStatusV1 {
84    Required,
85    AdvisoryOnly,
86    Deferred,
87    Suppressed,
88}
89
90/// Binary pass/fail result for a preflight check gate.
91#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
92#[serde(rename_all = "snake_case")]
93pub enum CheckResultV1 {
94    Pass,
95    Fail,
96}
97
98/// Whether the budget allocation is sufficient for the intended effect.
99#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
100#[serde(rename_all = "snake_case")]
101pub enum BudgetSufficiencyResultV1 {
102    Sufficient,
103    Insufficient,
104}
105
106/// Terminal or in-progress state of an effect or compensation execution.
107#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
108#[serde(rename_all = "snake_case")]
109pub enum ExecutionStateV1 {
110    Completed,
111    Partial,
112    Cancelled,
113    TimedOut,
114    Failed,
115    InProgress,
116}
117
118/// State of post-execution observation for an effect.
119#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
120#[serde(rename_all = "snake_case")]
121pub enum ObservationStateV1 {
122    Complete,
123    InProgress,
124    DriftDetected,
125}
126
127/// Recommended next action after observing an executed effect's outcome.
128#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
129#[serde(rename_all = "snake_case")]
130pub enum ClosureRecommendationV1 {
131    CloseSuccessfully,
132    OpenCompensation,
133    EscalateReview,
134    ReplayReady,
135}
136
137/// Classification of the compensation strategy to be applied.
138#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
139#[serde(rename_all = "snake_case")]
140pub enum CompensationClassV1 {
141    StateRestore,
142    LocalRollback,
143    ForwardFix,
144    OperatorRunbook,
145}
146
147/// Observed state of a side-effect in an external system.
148#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
149#[serde(rename_all = "snake_case")]
150pub enum ExternalObservationStateV1 {
151    Committed,
152    Pending,
153    RolledBack,
154    Failed,
155}