Batch 46 · Native Linux config persistence verification¶
2026-10-26→27 Asia/Jakarta. Built source HEAD df212c83 on dev-0.9.0-bootloader, retaining implementation 248f4049. No implementation changes or new source files. This batch commits documentation/evidence only; no push. The normal game profile was not used.
Build identity¶
Unity 6000.2.8f1, revision c9992ac36c34, StandaloneLinux64 IL2CPP, Input System 1.17.0, Both handlers. The installed CLI's built-in build succeeds with exit0, UTC 2026-10-26 16:36:25.326 → 16:52:48.887 (983.561 seconds). Managed compilation, native conversion/compilation/linking and output generation complete. Existing regression evidence from batch 45 is reused; unchanged implementation did not require another Editor suite.
Command uses unity --non-interactive --no-banner build, explicit project path, --target StandaloneLinux64, output /tmp/tinychaos-batch46-linux/TinyChaos.x86_64, private build log, --no-tail --timeout 1800 --allow-dirty-build, and provenance /tmp/tinychaos-batch46-provenance.json. No version stamping or backend change. Provenance correctly records dirty source: the unresolved audio clip/meta deletion and existing Addressables Linux metadata were preserved. The candidate therefore includes that missing-audio state; it is not a clean release or a verified Steam source match.
| Artifact | SHA-256 |
|---|---|
| TinyChaos.x86_64 | aeaf13e291886fbd5a99b7dbd7c113b8ee13ed462a419a4d31a8ecbc3241ac70 |
| GameAssembly.so | 68533e2c730f187d8b551c85e9ad68e145a9163eb435fe6339f2a71c1309fb94 |
| UnityPlayer.so | 9bd4a36d1e5e35f1bae4e719bda4d321fdfbfc6b19026d830cb4cf9b8f61d97a |
The temporary artifact includes a development-only steam_appid.txt containing the App ID already used by SteamManager. It prevents relaunching a different library-installed executable and must not enter a depot. Actual candidate executable/PID/window ownership is checked. Steam is unavailable in these probes; no online/ownership/leaderboard validation is claimed. Known optional-service/generator warnings are separate from config assertions; ordinary passing config flows have no exception heading. Negative cases deliberately log InvalidDataException.
Isolation and actual cases¶
Each child receives explicit temporary XDG config/cache/data roots under /tmp/tinychaos-batch46-profiles/; HOME is unchanged. Actual generated config resolves beneath that root at config/unity3d/KatrGames/TinyChaos/TinyChaos/Main/offline/config.json. Synthetic variants copy only probe-generated data, never normal player data. Current data adds unknown root/nested/legacy-record extensions, an exact decimal and a valid custom P3 gamepad override. Legacy data removes inputBindings; future changes the actual inputSchemaVersion; invalid truncates JSON. The candidate code and its file owner are unmodified.
| Scoped case | Actual evidence | Termination / limit |
|---|---|---|
Fresh interactive fresh2 |
Reaches visible menu/Settings. Actual slider changes master volume 0.5 → 0.7309383. Saved value matches the visible thumb; a recovery file exactly matches pre-edit bytes. | Recorded quit request and natural process exit0. 422.901 seconds includes helper inspection/corrections, not a startup measurement. |
Existing-profile reload |
Same profile reopens with 0.7309383 visible in Settings. Startup and Settings opening preserve config bytes; no config-write begin marker. | Recorded quit request and natural exit0, 129.620 seconds including inspection/helper correction. |
Current/custom current-read |
Full supported config with custom binding/unknown data reports Loaded, completes AppInitiator startup/menu preload and remains byte-identical with zero config writes. | Controlled launcher stop after assertions, 3.832 seconds. No completed menu-interaction/edit check. |
Legacy legacy-read |
Old typed shape without inputBindings reports Loaded, completes startup/menu preload and remains byte-identical with zero config writes. Import is prepared without saving on load. | Controlled stop, 3.767 seconds. No native legacy-edit acceptance. |
Future future-read |
Reports Unsupported and InvalidDataException; config bytes unchanged, zero config writes, no startup-complete or menu-initialized marker. | Controlled stop, 3.216 seconds. Data-protection pass, not usable recovery UI. |
Corrupt invalid-read |
Reports Invalid and InvalidDataException; original truncated bytes unchanged, zero writes, startup not completed. | Controlled stop, 3.217 seconds. No automatic reset/recovery is claimed. |
The two interactive runs have the stronger visible/input/file/exit evidence. The four short probes stop at the declared data/startup boundary; AppInitiator completion/menu preload is not a usable-menu interaction pass. Native custom-remap/legacy edits remain open and retain their earlier disposable Editor evidence. Neither audible playback nor all languages/graphics paths were tested. Existing code still drives production gameplay through legacy input; no four-player/remap UI or Player/AbilityHolder migration was introduced.
Harness corrections and excluded evidence¶
The helper checks the exact candidate executable, one matching PID/window, input focus, active window and expected client geometry before input. Activation required a current nonzero X-server timestamp and actual input-focus checks; stale/zero activation requests were rejected. Only the owned test window was resized/activated. An initial fresh client was 1280×688; the harness normalized it to 1280×720. The saved initial dimensions and reported startup settlement are not certified as a graphics-policy pass. Existing-profile startup later reports 1280×720/settled=True. No source display fix was attempted.
Desktop/PIL crops showed clipped contents because their coordinate mapping did not match the X11 client. Direct capture of the owned client's buffer showed the correct full menu and is used for accepted screenshots. Earlier desktop crops are excluded. Background suspension and the startup prompt's fade made fixed wall-clock waits/early keypresses unreliable; these are helper/input-timing dispositions, not a GAME-01 reproduction or performance result.
The first fresh trial logs a quit and exit0 after 240.725 seconds, but lacks a complete guarded interaction trace and is excluded. This corrects the intermediate commentary that called it a timeout. The extra current UI trial loaded supported data and opened Settings/Other/Credits; its assumed slider click did not edit volume. Its later Sound-tab interaction was not completed before the owned 600-second deadline (600.355 seconds). It is excluded from native edit/quit evidence, and its config still matches the prepared bytes. The subsequent clean current-read probe establishes only the read-only scope above. No unresolved helper result is promoted into a product defect or a passing flow.
Accepted client captures: /tmp/tinychaos-batch46-fresh2-settings.png, fresh2-edited.png, reload-settings.png and the corresponding quit/menu captures. Initial desktop crops and other-tab/attempt captures remain separate. Raw logs, PIDs, focus samples, input records, profiles, terminal results, build provenance and artifact hashes stay private outside Git under /tmp/tinychaos-batch46-*. Focus samples do not cover every frame; elapsed probe time includes background/inspection time and is not freeze or frame-time evidence.
Preservation and remaining work¶
Capture /tmp/tinychaos-batch46-preserve-8c2de6eae4/ contains 7,743 pre-existing Assets/Packages/ProjectSettings/UserSettings files and 8,172 Unity/profile hashes with recoverable preferences. Every captured project file matches after cleanup. All 78 prior implementation paths match their latest manifests; the original selected baseline retains 604/608 matches with its four previously documented exceptions. No code/scene/metadata/catalog changes are committed. Inventory remains 258 scripts, legacy input consumers 23; their CSVs and immutable source baseline are unchanged.
Unity generated only the native Linux toolchain node in manifest/lock and new Addressables link.xml/meta. Reviewed generated copies were archived; exact captured package bytes restored and only those two new linker files removed. The pre-existing Addressables Linux.meta remains byte-identical, and unresolved audio deletions remain untouched. TimeManager/build lists/settings are unchanged. The normal game's one prefs file and shared Editor prefs are byte-unchanged, with no new normal game save/config. Four external licensing/package logs/files changed and six metrics/bookkeeping files appeared; those are retained, so the entire Unity profile tree is not claimed unchanged. No Editor or owned candidate remains running.
Six scoped NV gates append to 133 previous rows (139 total); all 27 workstream follow-ups stay open. All 53 findings remain routed once and 849 local documentation links resolve. Whitespace checks pass. No whole-game or Windows qualification, Steam-public-build equivalence, physical-controller evidence, recovery UI, stale-lock/retention policy or dedicated freeze fix is established.
Next add an explicit accepted-input preference command through ConfigSettingsOwner/SaveManager, including stale draft, failure/retry/cancel and unrelated pending scalar state. That bridge precedes setup/remap UI. Recovery feedback and native remap/legacy edits remain gates. Player assembly/movement/AbilityHolder, stages and broader content follow dependencies; Tutorial/GAME-01 remain deferred. This verification batch has no implementation commit; its documentation is kept separate from 248f4049.