Files
2026-10-24 03:03:10 +02:00

4.2 KiB

Small-terrain placement — validation, 24 October 2026

The isolated Workbench run compiled the production scripts and completed eight assertions with no script/runtime failures. Source and external dependency hashes remained unchanged, and cleanup of the private prefix was confirmed. The strict reporter exits 1 because of the same 13 pre-existing resource/world errors seen in earlier standard runs. The full native report and console are retained without filtering those errors.

The fixture runs on Everon. It bounds an independent survey to a 2 km square, finds actual dry, clear, navigable ground including its guard area, and injects an airport anchor 600 m away into that survey's airport list. The original 1,500 m rule rejects that candidate; the scaled 300 m rule accepts it through the real terrain, obstruction and navigation checks. It also verifies 1 km bounds admission and the airport-to-open-terrain fallback without resetting the global 48,000-attempt / 120-second limit. It does not spawn a prison at the test point. The final run also checks the native airport-distance rejection reason and its counted diagnostic summary. The retained log shows actual uneven-ground, road proximity and navigation-tile checks encountered during this fixture's survey.

This is not an end-to-end startup certification for an unidentified third-party small map, nor proof that an off-airport fleet can land on every island. A map still needs sufficient physical space and a working Soldiers navigation mesh. The original authored Everon path retains its default airport separation.

tests/test_terrain_sites.py executes production scheduler, navigation, sampling and survey methods against boundary doubles, covering:

  • Continued searching past the old 12,000 / 30-second ceiling, with unchanged per-tick yielding and a finite new ceiling.
  • Airport fallback on either time or attempt exhaustion, exactly once, clearing the pending airport candidate without resetting total search accounting.
  • Whole-terrain sampling after fallback, even with a nonempty airport list.
  • Small/large/rectangular bounds, scaled airport distance and the 1 km minimum.
  • Unchanged terrain, navigation, slope and primary/secondary aircraft refusal.
  • Optional-site omission without losing required objectives or radio clues.

tests/test_crash_start.py executes the shared survey, including preservation of its default 1,500 m airport rule and the explicit scaled override; both the prison and measured wreck footprints remain required. Generated-site regressions cover the original Everon search and authored fallback.

tests/test_placement_diagnostics.py executes the production rejection classifier and summary methods, checking water, elevation, uneven ground, obstruction, per-reason totals, site/attempt/time context, the 30-second reporting interval and resetting counters between sites. Counters measure failed/deferred checks, not unique rejected candidates.

Startup failure copy now embeds the replicated preparation error directly in the loading description instead of asking players to open chat. The description panel has more vertical room for wrapped diagnostics. The existing objective-copy and preparation-status tests pass, including exact reason propagation and removal of the /esc instruction. Native rendering of long failure text remains unverified.

The full tools/check.py suite passed after the placement/diagnostics changes; the objective-copy and preparation-status checks were also rerun after the final loading-screen copy/layout adjustment.

The first native attempt found an incompatible signature in the older ERR_NativeOptionalSiteProbe override. Its signature and super-call were updated; the retained final run compiles and exercises those final production bytes.

Reproduce with the installed dependencies and the existing private Workbench prefix:

python3 docs/evidence/small-terrain-placement-2026-10-24/isolated-runner.py next01
python3 tests/test_terrain_sites.py
python3 tests/test_generated_sites.py
python3 tests/test_crash_start.py
python3 tests/test_placement_diagnostics.py

Choose an unused alphanumeric suffix. The runner freezes inputs under /tmp and uses a disposable profile; no installed addon or live mission is modified.