feat: add missing wood opportunities
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 v8 and captures:
|
||||
simulation. The current world schema is v9 and captures:
|
||||
|
||||
- simulation seed, tick interval, tick count, clock remainder, and elapsed
|
||||
clock ticks;
|
||||
@@ -21,14 +21,15 @@ simulation. The current world schema is v8 and captures:
|
||||
copying it, including first-acquisition method, acquisition tick, and
|
||||
historical communicator provenance;
|
||||
- opportunity records with stable type/status, interested NPC, trigger event,
|
||||
target storage/resource/amount, and exact later resolution event identity.
|
||||
target storage/resource/amount, exact later resolution event identity, or a
|
||||
deterministic invalidation reason and close tick.
|
||||
|
||||
The top-level identity is:
|
||||
|
||||
```json
|
||||
{
|
||||
"schema": "the_steward.simulation",
|
||||
"schema_version": 8
|
||||
"schema_version": 9
|
||||
}
|
||||
```
|
||||
|
||||
@@ -61,8 +62,9 @@ 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
|
||||
deterministic retention boundaries, and rejection of unsupported schemas.
|
||||
Active and resolved opportunity round-tripping, contradictory target state,
|
||||
invalid resource sources, and cross-record event references are covered too.
|
||||
Active, resolved, and invalidated opportunity round-tripping, contradictory
|
||||
target state, invalid resource sources, and cross-record event references are
|
||||
covered too.
|
||||
|
||||
NPCStateRecord v2 adds the resolved travel destination and whether it is
|
||||
active. Nested v1 NPC records migrate explicitly with no invented active
|
||||
@@ -158,22 +160,41 @@ schema stores `opportunity_id`, `opportunity_type`, `status`, `created_tick`,
|
||||
`target_amount`, `resolution_event_id`, and `resolved_tick`. World schemas
|
||||
v1–v7 migrate explicitly to an empty opportunity list with next ID zero.
|
||||
|
||||
The bounded `restock_empty_pantry` contract accepts at most one open record.
|
||||
SimulationStateRecord v9 preserves world-v8 opportunity history and upgrades
|
||||
the nested record to `OpportunityStateRecord` v2. The nested schema adds
|
||||
`closed_tick` and `invalidation_reason`, accepts `supply_missing_wood`, and adds
|
||||
the stable `invalidated` status. Nested opportunity v1 records normalize their
|
||||
resolved tick into the close tick and remain valid pantry history. Economic
|
||||
event schema v3 adds normalized `action_id` and `required_amount` fields;
|
||||
nested v1/v2 events receive empty/zero defaults, while a new `task_blocked`
|
||||
event requires its stable action, source storage, resource, and positive
|
||||
requirement contract.
|
||||
|
||||
The bounded opportunity family accepts at most one open record globally.
|
||||
Opportunity, trigger-event, and resolution-event IDs are unique and the next
|
||||
ID must remain above restored history. The interested NPC, pantry, food
|
||||
resource, and referenced events must exist. Its trigger is a positive NPC food
|
||||
ID must remain above restored history. Referenced NPCs, storage, resources, and
|
||||
events must exist. A `restock_empty_pantry` trigger is a positive NPC food
|
||||
withdrawal from `village_pantry` to that actor's matching inventory; an open
|
||||
record additionally requires the pantry to remain below its one-food target
|
||||
and the interested NPC to have acquired that fact no later than creation.
|
||||
Resolution references an exact later NPC inventory-to-pantry food deposit or a
|
||||
player `resource_extracted` event from an existing player-usable food resource
|
||||
into the pantry, with a matching resolved tick. Resolved history does not
|
||||
require the pantry still to contain food because later consumption is valid.
|
||||
and its interested NPC to have acquired that fact no later than creation. A
|
||||
`supply_missing_wood` trigger is the performer's known patrol or study
|
||||
`task_blocked` fact against `village_woodpile` with a one-wood requirement; an
|
||||
open record additionally requires a living interested performer and the
|
||||
woodpile below target.
|
||||
|
||||
While the need is open, its interested villager's trigger evidence is treated
|
||||
as lasting during deterministic memory maintenance. Resolution releases that
|
||||
fact back to the normal bounded-retention rules; it does not delete objective
|
||||
event or opportunity history.
|
||||
Resolution references an exact later matching NPC inventory-to-storage deposit
|
||||
or player `resource_extracted` event from an existing player-usable matching
|
||||
resource into the target storage, with matching resolved and closed ticks.
|
||||
Resolved history does not require the storage still to contain the resource
|
||||
because later use is valid. Invalidation has no resolution event and requires a
|
||||
stable close tick and is currently valid only for `supply_missing_wood`.
|
||||
`interested_died` must agree with the restored NPC's death state; the runtime
|
||||
creates `evidence_stale` at the one-day unresolved boundary.
|
||||
|
||||
While a need is open, its interested villager's trigger evidence is treated as
|
||||
lasting during deterministic memory maintenance. Resolution or invalidation
|
||||
releases that fact back to the normal bounded-retention rules; neither deletes
|
||||
objective event or opportunity history.
|
||||
|
||||
## Resource authority
|
||||
|
||||
@@ -211,7 +232,7 @@ 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–v7 layouts;
|
||||
supported v1–v8 layouts;
|
||||
- player inventory or player relationship records;
|
||||
- broader relationship dimensions, line-of-sight/hearing evidence,
|
||||
continuous or personalized memory decay, reinforcement, false beliefs, or
|
||||
|
||||
Reference in New Issue
Block a user