From a03840ed5e6376e17fc2cea228fb9f154df69ff3 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sun, 30 Aug 2026 22:44:57 +0200 Subject: [PATCH] Record VoidBot source indexing authority gap --- notes/fresh-workspace-handoff.md | 28 ++++++++++++++-------------- notes/voidbot-implementation-plan.md | 8 ++++++++ state/evidence.jsonl | 1 + state/map.yaml | 18 +++++++++--------- state/scratch.md | 21 ++++++++++++++------- 5 files changed, 46 insertions(+), 30 deletions(-) diff --git a/notes/fresh-workspace-handoff.md b/notes/fresh-workspace-handoff.md index 57932c7..bb731c9 100644 --- a/notes/fresh-workspace-handoff.md +++ b/notes/fresh-workspace-handoff.md @@ -16,11 +16,11 @@ Git history and smoke artifacts carry routine proof. `state/evidence.jsonl` shou ## Current Shape -- Disaster recovery is active on trusted old Yggdrasil (`94.130.75.184`). Big Yggdrasil (`94.130.223.131`) is retired and its recycled address is not a GameCult host. The old host retained Bifrost and PostgreSQL but lost VoidBot, Idunn, Odin, Epiphany, compose state, and service credentials. +- Disaster recovery is active on trusted old Yggdrasil (`94.130.75.184`). Big Yggdrasil (`94.130.223.131`) is retired and its recycled address is not a GameCult host. The surviving host did not retain the former VoidBot runtime state or credentials; the current body was rebuilt only from admitted recovery material. - Raven's verified offsite archive `20260603-043304-offsite-auto.zip` is staged on old Yggdrasil. Its SHA-256 is `47572df766e63212012eb75762359113a11c8bbf149b497e120fc4fda7191dfc`; the newer June 4 archive is corrupt. The payload contains PostgreSQL state, six Qdrant snapshots, and exact RAG archives, but no secrets. -- Recover the standalone read-only resident MCP first. It owns only loopback `127.0.0.1:17875`, exact archives, VoidBot's history/source Qdrant collections, and the matching embedding model. Discord, worker jobs, Personas, moderation, Bifrost crossings, and delivery remain stopped until their missing authority and credentials are rebuilt. +- The standalone read-only resident MCP was recovered first. `voidbot-retrieval.service` owns only loopback `127.0.0.1:17875`, exact archives, VoidBot's history/source Qdrant collections, and the matching embedding model. Discord, worker jobs, Personas, moderation, Bifrost crossings, and delivery remain stopped until their missing authority and credentials are rebuilt. - `apps/worker/src/mcp-http-main.ts` is the standalone HTTP entrypoint. It delegates to the existing MCP context and HTTP server; it is not a second retrieval implementation. -- The unattended repo Face/native Persona CTB swarm runs on Yggdrasil. Resident `apps/persona-scheduler` inside `voidbot.service` owns the serialized Persona pulse and queues turns through Postgres for the worker. Void moderation, rumination, physiology, memory maintenance, and candidate delivery are now separate resident daemon organs; Persona initiative owns none of them. The Windows Local Orchestrator owns no Void decision loop. +- The current `voidbot.service` runs only the typed `voidbot.swarm` Eve publisher. The repo Face/native Persona scheduler, worker queue, Discord bot, Postgres body, and resident cognition organs described later in this handoff are source architecture or retired-runtime history, not current service-health claims. Restore none of them by implication from the surviving swarm projection. - The teardown authority remains `notes/agent-swarm-teardown-plan-2026-05-21.md`, but it is now a restart checklist and smell ledger rather than a stop sign. Keep using it when a Face/Bifrost/CTB boundary smells like prompt/parser/transport Jenga. - The repo-controlled pause flag is `state/agent-swarm-paused.json`. While it has `"paused": true` or is malformed, the resident Persona scheduler returns before registry, Discord, embedding, storage, or dispatch work. This is the brake. Do not route around it. - Postgres owns jobs, audit events, interaction memory, and rate-limit state. @@ -247,17 +247,17 @@ Git history and smoke artifacts carry routine proof. `state/evidence.jsonl` shou ## Important Paths -- Project root: `E:\Projects\VoidBot` -- Canonical map: `E:\Projects\VoidBot\state\map.yaml` -- Agent swarm pause flag: `E:\Projects\VoidBot\state\agent-swarm-paused.json` -- Scratch surface: `E:\Projects\VoidBot\state\scratch.md` -- Distilled evidence ledger: `E:\Projects\VoidBot\state\evidence.jsonl` -- Branch/hypothesis ledger: `E:\Projects\VoidBot\state\branches.json` -- Handoff summary: `E:\Projects\VoidBot\notes\fresh-workspace-handoff.md` -- System map: `E:\Projects\VoidBot\notes\voidbot-current-system-map.md` -- Implementation plan: `E:\Projects\VoidBot\notes\voidbot-implementation-plan.md` -- State CLI: `E:\Projects\VoidBot\tools\voidbot_state.ts` -- Pre-compaction helper: `E:\Projects\VoidBot\tools\voidbot_prepare_compaction.ts` +- Project root: `F:\Projects\VoidBot` +- Canonical map: `F:\Projects\VoidBot\state\map.yaml` +- Agent swarm pause flag: `F:\Projects\VoidBot\state\agent-swarm-paused.json` +- Scratch surface: `F:\Projects\VoidBot\state\scratch.md` +- Distilled evidence ledger: `F:\Projects\VoidBot\state\evidence.jsonl` +- Branch/hypothesis ledger: `F:\Projects\VoidBot\state\branches.json` +- Handoff summary: `F:\Projects\VoidBot\notes\fresh-workspace-handoff.md` +- System map: `F:\Projects\VoidBot\notes\voidbot-current-system-map.md` +- Implementation plan: `F:\Projects\VoidBot\notes\voidbot-implementation-plan.md` +- State CLI: `F:\Projects\VoidBot\tools\voidbot_state.ts` +- Pre-compaction helper: `F:\Projects\VoidBot\tools\voidbot_prepare_compaction.ts` ## Useful Commands diff --git a/notes/voidbot-implementation-plan.md b/notes/voidbot-implementation-plan.md index f69bfb1..aca924a 100644 --- a/notes/voidbot-implementation-plan.md +++ b/notes/voidbot-implementation-plan.md @@ -2,6 +2,14 @@ This is the current forward plan for the next larger organs. It is not a changelog and it is not allowed to become a duplicate brain for the canonical map. +> Runtime boundary (2026-08-25): this plan describes source architecture and the +> former full-stack roadmap. The current Yggdrasil body contains only the typed +> `voidbot.swarm` Eve publisher plus the separate read-only +> `voidbot-retrieval.service`; it does not run the Discord bot, worker, Persona +> scheduler, Postgres, or cognition organs. `state/map.yaml` owns any restoration +> decision. Do not treat the roadmap below as evidence that those processes are +> live. + ## Current Aim The typed moderation, mood, sleep, agency, and private self-state boundary is live, but the repo Face / CTB / Bifrost swarm loop is under teardown. Do not let ordinary swarm scheduling run. The active plan is `notes/agent-swarm-teardown-plan-2026-05-21.md`: the current Face loop mixed scheduling, prompt law, public speech, identity, governance, Discord mirroring, Bifrost dispatch, and GitHub proposal behavior into one prompt-and-parser machine. That foundation is no longer eligible for feature work. diff --git a/state/evidence.jsonl b/state/evidence.jsonl index 62791cb..4e098eb 100644 --- a/state/evidence.jsonl +++ b/state/evidence.jsonl @@ -463,3 +463,4 @@ {"ts":"2026-08-16T17:40:00Z","type":"architecture","status":"ok","note":"Read-only MCP recovery exposed that SerializedFileStore snapshots always created writer locks. Archive repositories now accept an explicit read-only mode: snapshots read without filesystem locks and every mutation method fails immediately. A Node 24 build and a nobody-user probe on a non-writable directory proved snapshot success plus mutation rejection; writable runtimes retain interprocess locking."} {"ts":"2026-08-16T19:29:57Z","type":"implementation","status":"ok","note":"Added read-only get_exact_source_document MCP tool backed by the canonical sharded source archive; full content is returned for consumer-owned hashing and receipts. Typecheck and in-memory MCP smoke pass."} {"ts":"2026-08-16T19:34:57Z","type":"verification","status":"ok","note":"Yggdrasil deployed immutable VoidBot recovery release 20260816T193315Z-c88c71909dbc. Starfire called get_exact_source_document through 127.0.0.1:17875 and received all 10,363 characters of AetheriaLore:Aetheria/index.md with SHA-256 ccc26375ecbe638af1aa3ccdeff885dfcc85cf6e7f1c6867e2b42e3e8b374a6d."} +{"ts":"2026-08-30T20:45:00Z","type":"operations","status":"degraded","note":"Yggdrasil VoidBot retrieval is healthy but source refresh has no admitted owner. `voidbot-retrieval.service`, MCP, and Qdrant are up; list/search smokes pass across 49 repos, and the green source collection has 98,170 points with an empty update queue. Most archive shards are still dated 2026-06-03 (AetheriaLore 2026-08-20 and Kalsa 2026-08-25 were later bounded imports). The recovery Compose mounts archives read-only and allow-lists retrieval tools only; no index worker, crawler, hook consumer, or reconcile scheduler is deployed. Restoring freshness requires a new authority map, not a service restart."} diff --git a/state/map.yaml b/state/map.yaml index 524cf27..f690eac 100644 --- a/state/map.yaml +++ b/state/map.yaml @@ -14,13 +14,13 @@ objective: Aetheria lore, while keeping the system understandable enough to modify safely. current: > - Recover the read-only archive/source retrieval organ on surviving old - Yggdrasil from the verified 2026-06-03 offsite backup. Big Yggdrasil is - retired and its address is no longer trusted; its VoidBot, Idunn, Odin, - Epiphany, deployment, and secret state did not survive. Restore only the - resident loopback MCP, exact archives, and VoidBot-owned Qdrant collections - first. Keep Discord, worker jobs, Personas, moderation, and delivery stopped - until their missing authority and credentials are deliberately rebuilt. + Keep the recovered read-only archive/source retrieval organ healthy on + surviving old Yggdrasil, and design an admitted source-index refresh owner. + The query path is live, but no current runtime owns incremental source + crawling or coordinated archive/Qdrant writes, so most source shards remain + at the 2026-06-03 recovery snapshot. Keep Discord, worker jobs, Personas, + moderation, and delivery stopped until their missing authority and + credentials are deliberately rebuilt. constraints: - Disaster recovery currently targets trusted old Yggdrasil at 94.130.75.184; retired Big Yggdrasil at 94.130.223.131 is not a GameCult host and must not be trusted or targeted. @@ -292,5 +292,5 @@ rejected_paths: reason: sleep/distillation that collapses concrete claims into generic abstraction creates memory nonsense and then forces later cleanup compensators current_status: - summary: Yggdrasil `voidbot.service` currently owns only the typed `voidbot.swarm` Eve publisher at `127.0.0.1:17873`. Idunn deployed revision `a4a5bd9a3ce781876e5563817d8b8db178cd289d`, accepts its signed `voidbot.cultnet-rudp-stack-health` as authenticated, and Gjallar composes the provider into `gjallar.overview`. The lost Discord bot, worker, Persona scheduler, Postgres, Qdrant, and resident cognition body were not restored. `voidbot-retrieval.service` remains a separate read-only recovery service. - next_action: Treat the live swarm surface as a retained operational projection of the surviving typed state, not proof that the full cognition stack is running. Any future restoration of bot, worker, scheduler, databases, or model inference requires a fresh authority and recovery map; do not grow `voidbot.service` around stale full-stack claims. + summary: Yggdrasil release `11568671a0d72c4e273c2b76d0a2a642788cc347` runs the typed `voidbot.swarm` Eve publisher and the separate read-only `voidbot-retrieval.service`. The retrieval MCP and Qdrant are healthy: 49 source repositories are visible, source search succeeds, and the green source collection contains 98,170 points. The recovery body has no source-index writer, repo crawler, hook consumer, or reconciliation scheduler; retrieval availability therefore does not imply corpus freshness. The Discord bot, worker, Persona scheduler, Postgres, and resident cognition organs remain absent. + next_action: Produce and approve an authority map for source refresh before starting any writer: one owner, its exact repository inputs, archive/Qdrant commit boundary, failure rollback, scheduling trigger, progress surface, and deployment path. Do not use a manual full reindex or revive the retired workstation stack as a diagnostic shortcut. diff --git a/state/scratch.md b/state/scratch.md index ed034db..51ae5d4 100644 --- a/state/scratch.md +++ b/state/scratch.md @@ -2,13 +2,20 @@ ## Current Subgoal -Design and execute the private self-state teardown: replace editable JSON projection authority with typed CultCache mutation tools, then delete legacy mirrors and compensating cleanup paths. +Inspect the health of the deliberately narrow Yggdrasil VoidBot body, with +source retrieval/index availability as the priority failure. ## Working Notes -- Smallest coherent target: private Void self-state is one polymorphic CultCache-backed authority with typed document kinds, and agents cross the boundary through explicit operation payloads. -- First cut should be state-boundary design and typed mutation tools, not another behavior patch. -- JSON can remain a debug export or operation payload format, but not an editable whole-state working copy. -- Cut early: repo cursor JSON writes, commit-working-view authority, legacy top-level mirrors, and semantic cleanup code that only exists because invalid durable state was allowed through. -- Treat most deterministic cleanup as recent compensator cruft, not machinery to preserve. -- Redesign sleep/distillation so compression preserves concrete subject, claim/question, evidence refs, live tension, and future-action implication instead of collapsing meaning into generic slogan paste. +- Current runtime authority: `voidbot.service` owns only the typed swarm Eve + publisher; `voidbot-retrieval.service` separately owns read-only archive and + source retrieval at Yggdrasil loopback `127.0.0.1:17875`. +- Do not infer that the Discord bot, worker, Persona scheduler, Postgres, or + resident cognition organs are live from source code or the retained swarm + projection. +- The recovery corpus is read-only. Diagnose retrieval service, tunnel, + embedding provider, Qdrant collections, and recovered archive independently; + do not start indexing writers as a health-check side effect. +- Last durable retrieval proof is the 2026-08-16 exact-document witness for + release `20260816T193315Z-c88c71909dbc`; it is historical evidence, not a + present-health result.