Ingest StreamPixels service boundary records

This commit is contained in:
Meta Vens 2026-06-16 12:47:59 +01:00
commit 8b78a05e99

View file

@ -948,6 +948,11 @@ fn daemon_transport_profile(
"raven-deploy-blocked",
"Vili has an in-process CultNet/RUDP Idunn health publisher plus local CultCache provider, operator, command_boundary, and transport_profile records; live Raven deployment and scheduled-task restart are blocked while Raven SSH is unreachable.",
),
"yggdrasil-streampixels" => (
"daemon-owned-cultcache-service-boundary + compatibility.ssh-systemd-http fallback",
"provider-store-prepared-rudp-health-required",
"StreamPixels service runtime publishes a daemon-owned CultCache boundary with provider advertisement, command_boundary, transport_profile, and Idunn health summary; Yggdrasil SSH/systemd/HTTP checks remain fallback witnesses until the service publishes health over CultNet/RUDP.",
),
_ => (
"compatibility.local-command",
"migration-required",
@ -1259,7 +1264,28 @@ fn daemon_surgery_plan(target: &DaemonTarget, updated_at: &str) -> IdunnDaemonSu
];
}
}
"yggdrasil-heimdall" | "yggdrasil-repixelizer" | "yggdrasil-streampixels" => {
"yggdrasil-streampixels" => {
severity = "medium";
status = "provider-store-prepared-rudp-health-required";
owner = "StreamPixels service runtime plus gamecult-ops deploy lane";
current_mechanism =
"StreamPixels now publishes a daemon-owned CultCache boundary store with provider advertisement, command_boundary, transport_profile, and Idunn health summary from the service runtime. Yggdrasil deployment freshness is still checked and deployed through SSH/systemd/source-artifact compatibility scripts."
.to_string();
intended_authority =
"StreamPixels publishes service health, provider state, command boundary, and transport profile over cultnet.transport.rudp.v0, with the service-owned CultCache boundary as durable local state and HTTP/SSH/systemd as fallback witnesses."
.to_string();
cut_line =
"Keep the StreamPixels service boundary store; add CultNet/RUDP Idunn health publication from the service process, deploy it on Yggdrasil, then demote SSH/systemd/HTTP checks to deployment/debug witnesses."
.to_string();
steps = vec![
"Keep apps/service/src/verse-state.ts publishing streampixels.service.cc from the StreamPixels service runtime.".to_string(),
"Teach Odin to ingest StreamPixels provider advertisement, command_boundary, and transport_profile records from the service-owned CultCache boundary store.".to_string(),
"Add StreamPixels Idunn RUDP health publication using contract streampixels.cultnet-rudp-service-health.".to_string(),
"Deploy the updated service to Yggdrasil through the source artifact lane and verify the live store/health publication.".to_string(),
"Demote health-yggdrasil-streampixels.cmd to deployment/debug witness once RUDP health is live.".to_string(),
];
}
"yggdrasil-heimdall" | "yggdrasil-repixelizer" => {
severity = "medium";
owner = "Yggdrasil service owner plus gamecult-ops deploy lane";
current_mechanism =
@ -2486,6 +2512,37 @@ mod tests {
assert!(profile.cut_line.contains("MiMo VoiceDesign"));
}
#[test]
fn streampixels_transport_profile_marks_provider_store_prepared() {
let streampixels = DaemonTarget {
daemon_id: "yggdrasil-streampixels".to_string(),
verse_id: "yggdrasil.local".to_string(),
name: "Yggdrasil StreamPixels".to_string(),
health_contract: health_contract(
"yggdrasil.source-deployment-freshness",
"stale-deployment",
),
health_command: Some("health-yggdrasil-streampixels.cmd".to_string()),
deploy_command: Some("deploy-yggdrasil-streampixels.cmd".to_string()),
restart_command: None,
enabled: true,
interval_seconds: 300,
};
let profile = daemon_transport_profile(&streampixels, "unix:100");
assert_eq!(
profile.state,
"provider-store-prepared-rudp-health-required"
);
assert!(
profile
.current_transport
.contains("daemon-owned-cultcache-service-boundary")
);
assert!(profile.cut_line.contains("CultNet/RUDP"));
}
#[test]
fn voidbot_transport_profile_marks_partial_rudp_health() {
let voidbot = DaemonTarget {