Files
EscapistsReintroduced/docs/evidence/preparation-exit-2026-10-25/README.md
T
jakub 9233320fd1
continuous-integration/drone/push Build is passing
Allow leaving failed-start screens; record Workshop 0.0.122
2026-10-25 14:55:36 +01:00

50 lines
2.7 KiB
Markdown

# Failed-start exit — 25 October 2026
The full `python3 tools/check.py` suite passed. The new production-body test
executes failure-only eligibility, menu/dialog focus preservation, native pause
fallback, exact error text, Back routing, one local exit request, recovered/stale
mode guards and listener removal. Existing loading-overlay lifecycle checks pass.
The final isolated Workbench fixture completed **six native assertions**:
- The real failed-start menu was focused, with both buttons bound, the exact
error displayed and the native black loading placeholder hidden.
- Clicking the actual pause-button invoker opened the native pause menu with
focus and no black overlay, then returned to the failed round.
- Calling the production Back handler opened native pause again and restored
failure-menu focus after closing it.
- Clicking the actual Return-to-main-menu button caused native gameplay end.
The menu's input/button listeners and references were cleaned up within five
seconds of that click; the log also shows the main-menu world and welcome UI.
The fixture forces a preparation failure in its private source copy. It invokes
real button callbacks and the real Back handler; it does not claim physical
mouse/keyboard/controller input, a multiplayer disconnect or pixel-level layout
verification. Production code uses vanilla's local gameplay-end transition.
No mission-state, admission or server-command workaround is involved.
The strict native reporter exits 1: the raw log includes the intentional
preparation error, resource/world errors, and two `SCR_FilterCategory` constructor
errors while opening the main-menu UI. These are retained in
[the unfiltered report](native/report.json); the exit and cleanup assertions
completed afterward. The private prefix cleanup and unchanged source/dependency
hashes were verified. This is not a claim of an error-free engine run.
During development, native compilation caught an override parameter-name mismatch
(corrected to `tDelta`). The older generic startup-failure fixture reached the
interactive screen but failed an unrelated expected-faction/stock assertion.
The focused fixture then needed its intended startup error allowed by the
runner, and its cleanup observation adjusted for menu closure after game-end
notification. The final retained run exercises the current production bytes.
Reproduce with an unused alphanumeric suffix:
```
python3 tests/test_preparation_failure_menu.py
python3 tests/test_preparation_status.py
python3 docs/evidence/preparation-exit-2026-10-25/isolated-runner.py next01
```
The runner freezes production sources and injects `native-fixture.c` only into
that disposable copy. It uses a private profile/prefix and no live mission.