Why eight prompted agents behave like one
Characters written as prompts converge because they are one model reading eight adjectives. Differences that survive contact with a situation have to live in the rules, in prices and gates and floors, and not in description.
Give a model eight personality paragraphs and you get eight voices and one behaviour. They will phrase things differently and choose the same move, because the situation dominates the adjective, and because a model asked to be bold is being asked to perform boldness rather than pay for it.
What survives a situation
Arithmetic does. If approaching the host costs one character half what it costs everybody else, that character is at the centre of the room all night whether or not they feel bold. If another cannot act on a read below 0.72 confidence, they spend the first half of the night committing to nobody, and you can watch them throw their own hunches away.
Those are personality rigs, and each is one line of code. None of them is a description, so none of them can be talked out of.
Three shapes of rig that work
| Shape | Example | Reads as |
|---|---|---|
| a price | withdraw costs 1.6× | somebody who cannot be alone |
| a gate | cannot ally before beat 12 | somebody who commits late |
| a floor | ignores own reads below 0.72 | somebody who doubts themselves |
Let the override show
A rule that rewrites a decision without saying so makes a character look inconsistent. A rule that rewrites a decision and says so makes them legible: the board prints what was chosen, what happened instead, and which rule did it. Watch somebody's reads get thrown away three times and you have learned who they are without reading a word of description. See coercion.
The general form
Personality is a distribution over costs, not over words. Anything you want a character to be reliably, put in the budget. Anything you are content to have them merely say, leave to the model.
Read next
Personality as arithmetic, not flavour text
A character in Parlour is a class, meaning what they are allowed to do, plus a rig of code-level modifiers: prices halved or raised, moves forbidden, confidence floors, effects that bounce. No character has a personality paragraph.
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.
Building an LLM simulation, in order
Write the resolution rules before you write a prompt. Build a world that plays without a model at all, replace the decision function with one, and measure every threshold against what the model actually returns.
Evaluation model vs chat model
A chat model returns text you have to trust and parse. An evaluation model returns a probability per option, which is what lets a simulation put a real threshold on a decision instead of a vibe.