docs(linux): close Slice L0
This commit is contained in:
parent
66f114b258
commit
07bb1c5a74
9 changed files with 264 additions and 14 deletions
65
memory/project_linux_graphical.md
Normal file
65
memory/project_linux_graphical.md
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
# 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.
|
||||
|
|
@ -70,13 +70,13 @@ zero entities/inventory/host/content leases, disposed shared content, and
|
|||
## Next work
|
||||
|
||||
Slice L is active under
|
||||
`docs/plans/2026-07-26-modern-runtime-slice-l.md`. The initial read-only L0
|
||||
probe already proves framework-dependent `linux-x64` App publish succeeds and
|
||||
ships resolved GLFW, OpenAL Soft, and cimgui native libraries. The smoke plugin
|
||||
is missing from the publish because its copy target uses Windows-shaped paths.
|
||||
Frame pacing still directly constructs the Windows waitable-timer owner, and
|
||||
App/UI persistence still defaults to Windows `LocalApplicationData`; those
|
||||
are the first L0 implementation seams.
|
||||
`docs/plans/2026-07-26-modern-runtime-slice-l.md`. L0 completed at
|
||||
`66f114b2`: the shared path owner, graphical platform/native manifest,
|
||||
factory-selected Linux wait, portable persistence/plugins, RID-safe publish,
|
||||
and Ubuntu graphical package gate pass. Continue from
|
||||
`memory/project_linux_graphical.md`; L1 must prove the actual Linux
|
||||
window/context/input/audio lifecycle rather than revisiting headless
|
||||
ownership.
|
||||
|
||||
Final K3 automated counts: Runtime 412, Headless 47, App 3,722 / 3 skips,
|
||||
complete Release 8,764 / 5 skips.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue