Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
6.9 KiB
Human AI follow-up — 13 October 2026
This follow-up extends the opt-in Coordinated doctrine with persistent squad judgment, bounded tactical terrain selection, executable finite covering fire and optional local action speech. The behaviour and configuration are described in the AI documentation. Current remains the default. The dedicated server has not been changed by this follow-up.
The previous candidate's results remain in its separate archive. Those earlier source fingerprints and test results do not qualify this follow-up.
Policy checks
The new production-method tests exercise actual Enforce method bodies with explicit native-boundary doubles:
test_hq_squad_judgment.py: original roster chronology, casualties, incapacitation, stable caution, ammunition hysteresis and evidence-based recovery.test_hq_operations.py: safe rally spacing, persistent retreat destination and arrival through task expiry, current contact versus queued old rosters, role selection and finite shared assignments.test_hq_tactical_ground.py: role-specific cover choices, static filtering, finite work, tile refusal, search footprint and support deadline limits.test_hq_execution.py: exact activity/projectile attribution, finite last-seen-area bursts, loss of support, ammunition and firing-lane guards, attempt limits and native priority relationships.test_hq_operation_speech.py: actual-action cue selection and revalidation after replacement, ownership changes, stale queues or lost support.
The regression output and structured results with script hashes record 62 of 62 test programs passing, covering HQ, hunter, infantry, speech, replay and runner behaviour. Script sources stayed unchanged throughout that capture. Policy doubles do not prove native navigation, weapon fire, playback, multiplayer balance or dedicated-server performance.
A final planner regression capture, with its source hashes, passes the operations, judgment and adapter tests after the remaining delayed-roster edge was corrected: a contact newer than a roster must inhibit its recovery contribution even when that contact is now more than 60 seconds old. The new counterexample failed before the correction; actual subsequent quiet reports still permit recovery.
The full repository checker still stops at the existing missing
saved root entity ID in addons/core/Prefabs/Items/Equipment/ERRM_AtlasLeaf.et.
That unrelated map prefab was not changed or bypassed. The first
sandboxed attempt stopped earlier because its existing
localhost HTTP test could not open a socket. The normal checker was rerun with
local socket access; the HTTP tests passed before the prefab check failed.
Native runs
Every run uses a frozen source copy, a fresh private profile and the isolated
/tmp/erri-headless-compat prefix. The normal audited runner retains compiler,
runtime and engine-error checks, exact input fingerprints and owned-process
cleanup. Failures are retained. No perception, projectile or ammunition facts
are fabricated to satisfy an assertion.
The full arranged encounter uses two authored original formations and the real production execution adapter. Only the canonical prisoner is positioned for the encounter; original soldiers must physically move and acquire the target through native perception. The fixture does not qualify natural discovery, complete HQ radio orchestration or dedicated-server performance.
| Run | Result |
|---|---|
| 01 | Native compilation found that the new speech extension accessed members defined by a later extension of the same native class. The methods were moved into the existing speech-context extension; policy tests still pass. This failed run did not reach gameplay. |
| 02 | Combined source compiled. Both original squads moved over 45 metres and physically arrived; seven scoped assertions passed. The arranged target was never acquired through native perception before the bounded encounter deadline, so no suppression attempt was made. |
| 03 | Compilation and physical movement succeeded again. A closer, low-eye arrangement reached native contact intake, but the required longer retreat had no clear ray in the bounded geometry survey. The fixture failed before a FIX order and did not claim fire support. Explicit post-placement timestamp and current-position checks were added for the following run, so this is not qualification of the complete close encounter. |
| 04 | Final planner chronology correction compiled. Physical movement, arrival and a post-placement close native sighting passed, with matching observation time and current position. After retreat, current native visibility was lost; no qualifying FIX or projectile proof followed before the bounded deadline. |
| 05 | Final source compiled with zero script errors. The other authored responder squad, on the more open Supply2 hillside, performed the firing-encounter role; the retreat survey preferred 80/70 metres to allow for native Defend movement. Eight scoped assertions passed, including both squads' movement/arrival and precise close native acquisition. The distant target was not acquired before the unchanged deadline, so FIX was never issued. The full fixture failed honestly. |
The final strict native report retains the failed encounter assertion and engine/addon errors. Actual tagged suppression fire, attributed ammunition consumption, support handoff and support-loss handling remain unqualified in the native engine for this follow-up. The policy tests exercise those branches; they are not a substitute for an actual firing encounter. No visibility or projectile-proof requirement was relaxed.
The overlong 90-metre second-squad order in the full fixture is deliberately a lease-expiry test. It does not prove a successful production 20-metre bound, and the two authored responder squads start far apart, so it cannot establish effective mutual tactical support. A co-located encounter with HQ radio delivery and a multiplayer playtest remain separate acceptance work.
Final live-source comparison confirms all
516 authored addon files match run 05's frozen snapshot. Each archived
runner.json confirms cleanup and unchanged source/dependency inputs. No owned
native processes remain. The final execution and native-runner policy checks
also pass in their output, with
exact source hashes.
This is an implemented local candidate with successful compilation and scoped execution evidence, not a clean native acceptance gate. Dedicated-server load comparison, effective mutual support, optional speech playback and multiplayer balance still need in-game qualification. No deployment is recorded here.