From 2cd089b65f579a9c62f50ddff6e3fc21badf050b Mon Sep 17 00:00:00 2001 From: damocles Date: Fri, 26 Jun 2026 17:17:09 +0200 Subject: [PATCH] fix(#2003): start root container if present-but-stopped on hive-c0re boot --- hive-c0re/src/auto_update.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/hive-c0re/src/auto_update.rs b/hive-c0re/src/auto_update.rs index 9e13990a..43c0f247 100644 --- a/hive-c0re/src/auto_update.rs +++ b/hive-c0re/src/auto_update.rs @@ -195,6 +195,20 @@ pub async fn ensure_root_agent(coord: &Arc) -> Result<()> { } else { tracing::debug!("manager container already present"); } + // The root/manager is required infrastructure — it must be running + // after every hive-c0re (re)start. A previous bring-up can leave it + // *created but stopped* (e.g. a first-start failure on a fresh + // install, #2003): the startup sweep's rebuild only restarts a + // container that was already running, so without this it stays down + // until a manual `nixos-container start`. Unlike sub-agents there is + // no "deliberately stopped root" intent to honour, so start it + // unconditionally when it isn't running. + if !lifecycle::is_running(MANAGER_NAME).await { + tracing::info!("manager container present but not running — starting"); + if let Err(e) = lifecycle::start(MANAGER_NAME).await { + tracing::warn!(error = ?e, "manager start failed"); + } + } return Ok(()); } tracing::info!("manager container missing — spawning");