75 lines
4.2 KiB
Markdown
75 lines
4.2 KiB
Markdown
# 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](native/report.json)
|
|
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.
|