pub struct Manifest {
pub generation: u64,
pub created: u64,
pub updated: u64,
pub entities: Vec<EntityRef>,
pub starts: BTreeMap<String, Value>,
pub streams: BTreeMap<String, StreamMeta>,
pub breakers: BTreeMap<String, Value>,
pub budget: Value,
pub lifecycle: Value,
pub config_digest: BTreeMap<String, String>,
pub retired: Vec<EntityRef>,
}Expand description
The instance manifest: the index of everything a restore must find, stored
as one record under the manifest kind.
Fields§
§generation: u64§created: u64§updated: u64§entities: Vec<EntityRef>§starts: BTreeMap<String, Value>Start-node state per <workflow>.<node> (last fired, iteration, missed).
streams: BTreeMap<String, StreamMeta>Per-stream head/tail: seq = last appended sequence, first = oldest
retained. Consumers walk first..=seq by key, so events never need a
list and a trimmed prefix simply falls out of the walk.
breakers: BTreeMap<String, Value>Circuit-breaker state per <workflow>/<step> (runtime::breaker):
consecutive failures, open/closed, the probe claim. Durable because a
breaker that forgets on restart re-learns the outage by re-hammering
the dependency — the opposite of its job.
budget: ValueBudget counters per window/scope, so a spend limit survives a restart rather than resetting the window every boot.
lifecycle: Value§config_digest: BTreeMap<String, String>The digest of the settings that shaped this state, section name -> hex. A signal, not a key: a mismatch is reported at restore and the state is resumed anyway. An empty map on either side skips the comparison entirely, because an absent digest is not evidence that anything moved and reporting one would drown the real signal in noise.
retired: Vec<EntityRef>Records an earlier --fresh abandoned. They are still in the store —
--fresh deletes nothing — but they belong to a superseded
generation, so the list reconciliation in Durable::restore must not
re-adopt them and undo the flag one boot later.