pub struct ArtifactSource {
pub receipts: Option<ReceiptsSource>,
pub test_report: Option<TestReportSource>,
pub process_snapshot: Option<ProcessSnapshotSource>,
pub run_marker: Option<RunMarkerSource>,
}Expand description
What artifact this export ships out.
Exactly-one-Option pattern, matching the rest of the typescape
(Intent, Lifetime). Adding a new artifact kind is additive on
the wire — existing JSON keeps deserializing unchanged.
Fields§
§receipts: Option<ReceiptsSource>Every ReceiptEnvelope emitted by this Process during its
lifetime — the BLAKE3-chained typed attestation stream.
test_report: Option<TestReportSource>A test report stored in a ConfigMap by an in-cluster test
runner (Job, test harness, closed-loop probe). Worker reads the
ConfigMap, packages it per format, and forwards.
process_snapshot: Option<ProcessSnapshotSource>The Process’s own ProcessSpec + ProcessStatus snapshot at
teardown time, as canonical JSON. Useful for post-mortems on
failed ephemeral runs.
run_marker: Option<RunMarkerSource>A small synthetic event — start/end of run markers, cohort
tags, experiment correlation. Worker emits a single
timestamped event with the declared labels.
Implementations§
Source§impl ArtifactSource
impl ArtifactSource
Sourcepub fn variant(&self) -> Result<ArtifactVariant<'_>, ArtifactError>
pub fn variant(&self) -> Result<ArtifactVariant<'_>, ArtifactError>
Resolve to exactly one variant. Errors on zero or many.
One-line inherent forwarder that delegates the sweep
body to the substrate primitive
crate::tagged_union::TaggedUnion::variant — every
production .variant() site on ProcessSpec dispatches
through this ONE default body so the resolve-sweep
pattern lives at ONE substrate site. The inherent surface
stays load-bearing so consumer callsites don’t need
use TaggedUnion.
Trait Implementations§
Source§impl Clone for ArtifactSource
impl Clone for ArtifactSource
Source§fn clone(&self) -> ArtifactSource
fn clone(&self) -> ArtifactSource
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 ArtifactSource
impl Debug for ArtifactSource
Source§impl Default for ArtifactSource
impl Default for ArtifactSource
Source§fn default() -> ArtifactSource
fn default() -> ArtifactSource
Source§impl<'de> Deserialize<'de> for ArtifactSource
impl<'de> Deserialize<'de> for ArtifactSource
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>,
Source§impl JsonSchema for ArtifactSource
impl JsonSchema for ArtifactSource
Source§fn schema_name() -> String
fn schema_name() -> String
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn is_referenceable() -> bool
fn is_referenceable() -> bool
$ref keyword. Read moreSource§impl Serialize for ArtifactSource
impl Serialize for ArtifactSource
Source§impl TaggedUnion for ArtifactSource
impl TaggedUnion for ArtifactSource
Source§const KIND_LIST: &'static str = ARTIFACT_KIND_LIST
const KIND_LIST: &'static str = ARTIFACT_KIND_LIST
TaggedUnionError::empty when no slot is populated on this
tagged union. Pinned against
<Self::Kind as tatara_closed_set::ClosedSet>::labels_joined("/")
by assert_kind_list_matches_closed_set so a variant added
to Self::Kind without updating this constant (or a renamed
variant) fails-loudly at the testkit boundary.Source§type Kind = ArtifactKind
type Kind = ArtifactKind
tatara_closed_set::ClosedSet so the generic
diagnostic-stability testkit (assert_kind_list_matches_closed_set)
can project <Self::Kind as ClosedSet>::labels_joined("/")
against Self::KIND_LIST byte-identically. Additionally
bound to VariantSelector<Self> so Self::variant’s
default body can dispatch k.select(self) at each
[ClosedSet::ALL] entry generically.Source§type Error = ArtifactError
type Error = ArtifactError
.variant() method — projects onto the shared
TaggedUnionError contract so resolve_or_err’s two-arm
dispatch reaches every implementor uniformly.Source§fn variant(
&self,
) -> Result<<Self::Kind as VariantSelector<Self>>::Variant<'_>, Self::Error>
fn variant( &self, ) -> Result<<Self::Kind as VariantSelector<Self>>::Variant<'_>, Self::Error>
Self::Kind discriminator in
ClosedSet::ALL order,
projecting each into the parent’s borrowed variant view via
VariantSelector::select, and resolve to exactly one populated
variant through resolve_or_err. Errors on zero (with
Self::KIND_LIST carried on the TaggedUnionError::empty
arm) or many. Read moreSource§impl VariantSelector<ArtifactSource> for ArtifactKind
impl VariantSelector<ArtifactSource> for ArtifactKind
Source§type Variant<'a> = ArtifactVariant<'a>
type Variant<'a> = ArtifactVariant<'a>
.variant() method — one arm per closed-set variant, each
arm carrying a &'a reference into the parent’s populated
slot. Bound generically here so TaggedUnion::variant’s
default body can name the return type without restating it
per parent. Additionally bound to VariantKind<Self> so
the reverse projection Variant<'a> → Self is closed at the
trait boundary — every implementor’s borrowed view knows its
addressing Kind through ONE typed contract, and the substrate
testkit assert_variant_round_trip composes select
(forward) with variant_kind (reverse) generically.Source§fn select<'a>(self, parent: &'a ArtifactSource) -> Option<ArtifactVariant<'a>>where
Self: 'a,
fn select<'a>(self, parent: &'a ArtifactSource) -> Option<ArtifactVariant<'a>>where
Self: 'a,
&'a P borrow into the optional typed variant view
for self (the addressed discriminator). Returns None iff
the matching slot on P is None. Composes the closed-set
sweep TaggedUnion::variant loops over.Auto Trait Implementations§
impl Freeze for ArtifactSource
impl RefUnwindSafe for ArtifactSource
impl Send for ArtifactSource
impl Sync for ArtifactSource
impl Unpin for ArtifactSource
impl UnsafeUnpin for ArtifactSource
impl UnwindSafe for ArtifactSource
Blanket Implementations§
impl<T> AppData for Twhere
T: OptionalSend + OptionalSync + 'static + OptionalSerde,
impl<T> AppDataResponse for Twhere
T: OptionalSend + OptionalSync + 'static + OptionalSerde,
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> 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> 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 moreimpl<T> OptionalSend for T
impl<T> OptionalSync for T
Source§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);