pub struct EngineConfig {Show 17 fields
pub partition_config: PartitionConfig,
pub lanes: Vec<LaneId>,
pub lease_expiry_interval: Duration,
pub delayed_promoter_interval: Duration,
pub index_reconciler_interval: Duration,
pub attempt_timeout_interval: Duration,
pub suspension_timeout_interval: Duration,
pub pending_wp_expiry_interval: Duration,
pub retention_trimmer_interval: Duration,
pub budget_reset_interval: Duration,
pub budget_reconciler_interval: Duration,
pub quota_reconciler_interval: Duration,
pub unblock_interval: Duration,
pub dependency_reconciler_interval: Duration,
pub completion_listener: Option<CompletionListenerConfig>,
pub flow_projector_interval: Duration,
pub execution_deadline_interval: Duration,
}Expand description
Engine configuration.
Fields§
§partition_config: PartitionConfig§lanes: Vec<LaneId>Lanes to scan for delayed/index operations. Phase 1: ["default"].
lease_expiry_interval: DurationLease expiry scan interval. Default: 1.5s.
delayed_promoter_interval: DurationDelayed promoter scan interval. Default: 750ms.
index_reconciler_interval: DurationIndex reconciler scan interval. Default: 45s.
attempt_timeout_interval: DurationAttempt timeout scan interval. Default: 2s.
suspension_timeout_interval: DurationSuspension timeout scan interval. Default: 2s.
pending_wp_expiry_interval: DurationPending waitpoint expiry scan interval. Default: 5s.
retention_trimmer_interval: DurationRetention trimmer scan interval. Default: 60s.
budget_reset_interval: DurationBudget reset scan interval. Default: 15s.
budget_reconciler_interval: DurationBudget reconciler scan interval. Default: 30s.
quota_reconciler_interval: DurationQuota reconciler scan interval. Default: 30s.
unblock_interval: DurationUnblock scanner interval. Default: 5s.
dependency_reconciler_interval: DurationDependency reconciler interval. Default: 15s.
Post-Batch-C this scanner is a safety net, not the primary
promotion path. The completion_listener SUBSCRIBEs to
ff:dag:completions and dispatches dependency resolution
synchronously with each completion — under normal operation,
DAG latency is ~RTT × levels, not interval × levels.
The reconciler still runs as a catch-all for:
- messages missed during listener restart or reconnect;
- pre-Batch-C executions without
core.flow_idstamped; - operator-driven edge mutation that doesn’t pass through the terminal-transition publish path.
15s idle-scan cost is minimal. If the listener is disabled
(completion_listener = None), drop this to 1s to preserve
pre-Batch-C DAG latency behavior.
completion_listener: Option<CompletionListenerConfig>Optional push-based DAG promotion listener (Batch C item 6).
When Some, the engine spawns a completion_listener task
that SUBSCRIBEs to ff:dag:completions on a dedicated RESP3
client and dispatches dependency resolution per completion.
None disables the listener entirely — the reconciler alone
promotes. Useful for lightweight single-node deployments or
test harnesses that don’t care about DAG latency.
flow_projector_interval: DurationFlow summary projector interval. Default: 15s.
Separate observability projection path — maintains the flow summary view, NOT on the DAG-completion latency path. Kept at 15s in this config; a change to that cadence is unrelated to dependency resolution.
execution_deadline_interval: DurationExecution deadline scanner interval. Default: 5s.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for EngineConfig
impl RefUnwindSafe for EngineConfig
impl Send for EngineConfig
impl Sync for EngineConfig
impl Unpin for EngineConfig
impl UnsafeUnpin for EngineConfig
impl UnwindSafe for EngineConfig
Blanket Implementations§
Source§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> 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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more