Fix low-terrain startup and extraction placement; record Workshop 0.0.121
continuous-integration/drone/push Build is passing

This commit is contained in:
2026-10-25 14:01:49 +01:00
parent 3768ce7ed8
commit 6397fe89b6
18 changed files with 211 additions and 38 deletions
@@ -0,0 +1,72 @@
# Small-terrain survey corrections — 25 October 2026
The reported failure contains 48,000 failed checks, including 5,796 road
proximity refusals and seven primary-aircraft-clearance refusals. No navigation
failure is listed. It identifies exhaustion of the extraction survey, not proof
that the terrain has no usable helicopter landing area.
A second screenshot failed on the prison with 34,381 checks rejected by the
hard-coded minimum elevation. The water query used the candidate's placeholder
height rather than the sampled terrain height. Native API documentation says
`TryGetWaterSurface` tests whether the supplied point is submerged; the simplified
query takes the same world/point inputs.
The site grid now checks finite terrain height and water at each actual sampled
surface point, accepting dry low or negative terrain. The shared `DryGround`
helper samples without the 10 cm spawn lift, so shallow water stays excluded.
Site creation, character spawn footprints, primary/secondary aircraft pads and
mortar setup use this check instead of fixed world-height cutoffs.
The common site survey applied the camp's 12 m road exclusion and 0.6 m flatness
limit before the extraction-specific 0.8 m survey. Extraction now permits clear
roadside/paved ground and uses the landing survey's flatness limit. Camps and
guard footprints keep their existing constraints. The aircraft checks now use
centre terrain height, matching `ERR_SiteService` pickup registration, instead
of the camp grid's lowest sampled height.
Passed focused production-body tests:
```
python3 tests/test_crash_start.py
python3 tests/test_generated_sites.py
python3 tests/test_terrain_sites.py
python3 tests/test_rescue_landing.py
python3 tests/test_terrain_airfields.py
python3 tests/test_placement_diagnostics.py
```
These cover camp/extraction road separation, a 0.7 m height-range candidate
accepted only for extraction, 0.9 m refusal, blocked pad/guard refusal, centre
height passed to aircraft checks, preserved camp floor, navigation and fleet
refusals, finite scheduling and diagnostics. Added tests execute the production
dry-ground helper and clearance grid for dry heights 0.5, 0 and -25 m, submerged
terrain at positive and negative elevations, 5 cm shallow water, a water patch
between the former nine sample points, non-finite terrain height, slope and
physical obstruction. Startup consumers are checked for the shared gate.
The full repository check run passed through the terrain/placement coverage,
then stopped on a stale objective-copy assertion expecting the old generic
startup message. That assertion now checks the actual reason and absence of a
chat-command instruction. Rerunning that check and the remaining 88 checks
completed successfully. No production source changed during this continuation.
Both isolated native attempts compiled the Game module with no script errors, then
failed Steam platform initialization before loading the world. The retained
log excerpt is compilation evidence only; **no native fixture assertions or
map-specific startup success are claimed**. Full attempted-run inputs and logs
are at `/tmp/erri-small-terrain-placement-run-Oct25A1` and
`/tmp/erri-small-terrain-placement-run-Oct25B1` (final source bytes).
The first runner timed out with one orphaned Wine device helper. Follow-up cleanup
verified its exact private prefix, process identity and launch time, stopped
only that helper, and confirmed the prefix idle; see `cleanup-followup.json`.
The final compile attempt required the same verified cleanup; its idle check
also passed (`cleanup-final-followup.json`).
Reproduce the native attempt with an available Steam session and an unused suffix:
```
python3 docs/evidence/small-terrain-placement-2026-10-24/isolated-runner.py Oct25Next
```
The screenshots came from another player; the reported terrain is unidentified. These corrections remove
verified mismatches; they do not guarantee every terrain fits the required fleet.
@@ -0,0 +1,6 @@
{
"initial_runner_result": "cleanup-failed",
"followup_idle_verified": true,
"signalled_process": 1703783,
"proof": "exact owned prefix, winedevice identity, same UID and launch-time window; pidfd-scoped termination"
}
@@ -0,0 +1,6 @@
{
"initial_runner_result": "cleanup-failed",
"followup_idle_verified": true,
"signalled_process": 1629980,
"proof": "exact owned prefix, winedevice identity, same UID and launch-time window; pidfd-scoped SIGKILL after SIGTERM did not stop the helper"
}
@@ -0,0 +1,4 @@
13:41:03.022 SCRIPT : Module: Game; loaded 6786x files; 14050x classes; used 43576K of static memory; defines: "ENF_WB,WORKBENCH,PLATFORM_WINDOWS,ENABLE_DIAG,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE,ENABLE_BASE_DESTRUCTION,BUDGET_OPTIMIZATION_CHECKS,SHOW_DISCLAIMER,DEBUG,RESPAWN_TIMER_COMPONENT_DEBUG,GAME_MODE_DEBUG,DEBUG_CONFIGURABLE_DIALOGS,DISABLE_WEAPON_SWITCHING,SCRIPTED_AIM_MODIFIER_DEBUG,WCS_DEFINES_ARMAMENTS,WCS_DEFINES_SPACECORE"; CRC32: 0ac67b79
13:41:03.084 PROFILING : Compiling Game scripts took: 2574.635400 ms
13:41:03.147 PLATFORM (E): Steamworks: SteamAPI_Init failed. Is Steam running?
13:41:03.147 PLATFORM (E): Could not initialize platform services.
@@ -0,0 +1,9 @@
{
"addons/core/Scripts/Game/ERR/00_Core/ERR_Actors.c": "7258b838f8365e4fa575c4f2ccc8532e22a33946405ebb490120534d5ca65607",
"addons/core/Scripts/Game/ERR/00_Core/ERR_AirfieldPlacement.c": "0601d8da570e1f63e43ea7df451d0e997872e4e163669fd8ad37bedd59de7b9b",
"addons/core/Scripts/Game/ERR/00_Core/ERR_GeneratedSites.c": "45bfeec63720fa1019f54d0e2ac21f3bbc40616d0693d94a94e0980dcae5744b",
"addons/core/Scripts/Game/ERR/00_Core/ERR_SiteService.c": "db95d3caac9bd658a633ac7a69ebe6f1d0c093673c79cc6ad9b122360d773a16",
"addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnPlacement.c": "fc5b61f1877aeaee75fbfd6aed3cd0b4c5277ae8543bc38a0c09836353d54b27",
"addons/core/Scripts/Game/ERR/00_Core/ERR_TerrainSites.c": "109f8ae55f67a79343cae05f103f6ee74679c63db6081c2b73a423bc70b0c3ae",
"addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSystem.c": "01bae0bab685e9f0c86c3a8939d18ce6f20dc0b8c1a389d179d91e93008c6957"
}