Skip to main content

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.