You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(initiate): widen emotional_snapshot to Optional + real vectors from emitters
Bundle A items #3 + #6 — non-heartbeat emitters were filling
EmotionalSnapshot with zeros (vector={}, baseline=0.0 throughout),
audit rows carried structurally-valid lies. Two coordinated changes:
1. InitiateCandidate.emotional_snapshot is now Optional. Voice-reflection
candidates (kind=voice_edit_proposal) emit with snapshot=None because
daily reflection has no moment-in-time emotion.
2. Dream + 3 crystallizers populate the vector from their actual
emotional context. Dream uses the dream-memory's aggregated emotions
(already in place since Task 9). The three crystallizers (reflex,
creative_dna, vocabulary-via-scheduler) now max-pool an emotion
vector across recent active memories via aggregate_state — what's
been emotionally alive in the window that produced the
crystallization. Rolling-baseline / current_resonance / delta_sigma
stay zero with a docstring note that those are heartbeat-specific
signals; non-periodic emitters don't compute them.
compose_tone handles None gracefully ("no moment-in-time emotional
snapshot" in the prompt). Audit log JSONL round-trip preserves None
as "emotional_snapshot": null.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments