// Seed the chain with a typed propagating process: value, state,
// context, error channel, and an append-only audit log all live together.
let initial: FlightProcess<SensorReading> = PropagatingProcess {
value: EffectValue::Value(reading),
state: FlightState::default(),
context: Some(config),
error: None,
logs: EffectLog::new(),
};
// Five bind steps thread the state and context through the entire monitor.
initial
.bind(|v, s, c| run_sensor_collection(v, s, c, failing_airspeed))
.bind(|v, s, c| health_fold(v, s, c, seed_estimate.clone()))
.bind(|v, s, c| kalman_step(v, s, c))
.bind(|v, s, c| estimate_step(v, s, c))
.bind(|v, s, c| run_envelope_graph(v, s, c))