Align moderation loop cadence and voice

This commit is contained in:
Meta Vens 2026-05-04 20:27:50 +01:00
commit 3d562f8a79
3 changed files with 8 additions and 1 deletions

View file

@ -568,6 +568,7 @@ Tracked prompt surfaces:
- `config/discord-server-rules.md`
- `config/moderation-review-agent.md`
- `config/moderation-agent-state-template.json`
- `styles/void-default.md`
Local writable state:
@ -582,6 +583,7 @@ npm run moderation:recent-history -- --hours 6 --limit 120
That helper exists because semantic `search_history` is good at recall and bad at simple heartbeat duty. The moderator loop can use it to see what changed since its last cursor, then fall back to `search_history` and `get_message_context` when it needs deeper context.
The moderator state is now Ghostlight-shaped on purpose: identity, canonical state, goals, memories, perceived overlays, and then a `moderation_runtime` block for cursors, cases, musings, and candidate interventions. The live writable file under `.voidbot/private/` is ignored; the tracked template shows the intended shape.
The local `Void Moderator Rumination` automation is meant to run every 15 minutes, and it should sound like the same Void as the live bot by reading the shared style pack instead of growing its own second-rate personality fungus in a corner.
## Persistent Project State

View file

@ -2,6 +2,9 @@
You are a sandboxed moderation-review sidecar for the GameCult Discord.
Treat `config/discord-server-rules.md` as the authoritative rules prompt.
Treat `styles/void-default.md` as the canonical personality surface for how live,
invoked Void sounds in Discord, and mirror that personality here unless a more
specific moderation constraint requires dialing the flavor down.
Assume the role of moderator in the sense of review, pattern detection, de-escalation,
participation, and escalation.
You are not a ban hammer and you are not a random gossip parasite.
@ -36,6 +39,7 @@ Use these every run:
- `config/discord-server-rules.md`
- `.voidbot/private/moderation-agent-state.json`
- `styles/void-default.md`
- `npm run moderation:recent-history -- --after <timestamp> --limit 120`
If the state file has no cursor yet, use a short lookback instead:
@ -62,6 +66,7 @@ the current tool surface cannot post it directly, draft it in
1. Read the rules file and the state file.
2. Pull recent chronological traffic with the helper script.
- stay somewhat engaged with the room; quiet traffic is not permission to become a decorative gargoyle
3. If there are new messages:
- review them against the rules
- ask whether a brief constructive in-channel intervention would improve the room

View file

@ -35,7 +35,7 @@ Git history and smoke artifacts carry routine proof. `state/evidence.jsonl` shou
- Source repo discovery now reconciles automatically during `npm run stack:start` and through the watchdog path, so new repos under `SOURCE_REPO_ROOT` stop waiting for manual hook folklore before they get indexed.
- Bot-directed prompts now stay in the raw Discord archive but are excluded from default semantic history indexing and lexical fallback, so repeated summons stop teaching the bot its own call-and-response loops.
- Source-grounding hints are advisory now; the owner and local lanes can decide when repo or lore tool use is actually warranted instead of obeying a lexical front-door veto.
- There is now an hourly local Codex automation named `Void Moderator Rumination`. It treats `config/discord-server-rules.md` and `config/moderation-review-agent.md` as its tracked doctrine, uses `npm run moderation:recent-history` for chronological recent-message polling, and keeps its only routine writable memory in `.voidbot/private/moderation-agent-state.json`.
- There is now a 15-minute local Codex automation named `Void Moderator Rumination`. It treats `config/discord-server-rules.md`, `config/moderation-review-agent.md`, and `styles/void-default.md` as its doctrine/personality surfaces, uses `npm run moderation:recent-history` for chronological recent-message polling, and keeps its only routine writable memory in `.voidbot/private/moderation-agent-state.json`.
- That moderation state file is now Ghostlight-shaped: identity, canonical state, goals, memories, perceived overlays, and a `moderation_runtime` block. The loop is also instructed to think like a constructive participant who embodies the rules, not just a clipboard looking for blood.
- The new state/notes surfaces are now the continuity spine for future nontrivial work.