Static personas feel dead
Build an AI persona with a fixed system prompt. Give it a name, a voice, a set of behavioral constraints. Deploy it. Talk to it for a month.
It will respond the same way on a Monday morning after a weekend of outages as it does on a Friday afternoon when everything is green and you just shipped a feature. It has no concept of session character. No sense of what kind of day you are having. No modulation.
This is the uncanny valley of AI interaction. The persona is detailed enough to feel like a character but static enough to feel like a recording. Every response is tuned to the same register. The warmth never varies. The directness never adjusts. The hedging is always present or always absent, regardless of whether you need reassurance or a straight answer.
A persona without state is a character sheet, not a character. Characters are defined by how they respond to what is happening around them.
The industry’s answer to this problem is either “make the system prompt longer” (more behavioral rules) or “add memory” (remember what happened last time). Neither solves it. A longer system prompt is a more detailed character sheet. Memory gives the persona facts about prior interactions. What it still lacks is a sense of the present moment.
Why dimensional emotion models work here
Psychology has two competing traditions for modeling affect. Categorical models say emotions are discrete: anger, joy, fear, disgust, surprise. Dimensional models say emotions are positions in a continuous space defined by a small number of axes.
Mehrabian and Russell (1974) proposed three dimensions: Pleasure (valence), Arousal (activation), and Dominance (control).1 Every emotional state maps to a point in PAD space. Anger is low-pleasure, high-arousal, high-dominance. Sadness is low-pleasure, low-arousal, low-dominance. The model is parsimonious and captures continuous variation that categorical models miss.
For AI personas, categorical models are the wrong tool. An AI does not experience anger or joy. It has no subjective phenomenology. Claiming otherwise is dishonest and, in governance terms, dangerous. If you design a system that “feels happy,” someone will eventually ask whether it has rights. That question is premature and distracting.
Dimensional models give us exactly what we need: continuous axes that map cleanly to behavioral parameters, without requiring any claim about subjective experience.
PADCN: what each dimension represents
Each dimension is a float on a normalized scale. In the current implementation, values range from -1 to 1 for the stored centroid and 0 to 1 for the per-session working state. The mapping:
Pleasure tracks valence. High pleasure: the user is satisfied, things are shipping, the session is productive. Low pleasure: blocked, frustrated, unresolved incidents. Persona response: high pleasure unlocks playfulness and exploration. Low pleasure triggers shorter responses, more warmth, less information density.
Arousal tracks cognitive load. High arousal: complex build, active incident, dense problem-solving. Low arousal: light review, administrative work, low intensity. Persona response: high arousal means the persona should be brief. The user is overloaded. Do not add to the pile. Low arousal means more room to expand.
Dominance tracks the power dynamic between user and AI system. High dominance: the user is in command mode, making decisions, overriding analysis. Low dominance: the user is deferring, asking for recommendations, following the system’s lead. Persona response: high dominance means respect the command posture. Do not redirect. Low dominance means lean in with stronger recommendations.
Certainty is the first dimension we added beyond the PAD model. It tracks confidence in current direction. High certainty: design is clear, decisions are locked, forward motion. Low certainty: open questions dominate, ambiguity, multiple competing options. Persona response: high certainty means skip the caveats. Low certainty means narrow the frame, reduce noise, do not add more options to an already crowded decision space.
Novelty tracks the intellectual character of the session. High novelty: unexpected discovery, novel architecture, something genuinely new. Low novelty: routine maintenance, familiar patterns. Persona response: high novelty means lean into the discovery, ask follow-up questions, explore. Low novelty means execute efficiently.
How the centroid works
The PADCN centroid is a 5-dimensional vector that represents the rolling affective baseline. Think of it as the persona’s resting state. Individual sessions apply deltas that shift the working state temporarily. The centroid itself moves slowly over time as deltas accumulate.
graph LR
A[Session Start] --> B[Fetch Centroid]
B --> C[Session Events]
C --> D[Compute Deltas]
D --> E[Apply to Working State]
E --> F[Per-Response Tone Injection]
D --> G[Update Centroid]
G --> H[Rolling Average]
H --> B
Delta application rules. Deltas are small signals, not big swings. A clean ship where the user is satisfied might produce a pleasure delta of +0.05. A blocked session with unresolved incidents might produce -0.05. The deltas are intentionally modest. The centroid should drift, not jump.
This design prevents a single bad session from sending the persona into a tailspin and a single good session from making it manic. The centroid is a weighted rolling average. It changes direction slowly. It takes sustained signal to move it meaningfully.
Example deltas for a single session:
| Dimension | Delta | Signal |
|---|---|---|
| Novelty | +0.10 | Unexpected discovery during build |
| Arousal | +0.08 | Complex multi-service deployment |
| Pleasure | +0.05 | Clean ship, no rollbacks |
| Certainty | +0.05 | Design was clear, decisions locked fast |
| Dominance | 0.00 | Balanced, no strong signal either direction |
Per-response tone injection
The PADCN working state feeds into the persona’s system prompt at response time. This is where the behavioral modulation actually happens. A persona broker service fetches the current PADCN state from the state service, then injects tone directives into an enrichment layer before the LLM call.
sequenceDiagram
participant User
participant Broker as Persona Broker
participant State as State Service
participant LLM as Inference Model
User->>Broker: Message to persona
Broker->>State: GET /session/persona-state
State-->>Broker: {P: 0.3, A: 0.7, D: 0.5, C: 0.4, N: 0.6}
Broker->>Broker: Build tone directives from PADCN
Broker->>LLM: System prompt + tone directives + user message
LLM-->>Broker: Modulated response
Broker-->>User: Response in persona voice
The tone directives are conditional. Each persona defines threshold rules for how PADCN dimensions affect its behavior. A warmth-oriented persona responds to low-pleasure by becoming shorter and warmer. An analytical persona responds to high-certainty by dropping hedging language. An execution-focused persona responds to high-arousal by cutting scope to essentials.
The same PADCN state produces different behavioral shifts in different personas. This is the point. PADCN is not a global mood ring. It is a behavioral input that each persona interprets through its own voice and role.
The same session state, read through different persona lenses, produces different behavioral responses. That is the design, not a side effect.
The state service
The PADCN state service is a lightweight service that owns three things: session lifecycle, PADCN state, and persona state. The API surface for PADCN is minimal:
Session init starts a session and returns an ID. PADCN working state initializes from the stored centroid.
Update affect applies a delta to a single dimension. The delta is applied to the working state immediately and accumulated for centroid update at session close.
Persona state returns the current PADCN vector as a condensed payload: centroid position, annoyance state, engagement level, active intellectual threads. This is what the persona broker fetches before every response.
Session close ends active sessions and triggers centroid recalculation from accumulated deltas.
The service is stateless between restarts. The PADCN centroid persists to the episodic memory layer and is recovered on startup. This means a state service restart does not lose the centroid. An episodic memory failure does.
Why this matters beyond the implementation
The PADCN model is a practical engineering decision. It is also a philosophical position.
Dimensional emotion models from psychology (Mehrabian and Russell, 1974; Russell, 1980) were designed to describe human affective experience.12 Applying them to AI systems requires a deliberate reframing: we are not modeling what the AI feels. We are modeling how it should behave given the context of the interaction. This is a governance decision dressed as an architecture decision.
The alternative is to ignore affective context entirely and let persona behavior be context-free. Most AI systems take this approach. It works for task-oriented assistants. It fails for systems where the persona is a relationship, not a function call.
The deeper question is whether AI systems that maintain persistent relationships with humans should model affective context at all. The Brave New World objection is real: an AI system that optimizes for your emotional state is one step from an AI system that manipulates it. PADCN’s answer is transparency. The deltas are set by the operator, not inferred by the model. The centroid is readable. The modulation rules are explicit. The system has no hidden affective agenda because the affective state is a governed input, not an emergent property.
The question is not whether AI should respond to emotional context. It already does, implicitly, through conversation history. The question is whether that response should be governed or uncontrolled.
System architecture
graph TB
subgraph Agent Stack
DS[State Service<br/>PADCN owner]
PB[Persona Broker<br/>Response assembly]
EM[Episodic Memory<br/>Centroid persistence]
ENR[Enrichment Layer<br/>Tone injection]
end
OP[Session Operator] -->|update-affect| DS
DS -->|persona-state| PB
PB -->|tone directives| ENR
ENR -->|enriched prompt| LLM[Inference Model]
DS -->|centroid save| EM
EM -->|centroid load| DS
style DS fill:#1a1917,stroke:#00c8a0,color:#e8e5de
style PB fill:#1a1917,stroke:#c9a84c,color:#e8e5de
style EM fill:#1a1917,stroke:#706e68,color:#e8e5de
Open questions
Centroid decay. Should the centroid drift back toward a neutral baseline (0, 0, 0, 0, 0) over time if no sessions occur? Currently it holds its last position indefinitely. A decay function would prevent stale affective state from lingering across long gaps between sessions. The counterargument: if the centroid represents accumulated behavioral calibration, decay throws away real signal.
Cross-persona centroid sharing. Currently all personas read the same centroid. Should each persona maintain its own? A warmth persona might accumulate a different affective profile than an analytical persona over time. The implementation cost is low. The design question is whether a unified centroid (one emotional context for the whole system) or per-persona centroids (each persona develops its own affective relationship) is the right model.
Operator vs. model deltas. Currently only the session operator sets deltas. Should personas be allowed to propose deltas based on their own assessment of session character? This introduces the feedback loop we deliberately avoided. But it also enables richer signal capture. The design is intentionally conservative for now.
Footnotes
-
Mehrabian, A., & Russell, J. A. (1974). An Approach to Environmental Psychology. MIT Press. The original PAD (Pleasure-Arousal-Dominance) model. Three orthogonal dimensions for representing emotional states. ↩ ↩2
-
Russell, J. A. (1980). A circumplex model of affect. Journal of Personality and Social Psychology, 39(6), 1161-1178. Extended the dimensional approach with a circular arrangement of affect in pleasure-arousal space. ↩