Files
EscapistsReintroduced/docs/evidence/coordinated-ai-2026-10-13/policy-regressions.log
T
jakub 6a667d8deb Capture current mission, AI, map and administration development
Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
2026-10-13 22:52:53 +02:00

414 lines
20 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
PASS 1 test_optional_motorbikes.py
PASS 2 test_server_memory_sampler.py
PASS 3 test_roadblocks.py
PASS 4 test_roadblock_mining.py
PASS 5 test_crash_start.py
PASS 6 test_start_settings.py
PASS 7 test_intercept_vehicle_footprint.py
PASS 8 test_bmp_intercept_geometry.py
PASS 9 test_native_random_radius_trace.py
PASS 10 test_native_random_radius_runner.py
PASS 11 test_native_supply_travel.py
PASS 12 test_native_supply_travel_hook.py
PASS 13 test_native_supply_travel_runner.py
PASS 14 test_native_mounted_intercept.py
PASS 15 test_hq_mounted_dispatch.py
PASS 16 test_hq_mounted_intercept.py
PASS 17 test_hq_mounted_intercept_pair.py
PASS 18 test_convoy_intercept_pair.py
PASS 19 test_native_maintenance_refuel.py
PASS 20 test_mine_intel.py
PASS 21 test_mine_intel_discovery_integration.py
PASS 22 test_infantry_combat.py
PASS 23 test_enemy_medicine.py
PASS 24 test_hunter_combat.py
PASS 25 test_hq_local_awareness.py
PASS 26 test_unconscious_controls.py
PASS 27 test_town_garrisons.py
PASS 28 test_field_sites.py
PASS 29 test_gameplay_session_regressions.py
PASS 30 test_gameplay_review_fixes.py
PASS 31 test_server_log_regressions.py
PASS 32 test_mortar_load_ack.py
PASS 33 test_mortar_spotting.py
PASS 34 test_hunter_profiles.py
PASS 35 test_hunter_lifecycle.py
PASS 36 test_hunter_capture.py
PASS 37 test_hunter_opening.py
PASS 38 test_hunter_search_memory.py
PASS 39 test_hunter_reserve.py
PASS 40 test_hunter_sector_search.py
PASS 41 test_enemy_awareness.py
PASS 42 test_intel_body_inspection.py
PASS 43 test_body_recovery_lifecycle.py
PASS 44 test_radio_document_defence.py
PASS 45 test_air_support_policy.py
PASS 46 test_air_logistics_orders.py
PASS 47 test_air_recon.py
PASS 48 test_scouts.py
PASS 49 test_mortar_station.py
PASS 50 test_random_settings.py
PASS 51 test_debug_ai.py
PASS 52 test_generated_sites.py
PASS 53 test_terrain_sites.py
PASS 54 test_terrain_adapter.py
PASS 55 test_terrain_airfields.py
PASS 56 test_terrain_takeover.py
PASS 57 test_terrain_presentation.py
PASS 58 test_terrain_selection.py
PASS 59 test_faction_selection.py
PASS 60 test_faction_menu.py
PASS 61 test_content_policy.py
PASS 62 test_hq_road_intercept.py
PASS 63 test_hq_delivered_task.py
PASS 64 test_hq_local_handoff.py
PASS 65 test_hq_local_handoff_intake.py
PASS 66 test_native_local_handoff_probe.py
PASS 67 test_infantry_resupply_waypoints.py
PASS 68 test_infantry_placement_settle.py
PASS 69 test_native_infantry_fixture_lifecycle.py
PASS 70 test_native_infantry_cargo.py
FAIL 71 test_native_infantry_setup.py
Traceback (most recent call last):
File "/home/jakub/devel/escapistsrereintroduced/tests/test_native_infantry_setup.py", line 33, in <module>
assert 'if (m_Command && m_Phase >= ERR_Phase.RADIO_SEARCH) m_Command.Tick(now);' in tick
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError
PASS 72 test_infantry_ammo_access.py
PASS 73 test_infantry_resupply_planning.py
PASS 74 test_infantry_supply_pool.py
PASS 75 test_hq_multiconvoy_supply.py
PASS 76 test_enemy_gunner_skill.py
PASS 77 test_native_memory_deadlines.py
PASS 78 test_convoy_auto_settings.py
PASS 79 test_convoy_startup.py
PASS 80 test_failure_result_refresh.py
PASS 81 test_infantry_resupply_coordinator.py
PASS 82 test_infantry_mine_coordinator.py
PASS 83 test_infantry_mine_transfer.py
PASS 84 test_infantry_ammo_transfer.py
PASS 85 test_finite_magazine_reservation.py
PASS 86 test_mounted_ammo_transfer.py
PASS 87 test_mounted_ammo_pickup.py
PASS 88 test_mounted_resupply.py
PASS 89 test_mounted_supply_integration.py
PASS 90 test_hq_ammo_reporting.py
PASS 91 test_enemy_radio.py
PASS 92 test_native_maintenance_stock.py
PASS 93 test_packed_external_game.py
PASS 94 test_hq_radio_node.py
PASS 95 test_vehicle_maintenance_stock.py
FAIL 96 test_optional_transport.py
/tmp/err-policy-q9ndvrsb/check.cpp: In member function ‘ERR_PrepareResult Service::Prepare()’:
/tmp/err-policy-q9ndvrsb/check.cpp:161:16: error: ‘struct Mode’ has no member named ‘Extraction’
161 | if (!m_Mode->Extraction().PickupConfigured() && !m_SingleSite) { Fail("extraction pickup point missing"); return m_State; }
| ^~~~~~~~~~
/tmp/err-policy-q9ndvrsb/check.cpp:161:52: error: ‘m_SingleSite’ was not declared in this scope
161 | if (!m_Mode->Extraction().PickupConfigured() && !m_SingleSite) { Fail("extraction pickup point missing"); return m_State; }
| ^~~~~~~~~~~~
/tmp/err-policy-q9ndvrsb/check.cpp:218:59: error: request for member ‘Location’ in ‘readySite’, which is of pointer type ‘ERR_SiteRuntime’ {aka ‘Site*’} (maybe you meant to use ‘->’ ?)
218 | for (ERR_SiteRuntime readySite : m_Sites) if (readySite.Location) readySite.Location.SetPrepared(true);
| ^~~~~~~~
/tmp/err-policy-q9ndvrsb/check.cpp:218:79: error: request for member ‘Location’ in ‘readySite’, which is of pointer type ‘ERR_SiteRuntime’ {aka ‘Site*’} (maybe you meant to use ‘->’ ?)
218 | for (ERR_SiteRuntime readySite : m_Sites) if (readySite.Location) readySite.Location.SetPrepared(true);
| ^~~~~~~~
Traceback (most recent call last):
File "/home/jakub/devel/escapistsrereintroduced/tests/test_optional_transport.py", line 37, in <module>
run(r'''
~~~^^^^^
#include <cassert>
^^^^^^^^^^^^^^^^^^
...<111 lines>...
}
^
'''.replace('if(fault==0)f.svc.clear=false;', 'if(fault==0){f.svc.clear=false;}').replace('if(fault==1)ERR_Actors::spawned=nullptr;', 'if(fault==1){ERR_Actors::spawned=nullptr;}').replace('if(fault==2)f.car.vehicle=false;', 'if(fault==2){f.car.vehicle=false;}').replace('if(fault==3)f.car.controller=nullptr;', 'if(fault==3){f.car.controller=nullptr;}').replace('if(fault==4)f.security.good=false;', 'if(fault==4){f.security.good=false;}').replace('if(unsafe==0)f.passenger.occupant=&acquired;', 'if(unsafe==0){f.passenger.occupant=&acquired;}').replace('if(unsafe==2)f.car.manager=nullptr;', 'if(unsafe==2){f.car.manager=nullptr;}').replace('if(unsafe==5)f.car.player=true;', 'if(unsafe==5){f.car.player=true;}'))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jakub/devel/escapistsrereintroduced/tests/policy_harness.py", line 13, in run
subprocess.run(['g++','-std=c++17','-Wall','-Werror',str(p/'check.cpp'),'-o',str(p/'check')],check=True)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.14/subprocess.py", line 578, in run
raise CalledProcessError(retcode, process.args,
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['g++', '-std=c++17', '-Wall', '-Werror', '/tmp/err-policy-q9ndvrsb/check.cpp', '-o', '/tmp/err-policy-q9ndvrsb/check']' returned non-zero exit status 1.
PASS 97 test_vehicle_entry_diagnostics.py
PASS 98 test_vehicle_security_native_probe.py
PASS 99 test_vehicle_security.py
PASS 100 test_vehicle_alarm.py
PASS 101 test_vehicle_alarm_perception.py
PASS 102 test_native_convoy_mine_stock.py
PASS 103 test_native_mine_stock_runner.py
PASS 104 test_native_mounted_ammo_probe.py
PASS 105 test_native_mounted_swap_probe.py
PASS 106 test_native_mounted_courier_probe.py
PASS 107 test_native_alarm_hearing.py
PASS 108 test_native_convoy_cover_probe.py
PASS 109 test_enemy_optics.py
PASS 110 test_convoy_combat.py
PASS 111 test_ai_stinger_admin.py
PASS 112 test_hq_ammo_dispatch.py
PASS 113 test_hq_convoy_combat.py
PASS 114 test_hq_ammo_sampler.py
PASS 115 test_hq_mine_sampler.py
PASS 116 test_hq_mounted_ammo_sampler.py
PASS 117 test_hq_mounted_binding.py
PASS 118 test_hq_vehicle_seats.py
PASS 119 test_native_hq_body_probe.py
PASS 120 test_hq_delivered_casualties.py
PASS 121 test_external_profile_review.py
PASS 122 test_hq_uplink_fairness.py
PASS 123 test_actor_group.py
PASS 124 test_native_package_external.py
PASS 125 test_native_convoy_probe.py
PASS 126 test_convoy_placement.py
PASS 127 test_convoy_road_plan.py
PASS 128 test_hq_convoy_dispatch.py
PASS 129 test_convoy_admission.py
PASS 130 test_convoy_dispatch.py
PASS 131 test_convoy_lifecycle.py
PASS 132 test_convoy_survivors.py
PASS 133 test_convoy_budget.py
PASS 134 test_supply_convoys.py
PASS 135 test_supply_budget_admission.py
PASS 136 test_mounted_initial_stock.py
PASS 137 test_convoy_mine_stock.py
PASS 138 test_convoy_column.py
PASS 139 test_hq_body_observer.py
PASS 140 test_hq_status_sampler.py
PASS 141 test_hq_watch.py
PASS 142 test_hq_assignment_lifecycle.py
PASS 143 test_force_ledger.py
PASS 144 test_enemy_equipment.py
PASS 145 test_enemy_loadout.py
PASS 146 test_automatic_equipment.py
PASS 147 test_engineer_mine.py
PASS 148 test_engineer_mine_site.py
PASS 149 test_engineer_mine_hq.py
PASS 150 test_engineer_mine_posts.py
PASS 151 test_hq_doctrine.py
PASS 152 test_hq_coverage.py
PASS 153 test_hq_hypotheses.py
PASS 154 test_hq_local_coverage.py
PASS 155 test_hq_operations.py
PASS 156 test_hq_hunter_operations.py
PASS 157 test_hq_coordinated.py
PASS 158 test_hq_execution.py
PASS 159 test_hq_task_reservations.py
PASS 160 test_hq_pursuit.py
PASS 161 test_hq_memory.py
PASS 162 test_external_addons.py
PASS 163 test_admin_tick_delivery.py
PASS 164 test_project_schema.py
PASS 165 test_admin_session.py
PASS 166 test_admin_providers.py
PASS 167 test_admin_menu.py
PASS 168 test_server_item_catalog.py
PASS 169 test_item_preferences.py
PASS 170 test_journal_readability.py
PASS 171 test_admin_player_tools.py
PASS 172 test_intel_admin.py
PASS 173 test_intel_reroll.py
PASS 174 test_intel_discovery_feedback.py
PASS 175 test_hq_report_selection.py
PASS 176 test_casualty_feedback.py
PASS 177 test_initial_admission_exhaustion.py
PASS 178 test_prison_held_action_proof.py
PASS 179 test_prison_held_action_evidence.py
PASS 180 test_prison_held_input_adapter.py
PASS 181 test_prison_held_runner.py
PASS 182 test_prison_coarse_facing.py
PASS 183 test_aircraft_field_probe.py
PASS 184 test_aircraft_field_runner.py
PASS 185 test_aircraft_field_rules.py
PASS 186 test_aircraft_field_envelope.py
PASS 187 test_aircraft_field_flight.py
PASS 188 test_command_maintenance.py
PASS 189 test_aircraft_service.py
PASS 190 test_aircraft_service_cancel_runner.py
PASS 191 test_prison_action_selection_proof.py
PASS 192 test_prison_action_selection_evidence.py
PASS 193 test_ordinary_gate_choices.py
PASS 194 test_aircraft_control_bridge.py
PASS 195 test_prison_alignment_proof.py
PASS 196 test_prison_alignment_evidence.py
PASS 197 test_aircraft_route_demand.py
PASS 198 test_prison_approach_proof.py
PASS 199 test_prison_approach_evidence.py
PASS 200 test_ordinary_gate_evidence.py
PASS 201 test_ordinary_gate_observer.py
PASS 202 test_ordinary_look_observer.py
PASS 203 test_ordinary_look_evidence.py
PASS 204 test_relative_look_runner.py
PASS 205 test_radio_waiting_text.py
PASS 206 test_inventory_control_runner.py
PASS 207 test_inventory_layout.py
PASS 208 test_headless_input_proof.py
PASS 209 test_headless_input_exercise_runner.py
PASS 210 test_private_prefix_cleanup.py
PASS 211 test_runner_private_cleanup.py
PASS 212 test_ordinary_input_runner.py
PASS 213 test_ordinary_input_observer.py
PASS 214 test_aircraft_route_envelope.py
PASS 215 test_aircraft_route_policy.py
PASS 216 test_aircraft_route_probe.py
PASS 217 test_rough_intel_feedback.py
PASS 218 test_headless_display_probe.py
PASS 219 test_headless_display_runner.py
PASS 220 test_preparation_status.py
FAIL 221 test_hint_delivery.py
/tmp/err-policy-f2jw6ghi/check.cpp: In member function ‘void Controller::ERR_UpdateObserverClient()’:
/tmp/err-policy-f2jw6ghi/check.cpp:133:3: error: ‘SCR_EditorManagerEntity’ was not declared in this scope
133 | SCR_EditorManagerEntity editor = SCR_EditorManagerEntity.GetInstance();
| ^~~~~~~~~~~~~~~~~~~~~~~
/tmp/err-policy-f2jw6ghi/check.cpp:134:7: error: ‘editor’ was not declared in this scope
134 | if (editor && editor.IsOpened()) return;
| ^~~~~~
/tmp/err-policy-f2jw6ghi/check.cpp:142:60: error: ‘struct Game’ has no member named ‘SpawnEntityPrefabLocal’; did you mean ‘SpawnEntityPrefab’?
142 | m_ERRObserverCamera = SCR_ManualCamera::Cast(GetGame()->SpawnEntityPrefabLocal(resource, GetGame()->GetWorld(), params));
| ^~~~~~~~~~~~~~~~~~~~~~
| SpawnEntityPrefab
/tmp/err-policy-f2jw6ghi/check.cpp:148:65: error: ‘struct CameraManager’ has no member named ‘SetCamera’; did you mean ‘CurrentCamera’?
148 | if (manager->CurrentCamera() != m_ERRObserverCamera) manager->SetCamera(m_ERRObserverCamera);
| ^~~~~~~~~
| CurrentCamera
Traceback (most recent call last):
File "/home/jakub/devel/escapistsrereintroduced/tests/test_hint_delivery.py", line 22, in <module>
run(r'''#include <cassert>
~~~^^^^^^^^^^^^^^^^^^^^^^^
#include <string>
^^^^^^^^^^^^^^^^^
...<141 lines>...
}
^
''')
^^^^
File "/home/jakub/devel/escapistsrereintroduced/tests/policy_harness.py", line 13, in run
subprocess.run(['g++','-std=c++17','-Wall','-Werror',str(p/'check.cpp'),'-o',str(p/'check')],check=True)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.14/subprocess.py", line 578, in run
raise CalledProcessError(retcode, process.args,
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['g++', '-std=c++17', '-Wall', '-Werror', '/tmp/err-policy-f2jw6ghi/check.cpp', '-o', '/tmp/err-policy-f2jw6ghi/check']' returned non-zero exit status 1.
FAIL 222 test_native_end_lifecycle.py
/tmp/err-policy-x0pz1lni/check.cpp: In member function ‘void Mode::StopServices()’:
/tmp/err-policy-x0pz1lni/check.cpp:70:7: error: ‘m_Performance’ was not declared in this scope
70 | if (m_Performance) m_Performance.Stop(m_Phase);
| ^~~~~~~~~~~~~
Traceback (most recent call last):
File "/home/jakub/devel/escapistsrereintroduced/tests/test_native_end_lifecycle.py", line 13, in <module>
run(r'''#include <cassert>
~~~^^^^^^^^^^^^^^^^^^^^^^^
#include <string>
^^^^^^^^^^^^^^^^^
...<70 lines>...
}
^
''')
^^^^
File "/home/jakub/devel/escapistsrereintroduced/tests/policy_harness.py", line 13, in run
subprocess.run(['g++','-std=c++17','-Wall','-Werror',str(p/'check.cpp'),'-o',str(p/'check')],check=True)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.14/subprocess.py", line 578, in run
raise CalledProcessError(retcode, process.args,
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['g++', '-std=c++17', '-Wall', '-Werror', '/tmp/err-policy-x0pz1lni/check.cpp', '-o', '/tmp/err-policy-x0pz1lni/check']' returned non-zero exit status 1.
PASS 223 test_native_end_runner.py
PASS 224 test_escape_result_wording.py
PASS 225 test_native_stats.py
PASS 226 test_aircraft_translation.py
PASS 227 test_spawn_retry_budget.py
PASS 228 test_spawn_preload_timeout.py
PASS 229 test_action_feedback.py
PASS 230 test_native_aircraft_control.py
PASS 231 test_aircraft_flight_policy.py
PASS 232 test_aircraft_flight_envelope.py
PASS 233 test_ordinary_screenshot.py
PASS 234 test_participant_selection.py
PASS 235 test_native_shared_map_ownership.py
PASS 236 test_shared_map_ownership.py
PASS 237 test_intel_registration.py
PASS 238 test_mortar_activity_completion.py
PASS 239 test_packed_chat_game.py
PASS 240 test_native_mortar_refresh.py
PASS 241 test_archive_packed.py
PASS 242 test_mortar_refresh.py
PASS 243 test_packed_core_game.py
PASS 244 test_pak_inventory.py
PASS 245 test_native_mortar_salvo.py
PASS 246 test_spectator_guidance.py
PASS 247 test_spectator_recovery.py
PASS 248 test_native_package.py
PASS 249 test_item_station_teardown.py
PASS 250 test_source_bundle.py
PASS 251 test_native_flight_footprint.py
PASS 252 test_native_flight_input_diagnostics.py
PASS 253 test_mortar_logistics.py
PASS 254 test_mortar_courier_storage.py
PASS 255 test_powered_flight_pad.py
PASS 256 test_prison_escape_policy.py
PASS 257 test_powered_flight_policy.py
PASS 258 test_flight_action_runner.py
PASS 259 test_native_local_admission_probe.py
PASS 260 test_mortar_report_ledger.py
PASS 261 test_dedicated_native.py
PASS 262 test_native_mortar_transfer.py
PASS 263 test_mortar_aim_renewal.py
PASS 264 test_dedicated_preflight.py
PASS 265 test_mortar_transactions.py
PASS 266 test_native_mortar_probe.py
PASS 267 test_diagnostic_no_splash.py
PASS 268 test_casualty_incapacitation.py
PASS 269 test_casualty_remove_probe.py
PASS 270 test_extraction_placement_policy.py
PASS 271 test_guard_cancellation_policy.py
PASS 272 test_casualty_ground_policy.py
PASS 273 test_casualty_reservation_death.py
PASS 274 test_casualty_loading_policy.py
PASS 275 test_initial_guard_policy.py
PASS 276 test_headless_game_runner.py
PASS 277 test_vanilla_game_control.py
PASS 278 test_archive_game_control.py
PASS 279 test_site_discovery_policy.py
PASS 280 test_faction_catalog_scope.py
PASS 281 test_mission_rules.py
PASS 282 test_admin_setting_policy.py
PASS 283 test_player_admission_policy.py
PASS 284 test_progression_identity.py
PASS 285 test_discovery_map_position.py
PASS 286 test_local_admission.py
PASS 287 test_prison_placement_policy.py
PASS 288 test_recovery_policy.py
PASS 289 test_native_inventory_hitzone.py
PASS 290 test_inventory_hitzone_compat.py
PASS 291 test_player_medical.py
PASS 292 test_time_policy.py
PASS 293 test_environment_policy.py
PASS 294 test_view_distance.py
PASS 295 test_environment_restart_runner.py
PASS 296 test_inventory_enumeration_policy.py
PASS 297 test_radio_defence_policy.py
PASS 298 test_radio_feedback_policy.py
PASS 299 test_performance_comparison.py
PASS 300 test_release_check.py
PASS 301 test_settings_migration.py
PASS 302 hq_network_regression.py
PASS 303 helicopter_availability_regression.py
PASS 304 mortar_salvo_regression.py
POST-STRUCTURE POLICY RESULT 304 scripts; 4 failures: ['test_native_infantry_setup.py', 'test_optional_transport.py', 'test_hint_delivery.py', 'test_native_end_lifecycle.py']
FIXTURE RERUN test_native_infantry_setup.py PASS
PASS: actual inventory-fixture setup uses ordinary prison unlock before constructing its convoy-waiting probe; failed unlock cannot run fixture
FIXTURE RERUN test_optional_transport.py PASS
PASS: optional transport deferred behind required readiness, bounded once-only spawn/omission, isolated cleanup, occupied-candidate retention and required-default preservation
FIXTURE RERUN test_hint_delivery.py PASS
PASS: actual guide ownership and scoped timer cancellation, current-controller preservation/reacquisition, hint retry/dedup and observer boundaries; native UI not exercised
FIXTURE RERUN test_native_end_lifecycle.py PASS
PASS: actual native-end shutdown, existing terminal snapshots, reentrancy, unchanged native end data and stale preparation guards
FINAL POST-STRUCTURE RESULT: all304 listed scripts passed; four repaired boundary fixtures rerun after initial failures. Full tools/check.py remains blocked by unrelated AtlasLeaf prefab identity.