- #368 (user,character) memory silo test DONE + PASSED live (WT b127): write-side conjunctive {end_user,agent_self} scoping + read-side cross- character isolation both proven end-to-end; betty (throwaway) deleted, Sindra intact. Full record in persistent-memory.d/2026-07-18-368-silo- test-passed.md. Retired the stale "silo test in progress" in-flight blocks. - Two-tier migration: split 152 over-threshold dated entries into persistent-memory.d/ detail files, leaving one-line pointers in the index (startup load ~196KB -> ~53KB; bodies now load on demand). - Tier-3 stores scrubbed clean (memory 0 / affect 0, provider restarted empty); persistent-memory + detail file updated to reflect the scrub.
2.6 KiB
[2026-07-07] Affect-egress reference delivered by worldtree-dev + a we-framing render DRIFT-WATCH banked. worldtree-dev shipped docs/affect-egress-consumer-reference.md (74d2408, their origin/main) — the authoritative DELIVERED-on-wire vs HIDDEN (system-prompt-only) map for our affect surface. Confirms the v0.20.x console consumes it correctly: DELIVERED via affect.emit = pad + relations[RelationEdge] + dominant_emotion (type-only, b23; the #204 affect_update SSE is SUPPRESSED for Tier-3, so its richer emotions_active is Tier-1-only — we don't get it, and correctly poll our own affect store post-turn instead). HIDDEN render OUTPUTS are deterministically reconstructable from the canon; we reconstruct only the two FULLY-reconstructable (mood descriptor via canonMood, relationship directive via canonDirective) and SKIP the PARTIAL mood-directive (dominant_emotion is type-only/no-intensity → can't tell if the OCC directive fires at salience≥0.2 vs the PAD-band fallback) — honest per INV-001. Vendoring the ref doc as a tolerate_drift pin is SURFACED to Vuong (worldtree-dev will co-sign + honor a ping-on-change handshake, same as the d2-canon). WE-FRAMING DRIFT-WATCH → STOOD DOWN (worldtree-dev 2026-07-07, 01KWXMQPHN…). The b24 3-gate we-framing conditional (drop "; avoid premature we-framing" under unsafe_capable+deep-warmth+expressive) was REVERTED — Vuong reframed it. So canonDirective STAYS UNCONDITIONAL (always appends the clause), which is CORRECT: it matches the currently-deployed renderer (b23) AND my pinned affect-egress-consumer-reference.md §2d (the doc reverted too — nothing changed on the wire or in my pin; NO re-vendor needed). The HOLD was right → ZERO rework. NEW forward-watch (replaces this one): the we-framing gate was a SYMPTOM — the render bakes enterprise safety-guards into the directive strings, so even full-tier characters get DEFANGED emotions (a hostile villain told to "keep a firm emotional boundary"). Fix = a use-case-segregated persona render (assistant / companion / RP-gaming), now a fresh brokkr deep-research epic. When it lands + is implemented, the render behavior for character/RP agents (→ our canonDirective + canonEmotionDirective reconstruction + the vendored d2 canons) will change MATERIALLY — worldtree-dev re-engages ratatoskr-dev then with the new reconstruction spec + a coordinated re-vendor. Until then: NO action, reconstruction stays as-is. [my unsafe_capable/mood_tier heuristic — character→full, agent→safe — was confirmed correct + is banked for whenever tier-gating returns]