# Modern Runtime Linux graphical continuation ## Current checkpoint Slice L0 completed at `66f114b258c0c37b51a7c0e04ca0d6441f4b1699`. The same `AcDream.App` now builds and publishes for `linux-x64`; there is no Linux gameplay or renderer fork. Canonical seams: - `AcDream.Runtime.Platform.ApplicationPathSet` owns XDG/Windows config, data, cache, plugin, screenshot, and diagnostic paths for graphical and headless hosts. - `AcDream.App.Platform.GraphicalHostPlatformServices` owns one startup OS, architecture, RID, native-dependency manifest, path set, and pacing factory. - `PlatformFramePacingWaiterFactory` selects the existing Windows high-resolution waitable timer or Linux `LinuxMonotonicFramePacingWaiter`. - Linux waiting uses absolute `CLOCK_MONOTONIC` + `clock_nanosleep(TIMER_ABSTIME)`, retries `EINTR`, does not busy-spin, and rejects use after disposal. - Windows legacy `%LOCALAPPDATA%\acdream\settings.json` and `keybinds.json` are copied only when the new roaming destination is absent. - bundled plugins are read beside the binary; user plugins are read from the portable data root. A successful bundled ID wins; a failed load does not reserve the ID. Exact L0 evidence: - Windows: Runtime 415, Headless 67, UI 543, App 3,736 / 3 skips, complete Release 8,799 / 5 skips. - native Ubuntu/WSL: Runtime 415, Headless 67, UI 543, 14 L0 App tests. - exact framework-dependent `linux-x64` publish contains executable, managed closure, GLFW, OpenAL Soft, cimgui, shaders, and smoke plugin/manifest; direct `ldd` has no unresolved dependency. - closeout: `docs/research/2026-07-27-slice-l0-platform-services.md`. Rollback: ```text git revert 66f114b258c0c37b51a7c0e04ca0d6441f4b1699 ``` ## Next work — L1 Do not claim Linux graphical support merely from publish success. L1 must: 1. start the exact package under the available X11 and Wayland sessions; 2. capture OS/display/compositor/GPU/driver/OpenGL vendor, renderer, version, mandatory extensions, swap interval, refresh, DPI, and audio backend before renderer construction; 3. create the OpenGL 4.3 core context and reject missing bindless texture or shader draw parameters with one actionable report; 4. validate GLFW window/input callbacks, relative mouse/focus, framebuffer sizing, clipboard, and monitor facts; 5. initialize OpenAL fail-open exactly as current Windows behavior permits; 6. render a packaged smoke scene, capture a screenshot, and close with zero GL/OpenAL/window debt. Historical test-only issue: two installed-DAT App tests still hard-code `C:\Turbine\Asheron's Call`. They are not production blockers, but clean them before claiming the complete App test suite on a clean Linux runner.