Map daemon moderation ownership
This commit is contained in:
parent
f97e67b1dd
commit
0629fc7818
4 changed files with 4 additions and 1 deletions
|
|
@ -213,6 +213,7 @@ Git history and smoke artifacts carry routine proof. `state/evidence.jsonl` shou
|
|||
- The resident daemon now owns Void physiology in-process. Every five minutes it derives sleep and speaking pressure from typed state plus moderation activity, applies only `update_sleep_cycle` and `update_speaking_pressure`, and may emit a typed sleep-maintenance intent. It does not launch PowerShell or a model. The Windows omnibus no longer contains the mood writer.
|
||||
- Revision `21d12a3` adds the portable memory-maintenance organ behind that intent. It commits `void-memory-maintenance-attempt:<napStartedAt>` before its single bounded text-model call, validates the complete proposed operation batch, applies only the allowed memory/incubation/agency/candidate family, requires zero remaining short-term memory, and records `void-memory-maintenance:<napStartedAt>` only on success. Failure is visible and cannot retry until a different nap. Idunn/Ygg live promotion and receipt verification are the immediate deployment check.
|
||||
- The one-minute Persona scheduler pulse is an observation clock, not an inference cadence. With the swarm brake present it returns before registry, Discord, embedding, storage, or dispatch work; current Ygg logs show `selected: []` and `queued: []`. Unprompted speech also has a separate global admission window. Do not cool token use by making observation blind; keep turn authorization at the initiative owner.
|
||||
- Revision `f97e67b` adds the portable moderation-heartbeat coordinator and enforcement organ behind a separate disabled-by-default 15-minute cadence. The model returns an exact review ledger plus urgent IDs and typed case operations; missing evidence or unaccounted urgent evidence blocks cursor advancement. The attempt is receipted by latest message before inference, so one unchanged archive window cannot burn tokens repeatedly. Case enforcement is separate, scans typed pending debt on every cadence, and resolves a case only after a required Discord ban succeeds. Ygg is being enabled first with `VOID_MODERATION_ENFORCEMENT_MODE=log_only` because its cursor begins at 2026-07-13 and the first bounded window must be inspected before policy sanctions are trusted.
|
||||
- Deterministic state-packet assembly now lives in `persona-state-packet-projector.ts`, which takes typed state, registry/room evidence, pronoun guidance, curiosity facts, and an explicit observation time. The shell no longer owns section ordering or social-context composition. The downstream regex vocabulary cleaner was deleted: it was a symptom compensator rewriting ordinary words such as `witness` and `canary` after projection. A smoke proves literal source language survives the projector unchanged.
|
||||
- Optional model-backed state projection now crosses `persona-text-projection-actuator.ts`. That actuator alone owns Codex args/process lifetime, ordered fallback models, timeout, output decoding, retry classification, and model-output JSONL telemetry. Focused smoke proves it chooses the last visible agent message, retries capacity/429 failures, and refuses to classify prompt-contract failures as model availability problems. The heartbeat shell lost another 182 lines and now only supplies the completed projection prompt plus runtime config.
|
||||
- Final Persona turn composition now crosses `persona-turn-assembler.ts` for both queued turns and `--assemble-prompt` inspection. It owns conversation projection, jurisdiction-dive cadence, final prompt composition, and the deduplicated eight-image evidence budget. The shell acquires facts and the turn actuator queues the assembled result; neither may maintain a parallel opinion about the final prompt or evidence bundle.
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ The disabled tasks are not standby owners. The listed organs currently have no r
|
|||
|
||||
1. Portable Void physiology is live in the daemon with injected typed state/moderation ports and maintenance intent; the Windows omnibus mood writer is deleted.
|
||||
2. Portable memory maintenance is daemon-owned: physiology emits a typed nap intent; the memory organ owns bounded context projection, one text-model attempt per nap, whole-batch operation validation, typed application, and residue verification. The attempt receipt is committed before inference, so failure cannot become a periodic retry furnace.
|
||||
3. Split `run-void-moderator-rumination.ps1` into shared Discord/context sources plus separate moderation-heartbeat and person-shaped rumination coordinators.
|
||||
3. The moderation-heartbeat half is portable and daemon-wired: chronological archive evidence, explicit model review ledger, typed case validation/application, guarded cursor commit, and replay-safe policy enforcement are separate organs. Live rollout begins in `log_only`; remove the old Windows heartbeat authority after the deployed review ledger and cases are inspected. Person-shaped rumination remains the next split from `run-void-moderator-rumination.ps1`.
|
||||
4. Add serialized daemon cadence for those three Void-owned organs, with independent due state, timeout, and telemetry. Do not route them through Persona initiative.
|
||||
5. Give Bifrost dispatch to a Bifrost-owned resident worker.
|
||||
6. Give operations health/restart scheduling to Idunn and retain VoidBot health publication as provider-owned observation only.
|
||||
|
|
|
|||
|
|
@ -444,3 +444,4 @@
|
|||
{"ts":"2026-07-16T06:20:00Z","type":"implementation","status":"ok","note":"Void physiology extracted into a pure domain and typed daemon organ. It derives speech timing from canonical receipts, emits only update_sleep_cycle/update_speaking_pressure operations, freezes sleep while moderation is active, and returns memory-maintenance intent without launching PowerShell or owning memory policy. Resident daemon schedules it independently of the paused Persona swarm; typecheck and focused smoke pass."}
|
||||
{"ts":"2026-07-16T06:30:00Z","type":"verification","status":"ok","note":"Idunn deployed 15a7c58. Live physiology entered a due nap, wrote typed sleep/speaking pressure, and emitted one sleep_short_term_pressure intent while Persona scheduling remained paused. Four later one-minute observations did not rerun the five-minute organ; docker top showed only resident Node and no PowerShell/model child. The competing void-mood-drift definition was then deleted from the Windows omnibus."}
|
||||
{"ts":"2026-07-16T03:51:18Z","type":"implementation","status":"ok","note":"Portable Void memory maintenance is daemon-owned at 21d12a3: physiology emits typed nap intent; the organ pre-records one attempt per nap, bounds tool-free text inference, validates the full typed operation batch, requires zero short-term residue, and never automatically retries."}
|
||||
{"ts":"2026-07-16T04:15:05Z","type":"implementation","status":"ok","note":"Portable moderation heartbeat at f97e67b separates evidence acquisition, exact review ledger and typed case application, guarded cursor commit, bounded per-window inference, and replay-safe Discord enforcement. Deployed fixture passed on Ygg; live rollout is log_only before sanctions."}
|
||||
|
|
|
|||
|
|
@ -77,6 +77,7 @@ active_subgoals:
|
|||
- `bifrost-governance-source.ts` owns the remaining Bifrost digest CLI adapter and converts command or parse failures into typed error topics. Persona prompt composition receives governance facts without knowing Bifrost process mechanics; `scripts/run-repo-face-heartbeats.ts` may not invoke the Bifrost CLI directly.
|
||||
- `void-physiology-organ.ts` is the daemon-owned policy boundary for Void sleep and speaking pressure. It reads typed state and moderation activity through injected ports, writes only typed runtime operations, and emits a memory-maintenance intent without performing memory policy or inference.
|
||||
- `void-memory-maintenance-organ.ts` consumes that intent and owns one bounded maintenance transaction per nap: it records an attempt receipt before inference, projects bounded typed context, accepts only the explicit memory/incubation/agency/candidate operation family, validates the whole batch before application, requires short-term residue to reach zero, and then records success. A failed or malformed pass cannot retry during the same nap. `void-memory-text-actuator.ts` is the narrow OpenAI-compatible text port; it receives one complete prompt, exposes no tools, and caps completion output.
|
||||
- Void moderation heartbeat is now a separate daemon organ family. `void-moderation-evidence-source.ts` owns cursor-bounded chronological archive acquisition. `void-moderation-heartbeat-projector.ts` requires one explicit decision envelope containing an exact review ledger, urgent-message subset, and typed case operations; the cursor cannot advance over omitted evidence or urgent evidence without an existing/proposed case. `void-moderation-heartbeat-organ.ts` pre-receipts one inference attempt per latest-message window, applies cases before the single cursor commit, and cannot speak or sanction. `void-moderation-enforcement-organ.ts` independently revisits typed pending debt, owns strike expiry/count policy, lowers only required bans through Discord, and closes a case only after sanction success. `bounded-text-completion-actuator.ts` is the shared tool-free completion boundary for daemon cognition organs.
|
||||
- `initiative-engine.ts` is the only writer of scheduler state fields and history. Reconciliation, controls, pause/disabled skips, stale-turn recovery witnesses, semantic pressure, attention consumption, queue transitions, and tick finalization all cross named engine commit primitives. Queue/context actuators return results and cannot patch participants or history directly.
|
||||
- `turn-actuator.ts` owns lowering an assembled Persona prompt and evidence bundle into the canonical worker `ContextBundle` and approved `repo-face-rumination` job. It owns the worker actor, command, request ID, approval defaults, and `createJob` call, then returns only a queue receipt. The orchestration shell chooses no queue mechanics and the actuator cannot read Persona or initiative state.
|
||||
- `turn-routing.ts` owns deterministic Persona channel policy: newest pending-attention preference, default/threshold fallback, snapshot neighborhoods, low-threshold topic projection, and bounded channel-speed projection. Prompt renderers consume a `PersonaChannelPlan`; they do not recompute routing or scheduler speed.
|
||||
|
|
|
|||
Loading…
Reference in a new issue