Skip to content

Stabilization batch 16

Scope: existing Meadow pause restart/return confirmations (GAME-24), with the closing-transition clock/construction/ownership repair needed to complete those routes (GAME-23). No new menu design, settings/database content, later-stage migration, or game-over feature work.

Player baseline and fixture correction

Reuse the batch-15 Linux IL2CPP player with a fresh isolated profile. Enter Soldier → Meadow → Normal, pause, click Restart, then Main Menu. Both only highlight their existing controls; neither opens its already-authored confirmation page. Exact candidate/PID/window/focus guards protect inputs and screenshots. The bounded baseline exits 0 after deliberate termination.

A first Editor transition fixture pre-assigned AudioResources.Instance before activating the object. Its real Awake treats that as an existing singleton and destroys the fixture root. Its gate results are invalid. Stop that owned run, correct initialization order, and rerun unchanged production code. The stopped invalid Editor exits 139; its PID-specific 10000001-byte mono crash blob is archived outside Git at /tmp/tinychaos-batch16-invalid-fixture/. This is not a player crash or evidence for the reported Steam freeze.

Repair

  • Wire the existing GameMenuManager to the two existing pause confirmation Pages. Retarget both nested Restart controls, Main Menu, and the two No buttons, preserving object/component IDs and RuntimeOnly listener state. The existing Yes methods PlayAgain/QuitArena are restored with their original no-argument signatures.
  • Showing a confirmation preserves the paused root and rejects duplicate pushes. No/Back returns to that root. Yes starts one guarded transition, removes the current pages explicitly, and ignores additional Back/Yes requests while leaving.
  • Construct the entire closing sequence before playback: borders at time 0, doors at 0.5 seconds, then the existing completion padding. The sequence and overlay fade use independent time; completion waits on the actual sequence rather than scaled delays.
  • Opening and closing keep local sequence ownership. Replacing a transition kills its old sequence; an older coroutine may not hide the new overlay or invoke its exit callback. Project DOTween settings have defaultRecyclable 0; sequence identity is preserved in this workflow.

The other scene/button migrations remain open under GAME-24. Restoring a legacy method name does not certify its unmigrated game-over/later-stage callers.

Focused checks

Add the Editor-only partial runner TransitionChecks.cs and its new metadata; run RunBatch16 with the matching Editor directly, without -quit. The first three groups inspect/import actual Meadow bindings and invoke the preview's actual confirmation open/cancel events, with animation elements temporarily cleared and Yes suppressed through the production transition guard. Preview changes are not saved. They validate dispatch/stack/time ownership, not suppressed scene loads or visual animation.

An empty Play Mode fixture checks actual closing coroutines at normal time, paused time, and paused takeover from opening. Null audio clips and an inactive in-memory session avoid SDK/save initialization. Endpoints, overlay visibility, payload, unchanged time scale, and one completion callback are checked. Restore the temporary static/service/time/background state and destroy fixtures afterward.

Check group Corrected original Repaired
Existing confirmation Page references Fail Pass
Seven route targets and void methods Fail Pass
Imported open/cancel, duplicate-open guard, guarded Yes dispatch Fail Pass
Normal closing control Pass Pass
Paused closing completion Fail: timeout Pass
Paused closing takes ownership from opening Fail: timeout Pass
Total / terminal Editor exit 1/6 / 1 6/6 / 0

The normal Editor control does not reproduce the locked-sequence warning and is not claimed to do so; the actual baseline player records that separate warning. The paused cases establish the clock problem, and the repaired overlap case also verifies that the older opening coroutine cannot hide the closing gate. Existing Version Control configuration/shutdown and Localization Editor toolbar exceptions remain tooling limitations, separate from assertions. Raw logs are outside Git under /tmp/tinychaos-batch16*; use the corrected baseline, not the invalid first fixture, for before/after results.

Player verification

Unity 6000.2.8f1 builds StandaloneLinux64 IL2CPP successfully; CLI/Editor terminal exit 0. UTC provenance on 2026-10-24: 16:13:36.622 → 16:20:01.488. Source revision 5347e4600bb897ca1c9fa8cb80cb095f6ee0ce0a, dirty. Artifact /tmp/tinychaos-batch16-linux/TinyChaos.x86_64; GameAssembly SHA-256 21ba39e2018b4f0848fc4c7a114f85f5f5911566ca168cacf080a6cd48adc15a.

Use fresh child profile /tmp/tinychaos-batch16-after-profile and the temporary development-only Steam app-ID file. Every input and screenshot checks the exact candidate/PID/window/1280×720/focus. Focus sampling records 439/441 candidate-focused samples; the first two have no active PID before window creation, and all subsequent samples are focused. No debugger interrupts this player probe. Screenshots, input, focus, logs, and provenance stay outside Git under /tmp/tinychaos-batch16*.

Actual player check Result
Pause → Restart Existing RESTART confirmation appears, with Yes and No.
Restart No Returns to the pause root; HUD timer stays at 00:03 and combat remains paused.
Pause → Main Menu → No Existing BACK TO MAIN MENU confirmation appears; No returns to the paused root.
Restart Yes Exactly one Playing again marker at 16:22:13.951 UTC, followed by the second Arena started marker at 16:22:15.740. Meadow renders active again with full health, restarted timer, enemies, and shots.
First Main Menu Yes Quit marker at 16:22:23.771, then usable MainMenu initialized at 16:22:25.681.
Enter another run from that returned menu Existing Play/character/stage route works; third Arena started marker at 16:23:13.851.
Main Menu confirmation → Escape Returns to the pause root; visible HUD remains at 00:03.
Second Main Menu Yes Second quit marker at 16:23:24.191, third usable MainMenu initialized at 16:23:26.061.
MainMenu Escape → Escape after second return Existing application-exit confirmation cancels back to the visible menu.

Totals: three arena starts (including one retry), one retry marker, two arena-return markers, three menu initializations. The former locked-sequence warnings fall from two in the actual baseline to zero throughout these routes. No missing-script warnings, NullReferenceExceptions, or Steam-unavailable game-over exceptions occur. The existing Discord constructor InternalError appears once per menu load (three); NET-02 stays open. No boss is cleared or score submission performed. Death/game-over is not exercised, so CONTENT-04 remains unresolved.

Preservation and next work

Review package JSON after completed build exit and restore only the inserted Linux toolchain entry to exact pre-run bytes. Remove only the generated Addressables Linux/linker metadata. The Editor runs alter only four normal-profile engine session preference keys; compare the XML entries and restore their pre-run byte backup after Editor exit. Both standalone probes use fresh child profiles; the final normal profile matches its pre-run paths/hashes. No real save/config is changed.

Of 835 snapshotted project paths, only Meadow and the two intended production controllers differ; all other 832 preserve pre-run bytes. The new Editor-only check file and .meta are intentional additions. Production/scene CRLF, existing IDs/GUIDs, uncertain audio deletion, Plastic evidence, and the nonempty 655360-byte Git index lock are preserved. The owned invalid-fixture crash blob is moved outside the repository, not treated as an unrelated user file. No commit/push is attempted.

Both player launchers finish with exit 0 after deliberate SIGTERM. The corrected original Editor exits 1 and repaired Editor exits 0; the invalid first fixture is recorded separately above. No Editor/candidate remains. The canonical Unity skill captures singleton initialization and transition ownership lessons, passes validation, and remains the installed skill's symlink source.

GAME-23 is repaired and transition/player-verified on Linux. GAME-24 is partially resolved: pause, these confirmations, one retry, and repeated arena return work for Soldier/Meadow/Normal. Settings/Database, keyboard/gamepad focus, game-over menu events, other stages/characters/difficulties, co-op, and full runs remain acceptance work. Next prioritize CONTENT-04's confirmed Steam-unavailable game-over blocker, then finish the remaining menu/content migrations. Windows/Steam freeze acceptance and full stabilization are unfinished; no features are added.