6.1 KiB
Gameplay recovery after the 23 September RKS #2 session
The session analysis and deployed source snapshot are in .local/analysis/rks2-2026-09-23-gameplay/analysis.md (local evidence, not a published asset).
- Mortar initialization receives 90 seconds from its first eligible poll. Waiting in prison does not spend that deadline. Failed/stopped mortar preparation no longer prevents independent supply-convoy admission; other outstanding group admissions still block it.
- Hunter UAZs activate their native agents before checking seated readiness and allow up to 120 seconds for startup. Losing the gunner does not invalidate a seated, conscious original driver. Incapacitation/dismount suspends driving without deleting the delivered destination; the original driver receives native boarding tasks. A surviving original crew member may take over a vacant driver seat. Occupied seats are never forcibly cleared, including seats containing casualties.
- Hunter movement reports include source ID, position, speed, destination, combat state, time without progress and route retries. A vehicle without movement for 60 seconds outside combat gets at most three native route retries until it moves again. Destroyed/captured vehicles and groups without living original crew are released. No replacement actors, repaired vehicles or teleport-based unsticking are introduced.
- Body-search jobs log their job ID, team/body positions and remaining distance. Outside combat, 120 seconds without closing by ten metres triggers another approach. After three failed route attempts, a job may select another team, up to twice, within the existing finite team budget. Physical proximity and inspection are still required before missing intel becomes known.
- Compromised-site messages distinguish waiting for an eligible team/radio route from a queued dispatch. They no longer say reinforcement was requested when no team was assigned.
- Parachute placement checks up to 72 candidates: twelve bearings, three distances (300/500/700 metres) and two corridor orientations. Every candidate retains the existing ground, water and descent-clearance checks. Logs summarize rejected candidates and distinguish a successful corridor from no safe corridor. Failed attempts retain the existing 15-second retry delay; the eight-minute committed-drop cooldown is unchanged.
- The radio has an explicit interaction point attached to the radio mesh, an omnidirectional three-metre context, and its existing eight-second action. Server authorization remains unchanged.
Automated checks include tests/test_gameplay_session_regressions.py, the existing policy suites, the native radio-interaction fixture, and the delayed-prison mortar-station fixture. The radio fixture uses native client context collection rather than injecting actions into the handler. Its final action execution is scripted; this does not claim human input or dedicated-client replication coverage.
Native radio comparison: the deployed prefab failed GetTransformationWorld() for its interaction context. With the authored point, /tmp/erri-radio-context-fixed/logs/logs_2026-09-23_21-43-16 passed all seven assertions, including actual native client selection in the furnished tent and transition into radio defence. The runner recorded unchanged sources and confirmed cleanup. Existing RHS/WCS resource/keyword errors still make the aggregate engine-error report nonzero; no script/runtime failures were recorded in this successful fixture.
The native mortar-station fixture held the prison closed for 110 seconds before releasing it. The one battery in that fixture initialized, seated its gunner, retained its crew against competing orders, and released survivors only after destruction. Evidence: /tmp/erri-behavior-mortar-station/logs/logs_2026-09-23_21-44-58. This is not a four-battery or dedicated-server test. Its smoke completed, but the runner could not classify a process during immediate cleanup verification; that PID was subsequently confirmed absent and the next run passed prefix preflight.
The extended native UAZ fixture also exposed a separate equipment-coordinator bug: temporary unconsciousness permanently stopped an actor's skill entry. Ownership now remains valid for living unconscious AI, while equipment/skill work requires consciousness. The existing entry and completed grant state survive recovery; death, capture, faction change and unregister remain terminal. Policy tests exercise both temporary suspension and permanent release.
One intermediate UAZ test (/tmp/erri-behavior-aggression-fixed/logs/logs_2026-09-23_21-55-15) stopped on an engine behavior-tree NodeError for supply-convoy-1-vehicle-3: failed movement from <5924.18,210.115,7040.86> to <5880.83,211.208,7023.45>. This was not a compile error or a hunter recovery assertion. Cleanup and unchanged-source verification passed. That supply-convoy navigation case remains unresolved; the hunter recovery changes do not guarantee every native road/path request succeeds.
Route retries reuse the physical waypoint's last delivered destination, even when a newer HQ order has already been queued. An executable policy regression checks this boundary, the three-retry limit, reset after movement and suspension during combat.
Final native hunter validation: /tmp/erri-behavior-aggression-final/logs/logs_2026-09-23_21-58-13 completed with 19 passing assertions and no script/runtime failures. It verified three separated opening UAZs, a delivered HQ order and more than 30 metres of physical movement, gunner death without losing the patrol, temporary driver unconsciousness, native dismount/reboarding with the same actors, and the surviving driver's enhanced skill after driving-task release. Source hashes remained unchanged and runner cleanup was confirmed. Existing external resource/keyword engine errors still produce a nonzero aggregate CLI exit. This is local Workbench coverage, not a dedicated multiplayer playtest.
python tools/check.py passed after the recovery/ownership changes; the delivered-route retry regression and hunter lifecycle checks were rerun after the final route adjustment. No Workshop publication, Git push or live-server change was performed for these fixes.