feat: add provenance-aware npc communication
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 v5 and captures:
|
||||
simulation. The current world schema is v6 and captures:
|
||||
|
||||
- simulation seed, tick interval, tick count, clock remainder, and elapsed
|
||||
clock ticks;
|
||||
@@ -18,14 +18,14 @@ simulation. The current world schema is v5 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.
|
||||
copying it, including first-acquisition method and communicator provenance.
|
||||
|
||||
The top-level identity is:
|
||||
|
||||
```json
|
||||
{
|
||||
"schema": "the_steward.simulation",
|
||||
"schema_version": 5
|
||||
"schema_version": 6
|
||||
}
|
||||
```
|
||||
|
||||
@@ -56,8 +56,8 @@ 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, and rejection of unsupported
|
||||
schemas.
|
||||
round-tripping, divergent known-event state, communicated provenance, 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
|
||||
@@ -106,9 +106,24 @@ a food deposit performed by the relationship subject.
|
||||
|
||||
World schema v4 migrates relationship causes into known-event records. The old
|
||||
schema used village-wide awareness, so this preserves the implied known fact
|
||||
without falsely inventing spatial witness provenance. New v5 facts are created
|
||||
only at event-record time from the actor and nearby NPC positions; historical
|
||||
events are never re-evaluated against current positions.
|
||||
without falsely inventing spatial witness provenance.
|
||||
|
||||
SimulationStateRecord v6 / KnownEventStateRecord v2 adds immutable
|
||||
first-acquisition provenance: `performed`, `witnessed`, `communicated`, or
|
||||
`legacy`. Communicated records also retain the stable NPC ID of the direct
|
||||
speaker. New direct facts are created only at event-record time from the actor
|
||||
and nearby NPC positions; historical events are never re-evaluated against
|
||||
current positions. A co-located shared-activity encounter can add one
|
||||
communicated reference to the original fact without appending or replaying the
|
||||
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.
|
||||
|
||||
## Resource authority
|
||||
|
||||
@@ -146,10 +161,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–v4 layouts;
|
||||
supported v1–v5 layouts;
|
||||
- player inventory or player relationship records;
|
||||
- broader relationship dimensions, line-of-sight/hearing evidence,
|
||||
acquisition provenance, memory decay, or communication;
|
||||
acquisition timestamps, importance/retention, memory decay, 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