The Drexen Codex
The notebook Drexen keeps — fragments of a chronicle he refuses to end. Pages rearrange when he isn't looking.
A narrative state machine. Nodes are voices, edges are choices, and the consequence function mutates the world state irreversibly.
type NarrativeNode = {
voice: "chronicler" | "drexen" | "silence";
choice?: Array<{ label: string; next: string }>;
consequence?: (state: State) => State;
};