diff --git a/core/archipelago/src/api/rpc/package/install.rs b/core/archipelago/src/api/rpc/package/install.rs index 70570b0a..90c21901 100644 --- a/core/archipelago/src/api/rpc/package/install.rs +++ b/core/archipelago/src/api/rpc/package/install.rs @@ -24,6 +24,12 @@ const IMAGE_INSPECT_TIMEOUT: Duration = Duration::from_secs(10); /// Append a timestamped line to the persistent install log. pub(in crate::api::rpc) async fn install_log(msg: &str) { use tokio::io::AsyncWriteExt; + // Always mirror to tracing/journald: the file append below has been + // silently failing under the service sandbox (ProtectSystem=strict + // leaves /var/log/archipelago read-only — container-installs.log has + // been 0 bytes since April 2026), and these lifecycle breadcrumbs are + // the primary forensic trail for gate failures. + info!(target: "install_log", "{msg}"); let ts = chrono::Utc::now().format("%Y-%m-%d %H:%M:%S UTC"); let line = format!("[{}] {}\n", ts, msg); if let Ok(mut f) = tokio::fs::OpenOptions::new()