The state object: what one character can see
Each call carries a JSON state built for one character: their own condition, the people in reach, what they can remember of the last few beats, and the arithmetic of the prize. Never the whole world, and never the rules.
buildState in lib/sim/prompt.ts is the only thing the model ever reads. It is written from one person's side of the room, which makes partial observability a property of the data instead of an instruction to be obeyed.
What goes in
- Them: energy, heat, standing, what they are carrying, what their class allows.
- Who is reachable: name, class, where they are standing, and whether that is here or across the room.
- What they have seen: the last few public events visible to them, via
visibleEventsrather than the log. - The arithmetic: in a crew room, what the next count is worth, your share of it, how big the biggest rival crew is, and what walking out would take. Without that block the betrayal question cannot tell a winning table from a losing one.
What stays out
Trust values other people hold, anything said where they were not standing, every threshold and constant in the engine, and the resolution rules themselves. A character who knew the betrayal bar would be playing the simulation instead of living in it.
The state is also the entire memory. There is no conversation history: each call is a fresh look at a room, which is what a gut-check is.
Read next
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.
Typed questions: choice, score, boolean
Parlour asks three shapes of question: a choice over options, a score on ordered levels, and a boolean. The option sets are built per character per beat from the rules, so the model can only pick something legal.
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.
Trust, heat and standing
Three quantities carry the politics. Trust is private and pairwise, heat is how much attention is on you, standing is what the room thinks of you, and only trust can buy an alliance.