Move rumination speech under parent control
This commit is contained in:
parent
9944076e7b
commit
d154aabc69
13 changed files with 374 additions and 22 deletions
|
|
@ -33,8 +33,9 @@ Git history and smoke artifacts carry routine proof. `state/evidence.jsonl` shou
|
|||
- Prompt-facing rumination chronology is projected by `scripts/lib/void-rumination-context-projection.ps1`. Exact timestamps stay in typed state/status/cursors; the child context gets relative phrases like `5 minutes ago`, including recent Discord messages, repo activity, receipts, memory timestamps, and sleep/speech timing.
|
||||
- `scripts/simulate-void-mood.mjs` owns typed sleep/speaking-pressure over `.voidbot/private/void-self-state.cc`. During sleep, it invokes typed memory maintenance once per nap unless that nap already completed a pass; use `--skip-memory-maintenance` for smoke runs that must not call Codex.
|
||||
- `npm run moderation:memory-maintenance:sleep-fixture` now proves the non-skip sleep path without spending a live model call: it seeds a temporary `.cc`, forces mood drift through sleep maintenance, uses a fake Codex child to propose `apply_memory_distillation`, and verifies short-term residue is gone while the durable memory keeps subject, claim, tension, action implication, and anchor.
|
||||
- The local scheduled task `Void Mood Drift` has been reinstalled/enabled against the typed runner and manually started once with Last Result `0`. `Void Moderator Rumination` remains disabled until a controlled real-model no-post pass proves operation quality, not merely runner plumbing.
|
||||
- The local scheduled task `Void Mood Drift` has been reinstalled/enabled against the typed runner and manually started once with Last Result `0`. `Void Moderator Rumination` is ready for cautious re-enable after the parent-owned speech closure pass lands.
|
||||
- `npm run moderation:rumination:fixture` proves the non-skip typed rumination branch without spending a live model call: it seeds a temporary `.cc`, routes the runner through a fake Codex child, and verifies short-term memory, incubation, agency pressure, and candidate intervention proposals are parent-applied typed operations with no exact timestamp leakage in the prompt-facing context.
|
||||
- `npm run moderation:rumination:speech-fixture` proves queued speech has a parent-owned action loop: fake Codex queues one candidate with a delivery target, fake Discord send writes a receipt, and the parent runner marks the candidate spoken through typed state. The child prompt now forbids direct send-script calls.
|
||||
- The old memory-organ script family, legacy moderation-state template, and legacy moderation context exporter have been deleted. Do not revive their cleanup, agency, dream, vector-incubation, or mirror-repair behavior as compatibility scaffolding.
|
||||
- `scripts/run-void-memory-maintenance.ps1` is the first replacement memory-maintenance organ. It builds a bounded context from typed memories/incubation/candidates/runtime, loads `prompts/void-memory-maintenance.md`, and applies only allowed memory/incubation/candidate typed operation proposals through `scripts/void-self-state.mjs`. In sleep mode, memory pressure sets `sleepDirective.forceDistillation`; a real model pass returning no operations under pressure fails visibly.
|
||||
- Rumination does not write durable memory. It can only emit `record_short_term_memory`; sleep maintenance must promote short-term records with `apply_memory_distillation`, merge them into incubation and prune them, or prune them outright. A real sleep pass that leaves short-term records behind fails.
|
||||
|
|
@ -98,7 +99,7 @@ Git history and smoke artifacts carry routine proof. `state/evidence.jsonl` shou
|
|||
## Likely Next Bounded Move
|
||||
|
||||
- Stop feature work on moderation, mood, agency, and public-lane behavior until the private-state boundary is rebuilt.
|
||||
- First bounded move after the current commit: run one controlled real-model typed rumination pass with `-NoPost`, inspect the proposed operation quality, and only then decide whether the scheduled rumination task is ready to re-enable or still needs action/receipt closure hardening.
|
||||
- First bounded move after the current commit: re-enable `Void Moderator Rumination` cautiously, run or observe one scheduled pass, and inspect `.voidbot/status/moderation-rumination.json`, `.voidbot/logs/moderation-rumination.log`, and typed state before treating the loop as stable.
|
||||
- Next cuts should delete unstable foundations early: do not revive `legacyJsonPath`, working projections, top-level mirror fields, or cleanup code that only compensated for those broken boundaries.
|
||||
- Rebuild sleep/distillation before trusting it again. Fixture check: a memory like `AquariumSynthCSharp: Workflow cannot own the body` must survive sleep with its concrete subject, claim, anchor, tension, and implication intact.
|
||||
- Do not build adapters around the JSON projection. That is how the heap learned to stand upright and ask for snacks.
|
||||
|
|
|
|||
|
|
@ -130,12 +130,14 @@ This note is the source-grounded description of how the live VoidBot stack is sh
|
|||
- agency-pressure fixture. It seeds one typed self-advocacy pressure, verifies it appears in the rendered self-state summary, then runs mood drift against an isolated fixture state to prove agency pressure contributes to speaking pressure without creating a hard-wired speech candidate.
|
||||
- `scripts/smoke-void-rumination-fixture.ps1`
|
||||
- rumination fixture. It seeds an isolated CultCache `.cc` state, routes the non-skip rumination runner through a fake Codex child, and verifies short-term memory, incubation, agency pressure, and candidate intervention proposals are applied by the parent runner while the prompt-facing context keeps exact timestamps out.
|
||||
- `scripts/smoke-void-rumination-speech-fixture.ps1`
|
||||
- parent-owned speech fixture. It queues one deliverable candidate through fake Codex, routes delivery through a fake Discord sender, then verifies the parent runner writes a delivery receipt and marks the candidate spoken through typed state.
|
||||
- `scripts/install-moderation-rumination-task.ps1`
|
||||
- installs the local 15-minute scheduled task that runs the moderation/participation loop through the hidden PowerShell launcher shim.
|
||||
- Scheduled task `Void Mood Drift`
|
||||
- enabled typed mood/sleep runner. It invokes `scripts/run-void-mood-drift.ps1`, which calls `scripts/simulate-void-mood.mjs`; when the typed sleep cycle is napping, that path invokes memory maintenance once per nap.
|
||||
- Scheduled task `Void Moderator Rumination`
|
||||
- disabled pending a controlled real-model no-post pass and review. Its script is typed-only and now has a model-branch fixture, but unattended speech/thought is still too behaviorally sharp to re-enable on runner plumbing alone.
|
||||
- ready for cautious re-enable after parent-owned speech closure. Its script is typed-only, has model-branch and parent-owned speech fixtures, and should be observed for one scheduled pass before being treated as live-fire stable.
|
||||
- `scripts/simulate-void-mood.mjs`
|
||||
- typed mood maintenance script that updates scheduled-runtime sleep cycle and speaking pressure in `.voidbot/private/void-self-state.cc`. It owns the sleep transition and invokes typed memory maintenance once per nap unless that nap already completed a maintenance pass. Speaking pressure now derives from queued candidates, incubation, and active typed agency pressure. The old personality-vector drift, memory organ, incubation, dream residue, cleanup, and legacy mirror behavior are offline pending typed replacements.
|
||||
- `scripts/run-void-mood-drift.ps1`
|
||||
|
|
@ -188,8 +190,9 @@ Within the Postgres path, the implementation is split on purpose now too:
|
|||
4. The runner loads `prompts/void-moderator-rumination.md`, substitutes the context/state/output paths, and sends that prompt to Codex.
|
||||
5. Codex may use retrieval and analysis tools, but its durable state output is restricted to `.voidbot/status/moderation-rumination-operations.json`.
|
||||
6. The parent runner applies those typed operations through `scripts/void-self-state.mjs`, then records reviewed-message cursor and any speech receipt itself.
|
||||
7. The runner writes `.voidbot/status/moderation-rumination.json` and `.voidbot/logs/moderation-rumination.log`.
|
||||
8. It intentionally does not materialize `.json`, load `.msgpack`, read the legacy moderation monolith, or let the child edit state directly.
|
||||
7. If posting is enabled and the child queued a candidate intervention with a delivery target, the parent runner sends at most one newly proposed candidate, records the delivery receipt, and marks the candidate spoken through typed state. The child prompt forbids direct send-script calls.
|
||||
8. The runner writes `.voidbot/status/moderation-rumination.json` and `.voidbot/logs/moderation-rumination.log`.
|
||||
9. It intentionally does not materialize `.json`, load `.msgpack`, read the legacy moderation monolith, or let the child edit state directly.
|
||||
|
||||
## Flow 6: Mood Rebuild Stub
|
||||
|
||||
|
|
|
|||
|
|
@ -239,7 +239,7 @@ Verdict: stop feature work and rebuild this foundation. The rest of the machine
|
|||
### Commit 6.5: Keep Old Scripts Offline
|
||||
|
||||
- `Void Mood Drift` has been deliberately reinstalled after the typed sleep-maintenance fixture passed. It runs `scripts/run-void-mood-drift.ps1`, which calls the typed `scripts/simulate-void-mood.mjs` path.
|
||||
- Keep `Void Moderator Rumination` disabled until its typed operation path has passed a controlled real-model no-post run and review. The model-branch fixture now proves runner plumbing; it does not prove the live model's judgment is ready for unattended speech.
|
||||
- Re-enable `Void Moderator Rumination` only after typed operation quality and parent-owned speech closure have passed. The runner now has both a model-branch fixture and a parent-owned speech fixture; the first live scheduled pass still needs inspection before the loop is treated as stable.
|
||||
- Do not reinstall or re-enable deleted legacy scripts as compatibility surfaces.
|
||||
- Verification: scheduled-task query shows mood enabled with Last Result `0`, moderation disabled, and rebuilt direct dry runs operate only on `.voidbot/private/void-self-state.cc`.
|
||||
|
||||
|
|
@ -283,7 +283,9 @@ Verdict: stop feature work and rebuild this foundation. The rest of the machine
|
|||
- Landed agency ingress: `upsert_agency_pressure` / `retire_agency_pressure` store discomforts, active tensions, self-advocacy requests, and world-advocacy requests separately from candidate speech.
|
||||
- Landed agency verification: `npm run moderation:agency-pressure:fixture` proves agency pressure enters typed state, appears in the self-state summary, and contributes to mood speaking pressure.
|
||||
- Landed rumination verification: `npm run moderation:rumination:fixture` routes the non-skip rumination branch through a fake Codex child and proves short-term memory, incubation, agency-pressure, and candidate-intervention proposals cross the parent-applied typed operation boundary without timestamp leakage.
|
||||
- Remaining work: run a controlled real-model typed rumination pass with `-NoPost`, inspect whether the proposed operations are concrete enough to survive sleep, and decide whether unattended scheduling is ready or whether action/receipt closure still needs hardening.
|
||||
- Landed controlled live rumination review: the first real-model `-NoPost` pass produced valid but self-orbiting readiness-test residue, which was pruned/retired and folded into a prompt guard; the second real-model `-NoPost` pass sampled non-VoidBot repo pressure, used retrieval, and correctly wrote `[]` when nothing earned persistence.
|
||||
- Landed parent-owned speech closure: candidate interventions can include `deliveryTarget`, the prompt forbids child-side send scripts, the parent runner delivers at most one newly queued deliverable candidate per pass, records the receipt, and marks the candidate spoken with `mark_candidate_intervention_spoken`. `npm run moderation:rumination:speech-fixture` proves the loop with fake Codex and fake Discord send helpers.
|
||||
- Remaining work: re-enable the scheduled task cautiously, observe one scheduled pass, and inspect operation quality plus typed state before calling the loop stable.
|
||||
|
||||
### Commit 10: Resume Product Hardening
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue