{ "findings": [ "Session 1791474261-3, M1633: UAZ-2 at ~1050 m from reported contact moved less than 1 m between t=831.1 and1048.2; released at1072.1 for stalled/five-minute approach budget.", "Session 1791544552-6, M185: UAZ-2 cover role stayed ~193 m from recorded contact at exactly the same logged vehicle position from t=244 to491.5, crew aboard=3 and visual cover=0 throughout.", "Other cover-role UAZ records show similar blind holds at ~224\u2013322 m for minutes.", "Convoy vehicle3 repeatedly reported no clear firing lane from t=2470.1 to3000.6 (~8.8 minutes), then held essentially unchanged position after t=2563.3." ], "code_explanation": "HunterTactics state1 cover role accepts proximity to planned stage regardless of actual visual cover. Once state3, no cover relocation path runs; it releases after five minutes from attack start. Approach no-progress handling waits until its initial maneuver deadline before releasing. Convoy armed support clears orders and retries when no safe firing position found.", "limits": "Distances are to the HQ reported contact, not exact current player position. Exact village/user-observed encounter unknown. Vehicle coordinates alone cannot establish that dismounted infantry were stationary.", "changes": [ "Hunter approaches retry their current order after 30 seconds without 15 metres of movement, then try a separated alternate stage, then release the assignment if still blocked. Existing overall approach budget remains.", "Cover-role hunters seek alternate firing positions after 20 seconds without native visual contact. At most three searches per assignment; failed planning/allocation preserves current stage and orders. Useful visual cover stays in place.", "Convoy escorts retain progressing approaches, recover stationary ones, and cycle firing-position search offsets. Distant screened escorts may take a checked intermediate approach leg without claiming visual cover.", "Logs distinguish stationary-route recovery, blind-cover relocation, and intermediate convoy approaches." ], "validation": { "focused_harnesses_passed": [ "test_hunter_tactics.py", "test_convoy_column.py", "test_hunter_coordination.py", "test_hunter_gun_team.py", "test_convoy_hunt.py" ], "coverage": "Translated production policy/lifecycle bodies with native API doubles, including failed-order rollback, recovery timers, spacing reservations and conservative approach geometry. Not a live multiplayer pathfinding test.", "native_compile": { "result": "compiled", "cleanup": { "cleanup_confirmed": true, "idle_verified": true, "errors": [], "orphan_cleanup": { "attempted": true, "report": { "scope": "/tmp/erri-headless-compat/pfx", "candidates": [], "term_sent": [], "kill_sent": [], "cleared": true } } } }, "deployed": false, "sha256": { "addons/core/Scripts/Game/ERR/10_AI/ERR_HunterTactics.c": "218e7c6a4465c49d1ba7dd9968d9607f19804652fe9c4b4f4a98580e334c0ab8", "addons/core/Scripts/Game/ERR/10_AI/ERR_SupplyConvoyTactics.c": "d2fe073b0c23c877afaa65e246544751eecabce4febd72412fc9a4ec18eb1c8c", "tests/test_hunter_tactics.py": "2806701757b4b35826b3ad6a83c5270e2b3954d854bb778d3058844b2f9f16e8", "tests/test_convoy_column.py": "a2bec70712a27c2e5c17d46801b8b71a2ddf079e92ddeb1a584b2b1f1815e5dd" } } }