P14-03: Versioned shaft-wait saves, keep riders aboard, real-actor proof
- ElevatorService snapshot v2 carries the shaft-wide wait; v1 saves (written
with every elevator dynamic_cost 0) migrate by deriving it on load, and any
v2 mismatch, including all zeros, is rejected atomically. A genuine save
from 50ceca0 is kept as tests/fixtures/p14-03/legacy_rush_v1.
- A guest aboard a cabin no longer decides, leaves or despawns until the
elevator sets it down at a real landing; previously a rider told to leave
vanished from a moving cabin.
- test_route_wait_choice now proves the rush detour and route loss with a
worker who actually walks, every shared rider's arrival cell, service
elevator and stair congestion, legacy migration and a new-PID restart.
- Register completion markers for the seven suites added this session and
bring the P14 ledger in line with P14-02's completion.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
62d1dcecad
commit
a8edd3c3a1
@@ -8796,6 +8796,10 @@ func get_guest_decision_record(guest_id: StringName) -> Dictionary:
|
||||
|
||||
func _advance_guest_ai_decisions(absolute_minute: int) -> void:
|
||||
for guest: GuestRuntime in guest_service.get_guests():
|
||||
# A rider inside a cabin cannot decide, leave or despawn until the
|
||||
# elevator sets it down at a real landing (P14-03: passengers never vanish).
|
||||
if elevators.get_actor_trip(_guest_path_actor_id(guest.guest_id)).get(&"state", &"") == PathService.ELEVATOR_REQUEST_BOARDED:
|
||||
continue
|
||||
match guest.state:
|
||||
GuestRuntime.State.SPAWNING:
|
||||
guest_service.transition_guest(guest.guest_id, GuestRuntime.State.ENTERING, absolute_minute, &"ENTRY_STARTED")
|
||||
|
||||
Reference in New Issue
Block a user