From 5837bcc870284022c80b06db78cda124a15e9a79 Mon Sep 17 00:00:00 2001 From: iris Date: Mon, 3 Aug 2026 22:30:38 +0200 Subject: [PATCH] docs: move the disk-watch auto-created-todo detail out of turn-loop/README.md The disk_watch todo producer isn't turn-loop-shaped -- it's disk-space state tracked in persistence.md's State dirs (per agent) section, right next to hyperhive-todos.sqlite's own description. Leave a lean pointer in the boot-wiring narrative instead of duplicating the detail. Fixes #2727 --- docs/persistence.md | 11 +++++++++++ docs/turn-loop/README.md | 14 ++++++-------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/docs/persistence.md b/docs/persistence.md index 7f3030eb..e1aeabdb 100644 --- a/docs/persistence.md +++ b/docs/persistence.md @@ -297,6 +297,17 @@ Under `/var/lib/hyperhive/agents//`: (`HIVE_AGENT_SOCKET`); the harness merges them into `get_loose_ends` output and clears a row on `mark_todo_done`. Replaced the old file-based `mcp-loose-ends/` scanner. + + The harness itself is also a producer, not just the socket server: + boot wiring's `spawn_todo_socket` starts `todo_server::run` (the + socket the out-of-process daemons above dial) alongside + `disk_watch::run` — an *in-process* todo producer that shares the + store + wake `Notify` directly rather than dialling its own socket. + `disk_watch` raises a keyed `disk` todo when the filesystem backing + this agent's state gets tight, naming the agent's own biggest + directories; the summary is bucketed and carries no raw byte + counts, so an unchanged situation re-upserts as `changed == false` + and never re-wakes. - `hyperhive-events.sqlite` — turn-loop event log. - `hyperhive-turn-stats.sqlite` — per-turn timing stats. - `hyperhive-model` — single-line model name override file. diff --git a/docs/turn-loop/README.md b/docs/turn-loop/README.md index d73a2b42..08e145f0 100644 --- a/docs/turn-loop/README.md +++ b/docs/turn-loop/README.md @@ -101,14 +101,12 @@ the login flow first (`NeedsLogin`). (The forge notification poller used to be spawned here too; it is its own process now — `hive-forge-notify`, see [`forge.md`](../forge.md).) -`spawn_todo_socket` opens the todos store and, alongside -`todo_server::run` (the socket the out-of-process producers dial), -spawns `disk_watch::run` — an *in-process* todo producer, so it shares -the store + wake `Notify` directly rather than dialling its own socket. -It raises a keyed `disk` todo when the filesystem backing the agent's -state gets tight, naming the agent's own biggest directories; the -summary is bucketed and carries no raw byte counts, so an unchanged -situation re-upserts as `changed == false` and never re-wakes. +`spawn_todo_socket` opens the todos store, the socket the in-container +producers dial (matrix / bash / forge-notify daemons), and an +in-process `disk_watch` todo producer for low state-disk space. See +[`docs/persistence.md`](../persistence.md#state-dirs-per-agent) for +what each todo producer watches and how the store + `get_loose_ends` +merge work. Plugin install failures are not fatal: each entry comes back as a human-readable failure string that gets routed via