subc-control 0.29.5

Client-facing subc control-plane wire shapes.
Documentation
use subc_control::{SupervisorEntry, SupervisorHealthStatus};

#[test]
fn observed_windows_nonce_source_survives_supervisor_list_wire_roundtrip() {
    let entry = SupervisorEntry::new(
        "module",
        "running",
        true,
        true,
        SupervisorHealthStatus::Unknown,
    )
    .with_launch_nonce_source(Some("pipe".into()));
    let wire = serde_json::to_value(&entry).unwrap();
    assert_eq!(wire["launch_nonce_source"], "pipe");
    let decoded: SupervisorEntry = serde_json::from_value(wire).unwrap();
    assert_eq!(decoded.launch_nonce_source.as_deref(), Some("pipe"));
}

#[test]
fn absent_observed_nonce_source_remains_absent_on_the_wire() {
    let entry = SupervisorEntry::new(
        "module",
        "stopped",
        true,
        false,
        SupervisorHealthStatus::Unknown,
    );
    let wire = serde_json::to_value(&entry).unwrap();
    assert!(wire.get("launch_nonce_source").is_none());
    let decoded: SupervisorEntry = serde_json::from_value(wire).unwrap();
    assert_eq!(decoded.launch_nonce_source, None);
}