Skip to content

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.