pub struct Manifest {
pub id: String,
pub version: String,
pub description: Option<String>,
pub execute: Execute,
pub require_approval: bool,
pub inventory: Option<InventoryHint>,
pub emit: Option<EmitConfig>,
pub staleness: Staleness,
}Expand description
YAML job manifest (= registered “what to run”, v0.18.0+).
Owns only script-intrinsic fields. Who (target), how to
phase fanout (rollout), and when to stagger start
(jitter) all moved to the Schedule / exec request side — same
script can now be fired against different targets / rollouts
without copying the script body.
deny_unknown_fields makes operators copy-pasting an older yaml
that still has target: / rollout: see a clear parse error at
kanade job create time instead of mysteriously losing it.
Fields§
§id: String§version: String§description: Option<String>§execute: Execute§require_approval: bool§inventory: Option<InventoryHint>Opt-in marker that this job produces a JSON inventory fact
payload on stdout. When present, the backend’s results
projector parses ExecResult.stdout as JSON and upserts an
inventory_facts row keyed by (pc_id, manifest.id). The
display sub-config drives the SPA’s Inventory page render.
emit: Option<EmitConfig>Issue #246: opt-in marker that this job emits per-line
observability events on stdout (one JSON ObsEvent per
newline). When present, the agent — after the script exits
successfully — parses each non-empty stdout line as an
ObsEvent, publishes it on obs.<pc_id> via the
obs_outbox, and (intentionally) omits the stdout from
the ExecResult so the timeline data doesn’t double up
in execution_results.stdout (which would multiply rows
by ~50/day/PC of noise).
Distinct from inventory: (single JSON object → projector
upsert) — events are append-only timeline points consumed
by the dedicated obs_events table.
staleness: Stalenessv0.26: Layer 2 staleness policy (SPEC.md §2.6.2). Controls
what the agent does at fire time when it can’t verify the
script_current / script_status KV values are fresh —
especially relevant for runs_on: agent schedules where
the agent may fire from cache while offline. Defaults to
Staleness::Cached (silently use cached values), which
matches every pre-v0.26 Manifest.
Implementations§
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Manifest
impl<'de> Deserialize<'de> for Manifest
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 Manifest
impl JsonSchema for Manifest
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 inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read more