# V2 NPC Schedule Persistence

`NPCSchedulePersistence.V2` captures and restores NPC schedule state across
save/load. It persists the save id, schedule id, NPC id, saved time, active
block, location, interruption state, day seed, weather id, and restore tags.

## Runtime Surface

- `FV2NPCSchedulePersistenceSnapshot` stores versioned schedule state at save
  time.
- `FV2NPCScheduleRestoreRequest` carries the schedule, location registry,
  snapshot, restore command flag, and interruption restore flag.
- `FV2NPCScheduleRestoreCommand` directs AI to resume the saved block at the
  schedule-correct location.
- `FV2NPCSchedulePersistenceResult` reports the restored time, block, location,
  execution result, location binding result, snapshot, command, and issues.

## Restore Rules

1. Snapshot capture evaluates the active schedule block at save time and stores
   the schedule-correct location for that saved time.
2. Serialization and deserialization round-trip the stable snapshot fields,
   including paused interaction state. Deserialization accepts the initial
   13-token payload shape and the 14-token shape that explicitly carries
   `bPausedForInteraction`.
3. Restore evaluates schedule execution at the saved time and resumes the exact
   saved block.
4. Restore targets the schedule-correct location for that saved time.
5. Interrupted schedules restore active interruption metadata when requested.
6. Invalid save ids, schedule ids, NPC ids, block ids, locations, saved times,
   execution, or restore commands produce blocking issues.

## Validation Commands

Run these targeted checks when touching schedule persistence:

```bash
python3 V2/ue/Tools/check-v2-npc-schedule-persistence.py
python3 V2/ue/Tools/check-v2-npc-schedule-social-interaction.py
python3 V2/ue/Tools/check-v2-npc-schedule-weather-response.py
python3 V2/ue/Tools/check-v2-npc-schedule-day-of-week.py
python3 V2/ue/Tools/check-v2-npc-schedule-variation.py
python3 V2/ue/Tools/check-v2-npc-schedule-interruption.py
python3 V2/ue/Tools/check-v2-npc-schedule-location-binding.py
python3 V2/ue/Tools/check-v2-npc-schedule-activity-behavior.py
python3 V2/ue/Tools/check-v2-npc-schedule-pathfinding.py
python3 V2/ue/Tools/check-v2-npc-schedule-execution-engine.py
python3 V2/ue/Tools/check-v2-npc-schedule-data-format.py
python3 V2/ue/Tools/check-v2-ci-workflow.py
python3 -m json.tool V2/ue/Content/V2/Gameplay/NPC/NPCSchedulePersistence_V2_Contract.json
python3 -m py_compile V2/ue/Tools/check-v2-npc-schedule-persistence.py
```
