events.sqlite vacuum moves host-side

retention is a host concern — agents have no business doing their
own cleanup, and a misbehaving harness could skip it. drop
spawn_events_vacuum from both hive-ag3nt and hive-m1nd, drop the
matching Bus::vacuum + EventStore::vacuum methods. new
hive_c0re::events_vacuum module sweeps every existing
agents/<name>/state/hyperhive-events.sqlite on the same hourly
cadence as the broker vacuum. same two-stage delete (older than 7
days, trim to 2000 newest). called from main alongside broker
vacuum.

also: server-side state badge entered into todo.md (today's badge
is derived client-side from sse, fine for idle/thinking but a
state machine that grows compacting/napping wants authoritative
status from the harness).
This commit is contained in:
müde 2026-05-15 20:10:34 +02:00
parent 897e7c07ae
commit 89ccc5e6c5
6 changed files with 89 additions and 63 deletions

View file

@ -14,6 +14,7 @@ mod client;
mod coordinator;
mod dashboard;
mod lifecycle;
mod events_vacuum;
mod manager_server;
mod operator_questions;
mod server;
@ -126,6 +127,9 @@ async fn main() -> Result<()> {
tokio::time::sleep(std::time::Duration::from_secs(interval_secs)).await;
}
});
// Per-agent events.sqlite vacuum: host-side so the harness
// doesn't need any retention wiring of its own.
events_vacuum::spawn(coord.clone());
let dash_coord = coord.clone();
tokio::spawn(async move {
if let Err(e) = dashboard::serve(dashboard_port, dash_coord).await {