Memory, knowledge and relationships
Recorded experience
The memory hierarchy moves from turn to event, then perception and belief.
- An event is the objective, immutable record of what happened.
- A perception records what one character witnessed, heard, was told or inferred. It may be partial or mistaken.
- A belief records what a character has come to believe beyond one event, how confident it is, and which perceptions support or contradict it.
- Story threads retain unresolved promises, mysteries and goals.
Every recorded round immediately leaves plain events, one for what each character did and one for each line said, word for word, perceived by whoever was in the place. The record keeper writes queued rounds when the GM requests it or the backlog limit is reached. It may read its edits back before completion. Events are sealed with the completed commit; later corrections edit perceptions rather than rewriting history.
This separation prevents narration from becoming the database. The prose can be concise or stylistic, while a durable event still records who was involved, where it happened and what changed. A character's perception can omit or misread part of that event without changing the objective record.
A small example
Suppose Elias unlocks the west door while Mara watches from the stairs:
- the event records that Elias unlocked the door;
- Mara's perception records what she saw and heard;
- a person outside the building receives no perception merely because the event exists;
- Mara may later form the belief that Elias possesses the key, even if he borrowed it.
Recall can bring Mara's experience back later. It does not grant the same memory to every character.
Recall
Recall combines explicit cues, full-text search and optional semantic vectors. A reranking provider can refine a wider candidate pool. Importance, relevance, story-time recency and retention choose the final memories.
Imperfect memory fades detail according to elapsed story time, importance and repeated recall. Important memories remain at least faded. Disabling it gives exact recall and accurate perceptions.
When a perception has been digested into a belief, recall normally favours the belief instead of repeating both records. The supporting perception also fades sooner according to memory.foldedFade. The default of 0.5 gives it half its previous retention time; 1 leaves its retention unchanged. The perception remains in the record and can still be cited as evidence.
Recall first retrieves more candidates than the character will receive, then chooses a small, relevant and varied set. Closely related memories may come along when they share people, place or a strong tag, allowing one recollection to cue another without exposing unrelated records. With diagnostics enabled, the run inspector can show why a memory was selected; those scores are never shown to the model.
Memory uses story time. Skipping a month can fade a recollection more than playing twenty turns during the same evening. Importance and retention keep consequential experiences available longer than incidental details.
Reflection
Beliefs do not appear by themselves. After a stretch of play, a reflection has each character sort what it has taken in since the last time into what it believes: it may add a belief, firm up or doubt an existing one, merge duplicates, or let one go. A reflection works from that character's own perceptions and beliefs only, so it cannot give a character something it never took in, and what it writes is the character's view, which may be wrong.
Before the character sorts its memory, each belief is compared, in a small request of its own, with the few things the character took in since that bear on it (they involve the people the belief is about, or share words with it): can the belief and these all be true together? A contradiction found this way is recorded by the engine as a doubt: the belief's confidence goes down one step and what speaks against it stays linked to it. In the same pass the belief is not rewritten or let go, and what was learned goes into new beliefs. Mistakes of form in what the reflection proposes (evidence that was not shown, a belief that does not exist, an over-long text, a new belief resting on one passing moment) are mended or left out rather than refused, and if one character cannot be sorted the others still are and it is tried again next time.
Each belief has a confidence of doubtful, likely or sure. A reflection names perceptions that support or contradict every change, and the engine checks those links before writing anything:
- A new belief must rest on things from at least two different turns (or on one event of high importance that turned the story). One passing moment is not yet a belief.
- A new
surebelief needs supporting perceptions from at least two turns. New support may raise an existing belief, while contradictory evidence may lower it. Lowering confidence requires a contradicting perception. Doubting is its own step: the reflection names the belief and what speaks against it, and the belief's confidence is lowered one step for it (never belowdoubtful) while the contradicting perceptions are linked to it; a model asked to doubt does not have to juggle the text, the confidence and the numbers together. Whatever it writes into a belief's text that belongs in a field (its confidence, importance or the numbers it rests on) is refused with that reason. - A belief is revised or let go only for something that came after it was formed, or because it was merged into another belief that stays.
- It writes beliefs and nothing else. It never changes or adds an event, so history stays as it was.
A reflection starts by itself when reflection.everyTurns turns have passed since the last one (20 by default), or when the scene changes: your character has gone somewhere that is neither where it was nor inside or around it, or a day of story time has passed. Two automatic reflections are never closer than reflection.minTurns turns. It takes up the characters with the most new to sort first, at most reflection.perRun of them, and only those with at least reflection.minNew new perceptions; characters you play and background characters are left out. You can also start one yourself with Reflect now in the chat settings, which takes up every character with anything new. It runs in the background and can be turned off with reflection.auto.
Relationships and knowledge
Character relationships are directional profiles. No outgoing profile means the other character is a stranger. Meeting someone creates an acquaintance edge when appropriate.
Knowledge of locations, items, exits and lore is an explicit closed-world graph. No edge means unknown. A knowledge edge identifies an entity; it does not reveal its current location, owner, contents or condition. Navigation intended by a character uses only its known map.
Relationships and knowledge answer different questions. A relationship describes how one person regards another. Entity knowledge says that the person can identify something at all. Perceptions and beliefs then hold what the person has experienced or concluded about it.
This layered model is why adding a fact to a public world description is not interchangeable with granting character knowledge. Authors should place secrets on the people who know them, and let play create new perceptions and beliefs for everyone else.