diff --git a/docs/persistence.md b/docs/persistence.md index bc77d7b8..989b86bc 100644 --- a/docs/persistence.md +++ b/docs/persistence.md @@ -64,17 +64,17 @@ Retention: `cancelled_at_unix`, then `reap_cancelled` drops the row on the next worker pass. -### `/state/hyperhive-events.sqlite` (per agent) +### `/harness/hyperhive-events.sqlite` (per agent) -Lives inside each container's bind-mounted `/state/` dir (host -path: `/var/lib/hyperhive/agents//state/hyperhive-events.sqlite`). +Lives inside each container's bind-mounted `/harness/` dir (host +path: `/var/lib/hyperhive/agents//harness/hyperhive-events.sqlite`). One table: - `events(id, ts, kind, payload_json)` — every `LiveEvent` the harness emits during turn loop execution. The harness writes; the host vacuums. `hive-c0re::events_vacuum` -runs hourly and sweeps every existing agent state dir, deleting +runs hourly and sweeps every existing agent harness dir, deleting rows older than 7 days. Age-only — no row cap — so a chatty turn doesn't lose history sooner than a quiet one; disk pressure on a sustained burst is the cheaper problem to have. Centralising @@ -82,12 +82,12 @@ retention on the host means a misbehaving harness can't disable its own vacuum and agents don't need any cleanup wiring of their own. -Path overridable via `HYPERHIVE_EVENTS_DB` (for dev / no-`/state` +Path overridable via `HYPERHIVE_EVENTS_DB` (for dev / no-`/harness` setups). On open failure the `Bus` falls back to no-store mode rather than crashing the harness — events still broadcast over SSE, just nothing persisted. -### `/state/hyperhive-turn-stats.sqlite` (per agent) +### `/harness/hyperhive-turn-stats.sqlite` (per agent) Per-turn analytics sink. One row per claude turn captures identity (`model`, `wake_from`, `result_kind`), timing @@ -149,7 +149,7 @@ Writes are best-effort: `append_stdout` / `append_stderr` / `finish` log a warning on sqlite error and let the build continue. A failed log row never blocks a rebuild. -### `/state/hyperhive-model` (per agent) +### `/harness/hyperhive-model` (per agent) Single-line text file holding the claude model name currently selected for this agent (default `haiku` when absent). Written by @@ -169,11 +169,10 @@ Under `/var/lib/hyperhive/agents//`: `/agents` tree bind. - `claude/` — claude OAuth credentials, bind-mounted RW to `/home//.claude` inside the container. -- `state/` — durable notes, the events.sqlite db, and the - turn-stats sqlite db. Bind-mounted to `/agents//state` - inside the container (uniform for sub-agents + manager). - The `$HYPERHIVE_STATE_DIR` env var exposes the same path to - in-container scripts. +- `state/` — durable notes and `hyperhive-harness.json`. Bind-mounted + to `/agents//state` inside the container (uniform for + sub-agents + manager). The `$HYPERHIVE_STATE_DIR` env var exposes + the same path to in-container scripts. - `harness/` — harness-internal ephemeral state; not intended for agent consumption. Bind-mounted to `/agents//harness` inside the container (`$HYPERHIVE_HARNESS_DIR`). Contents: @@ -184,8 +183,7 @@ Under `/var/lib/hyperhive/agents//`: inspecting with `bash_status`. - `hyperhive-events.sqlite` — turn-loop event log. - `hyperhive-turn-stats.sqlite` — per-turn timing stats. - - `hyperhive-harness.json` — consolidated flags (rate-limited, - model override, etc.) written atomically on each turn. + - `hyperhive-model` — single-line model name override file. Under `/var/lib/hyperhive/applied//` — the hive-c0re-only applied repo. Tracks `flake.nix` (module-only boilerplate; never @@ -219,7 +217,7 @@ step would re-fire). - `PURG3` (opt-in via the dashboard button or `hive-c0re destroy --purge `) — DESTR0Y plus wipes `/var/lib/hyperhive/{agents,applied}//`. Config history, - claude creds, /state/ notes, and the events db are all gone. + claude creds, /state/ notes, and the harness dir are all gone. No undo. The manager is non-destroyable from both paths (declarative