From 97a095d628a1a8a22e703c376e753a3ab5b9f878 Mon Sep 17 00:00:00 2001 From: Erik Date: Mon, 27 Jul 2026 12:35:47 +0200 Subject: [PATCH] docs(linux): park Slice L at L1 checkpoint --- AGENTS.md | 20 ++- CLAUDE.md | 20 ++- docs/architecture/acdream-architecture.md | 7 + docs/plans/2026-04-11-roadmap.md | 23 +++- docs/plans/2026-05-12-milestones.md | 16 ++- .../2026-07-26-modern-runtime-slice-l.md | 27 +++- ...lice-l1-graphical-capability-checkpoint.md | 122 ++++++++++++++++++ memory/project_linux_graphical.md | 63 ++++++--- memory/project_modern_runtime_headless.md | 16 +-- 9 files changed, 275 insertions(+), 39 deletions(-) create mode 100644 docs/research/2026-07-27-slice-l1-graphical-capability-checkpoint.md diff --git a/AGENTS.md b/AGENTS.md index 90ba3d05..7479fb18 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -390,7 +390,8 @@ scheduler cadence, and every resource dimension inside its ceiling. SIGINT produced ACE-confirmed graceful logout for both accounts and a passing final `disposed` sample: two converged Runtime roots, zero entities/inventory/host or content leases, and disposed shared content. K4 and Slice K are closed; -Slice L Linux graphical/platform work is active. L0 completed at `66f114b2`: +Slice L Linux graphical/platform work is parked at its L1 implementation +checkpoint by user direction on 2026-07-27. L0 completed at `66f114b2`: `ApplicationPathSet` is the shared XDG/Windows path authority; `GraphicalHostPlatformServices` owns one OS/architecture/RID, native manifest, and frame-waiter factory; Linux uses an absolute `CLOCK_MONOTONIC` wait; @@ -400,7 +401,16 @@ Ubuntu graphical CI/package gate pass. Windows passes 415 Runtime, 67 Headless, 543 UI, and 3,736 App tests / 3 skips; the complete Release suite passes 8,799 / 5 skips. Native Ubuntu passes the portable closure, 14 L0 App tests, and exact `linux-x64` publish. L1 context/extension/native-backend -validation is next. +validation implementation landed at `11501d52`: immutable +Win32/X11/Wayland selection, packaged GLFW 3.4 preference, atomic capability +reporting, and active bindless/draw-parameters/MDI/SSBO/timer/FBO/persistent- +buffer probes now gate renderer construction. Native Windows AMD passes every +active probe and terminal graphical/audio ownership converges to zero. WSLg +X11/Wayland correctly reject Mesa D3D12/llvmpipe because mandatory +`GL_ARB_bindless_texture` is absent. App tests pass 3,763 / 3 skips and the +complete Release suite passes 8,826 / 5 skips. A supported physical Linux +AMD/NVIDIA driver row remains the first gate when work resumes; that gate and +L2–L6 are deferred. J0's rollback is `git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`. J1's rollback is @@ -474,6 +484,8 @@ K4's current rollbacks, newest first, are `git revert cb512fd0916fbf49285c9b64df1630c5a69a0d20`. L0's rollback is `git revert 66f114b258c0c37b51a7c0e04ca0d6441f4b1699`. +L1's implementation-checkpoint rollback is +`git revert 11501d52cad942850d88f83490710faf1d5cdf28`. Slice H's retained UI/frame, bounded-light, and pooled/borrowed/direct network work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate passes. Slice I is closed in @@ -509,7 +521,9 @@ closeout is closed in `docs/plans/2026-07-26-modern-runtime-slice-k.md`; K4 evidence is `docs/research/2026-07-27-slice-k4-resource-telemetry-checkpoint.md`; Slice L executes from `docs/plans/2026-07-26-modern-runtime-slice-l.md`; L0 evidence is -`docs/research/2026-07-27-slice-l0-platform-services.md`. The exact G4 visual +`docs/research/2026-07-27-slice-l0-platform-services.md`; L1 checkpoint +evidence is +`docs/research/2026-07-27-slice-l1-graphical-capability-checkpoint.md`. The exact G4 visual rollback is `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`; do not revert G3 or the portal-warmup corrections. Evidence: diff --git a/CLAUDE.md b/CLAUDE.md index c16cb85e..e6697fbd 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -388,7 +388,8 @@ scheduler cadence, and every resource dimension inside its ceiling. SIGINT produced ACE-confirmed graceful logout for both accounts and a passing final `disposed` sample: two converged Runtime roots, zero entities/inventory/host or content leases, and disposed shared content. K4 and Slice K are closed; -Slice L Linux graphical/platform work is active. L0 completed at `66f114b2`: +Slice L Linux graphical/platform work is parked at its L1 implementation +checkpoint by user direction on 2026-07-27. L0 completed at `66f114b2`: `ApplicationPathSet` is the shared XDG/Windows path authority; `GraphicalHostPlatformServices` owns one OS/architecture/RID, native manifest, and frame-waiter factory; Linux uses an absolute `CLOCK_MONOTONIC` wait; @@ -398,7 +399,16 @@ Ubuntu graphical CI/package gate pass. Windows passes 415 Runtime, 67 Headless, 543 UI, and 3,736 App tests / 3 skips; the complete Release suite passes 8,799 / 5 skips. Native Ubuntu passes the portable closure, 14 L0 App tests, and exact `linux-x64` publish. L1 context/extension/native-backend -validation is next. +validation implementation landed at `11501d52`: immutable +Win32/X11/Wayland selection, packaged GLFW 3.4 preference, atomic capability +reporting, and active bindless/draw-parameters/MDI/SSBO/timer/FBO/persistent- +buffer probes now gate renderer construction. Native Windows AMD passes every +active probe and terminal graphical/audio ownership converges to zero. WSLg +X11/Wayland correctly reject Mesa D3D12/llvmpipe because mandatory +`GL_ARB_bindless_texture` is absent. App tests pass 3,763 / 3 skips and the +complete Release suite passes 8,826 / 5 skips. A supported physical Linux +AMD/NVIDIA driver row remains the first gate when work resumes; that gate and +L2–L6 are deferred. J0's rollback is `git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`. J1's rollback is @@ -472,6 +482,8 @@ K4's current rollbacks, newest first, are `git revert cb512fd0916fbf49285c9b64df1630c5a69a0d20`. L0's rollback is `git revert 66f114b258c0c37b51a7c0e04ca0d6441f4b1699`. +L1's implementation-checkpoint rollback is +`git revert 11501d52cad942850d88f83490710faf1d5cdf28`. Slice H's retained UI/frame, bounded-light, and pooled/borrowed/direct network work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate passes. Slice I is closed in @@ -507,7 +519,9 @@ closeout is closed in `docs/plans/2026-07-26-modern-runtime-slice-k.md`; K4 evidence is `docs/research/2026-07-27-slice-k4-resource-telemetry-checkpoint.md`; Slice L executes from `docs/plans/2026-07-26-modern-runtime-slice-l.md`; L0 evidence is -`docs/research/2026-07-27-slice-l0-platform-services.md`. The exact G4 visual +`docs/research/2026-07-27-slice-l0-platform-services.md`; L1 checkpoint +evidence is +`docs/research/2026-07-27-slice-l1-graphical-capability-checkpoint.md`. The exact G4 visual rollback is `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`; do not revert G3 or the portal-warmup corrections. Evidence: diff --git a/docs/architecture/acdream-architecture.md b/docs/architecture/acdream-architecture.md index f6afb1ec..b5245d44 100644 --- a/docs/architecture/acdream-architecture.md +++ b/docs/architecture/acdream-architecture.md @@ -272,6 +272,13 @@ src/ Platform/ GraphicalHostPlatformServices.cs -> one startup OS/architecture/RID, native-manifest, path, pacing owner + GraphicalWindowBackendSelection.cs -> immutable GLFW 3.4 + Win32/X11/Wayland selection and + packaged-native preference + GraphicalCapabilityRecord.cs -> pre-render platform/GL/audio/input + capability report and startup guard + GraphicalGlFunctionProbe.cs -> active modern-GL shader/MDI/SSBO/ + timer/FBO/persistent-buffer validation GraphicalLegacyConfigurationMigrator.cs -> no-overwrite Windows LocalAppData migration Physics/ diff --git a/docs/plans/2026-04-11-roadmap.md b/docs/plans/2026-04-11-roadmap.md index c6911415..2770d573 100644 --- a/docs/plans/2026-04-11-roadmap.md +++ b/docs/plans/2026-04-11-roadmap.md @@ -1,13 +1,18 @@ # acdream — strategic roadmap -**Status:** Living document. Updated 2026-07-27. **M3 landed; M4 is active.** M3's retail casting/UI, R6 locomotion/collision/projectile/teleport/radar rebaseline, deterministic fresh-login/portal world lifecycle, and final two-client portal observer flow are user-gated. All eight slices of the behavior-preserving ownership campaign in [`docs/architecture/code-structure.md`](../architecture/code-structure.md), their automated closeout, and the user's connected visual matrix are complete. Modern Runtime J3 canonical entity/object lifetime and J4 gameplay-state ownership are closed at `89e6b207`; J5.1 canonical selection/combat/target-mode ownership is closed at `b298f99f`, J5.2 interaction transactions at `f5f7b417`, J5.3 combat/magic intent at `20df9d15`, J5.4 local movement/outbound cadence at `aa3f4a60`, J5.5 per-session physics/remote simulation at `7e6033d0`, J5.6 projectile simulation at `2aee3356`, and J5.7 combined simulation closeout at `cdee7a4b`. J6.1 world-environment ownership is closed at `902076c0`; J6.2 canonical reveal generation and typed destination readiness is closed at `a6860d55` plus `acb845d8`; J6.3 exact F751/Position destination correlation is closed at `6a063a27`; J6.4 exact graphical-host acknowledgement and owner cleanup is closed at `18d17d8b`. J7's one graphical `GameRuntime` root is closed at `ce41efb9`, including the user's 2026-07-27 exact post-cutover visual acceptance. J8 closed Slice J at `a9a822f2` with one shared graphical/no-window root and generation-reset transaction. Slice K Linux headless/multi-session work is closed. K0's tested no-presentation Windows/Linux boundary closed at `aada8a37`, K1's portable single-session host at `f8cb840f`, K2's deterministic scheduler and shared bot API at `7e8acb74` plus `38e83640`, and K3's shared-content/isolation plus connected observer gate at `3f340125`. K4 closed through `776482da`: 1/5/10/30-root isolation and two-hour simulated endurance, death/randomized cancellation, committed resource ceilings, ten minutes of exact native Linux two-account connected sampling, ACE-confirmed graceful logout, and zero-debt Runtime/content convergence all pass. Slice L Linux graphical/platform work is active. Issue #225's lifestone/particle alpha comparison remains a separate rendering visual gate. +**Status:** Living document. Updated 2026-07-27. **M3 landed; M4 is active.** M3's retail casting/UI, R6 locomotion/collision/projectile/teleport/radar rebaseline, deterministic fresh-login/portal world lifecycle, and final two-client portal observer flow are user-gated. All eight slices of the behavior-preserving ownership campaign in [`docs/architecture/code-structure.md`](../architecture/code-structure.md), their automated closeout, and the user's connected visual matrix are complete. Modern Runtime J3 canonical entity/object lifetime and J4 gameplay-state ownership are closed at `89e6b207`; J5.1 canonical selection/combat/target-mode ownership is closed at `b298f99f`, J5.2 interaction transactions at `f5f7b417`, J5.3 combat/magic intent at `20df9d15`, J5.4 local movement/outbound cadence at `aa3f4a60`, J5.5 per-session physics/remote simulation at `7e6033d0`, J5.6 projectile simulation at `2aee3356`, and J5.7 combined simulation closeout at `cdee7a4b`. J6.1 world-environment ownership is closed at `902076c0`; J6.2 canonical reveal generation and typed destination readiness is closed at `a6860d55` plus `acb845d8`; J6.3 exact F751/Position destination correlation is closed at `6a063a27`; J6.4 exact graphical-host acknowledgement and owner cleanup is closed at `18d17d8b`. J7's one graphical `GameRuntime` root is closed at `ce41efb9`, including the user's 2026-07-27 exact post-cutover visual acceptance. J8 closed Slice J at `a9a822f2` with one shared graphical/no-window root and generation-reset transaction. Slice K Linux headless/multi-session work is closed. K0's tested no-presentation Windows/Linux boundary closed at `aada8a37`, K1's portable single-session host at `f8cb840f`, K2's deterministic scheduler and shared bot API at `7e8acb74` plus `38e83640`, and K3's shared-content/isolation plus connected observer gate at `3f340125`. K4 closed through `776482da`: 1/5/10/30-root isolation and two-hour simulated endurance, death/randomized cancellation, committed resource ceilings, ten minutes of exact native Linux two-account connected sampling, ACE-confirmed graceful logout, and zero-debt Runtime/content convergence all pass. Slice L Linux graphical/platform work is parked at its L1 implementation checkpoint by user direction on 2026-07-27. Issue #225's lifestone/particle alpha comparison remains a separate rendering visual gate. **Purpose:** One source of truth for where the project is and where it's going. Every observed defect or missing feature has a named phase that owns it; when something looks wrong in-game, look here to find the phase that'll address it. Implementation details live in per-phase specs under `docs/superpowers/specs/`, not in this file. **Slice L checkpoint:** L0 closed at `66f114b2` with one typed graphical platform/native manifest, shared XDG/Windows paths, factory-selected Windows/Linux frame waits, portable persistence/plugin discovery, RID-safe -App publish, and an Ubuntu graphical CI/package gate. Slice L1 -context/extension/native-backend validation is active. +App publish, and an Ubuntu graphical CI/package gate. L1's implementation +checkpoint landed at `11501d52`: immutable Win32/X11/Wayland selection, +packaged GLFW 3.4 preference, atomic capability reporting, and active modern-GL +probes gate renderer construction. Native Windows passes. WSLg X11/Wayland +correctly report that Mesa D3D12/llvmpipe lacks mandatory bindless textures. +A supported physical Linux AMD/NVIDIA driver row remains the first gate when +Slice L resumes; the physical gate and L2–L6 are deferred. --- @@ -1822,7 +1827,11 @@ port in any phase — no separate listing here. > Headless tests pass 67/67 and the complete Release suite passes 8,784 / 5 > skips. The exact two-account connected soak then passed 20 periodic samples, > ACE-confirmed graceful logout, and a zero-debt `disposed` record. Slice K is -> closed. Slice L0 completed at `66f114b2`; L1 is active. +> closed. Slice L0 completed at `66f114b2`; L1's implementation checkpoint +> landed at `11501d52`. Native Windows passes every active capability and +> shutdown probe; WSLg X11/Wayland correctly fail the mandatory bindless +> requirement. By user direction on 2026-07-27, the supported physical Linux +> driver row and L2–L6 are deferred; resume at that physical gate. > The historical exact cutover > rollback remains > `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`. Slice H is complete: @@ -1869,7 +1878,11 @@ hitch and follows. > no-window Linux host and approximately 30-session target from > [`2026-07-26-modern-runtime-slice-k.md`](2026-07-26-modern-runtime-slice-k.md); > Slice L executes the graphical Linux/platform work. K0-K4 and Slice K are -> complete through `776482da`. L0 is complete at `66f114b2`; L1 is active. +> complete through `776482da`. L0 is complete at `66f114b2`; L1's +> implementation checkpoint is `11501d52`, with native Windows positive and +> WSLg X11/Wayland negative capability rows recorded. A supported physical +> Linux AMD/NVIDIA row and L2–L6 are deferred by user direction; resume at the +> physical L1 gate. > K's automated 1/5/10/30-root > isolation, two-hour simulated endurance, death/cancellation, and committed > resource-envelope gates pass; the exact two-account connected process added diff --git a/docs/plans/2026-05-12-milestones.md b/docs/plans/2026-05-12-milestones.md index 998e7d20..59ae59f1 100644 --- a/docs/plans/2026-05-12-milestones.md +++ b/docs/plans/2026-05-12-milestones.md @@ -316,7 +316,8 @@ residency is `0/0/0` at every stable checkpoint and teardown converges. Slice I dimension inside its ceiling. SIGINT then produced ACE-confirmed graceful logout for both accounts and a passing `disposed` record with two converged Runtime roots, zero entities/inventory/host/content leases, and disposed - shared content. K4 and Slice K are closed; Slice L is active. + shared content. K4 and Slice K are closed; Slice L is parked at its L1 + implementation checkpoint by user direction on 2026-07-27. L0 completed at `66f114b2`: one startup-owned graphical platform/native manifest, the shared Runtime XDG/Windows path set, factory-selected Windows and absolute-monotonic Linux frame waits, portable settings/keybindings/ @@ -325,8 +326,17 @@ residency is `0/0/0` at every stable checkpoint and teardown converges. Slice I 3,736 App tests / 3 skips; the complete Release suite passes 8,799 / 5 skips. Native Ubuntu passes the portable Runtime/Headless/UI and 14 L0 App tests, and the exact `linux-x64` package contains resolved GLFW, OpenAL - Soft, cimgui, shaders, and smoke plugin. Slice L1 context/extension/native- - backend validation is next. + Soft, cimgui, shaders, and smoke plugin. Slice L1's implementation checkpoint + landed at `11501d52`: immutable Win32/X11/Wayland backend selection, + packaged GLFW 3.4 preference, atomic capability reporting, and active + bindless/draw-parameters/MDI/SSBO/timer/FBO/persistent-buffer probes now + reject unsupported contexts before renderer construction. The native + Windows AMD gate passes all probes and completes graphical/audio teardown; + WSLg X11 and Wayland correctly reject its Mesa D3D12/llvmpipe contexts + because `GL_ARB_bindless_texture` is absent. App tests pass 3,763 / 3 skips + and the complete Release suite passes 8,826 / 5 skips. A supported physical + Linux AMD/NVIDIA driver row remains mandatory when Slice L resumes; its + physical gate and L2–L6 are deferred. Slice-I closeout evidence is [`../research/2026-07-25-slice-i7-closeout.md`](../research/2026-07-25-slice-i7-closeout.md). Slice-J2 closeout evidence is diff --git a/docs/plans/2026-07-26-modern-runtime-slice-l.md b/docs/plans/2026-07-26-modern-runtime-slice-l.md index e214e21c..b23ebfca 100644 --- a/docs/plans/2026-07-26-modern-runtime-slice-l.md +++ b/docs/plans/2026-07-26-modern-runtime-slice-l.md @@ -1,6 +1,7 @@ # Modern runtime Slice L — Linux graphical host and evidence-gated GPU work -**Status:** ACTIVE — L0 COMPLETE; L1 NEXT +**Status:** DEFERRED 2026-07-27 — L0 COMPLETE; L1 IMPLEMENTATION CHECKPOINT +COMPLETE; PHYSICAL-LINUX DRIVER GATE AND L2–L6 PARKED **Parent:** `2026-07-24-modern-runtime-architecture.md`, Slice L **Authorization:** the user approved Slices F–L on 2026-07-24 **Purpose:** ship the existing modern OpenGL client on supported Linux drivers @@ -177,6 +178,18 @@ frame waiters and portable paths; no Windows P/Invoke executes on Linux. ### L1 — context, extensions, and native backends +**Implementation checkpoint at `11501d52` (2026-07-27).** The exact packaged +GLFW 3.4 backend is selected before window creation; X11/Wayland choice, +complete passive capabilities, active modern-GL calls, optional OpenAL smoke, +atomic reports, actionable exit 4, and zero-debt successful/rejected Studio +shutdown are implemented. Windows AMD passes the supported smoke. WSLg X11, +Wayland, and AMD D3D12 paths correctly reject only missing +`GL_ARB_bindless_texture`. These are negative rows. At the user's direction on +2026-07-27, physical Mesa/RadeonSI/NVIDIA supported-driver evidence and L2–L6 +are deferred; when Slice L resumes, that physical gate remains first and L2 +must not begin before it passes. Exact evidence is +[`../research/2026-07-27-slice-l1-graphical-capability-checkpoint.md`](../research/2026-07-27-slice-l1-graphical-capability-checkpoint.md). + - Create a Linux window and OpenGL 4.3 core context under X11 and Wayland. - Capture the full capability record before renderer construction. - Verify mandatory bindless and shader-draw-parameter calls, MDI, SSBOs, @@ -304,3 +317,15 @@ exact `git revert ` after each focused/Linux/Windows/connected/visual gate. GPU candidates each receive their own plan, commit, measurement, visual gate, and rollback; rejected experiments are reverted rather than hidden behind dormant alternate paths. + +L0 rollback: + +```text +git revert 66f114b258c0c37b51a7c0e04ca0d6441f4b1699 +``` + +L1 implementation-checkpoint rollback: + +```text +git revert 11501d52cad942850d88f83490710faf1d5cdf28 +``` diff --git a/docs/research/2026-07-27-slice-l1-graphical-capability-checkpoint.md b/docs/research/2026-07-27-slice-l1-graphical-capability-checkpoint.md new file mode 100644 index 00000000..daaea223 --- /dev/null +++ b/docs/research/2026-07-27-slice-l1-graphical-capability-checkpoint.md @@ -0,0 +1,122 @@ +# Slice L1 graphical capability checkpoint + +**Date:** 2026-07-27 +**Production commit:** `11501d52cad942850d88f83490710faf1d5cdf28` +**Status:** implementation complete; further Linux graphical work deferred by +the user on 2026-07-27. The supported physical-Linux driver matrix remains the +first gate when Slice L resumes. + +## Scope + +This checkpoint establishes the Linux/Windows graphical startup oracle before +renderer construction. It does not add a renderer fallback and does not change +gameplay or visual behavior. + +`GraphicalHostPlatformServices` now owns an immutable GLFW backend selection. +`ACDREAM_DISPLAY_PROTOCOL=auto|x11|wayland` is consumed once before +`Window.Create`. The platform owner configures the exact +`GlfwProvider.UninitializedGLFW` instance used by Silk's window backend. + +Silk 2.23 asks for `libglfw.so.3.3`, while its packaged multi-backend GLFW 3.4 +asset is `libglfw.so.3`. The default native search order previously selected +Ubuntu's machine-global GLFW 3.3 before reaching the packaged 3.4 library. +Startup now prioritizes the application directory inside Silk's path resolver, +so X11/Wayland selection and package provenance are deterministic. + +Before any renderer object is created, the client records: + +- OS, RID, requested and active display protocol, GLFW backend/version; +- GL vendor, renderer, version, GLSL, context flags/profile, limits, and every + extension; +- default framebuffer color/depth/stencil/MSAA/sRGB facts; +- window, monitor, refresh, framebuffer/logical size, and input-device facts; +- audio request/availability/playback/disposal state; +- window/GL/input/audio ownership and terminal shutdown state. + +Advertisement is not treated as proof. A balanced active probe executes: + +- bindless texture handle, resident, and non-resident calls; +- a shader using `gl_DrawIDARB`/`gl_BaseInstanceARB` plus MDI; +- SSBO allocation and binding; +- a timer query; +- an sRGB color plus depth/stencil framebuffer; +- persistent coherent mapping whenever buffer storage is advertised. + +Unsupported hardware receives one actionable report and exit code 4. The +Studio smoke defers native close until after `RenderStack.EndFrame`, so both +successful and rejected startup release every owned context resource before +the final report is atomically rewritten. + +## Positive supported gate + +Windows 11 Pro build 26200, AMD Radeon RX 9070 XT, driver +`32.0.31021.5001`: + +- GLFW `3.4.0 Win32 WGL`; +- OpenGL `4.3.0 Core Profile Context 26.6.4.260624`; +- 240 Hz monitor, 1280 x 720 logical/framebuffer smoke; +- bindless, shader draw parameters, MDI, SSBO, timer query, sRGB + depth/stencil, and persistent coherent storage all actively pass; +- OpenAL Soft default device opens, accepts the 50 ms smoke wave, and disposes; +- the 1280 x 720 retained-UI mockup screenshot is visually intact; +- process exits 0 with zero owned window, GL, input, and audio resources and + `ShutdownComplete=true`. + +## Linux backend and negative-capability gates + +Package: exact framework-dependent `linux-x64` publish of +`11501d52cad942850d88f83490710faf1d5cdf28`. + +Host: Ubuntu 24.04.3 LTS under WSL2 kernel +`6.6.87.2-microsoft-standard-WSL2`, WSLg X11 and Wayland endpoints. + +Both explicit backends create an OpenGL 4.5 core context, expose one keyboard +and one mouse, capture their framebuffer/monitor facts, and identify the +packaged multi-backend GLFW 3.4: + +| Protocol | Monitor | Renderer | Result | +|---|---|---|---| +| X11 | `XWAYLAND0`, 60 Hz | Mesa llvmpipe 25.2.8 | exit 4: bindless absent | +| Wayland | `weston rdp`, 60 Hz | Mesa llvmpipe 25.2.8 | exit 4: bindless absent | +| X11 + `GALLIUM_DRIVER=d3d12` | `XWAYLAND0`, 60 Hz | D3D12 (AMD Radeon RX 9070 XT), GL 4.6 | exit 4: bindless absent | + +Each final report names only `GL_ARB_bindless_texture` as the mandatory +missing feature, preserves the complete capability record, and reports zero +window/GL/input/audio ownership with `ShutdownComplete=true`. This is the +intended mandatory-modern-renderer failure, not an accepted Linux driver row. + +The Ubuntu graphical CI job now builds/publishes the App, runs the focused +platform/capability tests, checks the native package closure, and verifies the +same actionable X11 software-driver rejection under Xvfb. + +## Automated gates + +- graphical backend/capability/Studio focused tests: 29/29; +- App Release tests: 3,763 passed / 3 skipped; +- complete Release solution: 8,826 passed / 5 skipped; +- Release solution build: zero warnings and zero errors; +- Windows supported smoke: exit 0, screenshot present, all function probes + pass, audio playback submitted, all terminal ledgers zero; +- WSLg X11 and Wayland negative gates: exit 4, exact bindless diagnostic, + all terminal ledgers zero; +- concurrent two-account Linux headless process remained 2/2 in-world with + zero faults/reconnects/resource-envelope violations throughout the gates. + +## Deferred L1 acceptance + +Do not claim Linux graphical support from WSLg. L1 still requires at least one +physical supported Linux row and the committed driver matrix: + +- AMD Mesa/RadeonSI X11 and Wayland; +- NVIDIA proprietary X11 and supported Wayland; +- Intel only when every mandatory capability is present. + +On each supported row, rerun the packaged screenshot/input/audio/teardown +smoke. Only then close L1 and begin the connected L2 route. This work and +Slices L2–L6 were explicitly parked by the user on 2026-07-27. + +## Rollback + +```text +git revert 11501d52cad942850d88f83490710faf1d5cdf28 +``` diff --git a/memory/project_linux_graphical.md b/memory/project_linux_graphical.md index 541a4bde..a104e378 100644 --- a/memory/project_linux_graphical.md +++ b/memory/project_linux_graphical.md @@ -4,6 +4,8 @@ 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. @@ -44,22 +46,51 @@ Rollback: git revert 66f114b258c0c37b51a7c0e04ca0d6441f4b1699 ``` -## Next work — L1 +## L1 implementation checkpoint -Do not claim Linux graphical support merely from publish success. L1 must: +Canonical seams: -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. +- `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. -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. +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. diff --git a/memory/project_modern_runtime_headless.md b/memory/project_modern_runtime_headless.md index 39f7878a..c210668d 100644 --- a/memory/project_modern_runtime_headless.md +++ b/memory/project_modern_runtime_headless.md @@ -67,16 +67,16 @@ for both accounts. The final `disposed` sample had two converged Runtime roots, zero entities/inventory/host/content leases, disposed shared content, and `withinCeilings=true`. -## Next work +## Deferred graphical continuation -Slice L is active under +Slice L is parked under `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. +`66f114b2`, and L1's immutable backend/capability implementation checkpoint +landed at `11501d52`. Native Windows passes; WSLg correctly rejects its missing +mandatory bindless-texture capability. By user direction on 2026-07-27, +physical Linux validation and L2–L6 are deferred. Resume from +`memory/project_linux_graphical.md` at the physical supported-driver L1 gate; +do not revisit headless ownership or add a renderer fallback. Final K3 automated counts: Runtime 412, Headless 47, App 3,722 / 3 skips, complete Release 8,764 / 5 skips.