# Reforger 1.8 AI ownership probe Standalone diagnostic addon. Do not include this folder in Escape's Workshop build. It depends only on vanilla Reforger. It uses vanilla Game Master Everon and creates one US soldier in one empty group. Run with `-aidProbe` on both machines. The dedicated process advances through five phases, each at least 20 seconds: 1. Server-owned baseline after the worker acknowledges both replicated entities. 2. Soldier hierarchy transferred with `GiveExt(workerIdentity, true)`. 3. Group hierarchy also transferred. 4. Worker explicitly attempts `AIControlComponent.ActivateAI()` and group activation. 5. Ownership returned to the dedicated process and AI explicitly reactivated. Phase 4 is a separate intervention, not a consequence attributed to ownership. A static MP observer and explicit per-connection streaming put the soldier within worker replication coverage. This diagnostic assumes exactly one worker connection. Both processes must have the same mod and game version. LOD 0 is forced on the server agent/group to make an idle one-soldier baseline observable. Each side logs replication flags, component/agent presence, activation flags, LOD, native perception simulation count, and actual engine-entered soldier/group behavior decision callbacks. Overrides call the original implementation once. No behavior callback is invoked manually. An owner-directed PlayerController RPC runs a small deterministic script calculation and returns an acknowledgement; this proves worker script execution, not expensive AI migration or CPU savings. ## Local hidden runner First copy this addon's `addon.gproj` and `Scripts` to a disposable directory and open that copy in matching 1.8 Workbench. This creates `resourceDatabase.rdb`; a loose script-only folder without an index was silently omitted by the Linux runtime in the initial attempt. Do not index or change the production mod. Workbench needs vanilla `ArmaReforger.gproj` available in its addon search path. The Linux helper requires the repository's existing `tools` helpers, bubblewrap, gamescope, Steam/Proton Experimental, a private idle test prefix, and a private 1.8 Linux dedicated runtime. Close the normal game first. Example: ```sh python tests/native/ai_delegation/run_local.py \ --runtime /tmp/erri-takeover-dedicated-runtime \ --indexed-addon /tmp/aid-indexed \ --compat /tmp/erri-takeover-client-compat \ --run /tmp/aid-new-run ``` The run path must not exist. `--server-only` checks baseline without starting a client. The full run refuses an existing game and uses a private hidden, muted display/profile. The dedicated server has a private network namespace; a loopback-only UDP/Unix datagram bridge admits one local worker. No production server, server configuration or mission files are changed. A deadline and owned process cleanup bound the experiment. Results and frozen inputs stay in the run folder; source hashes are saved before launch. ```sh python tests/native/ai_delegation/summarize.py \ /tmp/aid-new-run/server/logs/logs_*/console.log \ /tmp/aid-new-run/client/logs/logs_*/console.log ``` The summary discards the first and last two samples of each phase before calculating counter deltas. Missing native perception components use `-1`, not zero. Require positive server baseline deltas and client acknowledgements before interpreting any zero worker counters. This is an execution-locality experiment, not a CPU benchmark. A single idle soldier cannot establish scalability, combat behavior, vehicle behavior or exclusive native subsystem costs.