# Modern Runtime Linux graphical continuation ## Current checkpoint Slice L0 completed at `66f114b258c0c37b51a7c0e04ca0d6441f4b1699`. Slice L1's implementation checkpoint landed at `11501d52cad942850d88f83490710faf1d5cdf28`. 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 ``` ## L1 implementation checkpoint Canonical seams: - `ACDREAM_DISPLAY_PROTOCOL=auto|x11|wayland` selects one immutable backend before `Window.Create`. - `GraphicalWindowBackendSelection` configures Silk's exact GLFW backend and makes the packaged GLFW 3.4 native library win over older system installs. - `GraphicalCapabilityRecord` captures platform, RID, display protocol, GL identity/extensions/limits, framebuffer, input/window, audio, and terminal ownership into one atomic report. - `GraphicalGlFunctionProbe` actively validates bindless texture, draw-parameters plus MDI, SSBO, timer query, sRGB/depth/stencil FBO, and persistent coherent buffer behavior before renderer construction. - Unsupported contexts exit with code 4 and a precise report. No legacy renderer or fabricated fallback is introduced. - Studio screenshot shutdown is deferred until the completed render frame; accepted and rejected startup paths both report zero terminal ownership. Evidence: - native Windows 11 + AMD Radeon RX 9070 XT: every active GL probe passes, OpenAL submits playback and disposes, the packaged smoke frame is intact, and terminal ownership is zero; - WSLg X11 and Wayland: packaged GLFW 3.4 and protocol selection are correct, but llvmpipe lacks mandatory `GL_ARB_bindless_texture`; - WSLg with `GALLIUM_DRIVER=d3d12` reaches the AMD GPU and OpenGL 4.6, but still lacks mandatory `GL_ARB_bindless_texture`; this is a WSLg/Mesa capability limit, not an acdream package-resolution defect; - App tests pass 3,763 / 3 skips; the complete Release suite passes 8,826 / 5 skips; - checkpoint: `docs/research/2026-07-27-slice-l1-graphical-capability-checkpoint.md`. Rollback: ```text git revert 11501d52cad942850d88f83490710faf1d5cdf28 ``` ## Deferred continuation Do not claim native Linux graphical support from WSLg. Run the exact `linux-x64` package on a physical Linux AMD RadeonSI or supported NVIDIA driver under the available X11/Wayland sessions. It must pass the same capability report, packaged smoke frame, input/window/audio checks, and zero-debt shutdown. The user deferred this physical-driver gate and Slices L2–L6 on 2026-07-27. L2 has not started; resume at the physical L1 gate.