Persistent record store: durable world records across missions
Design state: Josh made every decision below in the 2026-08-22 design session; this note records them. v1.3 | 2026-08-29 Owner: Gameplay Design (the model); Runtime / C Engineer (the store) Related:
world-engine.md: the seed-driven generator and the run-state mission world-region this store sits besideaethernet.md: the Identityless Premise the planted records serve../programs/dossier.mdand../programs/dossier-data-model.md: the durable intel store whose persistence this store matches, and where seen-record references land- ADR-0043 and ADR-0055: the outcome pattern the write path follows
../cartridges/modules/cloneshop.md: the treatment that requires the store
A single durable store
Section titled “A single durable store”One table holds the records. A “system” (a company HR host, a housing registry, a tax mirror) is a tag on a record; the engine simulates no separate per-system databases. A record is one row attached to a world-entity node, tagged with the system that holds it. The screener’s cross-system comparison is a filter-and-compare over the one table. A pre-check is a single tag-filtered lookup. A pre-check’s suspicion flag lands on the legend object, never on the operator (Josh, 2026-08-22): legend flags sit outside the engine’s operator visibility state, and the canon three-state vocabulary is unchanged (../cartridges/modules/cloneshop.md).
Persistence follows observation
Section titled “Persistence follows observation”The store persists two things:
- Records the operator planted. The record of the operator’s interference.
- References to records the operator saw. Captured as DOSSIER facts holding entity references; the content is re-derivable from the record’s provenance.
Nothing else persists. The world is definite only where someone has looked; a region no operator has touched regenerates identical from its generation inputs.
Provenance, per record
Section titled “Provenance, per record”There is no single world seed to persist. The generator mission/board-gen.lsp draws each contract instance its own narrative_seed through the gen-draw-seed seam, which parks the raw 32-bit value on the mission_board.c side at mint and hands it to the World Engine as the seed on accept, and mission_world.c resets the prior mission region at the mission-instance boundary before generating the next seed-and-archetype pair. A bare seed therefore cannot re-derive a row once the region that produced it has been replaced.
Every persisted record and every seen-record reference stores its originating provenance: the generating seed, the archetype, and the entity address within that generation. Regeneration from the triple re-derives the untouched content as a deterministic function, per the World Engine’s generation rule. The alternative shape, stable global entity identifiers minted at persist time, trades re-derivation for an id registry; ADR-0064 Decision 4 records it as considered and rejected, with re-derivation measured too slow on device as the named revisit trigger.
Mission worlds stay run-state
Section titled “Mission worlds stay run-state”Mission worlds stay ephemeral run-state as today: one region per mission, reset at the mission-instance boundary (world-engine.md). A mission world references the durable store where it touches it.
Writes and reads
Section titled “Writes and reads”Writes go through the engine’s sanctioned mission-outcome path (the ADR-0043 / ADR-0055 pattern: the cart reports a goal, the engine applies the outcome). A planted record is an engine-applied outcome of a resolved mission; no cart or program writes the store. Under world-engine.md invariant 3, the one durable consequence of play is a sanctioned dossier-commit; this design widens the durable-consequence set to two sanctioned paths, and ADR-0064 ratifies the widening.
Reads are the verification query surface: single-row pre-check lookups, and the screener’s multi-tag joins run to a scrutiny depth.
Client outcomes touch the store nowhere
Section titled “Client outcomes touch the store nowhere”Client orders for forged identities and their outcome mail run through Deck Hub, the deck’s acquisition surface (../programs/deck-hub.md; Josh, 2026-08-22). A client job resolves as a contract, so the fee lands through mission resolution, the sanctioned wallet writer; the mail is narrative plus a reputation event (maker blowback with a named cause). Neither the order, the mail, nor the event adds a write path to this store.
Sizing
Section titled “Sizing”The one new engineering requirement is durability: world records must survive across missions and cartridge swaps, persisting the way DOSSIER’s store does. Sizing the store is the first implementation question, and the question is a measurement: how many records the device holds before its actual limits are reached. Capacity expands as needed until those limits are met; no predetermined byte budget constrains the design.
Migration notes
Section titled “Migration notes”- Staleness sweep, 2026-08-29. The narrative-seed provenance paragraph credited
mission_board.cwith the policy draw; the draw moved tomission/board-gen.lsp(GWP-777) and the C side parks the raw 32-bit value through thegen-draw-seedseam.