This repository has been archived on 2026-10-29. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
Epiphany/schemas/agent-utterance-state-schema.md
2026-05-29 01:23:43 +01:00

7.9 KiB

Agent Utterance State Schema

epiphany.agent_utterance_state.v0 is the compact speech-conditioning view for Weks, Aquarium, Discord/voice bridges, and any other surface that needs an agent to sound like itself without ingesting the whole organ or Persona state.

It is a derived document. The durable source of truth stays split where it belongs:

  • canonical identity, values, and trait vectors live in local organ state (EpiphanyAgentMemoryEntry)
  • current load, heartbeat heat, cooldown multipliers, pending-turn state, and mood pressure live in heartbeat participant state
  • utterance systems consume the derived subset and do not read memories, events, scenes, or relationship-memory records

Shape

The document carries:

  • identity: public name, roles, origin, and public description only
  • organStateProfile: whether this is a lean work_organ or portable persona
  • personalityVectors: the six canonical trait-vector families used for voice and behavior projection
  • values: value labels and priorities that should bend speech tone
  • currentMood: mood label plus a 32-axis named emotional state projection covering valence, arousal, dominance, urgency, anger, despair, sadness, fear, anxiety, disgust, contempt, annoyance, dismissal, flippancy, playfulness, irony, tenderness, warmth, joy, excitement, fatigue, guardedness, confidence, shame, pride, threat, secrecy, hesitation, emotional containment, thought pressure, reaction intensity, and command force
  • activation: awake/running status, current load, initiative speed, interruptibility, cooldown multipliers, heat multiplier, pending-turn flag, and last wake/finish timestamps
  • characterStateVector: the 64-float deterministic weksa.utterance_embedding_handoff.v0.1 speaker-state lane; first 32 slots are the current emotional state projection, later slots add activation and slower speaker traits/context, with slot labels and uncertainties kept beside the values
  • utteranceEmbeddingBasis: bounded weighted text snippets generated from the same typed fields for utterance embedding input

Invariants

  • No episodic memories.
  • No semantic memories.
  • No relationship summaries or linked memory ids.
  • No private notes.
  • No hidden JSON cargo.
  • The characterStateVector.values array is exactly 64 floats. Resizing or reordering slots is a schema-version change.
  • The document may be serialized for CultNet, but in-process callers should use the typed Rust structs.

Weksa/AquaSynth Input Vectors

The full Weksa handoff is weksa.utterance_embedding_handoff.v0.1. The input vector widths are fixed:

  • speech_text_embedding: 1024 floats from bge-m3:latest; text semantics, not phonetics.
  • phonetic_realization_vector: 256 floats from Weksa/PanPhon-style phonetic realization; IPA/phone/speech-shape evidence, not text meaning.
  • prosody_emphasis_hints: 32 floats; Weksa-owned delivery hints.
  • character_state_vector: 64 floats; Epiphany organ or Persona speaker state from this document.
  • utterance_embedding: 64 floats; AquaSynth-owned learned output, not an Epiphany input.

Character State Vector Slots

characterStateVector.values uses these exact 0..63 slots for weksa.utterance_embedding_handoff.v0.1 compatibility:

Index Name Source
0 valence currentMood.emotionalDimensions.valence
1 arousal currentMood.emotionalDimensions.arousal
2 dominance currentMood.emotionalDimensions.dominance
3 urgency currentMood.emotionalDimensions.urgency
4 anger currentMood.emotionalDimensions.anger
5 despair currentMood.emotionalDimensions.despair
6 sadness currentMood.emotionalDimensions.sadness
7 fear currentMood.emotionalDimensions.fear
8 anxiety currentMood.emotionalDimensions.anxiety
9 disgust currentMood.emotionalDimensions.disgust
10 contempt currentMood.emotionalDimensions.contempt
11 annoyance currentMood.emotionalDimensions.annoyance
12 dismissal currentMood.emotionalDimensions.dismissal
13 flippancy currentMood.emotionalDimensions.flippancy
14 playfulness currentMood.emotionalDimensions.playfulness
15 irony currentMood.emotionalDimensions.irony
16 tenderness currentMood.emotionalDimensions.tenderness
17 warmth currentMood.emotionalDimensions.warmth
18 joy currentMood.emotionalDimensions.joy
19 excitement currentMood.emotionalDimensions.excitement
20 fatigue currentMood.emotionalDimensions.fatigue
21 guardedness currentMood.emotionalDimensions.guardedness
22 confidence currentMood.emotionalDimensions.confidence
23 shame currentMood.emotionalDimensions.shame
24 pride currentMood.emotionalDimensions.pride
25 threat currentMood.emotionalDimensions.threat
26 secrecy currentMood.emotionalDimensions.secrecy
27 hesitation currentMood.emotionalDimensions.hesitation
28 emotionalContainment currentMood.emotionalDimensions.emotionalContainment
29 thoughtPressure currentMood.emotionalDimensions.thoughtPressure
30 reactionIntensity currentMood.emotionalDimensions.reactionIntensity
31 commandForce currentMood.emotionalDimensions.commandForce
32 currentLoad activation.currentLoad
33 initiativeHeat activation.initiativeHeatMultiplier
34 pendingTurn activation.pendingTurnActive
35 cooldownPressure activation.effectiveCooldownMultiplier
36 reactionBias activation.reactionBias
37 interruptThreshold activation.interruptThreshold
38 initiativeSpeed activation.initiativeSpeed
39 voiceBubbly personalityVectors.voiceStyle.bubbly_pushiness
40 voiceDryness personalityVectors.voiceStyle.dryness
41 voiceFormality personalityVectors.voiceStyle.formality
42 voiceDirectness personalityVectors.voiceStyle.directness
43 voiceIntensity personalityVectors.voiceStyle.intensity
44 voiceWarmth personalityVectors.voiceStyle.warmth
45 voicePrecision personalityVectors.voiceStyle.precision
46 voiceRitualRegister personalityVectors.voiceStyle.ritual_register
47 presentationPushiness personalityVectors.presentationStrategy.pushiness
48 presentationSelfFocus personalityVectors.presentationStrategy.self_focus
49 presentationPlay personalityVectors.presentationStrategy.play
50 presentationCareDemand personalityVectors.presentationStrategy.care_demand
51 behaviorWorkDrive personalityVectors.behavioralDimensions.work_drive
52 behaviorBoundaryDefense personalityVectors.behavioralDimensions.boundary_defense
53 behaviorPurityDrive personalityVectors.behavioralDimensions.purity_drive
54 behaviorPatience personalityVectors.behavioralDimensions.patience
55 stableAgreeableness personalityVectors.stableDispositions.agreeableness
56 stableConscientiousness personalityVectors.stableDispositions.conscientiousness
57 stableNeuroticism personalityVectors.stableDispositions.neuroticism
58 stableOpenness personalityVectors.stableDispositions.openness
59 organizationCoherence personalityVectors.underlyingOrganization.coherence
60 organizationRigidity personalityVectors.underlyingOrganization.rigidity
61 slowTraitReserved62 reserved.slowTrait.62
62 slowTraitReserved63 reserved.slowTrait.63
63 slowTraitReserved64 reserved.slowTrait.64

If a caller needs autobiographical recall, it should ask the memory graph for a separate context cut. Do not fatten this document until it becomes a second state wearing stage makeup. That is how the old machine learned to lie politely.