Using distributions instead of picks
Because every answer is a distribution, the engine can scale an outcome by how sure a character was. A 0.95 read of an open host earns a bigger opening than a 0.55 one, so not every decision is equally committed.
Flattening a distribution to its argmax throws away the most useful thing in it. Parlour keeps the mass and uses it in three places.
Three continuous uses
- Effort scales with belief. A character who is 95% sure the host is open gets a bigger opening than one at 55%. Same action, different commitment.
- Risk is the complement. The odds of a rumour being traced back to you are
1 - P(safe), taken straight off the answer instead of a fixed leak chance. - Confidence is the mass on the chosen move. That single number drives the per-class confidence floors, which is how a character can be written as doubts herself without a personality paragraph.
It is also the most watchable thing on screen
In full detail the brain board prints the runners-up: approach_host 0.71 · hold_court 0.25 · withdraw 0.02. A near-miss you can see is what makes the room read as somebody deciding instead of a token being moved. It is also the only honest way to show an almost, since a chat model asked what it nearly did would make something up.
Read next
What an evaluation model is
An evaluation model takes one shared state and a set of typed questions, and answers all of them in a single request. Each answer comes back as a full probability distribution instead of a sentence.
Measuring a threshold instead of guessing it
To set a threshold on a model's answer, ask the same question across a ladder of hand-built situations, look at where the answers separate, and put the bar in the gap. A number picked by intuition usually sits where the model never goes.
coerce(): when the code overrules the model
coerce() is the last word on every decision. It drops forbidden actions, enforces gates and confidence floors, refuses moves the character cannot afford, and puts every override on screen in amber.
The nine-question pack
Every character answers the same nine questions every beat, in one evaluation call: action, target, mask, hunger, threat, betrayal, two questions the room cares about, and what they have left afterwards.