VoidBot/docs/architecture/voidbot-verse-service-contract.md
2026-06-16 05:50:46 +01:00

7.9 KiB

VoidBot Verse Service Contract

VoidBot is a Discord-native cognition and retrieval service that publishes its meaningful operator surfaces as Eve/CultUI through CultMesh. It is not a dashboard owner, a Persona runtime steward, or the Verse registry. Those are separate organs.

This contract records the live ownership line and the migration target for VoidBot surfaces as they become first-class Verse nodes.

Owner Map

  • VoidBot owns Discord ingress, room cognition, moderation judgment for GameCult public community spaces, archived Discord history, indexed source/lore retrieval, direct owner handoff, repo Face scheduling compatibility, and parent-owned speech delivery.
  • VoidBot owns typed Void self-state at .voidbot/private/void-self-state.cc through the typed operation service and its runners.
  • VoidBot temporarily carries repo Face .cc state paths as compatibility mouths for Discord roles, webhook persona posting, CTB scheduling, prompt assembly, and state-operation application.
  • Huginn owns runtime stewardship for Persona-state and .cc inspection: schema availability, migration pressure, projection health, access-tool sanity, CultMesh publication, and Eve DSL inspection for typed state.
  • Bifrost owns governed public crossings: GitHub proposal/article/comment transport, Reddit post/thread viewing and posting for r/GameCultOrg, work topics, dispatch receipts, and future Discord-native work interfaces. VoidBot may mirror or feed context, but Bifrost owns the work request and external transport authority.
  • Heimdall owns account, OAuth, grants, custody, revocation, and capability gates.
  • Odin owns Verse/provider discovery and interface aggregation. VoidBot advertises provider-owned surfaces; Odin discovers them without becoming their state owner.
  • Eve/CultUI owns presentation shape. Browser HTML, terminal text, native Eve, overlays, and future rooms are lowerings of the same provider-owned surface, not independent truth stores.

CultCache And Persona Witnesses

  • Canonical durable agent/service state should be typed CultCache .cc, or CultCache-compatible with a .cc witness/export until the native writer is migrated.
  • Void self-state witness: .voidbot/private/void-self-state.cc, owned by VoidBot typed operations.
  • Repo Face compatibility witness: .voidbot/private/repo-faces/<identity>.cc by default, or the repo-local Face state path from REPO_DISCORD_IDENTITIES_PATH.
  • Swarm presentation witness: .voidbot/status/cultmesh/voidbot-swarm-state.cc, written by scripts/render-voidbot-swarm-dashboard.mjs.
  • Idunn health witness: scripts/run-gamecult-orchestrator.ps1 publishes voidbot.cultnet-rudp-stack-health over cultnet.transport.rudp.v0 after each orchestrator pulse. The health record reports the pulse summary for the local stack; scripts/check-voidbot-operations.ps1 remains a compatibility probe and watchdog report, not the daemon liveness owner.
  • JSON status packets under .voidbot/status/ are debug/export surfaces unless a specific runner owns them as command input. They are not durable canonical state.
  • Persona state should converge on the Epiphany Persona schema surface. VoidBot may carry legacy Face/persona compatibility data for Discord addressing and old tooling, but Huginn is the steward for inspecting, validating, migrating, and publishing Persona/.cc runtime state.

Demotion line: VoidBot's repo Face state tools are compatibility carriers and diagnostic admin handles. They must delegate inspection and portable Persona publication to Huginn as soon as the Huginn path exists for the relevant state kind. VoidBot must not turn its legacy MCP reads, private registry, or HTML lowering into the canonical Persona authority.

CultMesh Namespaces

The current published swarm namespace is:

  • Verse id: voidbot.local
  • Provider id: voidbot.swarm
  • Endpoint: cultmesh://voidbot.local/eve/providers/voidbot.swarm
  • Snapshot document: voidbot.swarm_state_snapshot
  • Provider advertisement: gamecult.eve.provider_advertisement
  • Eve surface state: gamecult.eve.surface_state
  • Eve interface binding: gamecult.eve.interface_binding
  • Store path: .voidbot/status/cultmesh/voidbot-swarm-state.cc

Near-term VoidBot Verse surfaces should use stable voidbot.* provider ids and typed CultCache documents behind the Eve binding:

  • voidbot.discord: Discord ingress, room obligations, direct mentions, pending reply anchors, speech receipts, and moderation/open-case pressure.
  • voidbot.reddit: r/GameCultOrg post/thread obligations, Persona-authored thread creation, moderation/open-case pressure, proposed replies, and Bifrost transport receipts.
  • voidbot.archive: archived Discord corpus status, source archive freshness, backfill/import health, and retrieval caveats.
  • voidbot.source: indexed repo/lore coverage, repo shard status, vector collection health, and source reindex jobs.
  • voidbot.repo_face: registered Face address book, repo-local state witnesses, channel permission projections, pending mention pressure, and compatibility state access status.
  • voidbot.swarm: CTB initiative order, active turns, pause/heat/cadence controls, orchestrator organ health, and selected Face state witness.

Eve Surfaces

All meaningful presentation flows through Eve/CultUI DSL:

  • Discord surface: shows room debt, direct mentions, recent public speech receipts, moderation cases, venue targets, and candidate delivery state.
  • Reddit surface: shows r/GameCultOrg thread/post debt, Persona-authored thread ideas, moderation witnesses, proposed replies or actions, and Bifrost receipt state.
  • Archive surface: shows archived Discord import status, bot-directed-prompt exclusion health, history vector freshness, and retrieval warning notes.
  • Source surface: shows indexed repo/lore coverage, shard freshness, Qdrant collection status, and detached reindex jobs.
  • Repo Face surface: shows registered identities, repo-local .cc witnesses, channel grants, prompt assembly status, Bifrost digest availability, and Huginn inspection readiness.
  • Swarm surface: shows CTB order, active turn freeze, heat/cadence controls, pending mention queues, orchestrator status, and selected Face state witness.

The existing swarm-dashboard.html file is a local browser lowering of the voidbot.swarm Eve surface. It is useful for visual inspection, but it has no bespoke dashboard authority. Controls and state authority live in the CultMesh Eve binding and the underlying typed state owners.

Migration Order

  1. Keep the current voidbot.swarm CultMesh publication healthy and discoverable through Odin.
  2. Keep voidbot.cultnet-rudp-stack-health publishing from the orchestrator pulse so Idunn consumes daemon-owned health before compatibility probes.
  3. Add .cc witness/export documents for any remaining JSON-only command or status surfaces before treating them as Verse state.
  4. Move Persona and repo Face .cc inspection to Huginn-owned tooling while leaving VoidBot as the Discord compatibility carrier.
  5. Publish voidbot.discord, voidbot.reddit, voidbot.archive, voidbot.source, and voidbot.repo_face provider surfaces as typed Eve/CultUI bindings.
  6. Let Odin discover and aggregate those provider-owned surfaces. Do not add a parallel HTTP dashboard or status-card summary as the public contract.
  7. Demote old JSON exports, static HTML, and legacy MCP state reads to diagnostics once the CultMesh/Eve and Huginn paths cover the same reality.

Forbidden Authority

  • No renderer-owned truth.
  • No bespoke dashboard as canonical service state.
  • No load-bearing JSON sidecar where a typed .cc document or witness/export can carry the state.
  • No Persona runtime stewardship inside VoidBot after Huginn can inspect and publish that state.
  • No Odin-owned mutation of provider state; Odin discovers, lowers, and routes provider-owned surfaces.
  • No Bifrost work dispatch hidden inside Discord chatter when a request is reviewable work.