Seeding & Provisioning
How example worlds and starter content are created the same way a user creates them - through the service layer, as data, with a trail.
Every worldbuilding tool needs to put content into the system without a person typing it: demo worlds, starter templates, the taxonomy a new chronicle begins with. The lazy way is a script that writes rows directly. Chronicler refuses that, because a back-door writer skips the rules, the events, and the permissions that make the rest of the system trustworthy. Seeded content should be indistinguishable from content a person made.
Packs, applied through the front door
Seeding is packs of data, applied through the service layer like any other write. Packs apply at three scopes that mirror the permission hierarchy: system, workspace, and chronicle. A pack carries symbolic references scoped to itself, and a whole-scenario resolution pass ties those references together before anything is written, so a pack that refers to "the capital city" resolves once, consistently.
Identity is handled per entry kind: some entries match an existing thing by a natural key, others mint fresh. Every seeded event is stamped with seed provenance, so it is always clear what came from a pack rather than a person, and a pack application is itself recorded as a domain event. A pack brings its own images, uploaded through the same metered pipeline a user's uploads use, and writes its lore as markdown that is converted to the editor's rich-text format at apply time. Nothing about a seeded world is special-cased.
Provisioning is seeding, served
Creating a chronicle from a template is the same machinery, exposed. Rather than a hardcoded catalogue of presets, provisioning is a served-pack surface over the seeding engine. Creation makes a bare chronicle, and a separate apply step puts a pack onto it. Each entry type describes itself through a descriptor that drives how it is decoded, addressed, ordered against its dependencies, and whether it may be overwritten. An apply names a pack, can disable parts of it and override references, converges onto the chronicle rather than duplicating what is already there, previews before it writes, and is recorded as a first-class application with its own history.
Where this connects
Seeding writes through the same Foundations aggregates as everything else, and it is one of the writers governed by the archiving and quota rules in Workspaces, plans and billing.
Read the record for the detail
This page is the guide. The full records under docs/adrs carry the reference-resolution model, the pack descriptors, and the alternatives that were weighed and rejected.