Testing personalities — dry-run & infer-state
Dry-run: the full pipeline, zero side effects
POST /v1/personalities/{id}/dry-run executes
the complete respond pipeline — emotional inference, guardrails, prompt assembly,
generation — but persists nothing: no trace, no billing, no memory update, no
active-relationship count. Stateful dry-runs use a synthetic empty user model, so you see
how the personality behaves with a first-time user.
It's a portal-session (JWT) surface by design: it exists for validating a personality while you design it, not as free runtime traffic. Use it to check tone, boundaries, and guardrail behavior before flipping a personality live.
infer-state: the classifier on its own
POST /v1/infer-state runs only the emotional-state
classifier: message in, structured state out —
{
"inferred_emotional_state": {
"primary": "frustration",
"confidence": 0.82,
"secondary": ["concern"],
"intensity": "moderate",
"valence": -0.6,
"arousal": 0.7
}
}
Use it when you want uniqOS's emotional read without generating a reply: routing tickets
by emotional urgency, tagging conversations, or feeding your own UX ("the user seems
frustrated — offer a human"). It's stateless, cheap (classifier-tier model), and uses the
same controlled emotion vocabulary as the engine, so its
output is consistent with what respond would have inferred.