Stabilization batch 14¶
Scope: GAME-22's arena preparation/start handoff. Restore existing gameplay activation and opening-gate behavior; no feature work, dependency upgrade, save-format change, or broad menu migration. Windows/Steam acceptance remains separate.
Runtime diagnosis before repair¶
Reuse the batch-13 Linux IL2CPP player with its matching full native symbols. A fresh isolated profile again reaches default Soldier → Meadow → Normal. Running the candidate as a debugger child permits read-only state inspection without changing system ptrace settings; a direct attach was rejected and produced no state evidence. Ignore Unity GC coordination signals only in this owned debugging session. Record debugger interruptions as probe effects, not frame-stall measurements.
The actual arena state is:
| Field group | Observed before repair |
|---|---|
| Reward, spawner, game-manager, character preparation | All four true |
| Game state | Paused true; rewarding false; game-over false |
| Run, spawner, gameplay timer-active flags | All three false |
| Corresponding timer values | All three 0.0 |
Thus preparation has completed, but the game never starts. This is stronger evidence than inferring pause from identical screenshots. No Unity time-scale API was called from the debugger; pause and timer fields were read directly. Raw evidence remains outside Git under /tmp/tinychaos-batch14*.
Repair and boundary¶
- GameManager hides startup UI and pauses before starting preparation.
- GameInitialization awaits reward reset, spawn/manager setup, and player setup, then yields the existing GameManager.OpenGate routine. Reward reset is now part of the awaited import rather than a detached coroutine.
- OpenGate configures the existing gameplay-menu manager, awaits resume, starts all three timers, opens the entry gate, and shows the HUD. It logs an arena-start marker.
- MenuController now owns a separate opening routine, restoring the historical opening sound/music, panel directions, eases, and stagger. Its complete DOTween timeline is constructed before playback, uses unscaled update, and never invokes the closing transition's scene-change callback. The existing closing routine and its GAME-23 warnings are outside this repair.
The old GameMenuManager waited for a ready-state key press before calling OpenGate. That input/readiness code was removed in the January menu refactor. The repair begins the prepared arena after the already-confirmed stage/difficulty choice; it does not introduce another ready screen or new controls.
Meadow's five gate object references resolve in the scene. A wider read-only check finds that Arena Stage 2, Arena Stage 3, and Experimental have no current MenuController and still serialize old GameMenuManager panel/gate fields. Their migration is unfinished; a first-stage pass cannot certify them. Gameplay back/pause routing also has separate source defects: an empty stack does not dispatch the root handler, and the gameplay root handler calls PopPage recursively. Track this coherent menu-migration follow-up under GAME-24.
Verification¶
Unity 6000.2.8f1 builds StandaloneLinux64 IL2CPP successfully; CLI and Editor terminal exit 0. Provenance UTC start/end on 2026-10-24: 09:35:02.874 / 09:43:37.744. Source revision 5347e4600bb897ca1c9fa8cb80cb095f6ee0ce0a, dirty. Artifact /tmp/tinychaos-batch14-linux/TinyChaos.x86_64; GameAssembly SHA-256 abdfde667ba101ab785171f166615ca26f435b725860794123c57d86cb3649bd, native build ID 0494076ab7f4d577945a471785904df80f4ffc3a. Existing CS8785/package/native diagnostic warnings are not a clean-warning claim. No new Editor fixture was added: the failing original player state and two rebuilt-player probes supply the behavioral evidence.
Use fresh child profiles /tmp/tinychaos-batch14-after-profile and /tmp/tinychaos-batch14b-after-profile, matching full native symbols, and the temporary development-only Steam app-ID file beside the artifact. Steam API authentication is unavailable. Exact executable/PID/window/1280×720/focus guards protect every input and screenshot. Both repaired probes reach the same route and emit one arena-start marker each.
| Actual rebuilt-player check | Result |
|---|---|
| Preparation/start handoff | All four preparation flags true; paused/rewarding/game-over false; all three timers active at 7.840611 seconds in the first probe. |
| Gate and scene ownership | Opening gate clears, HUD appears, arena remains active; opening does not invoke the exit callback or return to MainMenu. Two pre-entry closing-sequence warnings still belong to GAME-23. |
| Early gameplay | Enemies, shots, damage, drops, and increasing score are visible. D held 0.7s in the first probe; a second fresh probe captures paired images around A held 1.5s, showing leftward travel/camera displacement and combat. |
| Alive-player pause attempt | Second probe Escape at 09:47:24.434 UTC produces the empty-stack warning and no pause menu. Later read-only sample remains alive/not game-over, paused false, all timers active at 15.841794 seconds, score 8; last horizontal input is negative. GAME-24 remains open. Current speed/input are zero because sampling follows key release; they are not claimed as held-key measurements. |
| First longer probe | Reaches death/game-over at 34.060547 gameplay seconds; all timers correctly stop. GameOver then aborts on the Steam-unavailable nickname getter, leaving its panel off-screen. CONTENT-04 owns this reproduced integration blocker. |
| Focus/errors | First repaired run has 192/192 candidate-focused samples. Both repaired probes report zero missing-script warnings and zero NullReferenceExceptions. Each has the existing Discord constructor failure; only the longer probe reaches the Steam game-over exception. |
The first post-Escape read occurred after death and could not validate live pause. The second fresh probe specifically repeats the input before death, establishing the GAME-24 result above. A first attempt to inspect player Speed used the wrong generated field spelling and returned no value; the second probe uses the actual generated backing field. These are probe limitations, not game failures.
CONTENT-04's concrete path is GameManager.GameOver → Save.Nickname → SteamFriends.GetPersonaName, which throws InvalidOperationException: Steamworks is not initialized. before later result-panel animation, achievement/save completion, or leaderboard dispatch. No boss was cleared or score-post result marker recorded. The fresh-profile ID not detected counter warnings initialize missing dictionary entries in GameDataCount; those warnings alone are not evidence of counter loss or a new defect.
Preservation and next work¶
After the completed build, compare package JSON and restore only the added Linux toolchain entry to exact pre-run bytes. Remove only the newly generated Addressables Linux/linker metadata. Of 831 snapshotted project paths, only the three intended production source files differ; the other 828 retain pre-run bytes. Source CRLF is preserved. Normal-profile paths/hashes remain unchanged, including byte-backed engine preferences. Unknown audio deletion, Plastic evidence, and the nonempty 655360-byte Git index lock remain untouched. No commit/push was attempted.
The regular baseline launcher exits 0 after deliberate termination; the first debugger baseline is continued through SIGTERM and exits normally. Both repaired debugger candidates are deliberately killed after their bounded observations, then their debuggers/focus sampler exit; those are controlled diagnostic terminations, not clean gameplay quits. No Editor/candidate remains. The canonical Unity skill is updated with readiness/timer diagnosis and per-scene migration checks and passes its validator; the installed skill remains its symlink.
GAME-22's Meadow startup blocker is repaired and early-player verified. Next is GAME-24's live pause/menu lifecycle, followed by the remaining scene migration; CONTENT-04's Steam-unavailable game-over failure also needs repair. Reward/death/retry/return, complete runs, co-op, other characters/stages/difficulties, save round trips, and Windows/Steam freeze acceptance remain unfinished. The owner's uncertain Unity-upgrade boundary stays a lead, not a diagnosed engine regression. No features were added.