Record VoidBot source indexing authority gap

This commit is contained in:
Meta Vens 2026-08-30 22:44:57 +02:00
commit a03840ed5e
5 changed files with 46 additions and 30 deletions

View file

@ -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

View file

@ -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.

View file

@ -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."}

View file

@ -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.

View file

@ -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.