pub struct SafetyConfig {Show 15 fields
pub max_consecutive_failures: u32,
pub auto_rollback: bool,
pub checkpoint_strategy: CheckpointStrategy,
pub step_timeout_secs: Option<u64>,
pub binary_snapshot: bool,
pub profile: WorkflowSafetyProfile,
pub invariants: Vec<InvariantConfig>,
pub max_spawned_tasks: Option<usize>,
pub max_spawn_depth: Option<usize>,
pub spawn_cooldown_seconds: Option<u64>,
pub max_item_step_failures: u32,
pub min_cycle_interval_secs: u64,
pub stall_timeout_secs: Option<u64>,
pub inflight_wait_timeout_secs: u64,
pub inflight_heartbeat_grace_secs: u64,
}Expand description
Safety configuration for self-bootstrap and dangerous operations
Fields§
§max_consecutive_failures: u32Maximum consecutive failures before auto-rollback
auto_rollback: boolAutomatically rollback on repeated failures
checkpoint_strategy: CheckpointStrategyStrategy for creating checkpoints
step_timeout_secs: Option<u64>Per-step timeout in seconds (default: 1800 = 30 min)
binary_snapshot: boolSnapshot the release binary at cycle start for rollback
profile: WorkflowSafetyProfileSafety policy profile for self-referential workflows
invariants: Vec<InvariantConfig>WP04: Invariant constraints enforced by the engine
max_spawned_tasks: Option<usize>WP02: Maximum total spawned tasks per parent
max_spawn_depth: Option<usize>WP02: Maximum spawn depth (parent → child → grandchild)
spawn_cooldown_seconds: Option<u64>WP02: Minimum seconds between spawn bursts
max_item_step_failures: u32FR-035: Per-item per-step consecutive failure threshold before blocking
min_cycle_interval_secs: u64FR-035: Minimum cycle interval in seconds; rapid cycles below this trigger pause
stall_timeout_secs: Option<u64>Stall auto-kill threshold in seconds. When a step produces less than
LOW_OUTPUT_DELTA_THRESHOLD_BYTES per heartbeat for this duration, the
step is killed with exit_code=-7. Default (None) uses the built-in 900s.
inflight_wait_timeout_secs: u64FR-052: Maximum seconds to wait for in-flight runs when no heartbeat activity
inflight_heartbeat_grace_secs: u64FR-052: Heartbeat must be within this many seconds to be considered active
Trait Implementations§
Source§impl Clone for SafetyConfig
impl Clone for SafetyConfig
Source§fn clone(&self) -> SafetyConfig
fn clone(&self) -> SafetyConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SafetyConfig
impl Debug for SafetyConfig
Source§impl Default for SafetyConfig
impl Default for SafetyConfig
Source§fn default() -> SafetyConfig
fn default() -> SafetyConfig
Source§impl<'de> Deserialize<'de> for SafetyConfig
impl<'de> Deserialize<'de> for SafetyConfig
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<SafetyConfig, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<SafetyConfig, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Serialize for SafetyConfig
impl Serialize for SafetyConfig
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl Freeze for SafetyConfig
impl RefUnwindSafe for SafetyConfig
impl Send for SafetyConfig
impl Sync for SafetyConfig
impl Unpin for SafetyConfig
impl UnsafeUnpin for SafetyConfig
impl UnwindSafe for SafetyConfig
Blanket Implementations§
Source§impl<T> AnyExt for T
impl<T> AnyExt for T
Source§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind referenceSource§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable referenceSource§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointerSource§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointerSource§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request