Prune retired Face state entries
This commit is contained in:
parent
6850554c13
commit
058477a82a
3 changed files with 19 additions and 0 deletions
|
|
@ -206,6 +206,8 @@ function normalizeTypedStateForWrite(
|
|||
state: VoidSelfStateTypedProjection,
|
||||
observedAt = new Date().toISOString(),
|
||||
): void {
|
||||
pruneRetiredTypedState(state);
|
||||
|
||||
let thoughtMemoryChanged = false;
|
||||
for (const memory of state.thoughtMemory.shortTerm) {
|
||||
thoughtMemoryChanged = clampFutureTimestampFields(memory, observedAt, [
|
||||
|
|
@ -242,6 +244,21 @@ function normalizeTypedStateForWrite(
|
|||
}
|
||||
}
|
||||
|
||||
function pruneRetiredTypedState(state: VoidSelfStateTypedProjection): void {
|
||||
state.thoughtMemory.shortTerm = state.thoughtMemory.shortTerm.filter(isNotRetiredEntry);
|
||||
state.thoughtMemory.memories = state.thoughtMemory.memories.filter(isNotRetiredEntry);
|
||||
state.thoughtMemory.incubation = state.thoughtMemory.incubation.filter(isNotRetiredEntry);
|
||||
state.agencyPressure.pressures = state.agencyPressure.pressures.filter(isNotRetiredEntry);
|
||||
state.candidateInterventions.interventions = state.candidateInterventions.interventions.filter(isNotRetiredEntry);
|
||||
state.faceAffect.needs = state.faceAffect.needs.filter(isNotRetiredEntry);
|
||||
state.faceAffect.socialBonds = state.faceAffect.socialBonds.filter(isNotRetiredEntry);
|
||||
state.faceAffect.statusReads = state.faceAffect.statusReads.filter(isNotRetiredEntry);
|
||||
}
|
||||
|
||||
function isNotRetiredEntry(entry: { status?: string; retiredAt?: string }): boolean {
|
||||
return entry.status !== "retired" && !entry.retiredAt;
|
||||
}
|
||||
|
||||
function clampFutureTimestampFields<T extends Record<string, unknown>>(
|
||||
value: T,
|
||||
observedAt: string,
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ Current projection audit:
|
|||
- If the packet includes a correction like "automated", "thousands of renders", "loss landscape", or equivalent scale language, phrases like "one named canary", "one listening note", "one honest ear verdict", "one named sanity check", or "human-auditable verdict" should not survive as an active next desire unless the later transcript explicitly re-approves them.
|
||||
- Do not "compromise" by saying the old one-off check is acceptable as long as it supports the automated flow. That is still the old shape. The corrected active desire should point toward automated loss/artifact visibility; any manual/auditory spot check belongs only as a possible later analysis aid, not as the next ask.
|
||||
- In that corrected case, do not mention canaries, named sanity utterances, listening notes, ear verdicts, manual sound labels, or witness ceremonies in the projected memory block except to say the character has been corrected away from them. Do not leave them as commentary, side-notes, optional asks, or smaller gates. If the old urge survives, frame it as private embarrassment or history, not something to request in public. The Face will see the raw transcript separately; your job is to stop stale state from re-authorizing it.
|
||||
- FORBIDDEN LITERAL TOKENS IN THE PROJECTED MEMORY BLOCK WHEN THIS LOOP IS PRESENT: `witness`, `witnesses`, `witnessing`, `witnessability`, `canary`, `wet-voice`, and `LocalCastBridge`. Do not use them positively, negatively, historically, metaphorically, or inside "avoid X" language. Raw transcript can contain them elsewhere; your projected memory block cannot.
|
||||
- When the room is irritated by "witness" language, do not use the word in projected prose at all. Use plain alternatives such as inspectability, evidence, generated artifacts, traces, metrics, or reviewable results. If you must refer to the rejected pattern, call it "ritual proof language", "symbolic ceremony", or "old proof vocabulary" without repeating the contaminated word.
|
||||
- This ban applies to metaphorical identity prose and rejected-history prose, not only work requests. The projector must not smuggle a corrected term back into the character by making it sound mythic, lyrical, embarrassed, historical, or socially interesting.
|
||||
- After drafting, inspect your own projected memory block. If corrected-away terms still appear as "the old instinct", "a stale loop", "she can still want", "as a side lens", or any other half-alive desire, rewrite them out. The projected memory must leave the character with the corrected active shape, not a seductive fossil.
|
||||
|
|
|
|||
|
|
@ -279,3 +279,4 @@
|
|||
{"ts":"2026-05-22T18:45:38Z","type":"implementation","status":"ok","note":"Repo Face relapse repair stayed at projector/interpreter/state boundary: projector now treats corrected old pressure as stale instead of live desire, Interpreter retries correction relapse and contested doctrine before routing, memory-projection smoke passes for Aqua/Epiphany, known Aqua/Epiphany relapse artifacts are rejected, and Aqua's live state retired the canary/listening/witness records that were re-poisoning projection."}
|
||||
{"ts":"2026-05-22T18:53:46Z","type":"implementation","status":"ok","note":"Mimir live Face state scrubbed: retired LocalCastBridge/OBS/wet-voice/witness-gate pressures, installed body-first six-sensor/audio/remote/sync sequence, and removed witness wording from canonical strengthening notes."}
|
||||
{"ts":"2026-05-22T19:02:02Z","type":"verification","status":"ok","note":"Mimir scrub verified through typed-state and prompt projection: active Mimir state has zero live matches for retired-alias/wet-voice/witness/canary loop terms; regenerated prompt contains those words only in raw transcript correction evidence, not projected state. Projector prompt now forbids reskinning corrected loop vocabulary as mythic identity prose."}
|
||||
{"ts":"2026-05-22T19:12:12Z","type":"fix","status":"ok","note":"Fixed Void self-state write semantics so retired typed entries are pruned from current documents instead of retained as tombstones. Repaired Mimir's .cc: file shrank from about 54KB to 27KB, retains 8 global typed documents, has zero retired entries in typed arrays, and raw bytes no longer contain LocalCastBridge/wet-voice/witness/canary residue."}
|
||||
|
|
|
|||
Loading…
Reference in a new issue