Skip to content

Modeling branching narratives

A Chronicle can be forked into a divergent world with engine.fork(), explored with normal dispatch, and merged with engine.mergeFrom(fork). This is useful for what-if stories, testing alternate decisions, and replay inspection. Give each branch an ID and metadata outside the mutable story content so users can understand lineage.

Make choices and consequences explicit entities. Define invariants for chapter ordering, irreversible facts, resource bounds, and merge conflicts. A CRDT can preserve concurrent facts, but it cannot decide which contradictory story is canon. Use a curator or authority for publication and permissions.

Compaction discards CRDT history and requires disconnected peers to agree on an epoch boundary. Do not compact if branch provenance or replay history is an asset you still need. HyperToken is inappropriate if the narrative is mostly large media assets or needs a full editorial workflow.