Stabilization batch 10¶
Scope: GAME-19's missing legacy menu components and incompatible settings-tab data. Restore existing behavior; no feature or production C# change. The repair changes five scenes and extends the existing Editor-only checks.
Identity and migration evidence¶
Git parent c38c545a^ identifies GUID 893f1b2a15fc1f149926ef26a7c07594 as the former Panel.cs, with the same fields and enum ordinals as current GamePanel. The reorganization commit c38c545a (2025-12-29) replaced its metadata identity. Restore the 44 affected scene components to current GamePanel GUID 490c4f1e9d0dd0548a97d9ebba30ab4c, preserving their IDs and fields.
The same history identifies GUID 31badb1f15bdf034ba16cd5d6b3ca9b5 as the old TabsManager. Its three parallel arrays became the current tabs list. Rebinding its script alone would lose the tab data; migrate each matching panel/button/first-selection tuple to the current representation and convert its button calls from OpenTab(GameObject) to existing OpenTab(int).
| Scene | Panel bindings | Tab managers migrated | Tab button calls migrated |
|---|---|---|---|
| Arena Stage 1 | 8 | 0 | 0 |
| Arena Stage 2 | 12 | 1 | 3 |
| Arena Stage 3 | 12 | 1 | 3 |
| Experimental | 8 | 1 | 3 |
| Tutorial | 4 | 1 | 3 |
Tutorial's three OpenPanel arguments also change from removed Panel to current GamePanel. All scene object/component IDs, panel identities, data references, tab ordering, source RuntimeOnly listener states, and original line endings are preserved. No .meta GUID is replaced. Experimental's repair does not enable or complete that prototype.
GUID 30649d3a9faa99c48a7b1166b86bf2a0, also on TabsManager-named objects, resolves to the installed UGUI HorizontalLayoutGroup metadata. It is valid package content and was left untouched. Absence from Assets alone is not proof of a missing script.
Regression checks¶
Run the installed Unity CLI with -executeMethod TinyChaos.EditorTools.StabilizationChecks.RunBatch10, following the CLI workflow. The final same-harness comparison is 0/11 before, 11/11 after; baseline CLI exit 6 wraps Editor exit 1, repaired CLI exit 0.
Five groups import all 44 panels and check count/type/identity; four groups import the migrated tabs and invoke all 12 real button events, checking active panel, inactive siblings, index, and selected-button sprite. The remaining groups call Tutorial's actual pause/resume methods and verify its three navigation argument types. Preview-only listener state and EventSystem registry substitutions are restored without saving; time scale is restored in finally. No saves or online services are initialized by these checks.
The first after-run was 5/11 because the preview fixture tried to select an unregistered EventSystem and incorrectly assumed Arena Stage 1 used a Mainmenu enum panel. These were harness errors, not further player defect evidence. After correcting the fixture, the original scene baseline was rerun and the exact preserved migration reapplied for the 0/11 → 11/11 comparison. Raw logs are /tmp/tinychaos-batch10-baseline.log and /tmp/tinychaos-batch10-verified.log; earlier diagnostic logs remain temporary.
Linux player verification¶
Build /tmp/tinychaos-batch10-linux/TinyChaos.x86_64 succeeded with terminal exit 0. Provenance records Unity 6000.2.8f1, StandaloneLinux64, committed revision 5347e4600bb897ca1c9fa8cb80cb095f6ee0ce0a, dirty. Build UTC start/end: 06:28:57.496 / 06:32:16.720, 2026-10-24. Native GameAssembly SHA-256 remains c9990b14d8445504f87d9808d0b603427248c94625fc145f0dd2c1b9fcbbd957; this repair changes scene data rather than production C#.
The windowed player used fresh child configuration/cache roots under /tmp/tinychaos-batch10-profile, the temporary local development Steam app-ID file, and the existing executable/PID/window/focus-checked X11 helper. No Steam authentication or normal-profile writes occurred. Screenshots, inputs, focus data, provenance, logs, and sanitized summary remain under /tmp/tinychaos-batch10*, outside Git.
| Player check | Result |
|---|---|
| Cold startup/menu | Usable initial menu; logo interval 3.350 seconds, 7/7 focused samples. This does not resolve the reported Steam freeze. |
| Tutorial entry | Existing button loads Tutorial; zero missing-script warnings versus five in batch 09. |
| Pause | Escape at 06:33:03.358 opens the visible pause menu without the prior ShowSettings exception. |
| Settings/tab navigation | Settings gear opens the settings panel. Sound, Graphic, and Other tabs display their respective contents through actual button clicks. No settings-value or Apply correctness claim is made; some controls look like serialized defaults and require initialization/value checks. |
| Back/resume/reopen | Backspace returns to pause; Escape resumes Tutorial; another Escape reopens pause. No exception occurs through this sequence. |
| Return confirmation | Main Menu opens the confirmation; Yes at 06:34:14.525 starts the return. |
| Usable returned menu | Fail, GAME-20. MainMenu reloads at 06:34:17.799 but never records a second activation/menu initialization before the 06:35:23.597 final focus sample. Screenshots show background without menu controls. Exceptions begin only after return. |
Return produces one TabsManager.OpenTab exception, one ShopButton.Start exception, and 18 MenuController.SetSelectedCoroutine exceptions. These are a separate scene-entry lifecycle blocker, not a recurrence of Tutorial's missing-component ShowSettings failure. The changelog HTTP 404 remains CONTENT-09. No complete tutorial, arena run, Windows/Steam acceptance, or freeze resolution is claimed.
Preservation and next repair¶
After review, restore only Unity's automatic Linux toolchain insertion, generated Addressables linker/Linux metadata, and TimeManager serialization-format conversion. TimeManager kept time scale 1 but upgraded the fixed-step representation; its exact pre-run bytes are restored. Of 58 snapshotted paths, only the five intended scenes and Editor runner differ. Existing MainMenu scene bytes and other settings/tooling bytes match the pre-run snapshot. Normal player-profile hashes match; unknown audio deletions, Plastic evidence, and nonempty Git lock remain preserved. No commit/push was attempted.
The candidate was deliberately stopped after the stalled return; launcher/player exit 0 is a terminal probe result, not a gameplay pass. No Editor/candidate remains. The reusable Unity skill now covers evidence-based component/data/event migration and package GUID resolution.
Next focused repair is GAME-20: make direct/return MainMenu entry complete its existing initialization and UI readiness, preserving the cold Bootloader flow. Sample/restore the paused time scale as appropriate and check repeat return, retry, settings values, and consecutive scene transitions. Arena navigation and full settings behavior remain acceptance work after the binding repair. Stop at the owner's one-batch check-in boundary with stabilization unfinished and feature ideas deferred.