Skip to content

Stabilization batch 12

Scope: GAME-13's observed logo-skip startup stall. Change SplashUIController and extend the existing Editor-only coroutine checks. No feature, scene/asset, save, dependency, input-mapping, or graphics-policy change.

Confirmed cause and repair

The logo sequence yielded a child Coroutine handle. SkipCurrentLogo stopped that child, leaving the parent waiting rather than reaching its completion flag and ready screen. Real Play Mode reproduces this during fade-in, display, and fade-out, as well as repeated/multiple skip requests. The normal sequence completes.

The parent now yields the logo iterator directly. Each phase uses a short frame-by-frame wait that retains scaled-time timing and exits when the existing skip flag is set. Skip still kills the current visual tween and hides its image, but the child exits normally so the parent can advance. The obsolete child handle is removed. Startup-task gating and the existing ready/menu transition remain in place; no timeout bypass or dependency-ready claim is introduced.

Controlled regression evidence

RunBatch12 enters an empty Play Mode scene, creates two temporary logo/UI fixtures, and invokes the actual production sequence/skip methods. It does not initialize real game services, saves, scenes, or online integrations. Background/player-loop updates remain enabled for the probe. The final comparison uses a fixed 1/60-second capture step only in this correctness fixture; time scale, capture delta, and background policy are restored. Those timings are not a performance benchmark.

Launch the matching Editor directly without -quit; the asynchronous runner owns exit:

/home/freightpx/Unity/Hub/Editor/6000.2.8f1/Editor/Unity \
  -batchmode -nographics \
  -projectPath '/mnt/work/Unity Project/Tiny-Chaos' \
  -buildTarget Linux64 \
  -executeMethod TinyChaos.EditorTools.StabilizationChecks.RunBatch12 \
  -logFile /tmp/tinychaos-batch12-final-after.log
Case Original Repaired
Normal two-logo sequence; startup-task gate and ready screen Pass Pass
Skip during fade-in Parent remains waiting Pass
Skip during display, after fade-in Parent remains waiting Pass
Skip during fade-out Parent remains waiting Pass
Repeated request for the same logo Parent remains waiting Pass
Skip both logos in order Parent remains waiting at first skip Pass
Total / Editor exit 1/6, exit 1 6/6, exit 0

The fixture verifies immediate hiding, bounded parent advancement, remaining-logo progression, startup-task gating, and final readiness. Stimulus logs identify opacity/time/frame; the display case is explicitly beyond fade-in. Initial checks reproduced the failure; one repeat's normal control timed out under variable headless clock progress, so a controlled capture step was added before the final same-harness comparison. Phase controls were tightened and both original/repaired sources rerun. Final raw logs remain outside Git at /tmp/tinychaos-batch12-final-before.log and /tmp/tinychaos-batch12-final-after.log.

Player verification

The Linux IL2CPP build succeeded with terminal exit 0. Provenance records Unity 6000.2.8f1, StandaloneLinux64, revision 5347e4600bb897ca1c9fa8cb80cb095f6ee0ce0a, dirty. Build UTC start/end on 2026-10-24: 08:41:13.522 / 08:49:29.837. Artifact /tmp/tinychaos-batch12-linux/TinyChaos.x86_64; GameAssembly SHA-256 af25a255299676d9fe1ffaab5f79a20d0adeddb3fdd8a52fb7132fde4f1fee8f.

Two separate fresh/offline profiles were created under /tmp/tinychaos-batch12-normal-profile and ...-skip-profile. The temporary development-only Steam app-ID file prevented launching an installed Steam copy; it must not ship. A bounded temporary X11 driver verified candidate executable, PID, window ownership, active focus, and dimensions before input. The skip control sent 37 early Space pulses, stopping when startup/skip markers appeared, rather than assuming input timing. Both controls then sent one ready-screen Space press, captured the visible menu, and deliberately stopped the candidate.

Actual player result, UTC Normal control Controlled skip
Logo sequence started 08:50:04.828 08:50:22.396
Skip marker None 08:50:22.524, before all-tasks-complete at 08:50:22.526
Logo sequence completed 08:50:08.176 08:50:22.752
Logo interval 3.348 seconds 0.356 seconds; 0.228 seconds after skip
Focus samples during logo interval 7/7 focused 1/1 focused; each injected input also independently guarded
Menu initialization 08:50:11.852 08:50:26.394
Visible menu / terminal driver result Pass / exit 0 Pass / exit 0

The runtime skip marker confirms the affected branch actually executed. Unlike batch 11's 88.578-second incomplete skip interval, this candidate completes the logo/task/ready/menu path. Raw logs, screenshots, input records, focus samples, provenance, and sanitized summary stay outside Git under /tmp/tinychaos-batch12*.

Each launch still logs the existing Discord constructor InternalError (NET-02). The normal control also reproduces the changelog HTTP 404 (CONTENT-09); its absence before stopping the shorter skip run does not resolve that feed. No missing-script warnings or other exceptions appear in these bounded launches. These are startup passes, not complete runs or Windows/Steam equivalence. The owner's reported freeze remains open pending affected-build evidence; other dependency-failure recovery paths under GAME-13 remain unverified.

Preservation and next work

After the Editor/build ended, review and restore only the automatic Linux toolchain insertion and generated Addressables linker/Linux metadata. TimeManager already matches its pre-run bytes; no conversion persisted in this Play Mode batch. All 57 non-scope paths in the 59-path snapshot, including every scene, retain exact pre-run bytes. The normal profile held only Unity's prefs file before and after; its hash changed during the Editor/Play Mode work. Its keys are engine session/cloud/toolchain/quality/addressables preferences, with no game save/config files present. Only a before-hash was captured, so an exact value comparison/restoration is unavailable; retain the current file rather than overwriting unknown settings. The two actual player profiles remain isolated. This is an engine-preference write, not a claim that the whole normal profile stayed unchanged. Current preference bytes and a sanitized audit are backed up under /tmp/tinychaos-batch12-*; the workflow now requires before-bytes for future Play Mode checks. Unknown audio deletion, Plastic corruption evidence, and the nonempty Git lock remain preserved. No commit/push was attempted and no Editor/candidate remains running.

The personal Unity skill records cooperative coroutine cancellation and the distinction between a deterministic correctness clock and real player timing. Next acceptance work should enter character/stage selection and an actual arena run, while retaining settings-value checks, optional Discord failure/cleanup, startup dependency recovery, save compatibility, and Windows/Steam freeze verification. No feature work was included; stabilization remains unfinished.