Skip to main content

What the code enforces and what it only advises

A story is run by models, so some rules are held by code and some are only asked for in a prompt. This page lists both, so a world author or a maintainer knows what can be relied on. "Enforced" means the code refuses or corrects the result regardless of what a model says. "Advised" means a prompt or a brief asks for it and nothing checks it.

Enforced in code​

AreaWhat is held
OutputEvery utterance a character gave appears exactly once in the narration, none is invented, and they come in the order of their rounds. The third failed attempt is corrected by code and marked repaired.
LanguageNarration and a character's answer written in the other script than the chat's language, and lowercase English words left in Chinese text, are refused with the language named. Only English and Chinese are told apart; very short texts pass.
KnowledgeA character is shown only what it knows: a missing edge means it does not know the entity. Intended movement goes only through known destinations and known directed exits.
MovementLocked and blocked exits refuse a move and name the blocking exit. Only the story's own decree (ignore_exits) goes through them.
ThingsA thing must be reachable (not hidden, closed or locked), a key must be in hand, a wearable fits its own slot and the slot's capacity, and a container cannot hold itself.
DiceThe code rolls and reads the band; the game master never interprets a number. When the judgement flags an attempt as uncertain and the agent has dice, activation is refused until a roll exists, and an outcome for a rolled character must cite that roll.
MemoryA sealed event cannot be edited or removed. A record edit is applied whole or not at all. With memory.verify the keeper cannot finish before it has read back its last edit.
TurnOne turn at a time per chat; at most maxRounds rounds and maxCharacters characters per round; the output is delivered through narrate, and the turn ends there.
InputThe game master judges ordinary input with judge_action before anything else. Refusing it is a failed round for the player's character, never a skipped turn.
AuthoringAt most authoring.perTurn made-up things per turn, a name or alias already taken is refused, a made-up place must be connected and a made-up character placed. Only the world author can make things.
ToolsOptional tools and tools of other plugins are off unless switched on for that kind of agent. A helper's tools are withdrawn when its budget is used, and a repeated failed call is refused.
FilesA world, a preset, a pack and a start request are checked against their formats before anything is created, with every problem reported. Interface packs run in a sandbox and see only the player's view.
TimeSimulated time moves only by rounds and by advance_time; real time follows the wall clock and cannot be skipped. A round takes at least the player's journey.

Advised only​

AreaWhat is left to the model
World rulesThe free-text rules of a world are judged by the game master through judge_action. Code makes sure the judgement happens first; it does not decide the verdict.
RelationshipsFamiliarity, trust, affinity and tension are shown in a brief. No code uses the numbers.
Who perceivesThe briefs show who was where; which characters perceived an event is decided by the record keeper when it writes.
MisperceptionWhether a character misremembers is decided by the writer at write time, told the chat's flaky setting.
CommitmentsWhether an engagement was kept is never judged in code; the character and the keeper decide.
BeatsA beat from a trigger is a soft suggestion to the game master and lapses if not taken up. A cue is told to a character, who may ignore it.
TravelExit travel time counts for the player's journey and for routine moves. Other characters' moves are not delayed by it.
PlausibilityThere is no weight or capacity for carried things; the model reasons about what is plausible.
Character thoughtThe thought field is advertised as required but not enforced, and its order in a tool schema is only partly respected by the backend.
SuggestionsThey are checked for count, length and repeats, not for sense. When the suggester fails, lines made from the story's own data (someone present, an open way, a visible thing) are shown instead.
Imported textInput and imports are trusted; nothing guards against instructions hidden in a card or a preset.