Files
EscapistsReintroduced/docs/native-hq-response-proof.md
T

4.1 KiB

Binding the existing HQ response fixture to real perception

The existing Chat hq-response case already exercised actual native perception; it did not seed reports or call the order-delivery method directly. Historical archive native-2026-09-19-012234/rereintroduced-hq.log.txt records report M1 at 17.9 seconds, HQ receipt at 20.9 seconds and delivery to different groups at 26 seconds, with a second round following the same route. That historical run predates current sources and includes engine errors, so it is not current clean qualification. The previous fixture accepted any delivered assignment and did not bind all original physical identities.

ERR_NativeHQResponseProof.c strengthens that same case. Before arranging sight, it waits for the existing six squads and initial mortar crew, captures the original HQ-unit/group/actor/vehicle identities and physical manpack carriers, and verifies the real controlled prisoner's canonical roster/life/controller relation. It moves only that prisoner 20 m ahead in world Z of the first registered infantry group's origin, preserving the previous disclosed arrangement. It temporarily disables damage handling on that player and restores the original flag at probe stop. No guard, RTO or response force is spawned or teleported. No perception target, report or order is inserted by this observer; AI cadence, native perception and radio timing remain production behavior.

WORKBENCH-only wrappers delegate unchanged to the production Observe, Accept, DeliverOrder and journal Write methods. After an actual observation, the proof identifies the original soldier whose own native enemy-perception list contains the canonical prisoner with a matching visible sample. It records the exact report ID, source group, observer, original RTO, actual uplink and immutable observation position/time. Accepted contact evidence requires that retained real uplink to have completed. Delivered response evidence requires a different original recipient group/RTO, the same accepted report and observed coordinates/time, and its actual completed downlink and Search waypoint.

The bounded journal observer separately requires the report, transmission and HQ-receive events on the source message ID and HQ-transmission, unit-receive and delivered-order events on the captured downlink ID. It does not write or advance a route. Completion also requires an original recipient soldier to move at least 3 m while the native Search waypoint is current, reducing distance to the observed target by more than 1 m. Every check retains the complete original physical-force set and group membership, preventing a newly spawned replacement force from satisfying the assertion.

The helper bounds evidence to 32 source reports and 128 journal message records and preserves the existing scenario timeout. Failure retains normal diagnostics and restores only the player's prior damage flag. On success, the existing Chat fixture continues its already established explicit death/spectator/defeat sequence. This remains an arranged local integration test, not manual visibility/navigation quality, multiplayer, performance or live-user acceptance.

Integration adds the new helper to Chat and applies native-smoke-integration.patch: one owned helper field, cleanup, replacement of the existing 110/111 polling path, and transfer of temporary damage protection into the helper. No new runner case, production code or resource identity is needed. Full isolated repository checks pass. The 092237 native run passes 35 assertions with zero captured errors. An original soldier in source group 2 sees the canonical prisoner; report M1 carries that native observation through the actual uplink and HQ, and downlink M5 reaches original group 6. Its original soldier moves at least three metres toward the native Search waypoint while all original group and physical-force identities remain unchanged. The existing death/spectator/defeat sequence then completes. Arrangement, temporary player protection and local-only scope remain as described above. Later logistics/source changes require separate regression.