pub struct TaskExecutionStep {Show 25 fields
pub id: String,
pub required_capability: Option<String>,
pub template: Option<String>,
pub execution_profile: Option<String>,
pub builtin: Option<String>,
pub enabled: bool,
pub repeatable: bool,
pub is_guard: bool,
pub cost_preference: Option<CostPreference>,
pub prehook: Option<StepPrehookConfig>,
pub tty: bool,
pub outputs: Vec<String>,
pub pipe_to: Option<String>,
pub command: Option<String>,
pub chain_steps: Vec<TaskExecutionStep>,
pub scope: Option<StepScope>,
pub behavior: StepBehavior,
pub max_parallel: Option<usize>,
pub stagger_delay_ms: Option<u64>,
pub timeout_secs: Option<u64>,
pub stall_timeout_secs: Option<u64>,
pub item_select_config: Option<ItemSelectConfig>,
pub store_inputs: Vec<StoreInputConfig>,
pub store_outputs: Vec<StoreOutputConfig>,
pub step_vars: Option<HashMap<String, String>>,
}Expand description
Task execution step (runtime representation)
Fields§
§id: StringStable step identifier used in plans, logs, and references.
required_capability: Option<String>Required agent capability when this is an agent-dispatched step.
template: Option<String>Reference to a StepTemplate resource name
execution_profile: Option<String>Named execution profile applied to this step.
builtin: Option<String>Builtin step implementation to invoke instead of agent dispatch.
enabled: boolEnables or disables the step without removing it from the plan.
repeatable: boolAllows the step to run again in later workflow cycles.
is_guard: boolMarks the step as a loop guard that can terminate execution.
cost_preference: Option<CostPreference>Optional agent-cost preference used during selection.
prehook: Option<StepPrehookConfig>Runtime prehook controlling whether and how the step runs.
tty: boolRequests a TTY when the step launches a command.
outputs: Vec<String>Named outputs this step produces (for pipeline variable passing)
pipe_to: Option<String>Pipe this step’s output to the named step as input
command: Option<String>Build command for builtin build/test/lint steps
chain_steps: Vec<TaskExecutionStep>Sub-steps to execute in sequence for smoke_chain step
scope: Option<StepScope>Execution scope override (defaults based on step type)
behavior: StepBehaviorDeclarative step behavior (on_failure, captures, post_actions, etc.)
max_parallel: Option<usize>Maximum parallel items for item-scoped steps (per-step override)
stagger_delay_ms: Option<u64>Stagger delay in ms between parallel agent spawns (per-step override)
timeout_secs: Option<u64>Per-step timeout in seconds (overrides global safety.step_timeout_secs)
stall_timeout_secs: Option<u64>Per-step stall auto-kill threshold in seconds (overrides global safety.stall_timeout_secs)
item_select_config: Option<ItemSelectConfig>WP03: Configuration for item_select builtin step
store_inputs: Vec<StoreInputConfig>Store inputs: read values from workflow stores before step execution
store_outputs: Vec<StoreOutputConfig>Store outputs: write pipeline vars to workflow stores after step execution
step_vars: Option<HashMap<String, String>>Step-scoped variable overrides applied as a temporary overlay on pipeline variables during this step’s execution. Does not modify global pipeline state.
Implementations§
Source§impl TaskExecutionStep
impl TaskExecutionStep
Sourcepub fn resolved_scope(&self) -> StepScope
pub fn resolved_scope(&self) -> StepScope
Returns the resolved scope: explicit override or default based on step id, falling back to required_capability when the id is not a known step type.
Sourcepub fn effective_execution_mode(&self) -> Cow<'_, ExecutionMode>
pub fn effective_execution_mode(&self) -> Cow<'_, ExecutionMode>
Returns the authoritative execution mode for this step.
If the step shape implies a specific mode, this always returns it
regardless of what behavior.execution says:
chain_steps=>Chain- known
builtin=>Builtin { name } command=>Builtin { name: self.id }
This is the single consolidated entry point for dispatch decisions.
Unlike normalize_step_execution_mode in config::step, which mutates stored state,
this method is read-only and is always authoritative at dispatch time,
even if renormalization hasn’t run yet.
Sourcepub fn renormalize_execution_mode(&mut self)
pub fn renormalize_execution_mode(&mut self)
Corrects behavior.execution when stored state drifts from the step shape.
After deserializing from SQLite the behavior.execution field may carry
the serde #[default] value (ExecutionMode::Agent) even though
self.builtin names a known builtin step. This method is the single
source of truth for healing that mismatch:
- If the step contains
chain_steps, forcebehavior.executiontoChain. - If
self.builtinnames a known builtin, forcebehavior.executiontoBuiltin { name }and clearrequired_capability. - If the step is a command step, force
behavior.executiontoBuiltin { name: self.id }so dispatch uses the command path. - Recurse into child chain steps.
Trait Implementations§
Source§impl Clone for TaskExecutionStep
impl Clone for TaskExecutionStep
Source§fn clone(&self) -> TaskExecutionStep
fn clone(&self) -> TaskExecutionStep
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for TaskExecutionStep
impl Debug for TaskExecutionStep
Source§impl<'de> Deserialize<'de> for TaskExecutionStep
impl<'de> Deserialize<'de> for TaskExecutionStep
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<TaskExecutionStep, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<TaskExecutionStep, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Serialize for TaskExecutionStep
impl Serialize for TaskExecutionStep
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 TaskExecutionStep
impl RefUnwindSafe for TaskExecutionStep
impl Send for TaskExecutionStep
impl Sync for TaskExecutionStep
impl Unpin for TaskExecutionStep
impl UnsafeUnpin for TaskExecutionStep
impl UnwindSafe for TaskExecutionStep
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