# 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.