Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Modelling a world

Start with a question you would like to answer, not a complete inventory. A series bible might already say who lives where, when a character joins the crew, and which accounts of an old disaster disagree. Pick a small part of it and record enough to check one decision. You can add more as the story grows.

A claim names a relationship and its participants: home(ada, lighthouse) says Ada’s home is the lighthouse. Give people, places, and other important things stable IDs; a display name can be more readable. Keep a note of where each claim came from. The concepts guide explains the terms used below.

Choose your constraints

A functional relationship has at most one value for each subject. Declare it when two values should cause a conflict. A character’s birth date might be single-valued in your setting; their friends usually are not. Do not declare home single-valued if your character can have two homes at once.

Values can also change. For a changing relationship, use a state and place its changes in story time. A present home and a former home are not necessarily a contradiction. Here Ada takes over the lighthouse after the storm:

scope lighthouse-story
ratify d-0001
thing lighthouse "Lighthouse" ratified d-0001
person wren "Wren" ratified d-0001
person ada "Ada" ratified d-0001
era before-storm < after-storm ratified d-0001
event storm during after-storm ratified d-0001
state lighthouse.keeper = wren until storm ratified d-0001
state lighthouse.keeper = ada since storm ratified d-0001

since and until name events, not eras. during a declared era starts a state at that era; it does not end the state automatically when a later era begins. Use an event as the boundary when one value replaces another. You can also use author.add_state through MCP.

Put events in time

Use an event for something that happens and an era to group a period. Order what you know. Leave two events unordered if the story does not tell you which came first: the timeline will preserve that uncertainty. An as-of query needs enough ordering to place the relevant changes at the point you ask about. The casebook timeline shows an example where a dating assumption matters.

Record sources and rulings

A decision such as d-0001 names a ruling you record. Keep a source index beside your world so you can find the episode, chapter, or editorial note behind it. A decision can cover a whole episode, a scene, or one editorial ruling; choose a size that makes later revisions understandable. If you may need to revise one conclusion without withdrawing every claim from an episode, give that conclusion its own decision as well as a source reference. The casebook uses separate decisions for the source stories and the Reichenbach ruling.

A proposed claim is an open possibility. A cited claim names its supporting decisions; cited provenance can be provisional or ratified. These labels record how the claim was supplied. Its evaluated status—certain, possible, or dead—also depends on the current decisions and any defeats. A citation must refer to a recorded decision. See Concepts for the distinction and Sources for the Holmes model for one way to keep an index.

Revise an account

Separate a change in the story from a change in your account of it. A character moving house belongs on the timeline. Revising where the character always lived changes which account you accept.

For a revision, ask author.why what supports the old answer. A later decision can defeat the earlier ruling while preserving the claims and their sources. Inspect the resulting answer and its explanation. author.defeat and author.record_decision write directly to the store; they are not staged changes that author.discard will undo. If you have not chosen the revision yet, explore it on a separate branch first. The Reichenbach case and its alternative branch show both approaches.

Rules also have sources. If a rule derives a surprising conclusion, inspect the rule’s support as well as its premises before changing the facts. A rule supplied as a proposal does not establish a conclusion merely because its premises are accepted. The Watson rule example traces a conflict to an interpretation the author can revise.

Grow in small steps

Add a few entities and claims, run a check, and read the findings. If a check reports a conflict, inspect the two values and their support before choosing whether to revise a claim, relax a rule, or leave accounts unresolved. Commit a consistent step, then move to the next part of the story. A branch lets you try an alternative without changing the main line.

People can write and check .dli files directly. An assistant authoring a world should use the author.* tools so it can inspect findings and commit the structured changes. The your-world guide shows how to start with existing notes.