96 lines
6.9 KiB
YAML
96 lines
6.9 KiB
YAML
experiment:
|
|
name: VoidBot
|
|
status: active
|
|
phase: hardening
|
|
premise: >
|
|
Keep VoidBot operable as a Discord-native assistant with real retrieval,
|
|
durable ops, and explicit project memory surfaces instead of letting
|
|
continuity dissolve into transcript fog.
|
|
|
|
objective:
|
|
primary: >
|
|
Maintain and extend VoidBot as a Discord-native assistant for GameCult with
|
|
grounded answers from archived Discord history, indexed source trees, and
|
|
Aetheria lore, while keeping the system understandable enough to modify
|
|
safely.
|
|
current: >
|
|
Keep the persistent state spine honest while shifting back toward
|
|
higher-priority public-lane and ops hardening now that the obvious
|
|
runtime-file monarchies have been cut into clearer seams.
|
|
|
|
constraints:
|
|
- Public traffic still rides one remote Qwen box plus local embedding and ops infrastructure.
|
|
- Owner flow and public flow share infrastructure but have different provider and safety boundaries.
|
|
- Postgres, Qdrant, Ollama, Docker, and Discord failures are operationally real; observability matters as much as features.
|
|
- Adjacent-service monitoring is allowed locally, but the public watchdog surface should stay generic and load private fire-signal logic through ignored extension hooks instead of hardcoded project gossip.
|
|
- Persistent project state must stay small enough to rehydrate from without becoming a second swamp.
|
|
|
|
invariants:
|
|
- The map is canonical and slow-changing.
|
|
- Scratch is temporary and disposable.
|
|
- Evidence is durable and distilled; routine activity proof belongs in git history, commits, smoke artifacts, or targeted logs.
|
|
- Jobs, audit events, interaction memory, and rate-limit state live in Postgres; vectors live in Qdrant; archives, artifacts, logs, and backups remain under `.voidbot/`.
|
|
- Source, repo, and lore answers must be grounded through source-side retrieval instead of vibes.
|
|
- When GameCult history, repo, or lore retrieval can answer the question, use the VoidBot MCP surfaces before raw repo spelunking.
|
|
|
|
data_flow:
|
|
observe:
|
|
- user request
|
|
- repository state
|
|
- canonical project state files
|
|
- provider and runtime health
|
|
- verifier results and smoke outputs
|
|
process:
|
|
- rehydrate from map, handoff, system map, and implementation plan
|
|
- reason over one bounded organ
|
|
- modify only the surface that deserves the change
|
|
- verify the seam that matters
|
|
- record only durable evidence that changes future belief
|
|
- commit or backtrack
|
|
cut:
|
|
- revert failed hypotheses instead of preserving churn
|
|
- distill obsolete state instead of accumulating transcript-shaped sludge
|
|
- keep persistent state lean enough that re-entry sharpens the next turn instead of drowning it
|
|
|
|
active_subgoals:
|
|
- Make the new project-state surfaces the default continuity path for nontrivial VoidBot work.
|
|
- Keep public-lane limits, moderation, and provider behavior constrained enough that one 4060 Ti box does not get flayed for sport.
|
|
- Preserve boring observability and startup discipline around Postgres, Qdrant, Ollama, Docker, backups, scheduled tasks, watchdogs, and any private local fire-signal extensions.
|
|
- Keep the runtime organs legible and only spend more refactor budget when a file clearly earns it.
|
|
|
|
accepted_design:
|
|
- Bot, worker, providers, and RAG remain the main structural seams.
|
|
- State storage stays intentionally split: Postgres for operational state, Qdrant for vectors, `.voidbot/` for archives, artifacts, logs, and backup material.
|
|
- `owner_codex` and `local_llm` remain distinct lanes with different tool-execution and safety posture.
|
|
- The VoidBot MCP server is the preferred search plane for archived Discord, indexed GameCult repos, Aetheria lore, and owner notifications.
|
|
- Long-running work should expose durable logs or status files instead of relying on one attached session and hope.
|
|
- Persistent project memory must stay ruthlessly distilled; git history and artifacts carry routine proof.
|
|
|
|
landed_baseline:
|
|
phases:
|
|
- Discord bot, worker, provider registry, and retrieval stack are live.
|
|
- Postgres-backed jobs, audit events, interaction memory, and rate-limit state are live.
|
|
- Qdrant-backed history and source retrieval are live.
|
|
- Local and offsite backups, watchdogs, and the operations dashboard are live.
|
|
- The stack now has a dedicated logon startup task path so bot and worker can come back after a reboot without waiting for manual resurrection.
|
|
- Interaction memory and behavioral profiling are live.
|
|
- Source-grounding enforcement and tool-driven retrieval are live.
|
|
- The operations watchdog can now load ignored local extension checks, so adjacent-service fire signals can piggyback on the owner DM path without turning the public repo into cross-project gossip.
|
|
- The owner Codex lane is now split into orchestration, runtime/parsing, shared helpers, and rendering modules instead of one swollen provider file.
|
|
- The local Ollama lane is now split into orchestration, prompt/render helpers, tool-loop helpers, and shared types/constants instead of one swollen provider file.
|
|
- The Discord bot lane is now split into a gateway shell plus dedicated command-handler and support helper modules instead of one swollen entrypoint file.
|
|
- The worker MCP surface is now split into a thin stdio entrypoint plus dedicated bootstrap, resource, tool, Discord-notify, and shared-helper modules instead of one swollen server file.
|
|
- Interaction-memory logic is now split into event/tone analysis and profile-synthesis modules instead of one slab trying to be both the ear and the therapist.
|
|
- State storage is now split into a thin factory plus per-domain Postgres/file store modules and bootstrap/migration helpers instead of one persistence omnibus.
|
|
|
|
rejected_paths:
|
|
- name: transcript_only_continuity
|
|
reason: repo complexity is now too high to trust chat fog as the only memory surface
|
|
- name: monolithic_local_state_blobs
|
|
reason: giant shared files for unrelated state hide costs and rot the next rehydrate
|
|
- name: source_answers_without_retrieval
|
|
reason: vibes produce plausible slop that sounds smart and lies with a straight face
|
|
|
|
current_status:
|
|
summary: VoidBot now has a real project-memory spine plus six legibility-hardening passes on major runtime organs. The owner Codex lane, local Ollama lane, Discord bot lane, worker MCP surface, interaction-memory logic, and state-storage persistence layer were all split into smaller seams, and the ops spine includes both ignored local watchdog extensions for adjacent fire signals and a dedicated logon startup task path for stack resurrection after reboot. The stack is still dense, but it no longer depends purely on transcript memory or one-file monarchies to stay coherent.
|
|
next_action: Keep using the canonical state files for re-entry, then shift back to higher-priority public-lane hardening and admin/forensics surfaces. Further seam cuts are elective unless a new swollen file clearly earns them.
|