feat: add missing wood opportunities
This commit is contained in:
+32
-21
@@ -31,25 +31,28 @@ state changes succeed; `SimulationManager` remains the public signal boundary
|
||||
used by presentation.
|
||||
|
||||
An action whose definition-backed completion cost becomes unavailable records
|
||||
a zero-amount `task_blocked` narrative fact with the action and shortfall
|
||||
reason. This makes late contention inspectable without pretending that a
|
||||
a zero-amount `task_blocked` narrative fact with stable action, source storage,
|
||||
resource, and required-amount fields plus the readable shortfall reason. This
|
||||
makes late contention queryable and inspectable without pretending that a
|
||||
transfer occurred.
|
||||
|
||||
## Persistence and determinism
|
||||
|
||||
`SimulationStateRecord` schema v8 stores the ordered event stream,
|
||||
`SimulationStateRecord` schema v9 stores the ordered event stream,
|
||||
`next_event_id`, directed relationships that may reference an exact event, and
|
||||
per-NPC known-event references with first-acquisition provenance, plus
|
||||
opportunity records that reference exact trigger/resolution events. Schema v1
|
||||
and v2 saves migrate to an empty stream beginning at ID zero; world schemas
|
||||
v1–v7 migrate to an empty opportunity list. Parsing rejects duplicate event
|
||||
v1–v7 migrate to an empty opportunity list, while world schema v8 preserves and
|
||||
normalizes its pantry opportunity history. Parsing rejects duplicate event
|
||||
IDs, invalid or duplicate knowledge/opportunity references, impossible
|
||||
communicator sources, relationship causes the observer does not know, and next
|
||||
IDs that could collide with restored history.
|
||||
|
||||
Positive food deposits and positive NPC food withdrawals from
|
||||
`village_pantry` into that actor's matching inventory are currently knowable.
|
||||
The actor and living NPCs within the bounded witness radius receive a
|
||||
Positive food deposits, positive NPC food withdrawals from `village_pantry`
|
||||
into that actor's matching inventory, and definition-backed patrol/study
|
||||
`task_blocked` facts caused by missing wood at `village_woodpile` are currently
|
||||
knowable. The actor and living NPCs within the bounded witness radius receive a
|
||||
`KnownEventStateRecord` at record time. Witness distance uses the event's
|
||||
captured position, never the actor's later location. A successful food deposit
|
||||
can raise a hungry familiar witness's directed trust; the relationship stores
|
||||
@@ -75,19 +78,25 @@ evidence. Conversations prefer lasting direct facts, then the most recently
|
||||
acquired direct fact. Communicated provenance snapshots how the speaker knew
|
||||
the event, so a listener's memory stays valid after the speaker forgets.
|
||||
|
||||
`FoodShortageOpportunitySystem` is another read-only consumer of immutable
|
||||
facts. A known positive NPC pantry withdrawal, combined with the pantry
|
||||
currently being empty and a living critically hungry knower, can open one
|
||||
`restock_empty_pantry` record. The opportunity does not perform a transaction,
|
||||
assign an NPC, or append a quest-only event. It resolves only after the pantry
|
||||
actually reaches its target through either:
|
||||
`VillageOpportunitySystem` is another read-only consumer of immutable facts.
|
||||
A known positive NPC pantry withdrawal, combined with the pantry currently
|
||||
being empty and a living critically hungry knower, can open one
|
||||
`restock_empty_pantry` record. A known missing-wood `task_blocked` fact can open
|
||||
one `supply_missing_wood` record for its living performer. At most one need is
|
||||
open globally. The system does not perform a transaction, assign an NPC, or
|
||||
append a quest-only event. A need resolves only after its target storage
|
||||
actually reaches the one-unit target through either:
|
||||
|
||||
- a later positive `storage_deposited` event from a real NPC inventory; or
|
||||
- a later player `resource_extracted` event from an existing player-usable food
|
||||
ResourceNode directly into `village_pantry`.
|
||||
- a later matching positive `storage_deposited` event from a real NPC
|
||||
inventory; or
|
||||
- a later player `resource_extracted` event from an existing player-usable
|
||||
matching ResourceNode directly into the target storage.
|
||||
|
||||
The exact trigger and resolution IDs remain in opportunity history. The active
|
||||
trigger memory is protected until resolution, then returns to normal bounded
|
||||
trigger memory is protected until closure. A wood need is invalidated if its
|
||||
interested performer dies or if it is still unresolved one simulated day after
|
||||
opening; invalidation emits no event and stores the close tick and stable
|
||||
reason. Resolution or invalidation returns the trigger to normal bounded
|
||||
retention.
|
||||
|
||||
The food-loop regression verifies this chain:
|
||||
@@ -110,9 +119,11 @@ acquisition provenance, separately from three objective events the NPC
|
||||
personally performed. A real trust-changing consequence emits one transient
|
||||
amber blossom above its observer. The cue is presentation-only, remains visible
|
||||
in cinematic mode, and is neither saved nor replayed after visual rebuild.
|
||||
The village summary also shows one compact active need with its real food
|
||||
The village summary also shows one compact active need with its real target
|
||||
progress and interested villager; only that villager's inspector retains its
|
||||
open/resolved detail and names the exact supplier.
|
||||
open/closed detail and names the exact supplier for a resolution. The empty-bowl
|
||||
world cue remains specific to the pantry shortage rather than representing a
|
||||
wood need as hunger.
|
||||
|
||||
## Deliberate limits
|
||||
|
||||
@@ -125,5 +136,5 @@ hearing, personalized reinforcement/decay, multi-hop rumours, secrecy, false
|
||||
beliefs, and multi-event causal graphs belong in later event/history slices.
|
||||
They should extend this record family without making prose authoritative or
|
||||
recomputing old evidence from current positions.
|
||||
The current opportunity is likewise a single bounded projection, not a generic
|
||||
quest, reward, acceptance, dialogue, or capable-helper framework.
|
||||
The current opportunity family is likewise a bounded two-consumer projection,
|
||||
not a generic quest, reward, acceptance, dialogue, or capable-helper framework.
|
||||
|
||||
Reference in New Issue
Block a user