feat: add bounded npc memory retention
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
## Current contract
|
||||
|
||||
`SimulationStateRecord` is the versioned JSON boundary for the current
|
||||
simulation. The current world schema is v6 and captures:
|
||||
simulation. The current world schema is v7 and captures:
|
||||
|
||||
- simulation seed, tick interval, tick count, clock remainder, and elapsed
|
||||
clock ticks;
|
||||
@@ -18,14 +18,15 @@ simulation. The current world schema is v6 and captures:
|
||||
- directed relationship records with familiarity, trust, and the stable event
|
||||
ID that last changed trust;
|
||||
- per-NPC known-event records that reference objective event history without
|
||||
copying it, including first-acquisition method and communicator provenance.
|
||||
copying it, including first-acquisition method, acquisition tick, and
|
||||
historical communicator provenance.
|
||||
|
||||
The top-level identity is:
|
||||
|
||||
```json
|
||||
{
|
||||
"schema": "the_steward.simulation",
|
||||
"schema_version": 6
|
||||
"schema_version": 7
|
||||
}
|
||||
```
|
||||
|
||||
@@ -57,7 +58,7 @@ its future random sequence.
|
||||
It also verifies clock remainder, resource amount/reservation/enabled
|
||||
round-tripping, presentation unload/rebind, directed relationship/cause
|
||||
round-tripping, divergent known-event state, communicated provenance, and
|
||||
rejection of unsupported schemas.
|
||||
deterministic retention boundaries, and rejection of unsupported schemas.
|
||||
|
||||
NPCStateRecord v2 adds the resolved travel destination and whether it is
|
||||
active. Nested v1 NPC records migrate explicitly with no invented active
|
||||
@@ -120,10 +121,31 @@ event.
|
||||
World schema v5 migrates actor-owned knowledge to `performed`; non-actor
|
||||
knowledge becomes `legacy` because v5 may contain either a proximity witness or
|
||||
an older implied relationship fact. Parsing never invents that missing
|
||||
provenance. Current communicated records require a distinct existing source
|
||||
who knows the same event through `performed` or `witnessed` acquisition. This
|
||||
enforces the current one-hop boundary and makes validation independent of array
|
||||
ordering.
|
||||
provenance. At runtime, communication requires a distinct source who currently
|
||||
knows the event through `performed` or `witnessed` acquisition. Persisted
|
||||
records validate that direct-method snapshot even after the source forgets.
|
||||
This enforces the current one-hop boundary and makes validation independent of
|
||||
array ordering.
|
||||
|
||||
SimulationStateRecord v7 / KnownEventStateRecord v3 adds `acquired_tick` and a
|
||||
snapshot of the direct speaker's acquisition method. Direct facts use the
|
||||
objective event tick; newly communicated facts use the conversation tick. The
|
||||
speaker snapshot keeps historical provenance valid even if the speaker later
|
||||
forgets their own copy, while runtime communication still requires a currently
|
||||
known performed/witnessed fact and remains one-hop.
|
||||
|
||||
World schema v6 migrates direct acquisition to the objective event tick.
|
||||
Communicated and ambiguous legacy facts receive a fresh retention lease at the
|
||||
saved simulation tick because their exact acquisition time was not previously
|
||||
stored. The v6 source record supplies the persisted direct-method snapshot.
|
||||
|
||||
Importance is intentionally derived rather than duplicated: a fact is
|
||||
`lasting` while it is the current trust cause for one of that knower's directed
|
||||
relationships; every other fact is `recent`. Current causal facts are protected
|
||||
so relationship state remains explainable. Each NPC keeps at most three recent
|
||||
facts, and recent facts at least one simulated day old are removed at the next
|
||||
deterministic daily-sized review. The objective event stream is never pruned by
|
||||
this rule.
|
||||
|
||||
## Resource authority
|
||||
|
||||
@@ -161,11 +183,11 @@ This phase does not yet provide:
|
||||
|
||||
- a save-slot menu, metadata, thumbnails, autosaves, or multiple profiles;
|
||||
- migrations from any historical world schema other than the explicitly
|
||||
supported v1–v5 layouts;
|
||||
supported v1–v6 layouts;
|
||||
- player inventory or player relationship records;
|
||||
- broader relationship dimensions, line-of-sight/hearing evidence,
|
||||
acquisition timestamps, importance/retention, memory decay, or multi-hop
|
||||
rumours;
|
||||
continuous or personalized memory decay, reinforcement, false beliefs, or
|
||||
multi-hop rumours;
|
||||
- persistence for the player transform or presentation-only scene state.
|
||||
|
||||
Those features should build on this boundary rather than inventing parallel
|
||||
|
||||
Reference in New Issue
Block a user