diff --git a/src/internal/compact/steady.zig b/src/internal/compact/steady.zig index 9408add..97cc1f6 100644 --- a/src/internal/compact/steady.zig +++ b/src/internal/compact/steady.zig @@ -135,6 +135,12 @@ pub const Compactor = struct { // boot time, so a compactor that never completes a pass shows as // growing age rather than a healthy-looking zero self.publishLastPassNow(); + // the loop below has silent return paths (Canceled propagation); a + // compactor that stops running must never do so invisibly — zero + // passes over 4+ days went unexplained twice (2026-08-09) because + // nothing distinguished "waiting" from "exited" + log.info("compactor timer loop running (interval {d}s)", .{self.interval_ns / std.time.ns_per_s}); + defer log.warn("compactor timer loop exited (no further passes will run)", .{}); const interval: Io.Clock.Duration = .{ .raw = Io.Duration.fromNanoseconds(@intCast(self.interval_ns)), .clock = .awake,