docs: mark simulation architecture gate complete

- Update ACTION_SYSTEM_ARCHITECTURE.md to describe the active-position
  contract and visual lifecycle proof
- Mark BUILD_IN_PUBLIC_PLAN.md systems-gate section complete
- Mark LEARNING_ROADMAP.md architecture-gate section complete and
  renumber post-gate implementation sequence
- Update PROJECT_CONTEXT.md immediate-milestone section to reflect
  completed gate and next food-loop milestone
- Update SIMULATION_STATE_SCHEMA.md with NPCStateRecord v2 details
- Update ADR 0001 checklist to mark active-position sync done
This commit is contained in:
2026-07-05 17:21:23 +02:00
parent a8ae331f51
commit 3ea8f02d55
6 changed files with 52 additions and 35 deletions
+16 -10
View File
@@ -63,16 +63,22 @@ targets, and translates presentation callbacks into simulation transitions.
Further decomposition should follow measured pressure rather than splitting it
into managers for their own sake.
## Remaining architecture-gate gap
## Active-position contract
The resolver currently asks WorldViewManager for a visual's position at target
request time. SimNPC also stores a position, but active movement is not yet
synchronized back through an explicit authority contract.
NpcVisual emits active position changes after successful movement.
WorldViewManager forwards those facts through
`SimulationManager.synchronize_npc_position()`. Arrival, navigation failure,
and visual unload also perform a final synchronization.
The next phase must:
SimNPC stores both authoritative position and the resolved travel destination.
The destination is versioned simulation state, so reloading a visual resumes
the same route request without rerolling wander, resolving another resource, or
changing a reservation.
- define when active position is written to simulation state;
- preserve the last authoritative position when a visual unloads;
- spawn a reloaded visual from that position;
- prove visual unload/reload does not change action, target, reservation, or
position state.
`tests/npc_visual_lifecycle_test.gd` proves that visual unload/reload preserves
action, target ID, travel destination, resource reservation, position, and
state checksum.
Unloaded NPCs do not yet resolve abstract travel time; they remain in their
current task state until an active visual or a future simulation-LOD travel
system advances them.