docs(omo): record 3D desktop readiness audit (2026-07-25)

This commit is contained in:
2026-07-26 05:18:53 +09:00
parent a9e15dc910
commit c69ff64e50
8 changed files with 407 additions and 0 deletions
@@ -0,0 +1,240 @@
# ULW-Research Synthesis — 3D Desktop Readiness (Red Bear OS)
**Session:** 20260725-223644 · **Branch:** 0.3.1 (working tree ~3,108 status entries) · **Author:** Sisyphus
## Executive summary
The "virgl/Intel 3D on Mesa/Wayland → KDE on SDDM" stack is **NOT** today deliverable end-to-end. The repository contains substantial build-side surface for each layer, but every layer fails a critical acceptance gate:
- **No `redbear-full.iso` exists.** The build tag was touched but the image was never assembled; previous attempts timed out or crashed.
- **Mesa configure currently fails** at `libclc`; the on-disk `libgallium-26.1.4.so` is from a prior `softpipe+llvmpipe,virgl`-only build. No `iris_dri.so`, `radeonsi_dri.so`, or Vulkan ICDs have ever been produced. No `mesa.pkgar` is in `repo/`.
- **The uncommitted fence rewrite** in `redox_drm_fence.c` and `scheme.rs` is structurally broken (wire-struct mismatch, swapped ioctl numbers, fd-ownership invalid, notification never fires). The committed `card0/fence/<seqno>` scheme path also never completes a fence.
- **The Redox gallium winsys** exists in source but is gated in `gallium/meson.build:11` on `with_gallium_iris or with_gallium_radeonsi`; neither was selected in the only successful Mesa build, so it never compiled.
- **The redbear-compositor** advertises 13 Wayland globals and is well structured, but does not advertise `zxdg_output_manager_v1`; five sibling modules (`protocol.rs`, `state.rs`, `wire.rs`, `handlers.rs`, `display_backend.rs`) are not `mod`-declared in `main.rs` and are dead code.
- **SDDM** has no init service to start it, no `/etc/pam.d/sddm`, no `kde-wayland.desktop`, and the `greeter` user defined in `redbear-greeter-services.toml` is not in the active include chain of `redbear-full.toml`.
- **`package_groups` in `redbear-full.toml` are dead code**: the installer's `Config` struct has no `package_groups` field, so the curated `kf6-frameworks`, `graphics-core`, `qt6-core`, `desktop-session`, `kde-desktop` groups are silently dropped.
- **The host GPU `8086:7d51` is correctly classified as Meteor Lake (Gen14) in the kernel tables**, but the kernel Intel path has only `redox_private_cs_submit/wait`, no PPGTT, no GuC/HuC/GSC loader, and no Mesa consumer of the private CS ABI. The upstream `virgl_drm_winsys` cannot use the custom `redox-drm` because the scheme returns `DRM_IOCTL_VERSION` `major=1` (Mesa requires `0`) and does not populate a `name` string for `drmGetVersion`.
- **Documentation overclaims** in five places: 3D plan, README, CONSOLE-TO-KDE, SDDM bringup, and the 3D plan's own internal sections (executive summary contradicts appended updates). Multiple "verified FIXED" and "Phase X landed" annotations are not runtime-validated.
- **The test harness as written cannot satisfy its own proof target** — it never logs in, never runs a GLES demo, never queries the renderer, never captures a screenshot; the host QEMU 11.0.2 also rejects `virgl=on` (renamed to `venus=` in modern QEMU).
The **first visible SDDM login** is closer than genuine hardware 3D: it requires only a working 2D KMS scanout, correct Wayland xdg-shell + SCM_RIGHTS + xdg-output, a Qt6 Wayland client that survives registry bind, PAM working through `pam-redbear.so`, and SDDM. None of these are individually proven; several are deterministically broken.
The path forward is concrete: produce one clean build artifact (canonical wrapper, fixed libclc, fixed winsys wiring, fixed fence, fixed Mesa `libclc` configure, fixed `DRM_IOCTL_VERSION`), boot it in QEMU with `gpu=virtio-gl`, capture a screenshot, and update documentation to match. Genuine hardware iris on `8086:7d51` is a substantially larger driver project (PPGTT/VM/context/syncobj/execbuffer) and is **not** required for the user's "working virgl/Intel 3D" goal — virgl over QEMU host GPU is the correct first deliverable.
---
## Findings by theme
### 1. Build/system provenance and current state
- **Working tree is dirty** with ~3,108 status entries (2,029 tracked, 1,079 untracked). Significant uncommitted changes in `local/recipes/libs/mesa/recipe.toml` (added `libclc` dependency), `local/recipes/libs/mesa/source/src/gallium/winsys/redox/drm/redox_drm_fence.c` (eventfd rewrite), and `local/recipes/gpu/redox-drm/source/src/scheme.rs` (matching kernel changes). Per project policy, the canonical build's stash-and-restore guard will stash and pop these — meaning any unauthenticated build would not include them. (`[observation O-013]`)
- **No `redbear-full` bootable image exists.** `build/x86_64/redbear-full/` contains only tag files. `build/x86_64/redbear-bare.iso` (192 MB) is the only complete ISO; `build/x86_64/redbear-mini/harddrive.img` (512 MB) is the most recent text-only image. Multiple boot logs from Jun 9 ended in crashes (invalid opcode in virti drivers, segfaults). The root `qemu-boot.log` (Jul 10) shows a KERNEL PANIC. (`[V-01]`, `[O-007]`)
- **Only low-level controller QEMU tests have real runtime evidence**: 6 QEMU proofs PASSED (MSI-X, PS/2, timer, USB hub, xHCI IRQ, VGA probe) on `redbear-mini`. Every desktop/graphics test script has zero recorded passing results.
- **Mesa build is in a broken state.** The current `recipe.toml` requests `iris,radeonsi,Vulkan`; meson configure fails on `libclc` (which was added as a Cat 1 recipe but never built). The 23.9 MB `libgallium-26.1.4.so` on disk is from a previous `softpipe+llvmpipe,virgl`-only build. The Mesa recipe and build state disagree. (`[V-06]`)
### 2. Mesa integration (recipe, source, winsys, EGL)
- **Recipe declares iris/radeonsi/Vulkan** in `gallium-drivers` and `vulkan-drivers` but the meson configure does not complete. Once `libclc` is in the build graph, the configure is expected to proceed, but iris/radeonsi compile success is unverified and likely needs further work (transitive libdrm_intel, ELF loading, completion semantics). (`[O-004]`, `[O-005]`, `[O-006]`)
- **`platform_redox.c` exists** (283 lines, committed `9ff9b4b0e2`) and is wired by meson when `-Dplatforms` contains `redox`. **It contains a no-op flush at lines 72-74** — the `redox_flush_front_buffer` function body is empty, so EGL surface flush produces no scanout. (`[V-11]`)
- **The Redox gallium winsys** (`gallium/winsys/redox/drm/`, 11 files including `redox_drm_winsys.c`, `redox_drm_bo.c`, `redox_drm_cs.c`, `redox_drm_fence.c`, `redox_drm_surface.c`, `meson.build`) is committed but its constructor `redox_drm_winsys_create` is conditionally wired in `src/gallium/meson.build:11` only when `with_gallium_iris or with_gallium_radeonsi` is true. The only successful Mesa build had neither, so the winsys never compiled. The winsys also has internal defects: it allocates only `templat->width0` bytes for images, hardcodes CRTC 0, and fabricates the CS seqno instead of consuming the daemon response. (`[V-03]`)
- **libdrm Redox dispatch** redirects `drmIoctl()` to `scheme:drm/card0` via `read`/`write`. The `MESA_LOADER_DRIVER_OVERRIDE=virgl` path is the only working discovery path; `loader_get_driver_for_fd` cannot use `drmGetDevice2` (no `/sys` for PCI resolution) and `drmGetVersion` returns a hard-coded `major:1, minor:0, patch:0` with no `name` string. (`[V-10]`, `[V-11]`)
- **Mesa patches** (5 wired, 4 orphan): `01-virgl-redox-disk-cache`, `02-gbm-dumb-prime-export`, `04-sys-ioccom-stub-header`, `05-vk-sync-wchar-include`, `08-meson-redox-kms-drm`. Patches 03 and 06 are orphaned (target removed `platform_redox.c`); the file was re-created from scratch and committed at `9ff9b4b0e2`. (`[O-004]`)
### 3. Virgl/QEMU runtime path
- **Redox virtio GPU driver** in `redox-drm` is committed and dispatches the full `DRM_IOCTL_VIRTGPU_*` set: GETPARAM, GET_CAPS, RESOURCE_CREATE, RESOURCE_INFO, TRANSFER_TO/FROM_HOST, WAIT, MAP, RESOURCE_CREATE_BLOB, CONTEXT_INIT, EXECBUFFER. (`[V-10]`)
- **The custom `redox-drm` virtio backend** has feature negotiation for `VIRGL+EDID+RESOURCE_BLOB+CONTEXT_INIT`, a full vring-based transport, and a real `submit_3d` path. But it cannot be reached by Mesa's upstream `virgl_drm_winsys_create` because of the DRM version mismatch and missing device-identity plumbing. The only working discovery is `MESA_LOADER_DRIVER_OVERRIDE=virgl`. (`[V-10]`)
- **QEMU test harness** at `local/scripts/test-virgl-qemu.sh` is dry-run only (line 142), never logs in, never runs a GLES demo, never queries the renderer, never captures a screenshot. The harness also uses `MESA_LOADER_DRIVER_OVERRIDE` and `EGL_PLATFORM=wayland` env vars but never injects them into the guest. The QEMU `virgl=on` property on host QEMU 11.0.2 has been replaced by `venus=`; the script needs updating. (`[V-12]`)
- **The default QEMU launch** uses `virtio-gpu-pci` (2D), not `virtio-vga-gl,virgl=on` (3D). Any "virgl works" claim must explicitly use the 3D device. (`[V-12]`)
### 4. Intel (host `8086:7d51`, Arrow Lake-P/Arc Pro 130T)
- **Kernel classifies `0x7D51` as Meteor Lake (Gen14, display v14)** in `dmc.rs:164` (`MTL_IDS`) and `drivers/mod.rs:27` (`INTEL_GEN12_MTL_IDS`). This is correct: Linux i915 also maps it to MTL; Mesa's `intel_device_info.c` uses `MTL_CONFIG()` as the base for Arrow Lake variants. Lunar Lake and Panther Lake are recognized separately. The `INTEL_GEN12_ARL_IDS` list at `drivers/mod.rs:29` is actually populated with LNL IDs (`0x6420/0x64A0/0x64B0`) — a comment-or-constant mismatch. (`[V-07]`, `[V-13]`)
- **The Intel kernel path has only a single-ring, single-context submission path** with GGTT page table (no PPGTT), DMC firmware loaded but GuC/HuC/GSC keys declared without loaders, no DMA-BUF export, and no `redox_private_cs_submit` consumer on the Mesa side. Intel-side `iris` therefore requires implementing the i915/Xe GEM/VM/context/execbuffer ABI in the kernel, not the current private-CS ABI. (`[V-07]`)
- **Real hardware validation is zero.** The README and the 3D plan both acknowledge this.
### 5. AMD (radeonsi)
- **The kernel AMD driver is display-only.** `redox-drm` `GpuDriver` has a single SDMA0 ring for display flip; the C amdgpu glue provides KMS initialization but Stages 24 (TTM, core) are intentionally empty. No `AMDGPU_CTX`, `AMDGPU_CS`, `AMDGPU_VM`, `AMDGPU_BO_LIST` are implemented. (`[V-08]`)
- **`radeonsi` is in the recipe string** but the Mesa configure cannot complete; the upstream radeonsi `amdgpu_winsys` cannot use the Redox private CS ABI without bridging it to the standard amdgpu CS path. A `radeonsi_dri.so` has never been produced in any Mesa build. (`[V-08]`)
- **AMD-specific SDMA ioctls** (`REDOX_AMD_SDMA_SUBMIT/WAIT` at `BASE+0x40/0x41`) are dispatched by `scheme.rs` but only wrap the private-CS path.
### 6. Wayland, Qt, and the compositor
- **`redbear-compositor`** (`local/recipes/wayland/redbear-compositor/source/src/main.rs`, 3539 lines) advertises 13 Wayland globals in order: `wl_compositor` v4, `wl_shm` v2, `wl_shell` v1, `wl_seat` v5, `wl_output` v4, `xdg_wm_base` v1, `wl_fixes` v2, `wl_data_device_manager` v3, `wl_subcompositor` v1, `zxdg_decoration_manager_v1` v1, `zwp_linux_dmabuf_v1` v3, `wp_viewporter` v1, `wp_presentation` v1. It does **not** advertise `zxdg_output_manager_v1` (required by Qt6/KWin for output positioning). (`[V-04]`)
- **`xdg_wm_base` is implemented in full** with all 14 xdg_toplevel, all 10 xdg_positioner, and full xdg_surface/xdg_popup opcodes handled. `wl_shm` create_pool correctly uses SCM_RIGHTS. The dispatch in `main.rs` is a full implementation. **However**, five sibling files in the same directory — `protocol.rs`, `state.rs`, `wire.rs`, `handlers.rs`, `display_backend.rs` — are **not `mod`-declared** in `main.rs` and are therefore uncompiled dead code. A planned refactor was never wired in. (`[V-04]`)
- **`wl_shell` is partial in the actual dispatch** (only `PONG` and `SET_TOPLEVEL` in `main.rs`; the full handler in `handlers.rs` is unreachable). For Qt6/SDDM that defaults to `xdg_wm_base`, this is not blocking; for any wl_shell client, it is.
- **Qt6 Wayland null+8** is statically diagnosed in `local/docs/QT6-WAYLAND-NULL8-DIAGNOSIS.md` and has two candidate patches wired (`qtwaylandscanner-null-guard-listeners.patch` and a libwayland NULL guard). The patches are correct, the diagnosis is honest, but **isolated runtime validation has not occurred**. The 5+5+1 claim of "verified FIXED" is overstated; the runbook (§7) is written but not executed. (`[V-09]`)
### 7. SDDM, greeter, PAM, session, KWin, Plasma
- **SDDM is build-wired but not runtime-validated.** `21_sddm.service` is not present in the config; the active greeter service is `20_greeter.service`, gated behind `condition_path_exists = ["/etc/redbear/enable-legacy-greeter"]`. There is **no `/etc/pam.d/sddm`**, **no `/usr/share/wayland-sessions/kde-wayland.desktop`**, and **no `greeter` user** in the active include chain (the user is defined in `redbear-greeter-services.toml`, which is not included by `redbear-full.toml`). (`[V-05]`)
- **`package_groups` are dead code.** The installer's `Config` struct has no `package_groups` field, so all curated groups (`graphics-core`, `input-stack`, `dbus-services`, `qt6-core`, `qt6-extras`, `kf6-frameworks`, `desktop-session`, `kde-desktop`) are silently dropped. The effective build set comes only from explicit `[packages]` entries. (`[V-05]`)
- **KF6 framework coverage is 8 of 38** in the active build. The remaining 30 (kirigami, kio, kcmutils, kconfigwidgets, kwayland, kxmlgui, prison, solid, sonnet, knewstuff, kwallet, kglobalaccel, kded6, kparts, ktextwidgets, kwidgetsaddons, kiconthemes, kitemmodels, kitemviews, kjobwidgets, knewstuff, knotifications, kpackage, kservice, kcompletion, kcolorscheme, kcodecs, karchive, kauth, kbookmarks, attica) are all marked `# GREETER-DEFER`. `kwin`, `plasma-framework`, `plasma-workspace`, `plasma-desktop`, `kdecoration`, `kglobalacceld`, `konsole` are also deferred. (`[V-05]`)
- **PAM path** (`pam-redbear``redbear-authd` via Unix socket at `/run/redbear-authd.sock``redbear-session-launch``redbear-kde-session` → compositor + kded6 + plasmashell) is implemented but relies on a session file that does not exist.
### 8. Documentation and policy
- **Five sources of documentation contain stale or contradictory graphics claims**:
1. `local/docs/3D-DRIVER-PLAN.md` — internal contradiction between §1 (exec summary) and §1.2/§2/§4.2 (which describe a stale state) and the 2026-07-25 inline updates (which describe a newer state). Executive summary was never rewritten.
2. `README.md:133` — claims Mesa builds only `softpipe,llvmpipe,virgl` and no LNL/PTL; recipe and `dmc.rs` prove otherwise.
3. `local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md` — line 43 says Qt6 null+8 is "verified FIXED"; lines 240-243 say it is "WIRED, UNVALIDATED"; this same plan still lists `redbear-full` Mesa as `softpipe + virgl`.
4. `local/docs/REDBEAR-FULL-SDDM-BRINGUP.md` — marks driver-manager as the sole remaining ISO blocker (operator WIP).
5. `local/docs/WAYLAND-IMPLEMENTATION-PLAN.md` — marked "RESOLVED — 2026-07-08"; the Qt6 null+8 crash is still the dominant desktop blocker. (`[V-09]`)
- **Project policy** (`local/AGENTS.md`) requires no stubs, durable local sources, no auto-fork policy, and asserts `package_groups` is supported. The actual installer code does not implement `package_groups`, and the SDDM port uses sed chains (`wayland-patch.sh`), fake headers, and a documented but unbuilt PAM config — all of which the policy discourages. (`[V-05]`, `[V-10]`)
### 9. Hardware validation
- **Host GPU**: Intel `8086:7d51` (Arrow Lake-P/Arc Pro 130T). Classified as Meteor Lake Gen14. Will get display/modeset but not 3D.
- **Zero real-hardware runtime proof exists** for any Intel or AMD GPU. All kernel Intel/AMD work is compile-time only; no Mesa iris/radeonsi runtime on real silicon. (`[V-07]`, `[V-08]`, `[V-13]`)
### 10. Provenance
- **`qemu-boot.log`** (Jul 10): KERNEL PANIC. **`build-live-redbear-full.log`** (Jul 11) and **`build-redbear-mini.log`** (Jul 11, 7.7 MB): no full redbear-full ISO was ever produced.
- **Recent Mesa-related commits** on `08f3e71d41` (iris+radeonsi enabled), `9ff9b4b0e2` (Redox EGL platform), `38c79b5625` (winsys wiring), `4b58abd15b` (Phase 4 doc), `9e9edb5cd1` (4 new ioctls), `a506e62055` (real ADDFB+SCANOUT_FLIP), `ee33af19cb` (real scheme-level eventfd) are all **source commits without runtime validation**; each landed in the same day. (`[O-009]`, `[V-06]`)
---
## Codebase findings (file:line anchors)
| Path | Lines | Finding |
|---|---|---|
| `local/recipes/libs/mesa/recipe.toml` | 89-109 | Recipe declares iris, radeonsi, Vulkan; configure fails on `libclc` |
| `local/recipes/libs/mesa/source/src/egl/drivers/dri2/platform_redox.c` | 72-74 | `redox_flush_front_buffer` is empty (no-op) |
| `local/recipes/libs/mesa/source/src/gallium/meson.build` | 11 | `redox_drm_winsys_create` gated on `with_gallium_iris or with_gallium_radeonsi` (never selected) |
| `local/recipes/libs/mesa/source/src/gallium/winsys/redox/drm/redox_drm_winsys.c` | 325-374 | `redox_drm_create_screen` exists; no callsites from iris/radeonsi |
| `local/recipes/libs/mesa/target/x86_64-unknown-redox/build/meson-logs/meson-log.txt` | 282 | `ERROR: Dependency "libclc" not found (tried pkg-config)` |
| `local/recipes/gpu/redox-drm/source/src/drivers/intel/dmc.rs` | 161-249 | PCI ID table; `0x7D51` → Gen14; LNL/PTL recognized |
| `local/recipes/gpu/redox-drm/source/src/drivers/intel/mod.rs` | 490-624 | `redox_private_cs_submit`/`wait`; no PPGTT |
| `local/recipes/gpu/redox-drm/source/src/drivers/mod.rs` | 29 | `INTEL_GEN12_ARL_IDS = [0x6420, 0x64A0, 0x64B0]` (actual LNL IDs) |
| `local/recipes/gpu/redox-drm/source/src/drivers/virtio/mod.rs` | 86-238, 565-839 | Full virtio GPU + virgl methods |
| `local/recipes/gpu/redox-drm/source/src/scheme.rs` | 30-59, 1488-1493, 1798-1998 | DRM + VIRTGPU ioctls; `major: 1` |
| `local/recipes/gpu/amdgpu/source/amdgpu_redox_main.c` | (whole) | Bounded display glue; no radeonsi kernel path |
| `local/recipes/wayland/redbear-compositor/source/src/main.rs` | 1298-1364 | 13 globals; no `zxdg_output_manager_v1`; xdg-shell full; `wl_shell` partial |
| `local/recipes/kde/sddm/recipe.toml` | 166 | SDDM recipe, Wayland-only, PAM enabled |
| `local/recipes/kde/sddm/wayland-patch.sh` | 119-191 | sed-driven X11 removal (violates zero-tolerance stub policy) |
| `local/recipes/libs/pam-redbear/source/src/lib.rs` | (whole) | Real PAM ABI; proxies to authd via Unix socket |
| `config/redbear-full.toml` | 195-200, 432, 448, 504-521 | SDDM wired; legacy greeter gated; no SDDM init service; no PAM; no kde-wayland.desktop |
| `local/sources/installer/src/config/mod.rs` | 20-34 | `Config` struct has no `package_groups` field (dead groups) |
| `local/scripts/test-virgl-qemu.sh` | 99-115, 142 | `virtio-vga-gl,virgl=on`; dry-run only; no guest login, demo, or capture |
| `local/docs/3D-DRIVER-PLAN.md` | 36-127, 371-421, 868 | Internal contradictions; Phase 4/5/6 claims overstate |
| `local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md` | 43, 100, 114, 196-203, 240-243 | Multiple stale/contradictory status |
| `local/docs/QT6-WAYLAND-NULL8-DIAGNOSIS.md` | 60, 198-220 | Static diagnosis only; runbook unexecuted; "verified FIXED" overstated |
---
## Code findings (with line anchors)
| Path | Lines | Content |
|---|---|---|
| `local/recipes/libs/mesa/recipe.toml` | 89-109 | Recipe declares `iris,radeonsi,Vulkan` |
| `local/recipes/libs/mesa/source/src/egl/drivers/dri2/platform_redox.c` | 72-74 | Empty flush |
| `local/recipes/libs/mesa/source/src/gallium/meson.build` | 11 | Winsys gate |
| `local/recipes/libs/mesa/source/src/gallium/winsys/redox/drm/redox_drm_winsys.c` | 325-374 | `redox_drm_create_screen` |
| `local/recipes/libs/mesa/target/.../meson-logs/meson-log.txt` | 282 | `libclc` not found |
| `local/recipes/gpu/redox-drm/source/src/drivers/intel/dmc.rs` | 161-249 | PCI IDs |
| `local/recipes/gpu/redox-drm/source/src/drivers/intel/mod.rs` | 490-624 | CS ABI |
| `local/recipes/gpu/redox-drm/source/src/drivers/mod.rs` | 29 | LNL/ARL ID swap |
| `local/recipes/gpu/redox-drm/source/src/drivers/virtio/mod.rs` | 86-238, 565-839 | virtio methods |
| `local/recipes/gpu/redox-drm/source/src/scheme.rs` | 30-59, 1488-1493, 1798-1998 | ioctls |
| `local/recipes/gpu/amdgpu/source/amdgpu_redox_main.c` | (whole) | display glue only |
| `local/recipes/wayland/redbear-compositor/source/src/main.rs` | 1298-1364 | globals |
| `local/recipes/kde/sddm/recipe.toml` | 166 | SDDM |
| `local/recipes/kde/sddm/wayland-patch.sh` | 119-191 | sed hacks |
| `local/recipes/libs/pam-redbear/source/src/lib.rs` | (whole) | PAM |
| `config/redbear-full.toml` | 195-200, 432, 448, 504-521 | services |
| `local/sources/installer/src/config/mod.rs` | 20-34 | Config struct |
| `local/scripts/test-virgl-qemu.sh` | 99-115, 142 | test harness |
| `local/docs/3D-DRIVER-PLAN.md` | 36-127, 371-421, 868 | 3D plan |
| `local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md` | 43, 100, 114, 196-203, 240-243 | desktop plan |
| `local/docs/QT6-WAYLAND-NULL8-DIAGNOSIS.md` | 60, 198-220 | Qt diagnosis |
---
## Verified claims (high-risk non-code, cleared for synthesis)
See `claim-graph.md` `## Verified claims digest` for V-01 through V-13. Key convergent claims:
- **V-01** the redbear-full target has never been built; Mesa configure is broken; Wayland test harness is dry-run.
- **V-02** the uncommitted eventfd/fence change has wire/struct/ownership/notification defects.
- **V-03** the Redox winsys is committed but never compiled.
- **V-04** redbear-compositor advertises 13 Wayland globals and is missing xdg-output; 5 sibling modules are dead code.
- **V-05** SDDM has no init service, no `/etc/pam.d/sddm`, no `kde-wayland.desktop`, no greeter user in the include chain.
- **V-06** Mesa build artifacts are from a prior softpipe+llvmpipe+virgl-only build; no iris/radeonsi/Vulkan artifacts exist.
- **V-07** the kernel Intel path treats `0x7D51` as MTL Gen14 and lacks PPGTT/GuC/iris consumer.
- **V-08** AMD kernel is display-only; no radeonsi kernel ABI exists.
- **V-09** documentation overclaims across five sources.
- **V-10** Mesa cannot discover the custom redox-drm via standard loader paths.
- **V-11** the Redox EGL platform is built but flush is a no-op; upstream virgl winsys version check fails.
- **V-12** test harness cannot satisfy its own proof target; host QEMU has removed `virgl=on` property.
- **V-13** host GPU `8086:7d51` correctly classified as MTL Gen14; no separate ARL driver table entry.
---
## Sources (ranked)
Primary, source-confirmed files:
- `local/recipes/libs/mesa/{recipe.toml, source/...}` — Mesa build state and source
- `local/recipes/gpu/redox-drm/source/src/{scheme.rs, driver.rs, drivers/{intel,amd,virtio}/*}` — kernel-side GPU implementation
- `local/recipes/wayland/redbear-compositor/source/src/main.rs` — compositor implementation
- `config/redbear-full.toml` — effective desktop config
- `local/sources/installer/src/config/mod.rs` — installer Config parser
- `local/scripts/test-virgl-qemu.sh` — virgl test harness
Documentation:
- `local/docs/3D-DRIVER-PLAN.md` — canonical 3D plan
- `local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md` — canonical desktop plan
- `local/docs/QT6-WAYLAND-NULL8-DIAGNOSIS.md` — Qt null+8 diagnosis
- `local/docs/REDBEAR-FULL-SDDM-BRINGUP.md` — SDDM bringup
- `local/docs/WAYLAND-IMPLEMENTATION-PLAN.md` — Wayland plan
- `local/docs/DRM-MODERNIZATION-EXECUTION-PLAN.md` — DRM plan
- `local/docs/HARDWARE-VALIDATION-MATRIX.md` — hardware status
External reference (used by librarian/Oracle workers):
- QEMU `virtio-gpu` documentation, Mesa upstream `virgl_drm_winsys.c`, Mesa `intel_device_info.c`, Linux `i915_pciids.h`, Mesa `loader.c`, Mesa `pipe_loader_drm.c`, libdrm `loader_get_driver_for_fd`, Khronos EGL, Phoronix Xe2/Xe3, Redox upstream `ihdgd` and `virtio-gpud`, Redox Mesa `swrast`-only build, Freedesktop.org DRI-devel.
## Epistemic instrumentation
- **Intent-vs-reality diff**: `.omo/ulw-research/20260725-223644/intent-diff.md` (10 intent rows: 4 partial, 4 violated, 1 partial, 1 unknown).
- **Observation manifest**: `.omo/ulw-research/20260725-223644/observation-manifest.md` (15 observations with contamination notes).
- **Claim graph**: `.omo/ulw-research/20260725-223644/claim-graph.md` (13 V-nodes + 10 C-nodes with status and expansion markers).
- **Verification economics**: `.omo/ulw-research/20260725-223644/verification-economics.md` (per-claim cost/decision/remaining risk).
- **Cause disappearance**: `.omo/ulw-research/20260725-223644/cause-disappearance.md` (3 superseded diagnoses).
- **Expansion log**: `.omo/ulw-research/20260725-223644/expansion-log.md` (Wave 0 + Wave 1 leads, no Wave 2 needed at this time because the lead set is exhausted).
- **Wave-1 digest**: `.omo/ulw-research/20260725-223644/wave-1-synthesis.md`.
## Contradictions
- **3D-DRIVER-PLAN internal**: §1 (exec summary) says no iris, no winsys, no Vulkan. Appended §1.2/§2/§4.2 (also 2026-07-24) say the same. But appended 2026-07-25 updates at lines 129-208 say iris/radeonsi/Vulkan enabled, Phase 4 winsys landed, Phase 5+ ioctls landed. Document contradicts itself.
- **README vs current Mesa**: README:133 says "Mesa 26.1.4 builds only `softpipe,llvmpipe,virgl`". `recipe.toml:94` says `iris,radeonsi` are now in the list. Current configure fails on `libclc`, so neither is actually built. The on-disk .so is from a prior config. README is stale.
- **Qt6 Wayland status language**: CONSOLE-TO-KDE:43 says "null+8 crash verified FIXED"; CONSOLE-TO-KDE:240-243 say "WIRED, UNVALIDATED"; QT6-WAYLAND-NULL8-DIAGNOSIS:60 says "NEVER runtime-validated in isolation". The same project uses three different status phrases for the same item.
- **Mesa winsys state**: Doc says "Phase 4 winsys landed". Mesa meson.build gates the winsys on iris+radeonsi; neither was selected in the only successful build; winsys never compiled. The Phase 4 claim is true at the source level but unproven at the build level.
- **Fence design**: Plan/commits describe scheme-path `card0/fence/<seqno>`. Working tree uncommitted change switches to eventfd. Eventfd code has wire/ownership defects. Plan doc references "kernel NodeKind::Fence" but kernel `src/scheme/` contains no DRM scheme at all. Fence design is unsettled.
## Gaps
- **Build provenance is unsound**: no `redbear-full` image; uncommitted working tree has 3,108 entries; Mesa is mid-rebuild; libclc never built.
- **Runtime evidence is not available** for: Mesa EGL/GLES2 client, KWin compositor, KWin Wayland shell, SDDM QML greeter, KDE Plasma shell, Intel iris frame, AMD radeonsi frame, full hardware accelerated 3D.
- **Policy violations**: `wayland-patch.sh` sed chains and `/usr/lib/init.d` from base vs `/etc/init.d` overrides need an explicit policy audit.
- **Source-vs-claim gap**: the `3D-DRIVER-PLAN.md` Phase 7.4/7.5/7.6 still claims mesa+iris+radeonsi work; nothing in the codebase yet produces those artifacts.
## Expansion trace
- **Wave 0** (initial): 17 workers (10 codex explore + 6 librarian + 1 oracle) covering docs, code, runtimes, validation, history, references, and one adversarial adjudication.
- **Wave 1** (targeted): 7 workers (6 codex explore + 1 librarian) verifying the current state of Mesa integration, compositor protocol, virtio virgl ABI, Intel coverage, SDDM effective path, runtime evidence, and external virgl architecture countercheck.
- **Wave 1 retrieved**: all 7 with deep adjudication. Wave 1 closed the high-risk leads; remaining Wave-2 candidates are now policy-level and require a separate orchestrator action (committed clean build, script updates, fence redesign).
- **Convergence**: V-01 through V-13 (13 high-risk non-code claims) supported with 2+ independent observer groups; 10 unresolved C-nodes remain; 7 expansion markers queued.
## Recommendations (sequenced, smallest first)
1. **Stop reporting "verified FIXED", "landed", or "complete"** in any doc until a corresponding runtime artifact exists. This is the highest-impact, lowest-cost change.
2. **Commit the working tree** (or stash) before any further canonical `build-redbear.sh` run; the `redox_drm_fence.c` eventfd rewrite and the `libclc` dep in `recipe.toml` need to be in the durable source.
3. **Fix Mesa configure end-to-end**: build `libclc` first; resolve `gallium-rusticl-enable-drivers` to avoid further dep spirals; capture the build that produces `iris_dri.so` and `radeonsi_dri.so`.
4. **Fix `DRM_IOCTL_VERSION`** in `redox-drm/src/scheme.rs` to `major: 0` and populate `name`; add `renderD128`; implement `drmGetDevice2` so Mesa can discover the GPU without `MESA_LOADER_DRIVER_OVERRIDE`.
5. **Wire the modular compositor files** (or delete them) and fix `redox_flush_front_buffer` and the DRM page-flip handle; advertise `zxdg_output_manager_v1`; ship `xdg_toplevel.wm_capabilities`.
6. **Add `[[files]]` to redbear-full.toml** for `/etc/init.d/21_sddm.service`, `/etc/pam.d/sddm`, `/usr/share/wayland-sessions/kde-wayland.desktop`, and inline the `greeter` user.
7. **Make `package_groups` functional** in `Config` or uncomment all GREETER-DEFER packages into flat `[packages]`.
8. **Run the existing `test-virgl-qemu.sh --check`** with corrected QEMU properties (`venus=` if you want Venus, or `blob=true` for virgl 3D) and capture a screenshot of a host-rendered GLES triangle.
9. **Run the existing `test-phase4-wayland-qemu.sh`** and confirm a Qt6 client can register globals, create a surface via xdg-shell, and commit a buffer.
10. **Then** consider un-deferring KWin + Plasma packages and re-running the Phase 6 KDE session test.
The honest success criterion for a single iteration is: a fresh `redbear-full.iso` boots to a graphical SDDM login (or, falling back, to a Qt6 Wayland window proving the Qt null+8 fix), and the captured PNG is committed under `local/docs/evidence/`. Until that artifact exists, every claim about the desktop is a roadmap item, not a feature.
@@ -0,0 +1,7 @@
# Cause Disappearance Ledger — 3D Desktop Readiness
| cause id | expected truth | previous observation | last_seen | disconfirming observation | replacement cause | current status | violation no longer observed? |
|---|---|---|---|---|---|---|---|
| D-001 | Qt QML cannot build because QML/JIT surface is absent | Older desktop plan status says QML gate / missing headers | v5.8/v5.9 history in canonical plan | Same plan says headers/libs exist and qml_jit is OFF, interpreter works | Qt Wayland protocol/runtime crash candidate | superseded/needs execution proof | no |
| D-002 | Mesa virgl only lacks patch wiring | Older plan says add missing patches | v5.0v5.9 history | 3D plan says target platform file is absent and patch chain may be broken | recreate current Redox EGL/platform integration | superseded/needs source verification | no |
| D-003 | Build-side KWin/SDDM readiness implies desktop login | README/status tables describe wired packages | current docs | No visible greeter/session proof found in initial read | end-to-end runtime acceptance gap | active | no |
@@ -0,0 +1,44 @@
# Claim Graph — 3D Desktop Readiness (post Wave 1+ adjudication)
## Verified claims digest (high-risk non-code + code claims cleared for synthesis)
| claim_id | statement | evidence class | convergent support | counter-search | primary source | status |
|---|---|---|---|---|---|---|
| V-01 | The `redbear-full` target has never produced a bootable image; the current Mesa configure is broken at `libclc`, the Wayland test harness is dry-run, and host is Arrow Lake-P/Arc Pro 130T (`8086:7d51`). | code/runtime | Two independent observers (audit + evidence) + Oracle verdict | Mesa meson-log, build dir, test-virgl-qemu, qemu-boot.log, drivers/mod.rs | local/recipes/libs/mesa/target/.../meson-logs/meson-log.txt; build/x86_64/redbear-full/; local/scripts/test-virgl-qemu.sh; qemu-boot.log | supported |
| V-02 | The committed eventfd/fence change in `redox_drm_fence.c` and `scheme.rs` contains structural defects (wire-struct mismatch, swapped ioctl numbers, fd ownership invalid, no notification driver). The committed scheme-fence also never fires `fevent()`. | code | Oracle + Mesa fence worker | `drm_get_pci_id_for_fd`, upstream Linux `drm_syncobj` | C source `local/recipes/libs/mesa/source/src/gallium/winsys/redox/drm/redox_drm_fence.c`; `local/recipes/gpu/redox-drm/source/src/scheme.rs` | supported |
| V-03 | The Redox gallium winsys is committed but its `redox_drm_winsys_create` symbol is gated in `src/gallium/meson.build:11` on `with_gallium_iris or with_gallium_radeonsi`, neither of which the only successful build selected. The winsys therefore does not compile into any built image. | code | Mesa worker + Oracle | `meson.build` of `gallium/meson.build`, recipe history, `build.ninja` | local/recipes/libs/mesa/source/src/gallium/meson.build:11; build.ninja (previous) | supported |
| V-04 | `redbear-compositor` advertises 13 Wayland globals (wl_compositor, wl_shm, wl_shell, wl_seat, wl_output, xdg_wm_base, wl_fixes, wl_data_device_manager, wl_subcompositor, zxdg_decoration_manager_v1, zwp_linux_dmabuf_v1, wp_viewporter, wp_presentation) but does not advertise `zxdg_output_manager_v1`; its 5 sibling modules (`protocol.rs`, `state.rs`, `wire.rs`, `handlers.rs`, `display_backend.rs`) are not `mod`-declared in `main.rs` and are dead code. | code | Wayland worker | Wayland upstream | local/recipes/wayland/redbear-compositor/source/src/main.rs:1298-1364 | supported |
| V-05 | SDDM has no init.d service to start it; there is no `/etc/pam.d/sddm`; there is no `kde-wayland.desktop` in any path; the `greeter` user defined in `redbear-greeter-services.toml` is not in the include chain of `redbear-full.toml`. | code/config | SDDM/config worker | n/a (no system surface for these artifacts) | `config/redbear-full.toml`, `local/sources/installer/src/config/mod.rs`, `local/recipes/system/redbear-greeter/` | supported |
| V-06 | The Mesa build artifacts on disk (`libgallium-26.1.4.so` 23.9 MB Jul 25 07:50) come from a prior build with `gallium-drivers=softpipe,llvmpipe,virgl` only; the current configure with `iris,radeonsi,Vulkan` fails at `libclc`; no `iris_dri.so`, `radeonsi_dri.so`, or Vulkan ICDs exist; no `mesa.pkgar` exists; no Mesa artifacts in any image. | code/artifact | Mesa worker + evidence worker | `meson-log.txt`, `stage.tmp/` (empty), `repo/` (no PKGAR) | `local/recipes/libs/mesa/target/.../build/build.ninja`, `meson-log.txt` | supported |
| V-07 | The kernel-side Intel path treats `8086:7d51` as Meteor Lake (Gen14, display v14) and recognizes LNL (Gen15, v20) and PTL (Gen16, v30); no PPGTT, no GuC/HuC/GSC loaders, no iris-backed userland path that consumes the `redox_private_cs_submit` ABI. | code | Intel worker + Oracle | Linux `i915_pciids.h`; Xe driver upstream | `local/recipes/gpu/redox-drm/source/src/drivers/intel/dmc.rs:161-249`; `mod.rs:880-925` | supported |
| V-08 | The AMD kernel path is display-only (C glue is bounded; the Rust driver has GGTT and a single SDMA ring); no VRAM/GTT domain awareness, no `AMDGPU_CTX`, no `AMDGPU_CS`; radeonsi would have to bridge a private-CS ABI to a standard `amdgpu_winsys` that the Mesa recipe claims to build. | code | AMD worker + AMD librarian | Upstream Mesa radeonsi; libdrm_amdgpu | `local/recipes/gpu/amdgpu/source/amdgpu_redox_main.c`; `local/recipes/gpu/redox-drm/source/src/drivers/amd/ring.rs`; `local/recipes/libs/mesa/source/src/gallium/drivers/radeonsi/` | supported |
| V-09 | The repository documentation overclaims graphics state relative to source/build/runtime in five places (3D plan, README, CONSOLE-TO-KDE, SDDM bringup, DESKTOP plan) and contains self-contradicting sections; Qt6 Wayland null+8 is documented as "verified FIXED" with no isolated runtime validation. | doc | Doc worker + Oracle | n/a (internal docs only) | `local/docs/3D-DRIVER-PLAN.md`; `local/docs/QT6-WAYLAND-NULL8-DIAGNOSIS.md`; `local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md` | supported |
| V-10 | The Redox virtio GPU driver (VIRTIO_GPU_F_VIRGL negotiation, 3D resource creation, context init, execbuffer, transfer, wait) is committed and the `redox-drm` scheme dispatches the standard `DRM_IOCTL_VIRTGPU_*` set; the Mesa upstream `virgl_drm_winsys` cannot use it unmodified because the `DRM_IOCTL_VERSION` major number returned by `redox-drm` is 1 (Mesa requires 0), and Mesa cannot discover the driver name because `drmGetVersion` does not populate the name string and render nodes `renderD%d` are not exposed. | code | Virtio worker | Mesa upstream `virgl_drm_winsys.c`; libdrm `loader_get_driver_for_fd` | `local/recipes/gpu/redox-drm/source/src/scheme.rs:1488-1493`; `local/recipes/libs/mesa/source/src/loader/loader.c` | supported |
| V-11 | The Redox EGL platform is built (`platform_redox.c` 283 lines) and wired into meson, but `redox_flush_front_buffer` is an empty function body, so EGL surfaces flush nothing; Mesa's upstream `virgl_drm_winsys_create` also requires `version->version_major == 0` to be selected. | code | Mesa + virtio workers | Mesa upstream EGL platform | `local/recipes/libs/mesa/source/src/egl/drivers/dri2/platform_redox.c:72-74`; `virgl_drm_winsys.c:1245-1250` | supported |
| V-12 | The QEMU harness as written does not satisfy its own stated proof target: it never logs into a guest, never runs a GLES demo, never queries the renderer, never captures a screenshot; host QEMU 11.0.2 also rejects `virgl=on` (property does not exist; it was renamed `venus=`). | execution/host | Evidence worker + direct host execution | n/a | `local/scripts/test-virgl-qemu.sh`; `qemu-system-x86_64 -device help` | supported |
| V-13 | The host GPU is `8086:7d51`. The Red Bear Intel tables map it to Meteor Lake (Gen14, display v14) — same silicon block; Linux also classifies it as MTL. There is no separate Arrow Lake entry that improves display support. | code/hardware | Intel worker | `local/reference/linux-7.1/.../i915_pciids.h` (not present); host `lspci` | `local/recipes/gpu/redox-drm/source/src/drivers/intel/dmc.rs:164`; `lspci -nn` (host) | supported |
## Claim nodes (consolidated, post Wave 1+)
| claim_id | statement | type | risk | status | synthesis |
|---|---|---|---|---|---|
| C-01 | virgl 3D host-rendered triangle via QEMU `virtio-vga-gl,virgl=on` is achievable in principle but blocked by Mesa winsys/EGL/loader gaps; default launch is 2D; test harness is dry-run and host has property `virgl` removed. | runtime | high | unresolved | Section: Virgl/QEMU |
| C-02 | Mesa iris 3D on Intel is unproven and blocked by an ABI gap: kernel has only `redox_private_cs_submit`/wait, no PPGTT, no GuC/HuC/GSC, no DMA-BUF export. The Mesa-side `gallium/winsys/redox/` is committed but wired only when iris/radeonsi are selected, which the only successful build did not select. | runtime/architecture | high | unresolved | Section: Intel iris |
| C-03 | Mesa radeonsi is in the recipe string but the configure cannot complete; the kernel driver has no VRAM/GTT/BO context/execbuffer equivalent, only SDMA display. The radeonsi `amdgpu_winsys` is not bridged. | runtime/architecture | high | unresolved | Section: AMD radeonsi |
| C-04 | Qt6 Wayland client → redbear-compositor has never been runtime-validated in isolation; 5 sibling compositor modules are dead code; `zxdg_output_manager_v1` is not advertised. The null+8 patch has only static diagnosis. | runtime/architecture | high | unresolved | Section: Wayland/Qt |
| C-05 | SDDM greeter is build-wired but not runtime-validated. There is no init.d, no `/etc/pam.d/sddm`, no `kde-wayland.desktop`, and no greeter user in the active include chain. | runtime/architecture | high | unresolved | Section: SDDM |
| C-06 | First visible SDDM login requires: (a) clean Mesa build; (b) flush_front_buffer or proper scanout; (c) xdg-shell roundtrip; (d) Qt6 Wayland client without null+8; (e) PAM conversation; (f) DRM card0 with correct PAGE_FLIP shape. | runtime/architecture | high | unresolved | Section: SDDM |
| C-07 | KWin/KDE Plasma runtime requires KWin recipe to be un-deferred and all GREETER-DEFER packages included, then KWin DRM device path to point at `/scheme/drm/card0`, then Qt6 Wayland to initialize, then 30+ KF6 frameworks to be uncommented. | runtime | high | unresolved | Section: KWin/Plasma |
| C-08 | Documentation overclaims across 3D plan, README, CONSOLE-TO-KDE, SDDM bringup. Several "verified FIXED" / "Phase X landed" annotations are not runtime-validated. | documentation | normal | resolved (V-09) | Section: Documentation |
| C-09 | Working tree is contaminated with 3,108 uncommitted/untracked entries, including uncommitted fence rewrite that swaps an already-committed design. | provenance | high | unresolved | Section: Provenance |
| C-10 | The three-comma policy rule (no stubs/fake headers/sed chains) is violated by the SDDM `wayland-patch.sh` and several sed/awk patches. The current state of the port violates the no-stubs rule. | policy | high | unresolved | Section: Policy |
## EXPAND markers (Wave 2 candidates, prioritized)
- LEAD: Run `repo cook libclc` then `repo cook mesa` under canonical wrapper and capture whether the libclc configure passes and whether the Mesa `with_gallium_iris` / `with_gallium_radeonsi` / Vulkan build paths actually emit binary artifacts; WHY: this is the only remaining experimental gate before any 3D claim; ANGLE: read target/ artifacts, dep_hashes, cmd_line of meson configure, and repo pkgar list.
- LEAD: Wire `mod protocol; mod state; mod wire; mod handlers; mod display_backend;` into redbear-compositor's main.rs and resolve type conflicts; advertise `zxdg_output_manager_v1`; fix `redox_flush_front_buffer` and the DRM page-flip handle reuse; WHY: the modular refactor is the documented design and the cleanest path to a tested protocol surface; ANGLE: incremental per-module import + targeted xdg-shell + xdg-output acceptance test.
- LEAD: Replace uncommitted eventfd fence with the committed `card0/fence/<seqno>` scheme path or a real, tested eventfd design that fixes the wire/ownership/notification defects identified by Oracle; commit cleanly; WHY: the working-tree version has deterministically wrong structs; ANGLE: wire-struct rebuild, ring mutex/condvar, fd duplication test.
- LEAD: Add `[[files]]` entries to `redbear-full.toml` for `/etc/init.d/21_sddm.service`, `/etc/pam.d/sddm`, `/usr/share/wayland-sessions/kde-wayland.desktop`, and inline the `greeter` user; WHY: without these SDDM cannot start or authenticate; ANGLE: minimal SDDM service definition that waits for D-Bus/seatd/authd, PAM config using `pam-redbear.so`, minimal `kde-wayland.desktop` calling `redbear-kde-session`.
- LEAD: Fix `DRM_IOCTL_VERSION` in `redox-drm/src/scheme.rs` to return `major: 0` and a populated `name` field; add `renderD128` scheme node; WHY: required for Mesa `loader_get_driver_for_fd` to discover the virtio device without `MESA_LOADER_DRIVER_OVERRIDE`; ANGLE: scheme patch + libdrm drmGetVersion / drmGetDevice2 paths.
- LEAD: Either remove `package_groups.*` from the configs and uncomment all GREETER-DEFER packages into flat `[packages]`, or implement group resolution in the installer's `Config` struct; WHY: current state makes effective build surface invisible; ANGLE: small, surgical Config change; verify only one path is used.
- LEAD: Establish a clean canonical build for `redbear-full` on the host QEMU+libclc+virtio path, capture login+screensaver PNG, and update README/3D-DRIVER-PLAN accordingly. WHY: every claim above is downstream of one successful run; ANGLE: host QEMU 11.0.2 with `gpu=virtio-gl` and `MESA_LOADER_DRIVER_OVERRIDE=virgl`, capture PNG, capture virglrenderer log, capture `journalctl -t redbear-drm`.
@@ -0,0 +1,32 @@
# Expansion Log — 3D Desktop Readiness
## Wave 0 — seed
Workers launched: canonical docs; Mesa build/source; virgl runtime; Intel; AMD; Wayland/Qt/KWin; SDDM; config graph; validation evidence; git history; Mesa/QEMU references; Intel references; AMD references; KDE/SDDM references; Redox precedent; red-team.
Initial leads:
- Reconcile 3D-DRIVER-PLAN claims against current source and recent commits.
- Determine whether the Mesa Redox EGL platform exists or must be rebuilt.
- Prove whether the megadriver exports/loaders actually work.
- Trace generic Redox winsys versus iris/radeonsi-specific DRM expectations.
- Verify Qt null+8 status after commits and current runtime evidence.
- Verify SDDM service ordering, compositor ownership, PAM, session, and post-login.
- Check uncommitted working tree pollution and whether it invalidates artifacts.
- Find current QEMU GL/virgl harness and missing demo/evidence.
## Wave 1 — targeted expansion launched
Workers: current Mesa integration; compositor protocol; virtio virgl ABI; Intel coverage/host ID; effective SDDM path; runtime evidence inventory; external virgl architecture countercheck.
Reason: Wave 1 returned material contradictions that cannot be resolved from historical plans alone. The source tree, generated build, and current working tree must be treated as separate states. The compositor protocol report conflicts on xdg-shell and fd/wire semantics; virgl reports conflict on whether the custom redox-drm virtio backend is sufficient; SDDM/config reports conflict with project policy/status docs; the host GPU requires current ID mapping.
Open wave-1 questions:
- Does current `platform_redox.c` compile and provide a real surface flush, or retain a no-op?
- Does current compositor advertise and implement xdg-shell with standard wire semantics?
- Does custom redox-drm virtio implement the exact virgl path selected by Mesa?
- What is the effective SDDM session file/runtime path and active Plasma package surface?
- Which current artifacts are stale relative to the recipe/source commits?
## Wave 2 requirement
After Wave 1 returns, run at least one additional expansion wave for every unresolved high-risk lead or explicitly close it as duplicate/dead end. Oracle adjudication remains outstanding and must be collected before final synthesis.
@@ -0,0 +1,10 @@
# Intent-vs-Reality Diff — 3D Desktop Readiness
| intent_id | expected truth | observed reality (initial) | diff | violated invariant | intent source | supporting observations | status | linked claims |
|---|---|---|---|---|---|---|---|---|
| I-01 | Red Bear can run working virgl 3D on Mesa/Wayland in QEMU | Repository docs claim virgl is built, but current evidence read so far says runtime EGL/device path is unvalidated and QEMU scripts use 2D flags | Build presence is not runtime proof; exact path must be executed | Hardware acceleration claim requires a host-rendered GLES frame | User request; local/docs/3D-DRIVER-PLAN.md | 3D plan §§1,4; README status table | partial | C-01, C-02 |
| I-02 | Red Bear can run Intel 3D through Mesa iris on supported hardware | Current initial read says Mesa effective drivers are softpipe,llvmpipe,virgl; iris is not enabled; kernel CS ABI exists but no consumer is proven | Mesa userland and kernel render path are disconnected | Kernel backend without Mesa callsite is not exercised | User request; 3D plan §§1,3,7 | 3D plan §§1.3,3.6,7.4 | violated | C-03, C-04 |
| I-03 | Wayland compositor can present accelerated buffers and run Qt/KWin | Wayland/KDE docs contain conflicting versions of Qt null+8 status and compositor limitations | Runtime readiness is uncertain and may have independent protocol blockers | Compile/bounded proof cannot substitute for client/session proof | User request; canonical desktop plan | CONSOLE-TO-KDE initial read §§3.13.3 | unknown | C-05, C-06 |
| I-04 | SDDM can display a graphical greeter and authenticate into KDE Plasma | SDDM is wired build-side; initial docs say graphical login remains gated by Qt/Wayland runtime | Build wiring does not establish greeter, PAM, session, or post-login proof | Login acceptance requires visible greeter + successful authenticated session | User request; SDDM plan | CONSOLE-TO-KDE initial read §§3.3 | partial | C-07, C-08 |
| I-05 | AMD/Intel claims are evidence-backed and docs agree | Initial docs contradict each other (e.g. patches/iris/Qt status) | Status language is stale or mixed across plan generations | Current branch/source/evidence must be authoritative | User request; project policy | 3D plan vs canonical plan vs README | violated | C-09 |
| I-06 | The final path is maintainable under Red Bear policies | Project mandates no stubs/workarounds, durable local source, canonical builds, and Linux reference-only | Existing SDDM and graphics patches may violate policy or lack durable validation | No fake headers/sed chains; all source changes durable | AGENTS.md/local/AGENTS.md | policy excerpts | unknown | C-10 |
@@ -0,0 +1,19 @@
# Observation Manifest — 3D Desktop Readiness
| observation_id | source path or URL | evidence layer | observer group | independence basis | observer | observed_at | valid_at / claim_valid_at | artifact path | quote or line anchor | contamination notes |
|---|---|---|---|---|---|---|---|---|---|---|
| O-001 | local/docs/3D-DRIVER-PLAN.md | project documentation/source audit | orchestrator-initial | direct read | Sisyphus | 2026-07-25 | branch 0.3.1 current tree | .omo/ulw-research/20260725-223644/intent-diff.md | §§1,4; lines 36127, 371421 | Initial doc may be stale; must cross-check source/build/runtime |
| O-002 | local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md | project documentation/source audit | orchestrator-initial | direct read | Sisyphus | 2026-07-25 | v5.9 dated 2026-07-21 | .omo/ulw-research/20260725-223644/intent-diff.md | §§2.2,3.13.3; lines 192368 | Contains historical and superseded status blocks; conflicts with newer 3D plan |
| O-003 | README.md | project status | orchestrator-initial | direct read | Sisyphus | 2026-07-25 | branch 0.3.1 current tree | .omo/ulw-research/20260725-223644/intent-diff.md | Current Status graphics rows | README claims may lag commits |
| O-004 | local/recipes/libs/mesa/recipe.toml | source/config | codebase-Mesa | independent source inspection | Mesa worker | 2026-07-25 | current working tree | .omo/ulw-research/20260725-223644/wave-1-synthesis.md | recipe declares iris/radeonsi, `platforms=wayland,redox`, Vulkan intel/amd/swrast | Does not prove generated build or runtime |
| O-005 | local/recipes/libs/mesa/target/x86_64-unknown-redox/build/build.ninja | generated build | artifact-Mesa | independent generated-output inspection | Mesa worker | 2026-07-25 | last recorded build; commit e1fc194c06 per source_info | .omo/ulw-research/20260725-223644/wave-1-synthesis.md | effective drivers softpipe/llvmpipe/virgl; Vulkan empty; old artifacts | Stale relative to current recipe/source |
| O-006 | local/recipes/libs/mesa/source/src/egl/drivers/dri2/platform_redox.c | source | codebase-Mesa | independent source inspection | Mesa/red-team workers | 2026-07-25 | current working tree | .omo/ulw-research/20260725-223644/wave-1-synthesis.md | file exists and is wired by Mesa meson; flush behavior requires targeted verification | Working tree may be uncommitted/dirty |
| O-007 | local/recipes/gpu/redox-drm/source/src/drivers/virtio/{mod.rs,transport.rs} | source/ABI | codebase-virgl | independent call-chain inspection | virgl worker | 2026-07-25 | current working tree | .omo/ulw-research/20260725-223644/wave-1-synthesis.md | feature negotiation, 3D resource/capset/context/submit/transfer/wait paths reported | No runtime QEMU proof |
| O-008 | local/recipes/wayland/redbear-compositor/source/ | source/protocol | codebase-Wayland | independent source/test inspection | Wayland workers | 2026-07-25 | current working tree | .omo/ulw-research/20260725-223644/wave-1-synthesis.md | substantial compositor + protocol/check tests; xdg/wire details contradictory across reports | Needs targeted current-source adjudication |
| O-009 | local/docs/QT6-WAYLAND-NULL8-DIAGNOSIS.md | runtime diagnosis | codebase-Qt | independent documentation/source audit | Wayland/validation workers | 2026-07-25 | diagnosis dated 2026-07-20 | .omo/ulw-research/20260725-223644/wave-1-synthesis.md | candidate null guard is wired; isolated runtime runbook not executed | Static diagnosis only |
| O-010 | config/redbear-full.toml + installer Config parser | effective config | codebase-config | independent config/parser inspection | SDDM/config workers | 2026-07-25 | current working tree | .omo/ulw-research/20260725-223644/wave-1-synthesis.md | SDDM explicitly wired; KWin/Plasma deferred; package-group behavior disputed | Must verify parser and merged output |
| O-011 | `qemu-system-x86_64 -device help`, `-display help` | host capability | execution/environment | direct host command | Sisyphus | 2026-07-25 | QEMU 11.0.2 installed | .omo/ulw-research/20260725-223644/wave-1-synthesis.md | host offers `virtio-vga-gl`, `virtio-gpu-gl`, `egl-headless`, gtk/sdl | Host capability is not guest/runtime proof |
| O-012 | `lspci -nn` host output | hardware identity | execution/environment | direct host command | Sisyphus | 2026-07-25 | current host | .omo/ulw-research/20260725-223644/wave-1-synthesis.md | Intel 8086:7d51 reported as Arrow Lake-P/Arc Pro 130T | Mapping to current driver generation requires expansion |
| O-013 | git status/log current branch | provenance | repository state | direct git inspection | Sisyphus/history worker | 2026-07-25 | branch 0.3.1 current checkout | .omo/ulw-research/20260725-223644/wave-1-synthesis.md | ~3,108 status entries; recent render/fence commits plus uncommitted fence rewrite | Artifacts cannot be attributed without clean provenance |
| O-014 | local/scripts/test-virgl-qemu.sh + QEMU 11.0.2 host execution | runtime harness/host execution | execution-virgl | direct command plus source read | Sisyphus | 2026-07-25 | current host/QEMU | .omo/ulw-research/20260725-223644/wave-1-synthesis.md | script emits `-device virtio-vga-gl,virgl=on`; host rejects property `virgl`; script defines `runtime_env` but never injects it into QEMU/guest | This is host-specific to QEMU 11.0.2 but blocks the supplied harness here |
| O-015 | local/scripts/test-virgl-qemu.sh:98-150 | test harness source | execution-virgl | direct source inspection | Sisyphus | 2026-07-25 | current working tree | .omo/ulw-research/20260725-223644/wave-1-synthesis.md | after launch it only runs QEMU; no guest login, EGL/GLES demo, renderer query, or screenshot step is implemented | Script cannot satisfy its own stated proof target as written |
@@ -0,0 +1,10 @@
# Verification Economics — 3D Desktop Readiness
| claim | risk | error cost | verification cost/time | chosen verification path | defer/verify | outcome | residual risk |
|---|---|---|---|---|---|---|---|
| Virgl host-rendered GLES frame works | high | false acceleration claim / wrong roadmap | moderate-high; canonical ISO + QEMU GL host + demo | run canonical build, QEMU virgl harness, guest loader/debug evidence, screenshot | verify | pending | host GPU/QEMU availability |
| Mesa iris is loadable and renders on Intel | high | misleading hardware support claim | high; real Intel target + full Mesa build | inspect build graph first; canonical build; real hardware GLES demo + GPU identity | verify | pending | hardware availability |
| AMD radeonsi is usable | high | roadmap misprioritization | high; full driver/kernel path + AMD hardware | source/ABI audit then canonical build and real hardware proof | verify | pending | likely substantial missing implementation |
| Qt/Wayland protocol path works | high | blocks all desktop conclusions | moderate; QEMU compositor + Qt probe + logs | rebuild dependency chain through canonical pipeline and run client | verify | pending | runtime timing and protocol coverage |
| SDDM authenticates and launches Plasma | high | user-facing success criterion | high; full ISO boot/login/session capture | staged-file audit then QEMU visible greeter/login/post-login checks | verify | pending | session/D-Bus/portal dependencies |
| Documentation is internally consistent | normal | wasted engineering / bad claims | low-moderate; compare current tree/history | document audit + source/evidence cross-check | verify | pending | stale generated artifacts |
@@ -0,0 +1,45 @@
# Wave 1 Digest — 3D Desktop Readiness
Observed at: 2026-07-25 (branch 0.3.1; working tree dirty)
## Convergent findings
1. **Evidence ceiling is below runtime desktop.** Multiple independent codebase/QA lanes agree that available proof is source/build/stage and text-console evidence; there is no captured host-GPU virgl frame, Intel iris frame, AMD radeonsi frame, graphical SDDM greeter, KWin-managed window, or Plasma session. Relevant evidence paths: `local/scripts/test-virgl-qemu.sh`, `local/docs/QT6-WAYLAND-NULL8-DIAGNOSIS.md`, `local/docs/boot-logs/`, `qemu-boot*.png`, `local/recipes/system/redbear-hwutils/source/src/bin/`.
2. **Current source and last generated build disagree.** Current `local/recipes/libs/mesa/recipe.toml` declares `softpipe,llvmpipe,virgl,iris,radeonsi`, `platforms=wayland,redox`, and Vulkan `intel,amd,swrast`; current source reportedly contains `platform_redox.c` and `winsys/redox/drm/`. The existing `target/.../build/build.ninja` and artifacts are from an older configuration (`softpipe,llvmpipe,virgl`, no Vulkan), with no Mesa stage/package. This is a post-change build freshness gap, not proof that the new configuration works.
3. **Virgl guest transport is more complete than the original plan claimed.** Codebase lanes found a substantial `redox-drm` virtio backend with feature negotiation, 3D resources, capsets, context init, submit/transfer/wait ioctls, plus libdrm dispatch and a Redox Gallium winsys. It remains unexecuted. External reference lanes confirm QEMU requires a GL-capable device and host display GL (`virtio-vga-gl`/`virtio-gpu-gl` plus `-display ...,gl=on`). The default launcher still uses a 2D device; the dedicated virgl script is dry-run unless explicitly enabled.
4. **Fence implementation is not a settled fact.** Committed history describes a scheme-path fence (`card0/fence/<seqno>`), while the working tree changes `redox_drm_fence.c` and `redox-drm/source/src/scheme.rs` toward an eventfd ioctl. The plan calls this a kernel fence in places, but codebase inspection indicates `/scheme/drm/card0` is provided by the userspace redox-drm daemon, not a kernel DRM scheme. Treat fence ABI as unresolved until one design is built and tested.
5. **Intel/AMD hardware acceleration is not established.** Intel source contains real display/GGTT/ring/DMC work, but the private CS ABI is not equivalent to the i915/Xe GEM/VM/context/execbuffer ABI expected by stock iris. AMD source is primarily display/SDMA foundation; stock radeonsi expects a substantially richer amdgpu BO/VM/CS/context/fence ABI. A generic `redox_drm_winsys` existing is not proof that iris/radeonsi are connected to their driver-specific winsys contracts.
6. **Wayland/Qt/SDDM remains runtime-gated.** The compositor and protocol test infrastructure are substantial, but independent reports disagree on exact protocol coverage and identify possible nonstandard wire/fd behavior. The Qt null+8 patch is statically plausible but the diagnosis/runbook says isolated runtime validation has not happened. SDDM is build/config wired, but no SDDM-specific graphical login proof exists.
7. **KDE Plasma is not an active image target.** Config analysis reports KWin, Plasma Framework/Workspace/Desktop, and many KF6 packages marked `GREETER-DEFER`; Xwayland is not in the effective config. Isolated recipe build claims must not be conflated with inclusion in `redbear-full`.
8. **Documentation has material drift.** The 3D plan's initial executive summary predates same-day changes and contradicts appended updates. README and desktop plan contain stale driver status and overstate Qt null+8 resolution. A current-state ledger needs commit/source/build/runtime timestamps.
## Important contradictions requiring expansion
- Does current `platform_redox.c` actually compile and use a real EGL surface flush, or is `redox_flush_front_buffer` still a no-op?
- Does the current compositor implement `xdg_wm_base`/xdg-shell and standard Wayland wire encoding/fd passing, or do older status summaries describe a superseded implementation?
- Does the current redox-drm virtio driver pass the exact virgl UAPI needed by Mesa's upstream `virgl_drm_winsys`, or only by the new Redox winsys?
- Is the active Mesa recipe/source durable and buildable under the canonical wrapper, and what exact package/stage artifacts result after a fresh build?
- Which SDDM session desktop file and runtime directory are actually installed/created, and what is the effective service graph after config merge?
- What does the host's Intel Arrow Lake-P PCI ID `8086:7d51` map to in current Red Bear's driver table, and is display/render support appropriate?
## Worker EXPAND markers (normalized)
- LEAD: Execute/inspect the Phase A Qt6 null+8 diagnostic runbook — WHY: no graphical client proof — ANGLE: forced libwayland→qtbase→qtdeclarative→qtwayland rebuild and QEMU logs.
- LEAD: Verify xdg-shell and standard wire semantics in current compositor — WHY: Qt6 may require xdg-shell and exact protocol ABI — ANGLE: inspect current source and protocol test callsites.
- LEAD: Audit current Mesa platform/winsys against actual generated build — WHY: recipe and build.ninja disagree — ANGLE: source_info, meson targets, symbols, stage/repo artifacts.
- LEAD: Audit virgl UAPI coverage and driver selection — WHY: upstream virgl expects virtio-specific ioctls and device identity — ANGLE: compare `virgl_drm_winsys.c`, libdrm dispatch, redox-drm virtio implementation.
- LEAD: Resolve fence architecture and ownership — WHY: committed and uncommitted designs conflict — ANGLE: current diffs, scheme provider, fd lifetime, event signaling.
- LEAD: Resolve effective redbear-full config and SDDM session path — WHY: groups/deferred packages/session file claims conflict — ANGLE: installer Config parser, merged TOML, staged files, service ordering.
- LEAD: Verify Intel host ID and current device tables — WHY: host hardware is Arrow Lake-P 8086:7d51 — ANGLE: current registry/dmc tables plus Linux reference.
- LEAD: Triage uncommitted tree before treating artifacts as evidence — WHY: 3,108 status entries contaminate provenance — ANGLE: identify intentional graphics diffs vs generated source pollution.
## External source domains consulted
QEMU virtio-gpu docs; Mesa/virgl source and docs; Intel i915/Xe UAPI/docs; AMD libdrm/amdgpu/Mesa references; KDE KWin and SDDM source/docs; upstream Redox graphics/news/source. External claims remain subordinate to current-tree execution evidence.