feat: integrate regional caravan persistence

This commit is contained in:
Rijad Zuzo
2026-08-23 17:20:41 +02:00
parent 49c5bda651
commit 52307f1306
24 changed files with 1939 additions and 92 deletions
+16 -8
View File
@@ -451,12 +451,20 @@ replayed after restore.
## Local quicksave boundary
`SaveSlotStore` writes the existing versioned local JSON record to
`user://saves/quicksave.json`. It validates the serialized record before
replacement, limits file size, restricts slot names, preserves the previous
file during replacement, and can recover that backup if replacement is
interrupted. Loading parses and validates the complete record before mutating
the simulation.
`SaveSlotStore` writes `SimulationSaveManifest` v1 to
`user://saves/quicksave.json`. The manifest contains the unchanged local v16
record and canonical regional facade envelope, with an independent checksum
for each. Restore also requires world, seed, active location, and tick to agree
across both authorities, and rolls both back if local restoration fails.
The store validates the complete serialized manifest before replacement,
limits file size, restricts slot names, preserves the previous file during
replacement, and can recover that backup if replacement is interrupted. Raw
local v16 quicksaves remain loadable; they bootstrap an idle regional facade
at the restored seed and tick. Explicit non-Jajce adapter scopes continue
writing local v16 records until a matching regional facade exists. Local-only
saving is allowed only while regional state equals its deterministic idle
bootstrap; otherwise it fails closed rather than discarding authority.
In `main.tscn`, F5 saves and F9 loads this slot. Restoration rebuilds active NPC
visuals from authoritative state.
@@ -476,8 +484,8 @@ This phase does not yet provide:
- persistence of a currently open dialogue UI/turn. Semantic conversation
history and commitment authority persist, while a balloon is regenerated
after restore;
- production integration of the regional chunked save manifest, lazy location
loading, or aggregate population promotion/persistence;
- production integration of regional retained/rolled-up chunk history, lazy
location loading, or aggregate population promotion/persistence;
- persistence for the player transform or presentation-only scene state.
Those features should build on this boundary rather than inventing parallel