pub struct ProcessStatus {Show 14 fields
pub pid: Option<String>,
pub parent: Option<String>,
pub children: Vec<String>,
pub identity: Option<Identity>,
pub phase: ProcessPhase,
pub phase_since: Option<DateTime<Utc>>,
pub attestation: Option<ProcessAttestation>,
pub flux_resources: Vec<FluxResourceRef>,
pub boundary: BoundaryStatus,
pub compliance: ComplianceStatus,
pub signal_queue: Vec<ProcessSignal>,
pub conditions: Vec<ProcessCondition>,
pub message: Option<String>,
pub exit_code: Option<i32>,
}Expand description
Process status — every field optional until the reconciler writes it.
Fields§
§pid: Option<String>Hierarchical PID path — e.g., "seph.1.7".
parent: Option<String>Parent PID path (mirror of spec.identity.parent, resolved at fork).
children: Vec<String>Direct children’s PID paths.
identity: Option<Identity>Resolved identity (name + content hash).
phase: ProcessPhaseCurrent phase.
phase_since: Option<DateTime<Utc>>When the process entered the current phase.
attestation: Option<ProcessAttestation>Three-pillar attestation (written at end of every successful cycle).
flux_resources: Vec<FluxResourceRef>FluxCD resources currently owned by this Process.
boundary: BoundaryStatusBoundary verification state.
compliance: ComplianceStatusCompliance summary at the latest attestation.
signal_queue: Vec<ProcessSignal>Pending signals (delivered, not yet handled).
conditions: Vec<ProcessCondition>Standard K8s Conditions.
message: Option<String>Human-readable last status message.
exit_code: Option<i32>Exit code (only set on Failed / Reaped).
Implementations§
Source§impl ProcessStatus
impl ProcessStatus
Sourcepub fn at_phase(phase: ProcessPhase) -> Self
pub fn at_phase(phase: ProcessPhase) -> Self
Canonical phase-slot-only ProcessStatus fixture — a
ProcessPhase pinned at the caller-supplied variant with every
other slot parked at its Default — the workspace-baseline
status shape every pool-reconciler phase-decision fixture and
every below-controller test that “just wants a Process whose
status carries a specific phase, nothing else observed” hand-
authored as a 3-line Some(ProcessStatus { phase, ..Default })
struct-literal at scattered pin sites.
Pre-lift the 3-line ProcessStatus { phase: <ProcessPhase::…>, ..Default::default() } shape recurred at TWO hand-authored
sites past the ★★ PRIME-DIRECTIVE ≥ 2 duplication threshold,
both inside tatara-pool-reconciler::controller_pool::tests:
process_to_member_state_attested_permanent_is_free— the Free-arm pin that binds “a Process whose observed phase is Attested + whose declaredlifetimeis Permanent maps toMemberState::Free”.process_to_member_state_attested_ephemeral_is_allocated— the Allocated-arm pin that binds the peer transition on theLifetime::Ephemeralcorner.
Both pin sites walked the SAME 3-line shape stamping
ProcessPhase::Attested; the composer serves both directly and
stays parameterized on phase so a future pin on a peer variant
(Running, Reconverging, Reaped) rides the same primitive
without a new shape opening.
Post-lift each callsite reads
p.status = Some(ProcessStatus::at_phase(ProcessPhase::Attested));
and the phase-slot-only status fixture lives at ONE substrate
owner. Sibling to ProcessSpec::gate_compute_defaults on the
(spec × status) construction-shape pair: that primitive owns the
FULL-spec baseline builder for every downstream Process::new
consumer; this primitive owns the phase-slot-observation status
builder for every downstream p.status = Some(...) fixture.
A future normalization of the phase-only status shape (a
call-time phase_since stamp mirroring the phase-transition
writer’s discipline, a boundary slot default overlay pinning
the phase to a matching BoundaryStatus corner, a wired-in
identity fixture for the phase-decision fixtures that today
leave the slot at None) lands at THIS ONE function and every
downstream phase-decision pin inherits the upgrade mechanically.
Directly benefits the P5 shigoto Dag refactor (any RecordingJob
test fixture stamping “a Process whose observed phase is X” rides
the same composer rather than restating the 3-line shape a third
time) and the P3 kenshi-runner library lift (any test-Job
controller that binds a phase-observation fixture on its owning
Process rides through the same composer as the pool-reconciler’s
two phase-decision pins).
Theory anchor: THEORY.md §VI.1 (generation over composition —
the 3-line ProcessStatus { phase, ..Default::default() }
struct-literal recurred at 2 hand-authored sites past the ★★
PRIME-DIRECTIVE ≥ 2 duplication trigger inside one workspace
crate, and is lifted onto ONE substrate owner here). THEORY.md
§II.1 invariant 5 (composition preserves proofs — the pin block
binds the primitive at fail-before-pass-after granularity so a
regression that drifted the phase slot pass-through, leaked a
sibling slot away from Default, or hijacked the composer to
stamp a static phase_since on the phase transition surfaces
at THESE pins rather than as silent phase-decision skew across
the two pool-reconciler callsites).
Trait Implementations§
Source§impl Clone for ProcessStatus
impl Clone for ProcessStatus
Source§fn clone(&self) -> ProcessStatus
fn clone(&self) -> ProcessStatus
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 ProcessStatus
impl Debug for ProcessStatus
Source§impl Default for ProcessStatus
impl Default for ProcessStatus
Source§fn default() -> ProcessStatus
fn default() -> ProcessStatus
Source§impl<'de> Deserialize<'de> for ProcessStatus
impl<'de> Deserialize<'de> for ProcessStatus
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 ProcessStatus
impl JsonSchema for ProcessStatus
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 moreAuto Trait Implementations§
impl Freeze for ProcessStatus
impl RefUnwindSafe for ProcessStatus
impl Send for ProcessStatus
impl Sync for ProcessStatus
impl Unpin for ProcessStatus
impl UnsafeUnpin for ProcessStatus
impl UnwindSafe for ProcessStatus
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);