161 lines
7.9 KiB
Markdown
161 lines
7.9 KiB
Markdown
# 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.
|
|
3. Move Persona and repo Face `.cc` inspection to Huginn-owned tooling while
|
|
leaving VoidBot as the Discord compatibility carrier.
|
|
4. Publish `voidbot.discord`, `voidbot.reddit`, `voidbot.archive`,
|
|
`voidbot.source`, and `voidbot.repo_face` provider surfaces as typed
|
|
Eve/CultUI bindings.
|
|
5. Let Odin discover and aggregate those provider-owned surfaces. Do not add a
|
|
parallel HTTP dashboard or status-card summary as the public contract.
|
|
6. 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.
|