# Stabilization roadmap Stages are delivered separately. Each completed stage is tested, committed and pushed before work stops for confirmation. Editor and runtime UI redesign will use an Unreal Engine 5-inspired visual style; stage 1 does not redesign UI. ## Stage 1 — correctness and data safety Implemented: - `DrawRectOutline` keeps loop counters in a callee-saved register, not the volatile registers overwritten by `DrawPixel`. Nonpositive sizes draw nothing. - `TraceShotWall` traverses current map cells independently of rendering. Distances are 24.8 world units; closed doors, glass, portals and out-of-map cells block shots. Open doors do not. Corner-adjacent walls block diagonal seam shots. - Hitscan chooses the nearest live guard intersecting the forward billboard hitbox. Half-width is 16 world units times authored scale (zero scale means legacy 1.0), not a constant number of screen pixels. - `IsGameplayBlocked` centralizes gameplay gating. `UpdatePlayer` latches blocked ticks before processing cinematic state. AI, pickups and weapon timers freeze during active/pending cutscenes and room fades. END/skip and instant transitions cannot resume AI or fire stale input halfway through a tick. Death blocks player movement, turning and firing; lethal damage stops the remaining entity pass. - Packed entity metadata remains binary-compatible. Only `flags == 0` enables legacy texture-based archetypes; any nonzero flags explicitly encode the low type byte, including Prop. Health uses one byte: 1..255, zero = legacy 100 HP. The C++ setter clamps before narrowing, and the inspector exposes 1..255. - IDE source writes use a unique sibling temporary file, checked full write, flush, close and atomic replacement. Failure preserves disk contents and dirty buffer. Loading publishes a new document only after a complete valid text read. File switches and builds stop on failed autosave. Saves target the file actually opened, not a newly resolved fallback path. - Compiler output is drained even with the IDE hidden. Process startup uses the system command processor with quoting for project paths containing spaces. ### Verification Windows commands: ```cmd build.bat editor\build_editor.bat python tools\test_regressions.py ``` Results: editor **112/112**, ASM **148/148**. The suite also checks live x86/x64 preview IPC, DX11 pixel equality, cinematic trace equality and unchanged project assets. New tests exercise production gameplay and IDE procedures, including failed atomic replacement under a Windows sharing lock and hidden compiler output exceeding pipe capacity. Interactive UI playtesting remains separate. ## Remaining stages 2. Predictable simulation: fixed 60 Hz ticks, fractional movement, normalized input, complete collision shape, current-room restart/reset policy. Extend gameplay gating into explicit states and separate cinematic camera ownership. 3. Honest editor/gameplay: complete undo, keys/switches and supported interactions; UE5-inspired editor/runtime UI redesign. 4. Project lifecycle and validated, safe standalone export. 5. Measurements and targeted renderer/editor optimizations. 6. Finished multi-room demo game and release verification. 7. Data-driven extensions and subsequent rendering features. Stage 1 intentionally does not claim that all audit findings are fixed: restart semantics, fixed timing, collision/AI visibility, full undo and exporter safety remain assigned to subsequent stages. Existing map and texture assets are not migrated or rewritten.