docs(linux): park Slice L at L1 checkpoint
This commit is contained in:
parent
11501d52ca
commit
97a095d628
9 changed files with 275 additions and 39 deletions
|
|
@ -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/
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 <sha>` 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
|
||||
```
|
||||
|
|
|
|||
|
|
@ -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
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue