Files
EscapistsReintroduced/docs/evidence/small-terrain-placement-2026-10-24/README.md
T
2026-10-24 03:03:10 +02:00

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.