pub struct RunState {Show 18 fields
pub schema_version: u32,
pub run_id: String,
pub plan_id: String,
pub version: String,
pub targets: Vec<String>,
pub applied_seq: u64,
pub status: RunStatus,
pub current_phase: Option<Phase>,
pub phases: Vec<PhaseRecord>,
pub dry_run: BTreeSet<String>,
pub built: BTreeSet<String>,
pub published: BTreeMap<String, PublishReceipt>,
pub cancelled: BTreeMap<String, String>,
pub delegated: BTreeSet<String>,
pub tags: BTreeMap<String, TagState>,
pub abandon_reason: Option<String>,
pub created_ts: u64,
pub updated_ts: u64,
}Expand description
The materialized run state — the projection reduced from the event log and
cached in manifest.json.
Every collection is a BTree*/sorted Vec, so the serialized manifest is
byte-deterministic for a given event stream: the same events always
produce the same JSON, which is what makes the manifest a trustworthy cache
of the log. It is disposable — rebuild it any time with
crate::release::journal::reduce.
Fields§
§schema_version: u32Durable schema version of this state document.
run_id: StringThe run’s unique id (empty only before the RunCreated event).
plan_id: StringThe sealed plan id this run executes.
version: StringThe chosen release version this run publishes (from the RunCreated
event) — the input resume reconstructs the plan against. Populated from
the required event field; the manifest is disposable and always rebuilt
from the log, so no cross-version default is needed here.
targets: Vec<String>The ordered target set, as declared at creation.
applied_seq: u64The high-water sequence number folded into this state — the append-then- apply watermark (ADR-0003 §2).
status: RunStatusDerived run status.
current_phase: Option<Phase>The phase currently in progress, if any.
phases: Vec<PhaseRecord>Completed phases with their outcomes, sorted by phase order.
dry_run: BTreeSet<String>Targets that cleared dry-run.
built: BTreeSet<String>Targets whose artifact was built.
published: BTreeMap<String, PublishReceipt>Published targets → their receipts.
cancelled: BTreeMap<String, String>Cancelled targets → their reasons.
delegated: BTreeSet<String>CI-delegated targets (their ids): skipped in publish because a
tag-triggered CI job produces their artifact, not the engine. Neither
engine-published nor missing/failed (release-engine-cut-cargo-dist-flow).
#[serde(default)] so a v1 manifest that predates the field still
deserializes (the manifest is disposable and rebuilt from the log anyway).
Release tags → their landing progress.
abandon_reason: Option<String>The reason recorded by a run_abandoned event, if any.
created_ts: u64Timestamp of the RunCreated event.
updated_ts: u64Timestamp of the most recently applied event.
Implementations§
Source§impl RunState
impl RunState
Sourcepub fn empty() -> Self
pub fn empty() -> Self
The empty pre-RunCreated state the reducer folds events into. Carries
the current JOURNAL_SCHEMA_VERSION and RunStatus::InProgress;
identity fields are filled by the first (RunCreated) event.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for RunState
impl<'de> Deserialize<'de> for RunState
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>,
impl Eq for RunState
impl StructuralPartialEq for RunState
Auto Trait Implementations§
impl Freeze for RunState
impl RefUnwindSafe for RunState
impl Send for RunState
impl Sync for RunState
impl Unpin for RunState
impl UnsafeUnpin for RunState
impl UnwindSafe for RunState
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.