pub struct StepStatus {
pub name: String,
pub task_run_id: Option<ForgeId>,
pub status: RunStatus,
pub started_at: Option<DateTime<Utc>>,
pub completed_at: Option<DateTime<Utc>>,
pub error: Option<String>,
pub outputs: HashMap<String, String>,
pub applied_binds: Vec<AppliedBind>,
pub jobs: Vec<JobRow>,
}Fields§
§name: String§task_run_id: Option<ForgeId>§status: RunStatus§started_at: Option<DateTime<Utc>>§completed_at: Option<DateTime<Utc>>§error: Option<String>Failure reason for a Failed step — the StepFailed.msg tail (stderr
tail for subprocess steps, a typed reason for resolver/config errors).
Persisted on the terminal run meta so qed.status / qed report can
surface why a step failed long after the live event stream is gone
(the reason was previously only emitted into the StepFinished event,
which doesn’t survive in the meta json). None for non-failed steps,
or when the failure carried no message.
outputs: HashMap<String, String>Key-value outputs collected from $YAH_OUTPUTS after the step ran
(W201-F4). Empty when the step did not write any outputs, when the
step kind doesn’t support output collection (container, remote,
sub-pipeline), or when the step failed before writing anything.
applied_binds: Vec<AppliedBind>W209: bind results applied immediately after this step succeeded.
Each entry records file, path, from, old, new, and a
changed bool the qed-run tile uses to surface “Bound N values in
jobs: Vec<JobRow>Per-job rows for a step that wraps a foreign pipeline (W223 R532-T1).
Non-empty only when this step wraps a GitHub Actions workflow — whether
reached as a StepKind::GhaWorkflow step or a StepKind::SubPipeline
whose target is a GHA workflow — which fans out to many jobs. Each row
carries one job’s terminal status and (on failure) its stderr-tail
detail, so the report renders the wrapped workflow transparently (the
same per-job shape the graph viewer draws) instead of collapsing it into
one flattened failure string. The R516 skip-count folds into per-row
RunStatus::Skipped state rather than a trailing sentence. Empty for
native steps and for non-GHA sub-pipelines (transparency generalizes to
the other SubPipelineRef kinds in a later phase).
Trait Implementations§
Source§impl Clone for StepStatus
impl Clone for StepStatus
Source§fn clone(&self) -> StepStatus
fn clone(&self) -> StepStatus
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for StepStatus
impl Debug for StepStatus
Source§impl<'de> Deserialize<'de> for StepStatus
impl<'de> Deserialize<'de> for StepStatus
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for StepStatus
impl RefUnwindSafe for StepStatus
impl Send for StepStatus
impl Sync for StepStatus
impl Unpin for StepStatus
impl UnsafeUnpin for StepStatus
impl UnwindSafe for StepStatus
Blanket Implementations§
impl<T> Allocation for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> Fruit for T
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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