Fix regressions in roster-only suites from A06/A07/P14-03
The formal collector's roster includes 46 suites the Makefile never ran; the first formal attempt stopped on test_required_kitchen and a sweep found: - v15 MIMI purchase saves could not be written once Runtime saves carried mana_reserve (P06-01): the format detector now validates that section and excludes it before the unchanged v15 allowlist, like special_peeping_rooms. - test_required_kitchen's legacy14 exact-load comparison now maps the two approved migrations (fresh A06 reserve at the restored boundary, elevator snapshot v1->v2) after checking each against its contract, in Runtime key order; every other byte must still match. - test_runtime_defense_autonomy allowed Mana to change only by the A06 flow. - test_p08_normal_placement_ops expects 25 palette slots (two warps); its suite-policy pin is updated with flags unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
40364345ab
commit
83b170a4c7
@@ -328,10 +328,17 @@ func _test_exhausted_generated_ids_fail_atomically() -> void:
|
||||
_expect(_runtime.id_generator.restore_snapshot(allocator), "valid near-exhausted allocator is a disclosed saved-state boundary")
|
||||
var before: Dictionary = _runtime.defense_service.create_snapshot()
|
||||
var rng_before: Dictionary = _runtime.get_rng_stream(&"defense").snapshot()
|
||||
var mana_before: int = _state.get_resource(&"mana")
|
||||
var reserve_minute_before: int = _runtime.mana_reserve.get_minute()
|
||||
_advance(5)
|
||||
# A06: crossing a 10-minute boundary settles the finite reserve; that flow is
|
||||
# the only Mana change allowed here.
|
||||
var reserve_mana := mana_before
|
||||
if _runtime.mana_reserve.get_minute() != reserve_minute_before:
|
||||
reserve_mana = int(_runtime.mana_reserve.get_last_flow()[&"after"])
|
||||
before[&"current_minute"] = _clock.absolute_minute
|
||||
_expect(before == _runtime.defense_service.create_snapshot() and rng_before == _runtime.get_rng_stream(&"defense").snapshot() and _clock.paused, "exhausted automatic allocator fails without advancing combat or RNG")
|
||||
_expect(_state.get_resource(&"gold") == 5_000 and _state.get_resource(&"mana") == 100, "allocation failure charges no skill or outcome resources")
|
||||
_expect(_state.get_resource(&"gold") == 5_000 and _state.get_resource(&"mana") == reserve_mana, "allocation failure charges no skill or outcome resources (Mana moves only by the A06 reserve flow)")
|
||||
_expect(_count_domain_events(&"DEFENSE_AUTOMATIC_ROUND_FAILED", &"raid.id.exhausted") == 1 and _runtime.id_generator.get_counter(&"defense_round_resolution") == StableIdGenerator.MAX_COUNTER - 1, "exhaustion records one diagnostic and rolls skipped-ID allocation back")
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user