Batch 36 · R1b shared scene and development launcher¶
Checkpoint update, 2026-10-26: implementation committed separately as 5358ab27 at the owner's request. Documentation/evidence is kept in a separate commit; no push. The validation account below records the pre-commit work. Follow the per-batch commit workflow.
2026-10-26, dev-0.9.0-bootloader, HEAD remains dd0a666b. One bounded integration after batch 35. Preserved its nine uncommitted implementation files and separate documentation changes. Added only four C# files, one scene and five metadata files. No existing runtime source, scene/prefab/SO, package or project setting differs from the captured pre-run bytes. No commit/push or player build.
Implemented scope and authoring boundary¶
The exact pre-edit manifest was RunSceneHost.cs and RunSceneBindings.cs under Game/GameSystem/Run, RunDevelopmentWindow.cs and RunSceneChecks.cs under External/Editor, and Assets/Scenes/Gameplay.unity, with their new metadata. No new package, folder hierarchy, development config asset, runtime test player, duplicate game loop, global bus or service locator was required.
The shared scene has three roots: the run host with its two runtime components, an orthographic camera initially disabled, and an empty environment root initially inactive. Serialized references point only to the scene's own camera/environment and runtime scripts. There are no player/enemy/pickup objects, stage SOs, HUD/audio/platform services or Bootloader/MainMenu dependency. Runtime scripts and the scene have no Editor-only dependency. Production scene lists/profiles/catalogs are unchanged; the new scene is not added to the production build list.
RunSceneBindings is an IRunParticipant. It validates required same-scene references, keeps the environment from owning the host/shared camera, rejects already-active startup state, and binds one context before activation. Release disables its camera/environment and clears that context. RunSceneHost composes those bindings first with any explicitly supplied participants, then uses the existing RunLifetime. It has no automatic Awake/Start entry. Activation requires the current RunId, so old callbacks cannot activate a replacement. Disable/destroy requests stop as a fallback; normal scene exits must await the explicit stop join before unloading owned resources. A pending participant is not claimed released just because its scene has unloaded.
The Editor-only window opens through Tiny Chaos → Development → Run Lifecycle Arena. Use Open shared scene, Enter Play Mode, then Start; Stop and Reset lifetime exercise the same host. It displays lifecycle state/run identity. It refuses to replace unsaved scene edits or operate with legacy/additional scenes loaded. Duplicate Start leaves the current running lifetime intact. Window subscriptions pair enable/disable. No development object or configuration is serialized into the production skeleton. Headless checks exercise the command helpers; native window layout/clicking and visual rendering were not manually inspected.
This verifies F0's declared scene/lifecycle surface, not a playable arena. Complete production run requests/catalogs, pool/clock policies, input/player assembly, movement/combat, real environment/encounters and rewards are added with their owning phases. Do not create unused placeholder services or claim those systems already use the new host.
Executed checks and excluded trial¶
Required Unity Editor 6000.2.8f1, direct batchmode/nographics entry TinyChaos.EditorTools.RunSceneChecks.RunBatch36, without -quit. The runner preserves clean scene setup, survives the Play Mode domain reload using scoped SessionState, uses a bounded watchdog, restores scene setup after exiting Play Mode and owns Editor exit.
The first trial exited1 during builder setup: Unity rejected additive creation with the initial untitled scene. It reported 0 passed / 1 setup failure, with no Play Mode/gameplay cases run. The builder was corrected to use a single clean scene after the unsaved-edit guard, restoring the prior scene setup at completion. This was a check-runner correction, not a game bug or a failing gameplay baseline.
Final authoritative process/session exits 0, summary 7 passed / 0 failed:
| Group | Actual result |
|---|---|
| S01 | PASS, imported preview: one host, both required references resolve, exactly two runtime script components, camera/environment inactive, empty environment and no automatic lifetime. |
| S02 | PASS, Play Mode: passive direct load stays idle; explicit and duplicate launcher Start produce one Running lifetime, then Stop releases the bindings. |
| S03 | PASS: missing host/camera and foreign-scene environment references reject preparation/activation; no partial camera activation; launcher rejects additional loaded scenes; restored valid bindings can start again. |
| S04 | PASS: held preparation stays pending after stop/disable, then cleans up once; stale RunId cannot activate a new lifetime; actual scene replacement cancels the old host and its late completion cannot affect the fresh host. |
| S05 | PASS: three fresh lifetimes have unique IDs, shared stop joins, and no retained active/prepared bindings. |
| S06 | PASS: real launcher Reset replaces the identity; two additional actual scene reload/start/stop cycles return to clean bindings and start again. |
| S07 | PASS: new scene absent from production build settings; recursive AssetDatabase dependencies exclude Editor, Resources, Recovery and legacy bootstrap/menu content; no development environment content. |
No unexpected exception/compiler-error marker was found in the final log. Compilation retains the existing CS8785 AttributeBasedFieldGenerator warning category (one emitted occurrence) and unchanged StabilizationChecks.cs CS0252 warning category (three emitted occurrences). Do not call this warning-free or infer Windows/IL2CPP, physical controllers, a full playthrough or working gameplay from these cases. R1a core files are byte-preserved; its unchanged prior 9/9 evidence is reused.
Raw diagnostics stay private and temporary: /tmp/tinychaos-batch36-editor.log for the excluded setup trial and /tmp/tinychaos-batch36-editor-final.log for the passing run, with matching redirected stdout files. They are not committed logs. Retained check code reproduces the scenarios; temporary path existence is not a portable result archive.
Preservation and implementation manifest¶
Pre-run backup: /tmp/tinychaos-batch36-preserve-2ad3a8daf5/, with exact bytes/hashes for 2,828 existing project source/data/settings/package files (including all nine batch-35 additions), 8,160 inspected Unity/profile files and existing documentation hashes. All 2,828 project files and 608 prior gameplay pins match afterward. Audio deletions, generated Linux metadata, local recovery data and Git HEAD are preserved.
Unity generated the Linux toolchain dependency in manifest/lock; generated copies were retained privately and exact pre-run bytes restored. Two shared engine-preference values changed and were restored. Play Mode also changed four Unity session/count keys in the normal Tiny Chaos prefs file; only those engine-key differences were present, and captured bytes were restored. The one existing normal game-profile file now matches exactly; no game save/config writer was called by this fixture. Five other external engine bookkeeping files (logs, metrics database and license) changed and remain as engine state; no new external profile file was observed. Do not claim the entire Unity/profile tree was unchanged.
Editor-generated new scene/metadata empty-field trailing spaces were normalized after tests; parsed YAML/FileID/GUID equality was checked, with no existing asset reformatting. Five new GUIDs are unique across Assets. The final implementation manifest is:
| Added implementation path | Kind | SHA-256 |
|---|---|---|
| Assets/Scenes/Gameplay.unity | shared scene | 77e0db2733eae0500e310595f4058103b601a9a59839a3027daa4789c3d6a1da |
| Assets/Scenes/Gameplay.unity.meta | metadata | f7d845b89557077bb3e87d9022f839a36ade12639534b84ab13e4fcca20f0f02 |
| Assets/Script/External/Editor/RunDevelopmentWindow.cs | Editor tooling/checks | 8c83fd8d50b3a70d08410c9c81b00f54cb657c2ad95c020dc1f093300bd3d84b |
| Assets/Script/External/Editor/RunDevelopmentWindow.cs.meta | metadata | 844b2b8ccad76c02e0e8df6982e9d818ca9409143ddd572dc40f2c9a01272101 |
| Assets/Script/External/Editor/RunSceneChecks.cs | Editor tooling/checks | e8a2e3719868eb39ef7829bae42bf01a926e847dbf9ee166b1b35f49a0ee10d4 |
| Assets/Script/External/Editor/RunSceneChecks.cs.meta | metadata | fb0fba45ade5128705959307eb52e6bc26210927b40a65d0f3b8391517289a54 |
| Assets/Script/Game/GameSystem/Run/RunSceneBindings.cs | runtime scene adapter | 43fb3aa8abee82ee27e4e668f2daafb85551063b0d49f162aa1ec493ced1eb85 |
| Assets/Script/Game/GameSystem/Run/RunSceneBindings.cs.meta | metadata | 5995f28edad3bfbeca532a0147c22768e18d33e798520c2d0a03af4bec3f1170 |
| Assets/Script/Game/GameSystem/Run/RunSceneHost.cs | runtime scene adapter | bf25135a38b419f32550277ee38fa6686f1c42f6c8893878b0dd9b7026dd2e1d |
| Assets/Script/Game/GameSystem/Run/RunSceneHost.cs.meta | metadata | 2076f2eb87e2b1387c24649eb2dc3004dc9283cc2f7867ccd7dfcb8b845793f8 |
Final static checks pass: all 2,828 preexisting project files (including batch 35) and 608 pins preserved; new scene references and five unique metadata GUIDs resolve; all 231 previous inventory rows and 43 previous gate rows remain byte-preserved prefixes. Path coverage is 235 scripts, with all 27 later workstream follow-ups still open. All 53 issue IDs route once; 677 local documentation links and whitespace pass. Temporary isolated Git indexes verify separate implementation and documentation/evidence groups without staging in the real index or advancing HEAD. Commit batch 35 before batch 36, or combine their 19 files into an implementation-only checkpoint; keep documentation separate.
Next and commit boundary¶
Proceed to the first bounded R2 player/roster/device/Input System slice. Review the compatible package version, exact file/settings changes and stable identity/schema implications before installing it; preserve current production input until its consumers and profiles migrate. P1 accepts keyboard or one gamepad; P2–P4 require distinct gamepads. No implicit device takeover, second keyboard player, remap loss or guessed reward/disconnect policy. Keep minimum adapters with their owner and retain the existing phase gates. No Tutorial, GAME-01 or unrelated public feature work resumes.
The implementation addition set is ten files, separate from this documentation/inventory/gate/status evidence. Batch 35's nine additions remain their own reviewed group. No commit or push is implied; the owner's separate documentation/implementation commit rule remains in force.