Files
EscapistsReintroduced/docs/airborne-validation-2026-09-27.md
T

5.4 KiB

RHS airborne validation — 27 September 2026

The tests use the installed RHS/WCS dependencies, US prisoners and RHS ION enemies in an isolated Workbench game. They do not publish the mod or change RKS 2.

Physical drop

The first run used the existing controlled-order fixture. Eight original RHS passengers boarded the aircraft, all eight left in two-second intervals, all eight boarded their native parachute compartments, all eight finished their descents alive, and both original four-person groups received the carried HQ search order. The original aircrew remained aboard and post-drop cover became active. The run was deliberately stopped after these checks so the next tests could exercise automatic authorization; it did not qualify the reload cycle.

The archived journal contains exactly eight AIR DROP JUMP, eight PARACHUTE BOARDED, eight PARACHUTE FINISHED and two AIR TEAM LANDED events.

Automatic HQ decision

The upgraded fixture places only the test player in a visible runway-sector encounter and protects that player from damage for the duration of the test. Crew perception, sighting reports, physical radio delivery, HQ memory, airborne policy, corridor selection and passenger transfer remain production behavior. It no longer calls Begin with a fabricated drop order.

The first automatic run correctly withheld a drop with ground forces already committed in sufficient strength. That is intended policy, not a boarding or parachute failure. This run was stopped after observing the refusal.

For the complementary shortage scenario, the fixture reserves other ground squads using the existing ReserveGroup API while waiting for authorization. It does not fabricate sightings, change the airborne policy, bypass artillery safety, or issue a drop command. After authorization, it stops reserving squads so landed teams can receive normal HQ search orders. It also checks cover, return, servicing, another eight seated passengers and the separate airport cargo helicopter. The existing fixture advances the remaining cover timer after confirming cover, avoiding a five-minute idle wait; policy tests check the actual cover deadline independently.

The shortage run exposed a real starvation issue: each artillery veto reset the 45-second confirmation timer. Its first clear window ran from mission time 189.3 to 224.5 seconds (35.2 seconds), too short for confirmation before another mortar order reset it again.

ERR_AirSupportPolicy.Consider now validates and retains fresh contact/shortage history while artillery blocks the approach. It still refuses authorization while artillery is busy. Invalid/stale intelligence, a new target, sufficient ground support and the existing cooldown keep their previous checks. The order receiver still revalidates airspace using Refusal with its default airspace check enabled. A regression fails on the previous implementation and passes with the correction, including stale-target and cooldown cases.

The corrected-timer run then exposed a second blocker: successive reports from multiple observers could be less than two seconds apart. ERR_HQMemoryTrack.Evaluate used only the last two samples, repeatedly discarding a valid stationary-target history as unknown movement. Its bounded history now selects the nearest older sample with the existing two-second minimum separation. It stops at travel-mode changes and never skips an implausible eligible pair to find a convenient older estimate. Existing speed, freshness and prediction bounds are retained. A regression reproduces the previous failure and covers stationary sightings, movement, mode changes, implausible jumps and insufficient history.

The final corrected shortage run completed all seven native assertions:

  • HQ automatically authorized the drop from native sightings and delivered radio reports at 20:01:23.
  • All eight original passengers jumped at two-second intervals, boarded their parachutes, and completed descent without damage. Both original squads were released by 20:02:52 and received HQ search assignments for the carried target.
  • Post-drop cover became active with the original aircraft and aircrew retained.
  • The same helicopter returned to the airfield, serviced, boarded another eight passengers and departed at 20:06:46. The separate cargo helicopter was waiting at the airport.

The runner recorded smoke-completed, confirmed cleanup and verified that source and external dependencies remained unchanged throughout the run. The journal contains eight jumps, eight parachute boardings, eight completed descents, two landed teams and two completed passenger loads.

The generic native report still exits nonzero for existing dependency/resource errors: RHS/WCS localization GUIDs, prefab keywords and two inherited parachute material remaps referring to nonexistent source material names. The same errors were present in the initial controlled-drop run; there are no new engine errors or script/runtime failures in the final run. These warnings did not prevent boarding, descent or landing, but this headless test does not establish the canopy's visual appearance on multiplayer clients.

Scope

The repository checks and production airborne-policy tests passed. They cover confidence, persistent sightings, ground-force availability, artillery veto, cooldown, cover and invalid inputs. Native results establish local Workbench behavior; dedicated multiplayer replication and client-side canopy rendering still require a server playthrough.

Evidence: .local/analysis/parachutes-2026-09-27/.