Files
RedBear-OS/local/docs/3D-DESKTOP-COMPREHENSIVE-PLAN.md
T
vasilito e1adf3e9c8 round 13: strike through stale redbear-passwd and redbear-minimal.toml references
The Round 11 commit (a9e1c34e27) fixed both findings 14/15 and
18/18b/19 in the assessment doc; the Round 11 fix and Round 12
follow-ups (this round) update the remaining stale references.

1. local/docs/3D-DESKTOP-COMPREHENSIVE-PLAN.md §10 config table
   (lines 1159-1160): marked wifi-experimental.toml and
   bluetooth-experimental.toml include-typo as  FIXED 2026-07-27
   (was still listed as open).

2. local/docs/NETWORKING-AND-DRIVERS-CODE-ASSESSMENT-2026-07-27.md:
   struck through:
     - Finding 15 (redbear-passwd missing [source])
     - Critical-path P0-12/13/14 (include typo + [source] todo)
     - The Critical Path Hierarchy bullet list items
     - TODO priority list line 718 (redbear-passwd [source])
     - Backlog line 923 (C-23)
   Marked each with  RESOLVED 2026-07-27 (commit a9e1c34e27).

   These were the last unstruck-through references after the
   Round 11 fix landed. The assessment doc is now consistent
   with the post-fix state.

2 files changed, +14/-12.
2026-07-27 20:49:34 +09:00

79 KiB
Raw Blame History

Red Bear OS — 3D Drivers & 3D Desktop Comprehensive Assessment and Plan

Operating principle (from local/docs/3D-DRIVER-PLAN.md §10, the validation bar for this entire subsystem):

Code presence is not support. Build success is not support. A kernel-side driver is not support. A Mesa recipe string is not support. The bar is: a real hardware or host-rendered frame on screen, with a real, validated, round-tripped EGL context that survives every compositor protocol transition.


0. Document map

Version: 1.0 (2026-07-27) Scope: comprehensive audit + remediation plan for the 3D driver + 3D desktop stack: low-level GPU drivers → Mesa → Wayland → SDDM → full KDE Plasma 6. Audience: operator evaluating the state of the 3D pipeline; engineer picking a next task.

What this document does

  1. Reports ground truth for each layer (drivers, Mesa, Wayland, SDDM, KDE, boot, configs, scripts, docs).
  2. Lists hard blockers, bad patterns, stubs/shims, and missing primitives — all with file:line.
  3. Provides three ordered execution paths: software-rendered boot→Plasma; hardware-accelerated Mesa; Mesa→KDE as a real compositing WM.
  4. Lists every doc deletion candidate in §10 (with backup tarball) and every script deletion candidate in §11.
  5. Acts as the single audit of record — companion plans cross-reference it; this is the authoritative assessment.

What this document does not do

  • It does not contain the desktop journey/phases (those live in CONSOLE-TO-KDE-DESKTOP-PLAN.md).
  • It does not duplicate D-Bus service maps (DBUS-INTEGRATION-PLAN.md).
  • It does not duplicate the null+8 root-cause analysis (QT6-WAYLAND-NULL8-DIAGNOSIS.md).
  • It does not duplicate per-subsystem plans (ACPI, USB, Wi-Fi, Bluetooth, networking, driver-manager, init-namespace-manager, kernel-IPC, input-stack, build-system).

Supersession

This document replaces and supersedes:

  • local/docs/3D-DRIVER-PLAN.md (Rounds 17 of Mesa/virgl/i915/amdgpu) — Round-7 work is fact-of-record in this document; operating rule is restated.
  • local/docs/REDBEAR-FULL-SDDM-BRINGUP.md (build campaign log) — milestone status is captured here.
  • local/docs/legacy-obsolete-2026-07-25/WAYLAND-IMPLEMENTATION-PLAN.md (historical).
  • local/docs/legacy-obsolete-2026-07-25/DRM-MODERNIZATION-EXECUTION-PLAN.md (historical).
  • local/docs/legacy-obsolete-2026-07-25/05-KDE-PLASMA-ON-REDOX.md (historical; pre-KF6).
  • local/docs/archived/STUBS-FIX-PROGRESS.md (the campaign that converted libepoxy / libdisplay-info / libxcvt / lcms2 from "lying" stubs to real implementations).

This document does NOT supersede (companions stay separate):

  • local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md — desktop journey/phase tracker; cross-references.
  • local/docs/DBUS-INTEGRATION-PLAN.md — D-Bus architecture + service inventory.
  • local/docs/QT6-WAYLAND-NULL8-DIAGNOSIS.md — null+8 root-cause static analysis.
  • local/docs/INPUT-STACK-LINUX-ALIGNMENT-PLAN.md, KERNEL-IPC-CREDENTIAL-PLAN.md, ACPI-IMPROVEMENT-PLAN.md, USB-IMPLEMENTATION-PLAN.md, WIFI-IMPLEMENTATION-PLAN.md, BLUETOOTH-IMPLEMENTATION-PLAN.md, NETWORKING-IMPROVEMENT-PLAN.md, DRIVER-MANAGER.md, INIT-NAMESPACE-MANAGER-SCALABILITY-PLAN.md, LG-GRAM-16Z90TP-COMPATIBILITY-PLAN.md, HARDWARE-NETWORKING-INVENTORY.md, HARDWARE-VALIDATION-MATRIX.md, FIREWALL-VALIDATION-LOG.md, BUILD-SYSTEM-INVARIANTS.md, BUILD-CACHE-PLAN.md, PACKAGE-BUILD-QUIRKS.md, QUIRKS-SYSTEM.md, QUIRKS-AUDIT.md, QUIRKS-IMPROVEMENT-PLAN.md, LOCAL-FORK-SUPREMACY-POLICY.md, PATCH-GOVERNANCE.md, RELEASE-BUMP-WORKFLOW.md, SCRIPT-BEHAVIOR-MATRIX.md, RATATUI-APP-PATTERNS.md, CUB-PACKAGE-MANAGER.md, CUB-MIGRATION, GRUB-INTEGRATION-PLAN.md, COLLISION-DETECTION-STATUS.md, USB-VALIDATION-RUNBOOK.md, GREETER-LOGIN-IMPLEMENTATION-PLAN.md (greeter design).

1. Inventory & Status by Layer

1.1 Boot → userspace → compositor

The kernel registers exactly 11 global schemes (local/sources/syscall/src/data.rs:481-493): debug:, event:, memory:, pipe:, serio:, irq:, time:, sys:, proc:, kernel.acpi:, kernel.dtb:. There is no kernel-side DRM, framebuffer, USB, PCI, input, or display scheme. All graphics/PCI/USB/input/acpi/firmware/drm/audio schemes are userspace daemons. This is by microkernel design.

Userspace scheme daemons on redbear-full boot:

Scheme Daemon Phase Source
display.vesa vesad initfs local/sources/base/drivers/graphics/vesad/src/main.rs:87
fbcon fbcond initfs local/sources/base/drivers/graphics/fbcond/src/main.rs
fbbootlog fbbootlogd initfs local/sources/base/init.initfs.d/20_fbbootlogd.service
drm redox-drm initfs (x86 only) local/recipes/gpu/redox-drm/source/src/main.rs:130
pci pcid initfs local/sources/base/drivers/pcid/src/main.rs:352
input inputd initfs local/sources/base/init.initfs.d/10_inputd.service
firmware firmware-loader userspace local/recipes/system/firmware-loader/source/src/main.rs
login1 redbear-sessiond userspace local/recipes/system/redbear-sessiond/source/src/main.rs
seatd seatd userspace local/recipes/system/seatd/
system-bus dbus-daemon userspace recipes/system/dbus/

Boot ordering (local/sources/base/init/src/main.rs): bootloader (UEFI x86_64) → kernel → bootstrap → init (PID 1, two-phase) → initfs target → switchroot to /usr → userspace phase → SDDM at 21_sddm.service.

The full boot-to-Wayland graph terminates at the Qt6 Wayland null+8 crash in wl_proxy_add_listener(). Text console on VT2 via 30_console.service (getty 2) is the only functional endpoint today. SDDM starts, but the greeter QML window does not render.

1.2 Driver stack (redox-drm · amdgpu · linux-kpi · firmware-loader · redox-driver-sys)

Crate LOC Status Role Source
redox-driver-sys 6,866 Functional Safe Rust FFI for scheme:memory, scheme:irq, scheme:pci, scheme:iommu; PCI/USB/xHCI/DMI/ACPI quirks system local/recipes/drivers/redox-driver-sys/source/src/{lib.rs,memory.rs,irq.rs,pci.rs,quirks/}
linux-kpi 8,867 + 43 C headers Functional for GPU/Wi-Fi; the 3 deprecated surface modules are drm_shim runtime helpers Rust+ C shim that translates Linux kernel API (pci_*, dma_*, ioremap, request_irq, msi_*, drm_*) to redox-driver-sys local/recipes/drivers/linux-kpi/source/src/{rust_impl/,c_headers/}
firmware-loader 2,313 Functional scheme:firmware daemon; reads blobs from /lib/firmware/; in-memory cache local/recipes/system/firmware-loader/source/src/{main.rs,blob.rs,scheme.rs}
redox-drm 15,478 Structural-complete, runtime-unproven Userspace scheme:drm daemon (kernel has zero DRM code); 60+ DRM ioctls, AMD+Intel+VirtIO drivers, PRIME local/recipes/gpu/redox-drm/source/src/scheme.rs:1591-2737
amdgpu 1,692 C (3 files) Skeleton Stages 2/3/4 deliberately empty (recipe.toml:82,101,125); only amdgpu_redox_main.c + redox_stubs.c + redox_glue.h compile. Imported Linux AMD DC tree at local/recipes/gpu/amdgpu-source/ is NOT in default retained build path local/recipes/gpu/amdgpu/recipe.toml:5-9,77-86

redox-drm ioctl coverage (per local/recipes/gpu/redox-drm/source/src/scheme.rs):

Family Count Status
KMS base (GETRESOURCES, GETCONNECTOR, SETCRTC, GETCRTC, ADDFB, RMFB, PAGE_FLIP) 8/8 PRESENT
Dumb buffers (CREATE_DUMB, MAP_DUMB, DESTROY_DUMB) 3/3 PRESENT
GEM (GEM_CREATE, GEM_CLOSE, GEM_MMAP) 3/3 PRESENT
PRIME (PRIME_HANDLE_TO_FD, PRIME_FD_TO_HANDLE) 2/2 TOKEN (not POSIX fd; cross-process DMA-BUF not real)
i915 UAPI (namespace 0x70-0x7F) 16/16 PRESENT (incl. GEM_VM_BIND per Round 7)
amdgpu UAPI (namespace 0x90-0x97) 8/8 PRESENT (incl. GEM_CREATE, CTX, CS, VM, BO_LIST, WAIT_FENCES, INFO, FENCE_TO_HANDLE)
Redox private (CS_SUBMIT, CS_WAIT, SCANOUT_FLIP, FENCE_EVENTFD, CREATE_CONTEXT, DESTROY_CONTEXT, AMD_SDMA_*) 8/8 PRESENT
VirtIO GPU (namespace 0x01-0x0B) 11/11 PRESENT
SYNCOBJ_* 0/5 MISSING (Mesa EGL Wayland swapchain needs these; FENCE_EVENTFD substitutes for what Mesa calls)
DRM_CLIENT_CAP_ATOMIC (ATOMIC_* ioctls) REJECTED with EOPNOTSUPP (scheme.rs:1969-1988)
DRM_CLIENT_CAP_UNIVERSAL_PLANES REJECTED (scheme.rs:1976-1987)
DRM_GET_PROPERTY / SET_PROPERTY MISSING (KMS property API)

redox-driver-sys quirks table (src/quirks/pci_table.rs:15-92): 12 compiled-in PCI entries covering: AMDGPU class, Navi10/21/32, early Intel GPUs, Intel Wi-Fi 6E (2725/51F0), AMD chipsets (145C/1639/1483). 26 PCI quirk flag bits. Plus 51 xHCI USB entries (mirroring Linux 7.1). Plus ACPI and DMI quirk tables. All consumed via pci_has_quirk() FFI in amdgpu redox_stubs.c:771.

linux-kpi as a wrapped-surface (sub-rating):

Subsystem Implementation
pci_*, dma_*, ioremap, request_irq, msix_*, fw_* REAL — backed by Redox schemes
wait, completion, mutex, spinlock, atomic_* REAL via Rust atomics + spin-loop
timer, workqueue REAL
drm_crtc_handle_vblank NO-OP, returns 0 — vblank not signalled (drm_shim.rs:714). HIGH risk: KWin stalls at first page flip.
drm_connector_register userspace no-op (drm_shim.rs:708-711). MEDIUM risk: monitor hotplug dead.
drm_mode_config_reset calls drm_ioctl(dev, GETRESOURCES, NULL, NULL) — fails with EINVAL (drm_shim.rs:703-704). HIGH risk: stale connector/CRTC list.
drm_dev_register returns 0 always (drm_shim.rs:437-439). LOW risk: silent success.

1.3 Mesa 26.1.4

Path Status Source
local/recipes/libs/mesa/source/src/egl/drivers/dri2/platform_redox.c (332 lines) BUILT (HW probe → kopper; SW fallback → swrast; window/pbuffer surfaces; image lifecycle) platform_redox.c:226-332
local/recipes/libs/mesa/source/src/gallium/winsys/redox/drm/ (10 files, 1,432 lines) BUILT-BUT-INCOMPLETE — bidirectional CS seqno fixed (Round 7 patch 26); multi-context CS requires kernel ABI extension (winsys.h:31) redox_drm_cs.h:11, redox_drm_surface.h:29
local/recipes/libs/mesa/source/src/gbm/backends/dri/gbm_dri.c BUILT + dumb-BO PRIME export patched (patch 02) gbm_dri.c:578-663 (patched)
local/recipes/libs/mesa/source/src/egl/drivers/dri2/platform_wayland.c BUILT (upstream EGL Wayland platform, present and compiled) upstream
GLES1/2/3 ENABLED via auto-detect recipe -Degl=enabled -Dgbm=enabled
llvmpipe (x86_64) ENABLED but never reached a completed link; LLVM JIT compile path recipe -Dgallium-drivers=softpipe,llvmpipe,...
OSMesa NOT BUILT-Dosmesa dropped upstream in Mesa 26.x recipe.toml:119
pipe_loader_redox.c (177 lines) BUILT — currently returns only "swrast" at runtime pipe_loader_redox.c:12-14

Mesa build status (THE single fact that matters most): Per local/docs/3D-DRIVER-PLAN.md §1.4 — "Build status — NEVER COMPLETED". Meson configured OK (build.ninja 5.3 MB + compile_commands.json exist; -DHAVE_REDOX_PLATFORM is in compile flags), but no shared libraries in sysroot (libEGL.so, libGL.so, libgallium*.so are absent). Root cause is unknown until a fresh ./local/scripts/build-redbear.sh redbear-full is run.

Active Mesa patches (local/patches/mesa/):

Patch Size Wired Purpose
01-virgl-redox-disk-cache.patch 25 Disables virgl disk cache (no dl_iterate_phdr on Redox)
02-gbm-dumb-prime-export.patch 32 Adds drmPrimeHandleToFD fallback for dumb BOs
04-sys-ioccom-stub-header.patch 82 Compile-time macro shim — pure fixed-point math
05-vk-sync-wchar-include.patch 34 Adds #include <wchar.h> to vk_sync.h
08-meson-redox-kms-drm.patch 20 Adds redox to system_has_kms_drm and _GNU_SOURCE platforms
26-cs-submit-bidirectional-seqno.patch 135 Bidirectional CS submit (kernel returns global seqno)
03-platform-redox-gpu-probe.patch 240 ORPHANED Target platform_redox.c rewritten for Mesa 26.1.4 — original deleted
06-redox-surface-image-fields.patch 13 ORPHANED Same — EGL image lifecycle now done differently
07-wayland-scanner-env-override.patch 40 ORPHANED Worked around via recipe copying host scanner (lines 75-77)
P4-virgl-redox-disk-cache.patch dup ORPHANED Duplicate of patch 01
26.1.4-defer-redox-platform.patch doc ORPHANED Records that platform file was recreated from scratch

Mesa downstream kernel-side requirements that are NOT met today:

Mesa primitive Required Redox reality
Multi-context command submission Kernel exposes per-context CS submit Single-global CS in redox-drm; multi-context needs kernel ABI extension (redox_drm_cs.h:11)
Syncobj (DRM_IOCTL_SYNCOBJ_*) Kernel dma-fence object REDOX_FENCE_EVENTFD substitutes — but Mesa EGL Wayland expects syncobj ioctls; needs Mesa patch to translate
DMA-BUF export (real POSIX fd passing) Kernel dma_buf subsystem with stable fd across processes Token-based fake; sufficient within redox-drm process, breaks cross-process GPU sharing
Hardware vblank interrupt Kernel IRQ + DRM event queue Polled with 16 ms timeout — works, low efficiency
Hardware cursor plane DRM universal-planes API DRM_CLIENT_CAP_UNIVERSAL_PLANES rejected — no HW cursor
Atomic modesetting DRM_CLIENT_CAP_ATOMIC Rejected with EOPNOTSUPP — KWin + amdgpu DC require atomic commits

1.4 Wayland & Compositors

libwayland 1.25.0 (recipes/wayland/libwayland/recipe.toml + local/patches/libwayland/redox.patch): compiles, ships libwayland-client.so, libwayland-server.so, libwayland-cursor.so, libwayland-egl.so. Redox patch (101 lines) adds null-proxy guards (the fix for the Qt6 Wayland null+8 crash) + a cross-compile scanner override.

wayland-protocols 1.49 (recipes/wayland/wayland-protocols/recipe.toml): 65 XMLs. Plus plasma-wayland-protocols: 30 XMLs. Total: 95 protocol XMLs produced.

Compositor inventory:

Compositor Status Source
redbear-compositor BUILDS, bound to scheme:drm/card0 (DRM/KMS) or VESA fallback. ~7,013 LOC Rust. 36+ Wayland globals implemented. WL_KEYBOARD_KEYMAP_FORMAT_NO_KEYMAP advertised (no real XKB keymap). local/recipes/wayland/redbear-compositor/source/src/main.rs
KWin 6.7.2 BUILDS (local/recipes/kde/kwin/recipe.toml). NO Redox platform plugin. No input backend (libinput → /dev/input/event*). No real DRM backend (talks Linux DRM master). Cannot run. same
cosmic-comp, smallvil, wlroots, sway, hyprland, niri, pinnacle, anvil, fht-compositor, wayland-rs, waylandpp, wayland-utils Recipe exists; #TODO not compiled or tested for 12 of 20. Smoke test only (winit-wayland, iced-wayland, softbuffer-wayland examples). recipes/wip/wayland/*/recipe.toml
xwayland, qt6-wayland-smoke Recipe exists; partial patches applied recipes/wip/wayland/*/recipe.toml

Patches inventory (local/patches/):

  • libwayland/redox.patch (101 lines) — null guards + cross-compile scanner
  • mesa/07-wayland-scanner-env-override.patch (40, ORPHANED — recipe uses host scanner copy)
  • qtbase/qtwaylandscanner-null-guard-listeners.patch (41, applied) + qtbase/qtwayland-empty-cursor-guards.patch (71, applied)
  • kf6-kwayland/01-initial-migration.patch (23, applied)
  • wlroots/redox.patch (29 lines, NOT APPLIED to a built wlroots)

Stubs in redbear-compositor:

  • WL_KEYBOARD_KEYMAP_FORMAT_NO_KEYMAP (main.rs:930) — clients cannot map keycodes to keysyms. Keymap delivery via redbear-keymapd is the proper fix; redbear-keymapd is in redbear-full but redbear-compositor does not currently call it.
  • main.rs:2 comment: "Replaces the KWin stub that previously created a placeholder socket."
  • SHM fd passing uses payload bytes (not SCM_RIGHTS) per CONSOLE-TO-KDE §3.1 — Qt client may reject the wire format. (Round 7 added SCM_RIGHTS per 3D-DRIVER-PLAN §8 but verification is partial.)

1.5 SDDM & Auth (PAM/logind/seatd)

SDDM: builds (local/recipes/kde/sddm/), Wayland-only via patches applied with wayland-patch.sh. Two patches:

  • redox-virtualterminal-stub.patchSDDM::VirtualTerminal is no-op (no Linux VT subsystem)
  • redox-helper-utmpx-stub.patchutmpLogin/utmpLogout no-op (no utmp/utmpx on Redox)

PAM (pam-redbear): real Rust cdylib libpam.so.0.2.3; full 31-return-code PAM ABI; proxies to redbear-authd over /run/redbear-authd.sock. PAM configs staged: sddm, sddm-greeter, sddm-autologin, sddm-helper.

logind compat (redbear-sessiond): implements org.freedesktop.login1.{Manager,Seat,Session} via zbus. SDDM::LogindDBusTypes.cpp:49-73 probes org.freedesktop.login1 first, then org.freedesktop.ConsoleKit. If neither, falls back to single-seat (SeatManager.cpp:97-100). Missing minor items: Seat.CanGraphical property, SeatNew / SeatRemoved signals — masked by fallback.

seatd: compiled and wired. SDDM does not use seatd directly; it uses the logind seat abstraction. (local/recipes/system/seatd/recipe.toml:12 carries a TODO note that may now be stale; the seat works.)

SDDM hard blockers vs Redox surface (none fatal, all masked by fallback):

Requirement Red Bear Gap
PAM pam-redbear None
logind redbear-sessiond CanGraphical + SeatNew signals missing — masked by single-seat fallback
VT subsystem Stubbed Real inputd -A N for switching
utmpx Stubbed No-op
D-Bus system bus dbus-daemon 1.16.x None
D-Bus session bus redbear-session-launch launches via dbus-launch --sh-syntax None
Wayland sessions kde-wayland.desktop (KDE upstream); custom redbear-wayland.desktop not yet wired None
Compositor redbear-compositor --drm Qt6 Wayland null+8 crash blocks QML greeter
DRM device KWIN_DRM_DEVICES=/scheme/drm/card0 + 18_dri-symlinks.service (/dev/dri/renderD128) None

Real status (today, 2026-07-27): SDDM greeter stack compiles. The greeter runs on redbear-compositor, NOT KWin. KWin is post-login, deferred with # GREETER-DEFER markers in config/redbear-full.toml. Open work is runtime display validation in QEMU (seeing the SDDM/greeter prompt on the framebuffer), NOT compilation.

The dominant runtime blocker is Qt6 Wayland null+8, analyzed in QT6-WAYLAND-NULL8-DIAGNOSIS.md. The diagnostic + patch-merged path is: wl_proxy_add_listener(NULL, ...) segfaults when the compositor returns a NULL proxy for an unsupported protocol. Fix is committed in libwayland redox.patch (null guards on all wl_proxy_* / wl_resource_* entry points) and qtwaylandscanner (null-guard listeners). Authoring is done; runtime validation is the gap.

1.6 KDE Plasma 6 & KF6

Group Count Status
KF6 frameworks 47 (in local/recipes/kde/kf6-*) + 1 kirigami All compile. AGENTS.md claim "KF6 32/32" is stale (current 47).
Plasma packages 4 (plasma-framework, plasma-workspace, plasma-desktop, plasma-wayland-protocols) All compile.
Window decoration kdecoration, breeze Compile.
Compositor/WM kwin 6.7.2 Compiles (Round 7 — resolved cmake Qt6Core5Compat blocker).
Daemons kglobalacceld Compile.
DM sddm Compile.
Apps konsole, kde-cli-tools Compile.
Total in local/recipes/kde/ 58 All compile.

KF6 modules ABSENT — these are explicit runtime blockers (per recipes/wip/AGENTS.md and the upstream Plasma 6 dependency graph):

Module Required by Impact if missing
kf6-krunner plasma-workspace plasmashell cannot embed KRunner; launcher crashes
kf6-threadweaver kf6-kio, kf6-knewstuff, kf6-kauth, kf6-kio Thread pool used by KIO workers; serialization errors at runtime
kf6-frameworkintegration plasma-workspace (style/font integration) KDE style/font integration missing
kf6-kfilemetadata / kf6-baloo dolphin, krunner File metadata + search broken
kf6-purpose plasma-workspace Share-menu absent
kf6-calendarcore / kf6-kholidays / kf6-syndication plasma-workspace widgets Calendar/RSS data absent

Plasma applets/applications ABSENT:

Module Impact
plasma-nm No network-manager applet
plasma-pa No audio-volume applet (PipeWire is wired, no applet)
plasma-thunderbolt / plasma-disks / plasma-systemmonitor No device management widgets
plasma-kdeconnect Phone integration absent
polkit-kde-agent-1 No auth dialog for privileged actions
xdg-desktop-portal-kde No portal support for Screenshot/ScreenCast/file-chooser
powerdevil No power-management daemon
systemsettings No KDE Settings
libksysguard No system monitor backend

Runtime dependencies ABSENT:

Library Impact
harfbuzz Font shaping — Qt6 text rendering quality degradation
libxcursor Cursor theme loading — but Wayland uses wl_cursor, low impact
librsvg SVG icon rendering for some themes — kf6-ksvg may cover partially
gsettings-desktop-schemas No GSettings/dconf — KDE uses KConfig, low impact
accountsservice No user account list for SDDM — SDDM falls back to /etc/passwd reading

D-Bus activation files MISSING for KDE session daemons (per local/docs/DBUS-INTEGRATION-PLAN.md): org.kde.kded6, org.kde.kglobalaccel, org.kde.ksmserver, org.kde.ActivityManager, org.kde.JobViewServer, org.kde.plasmashell. KWin self-registers. Intentionally absent — re-add only after binary proof in guest.

redbear-statusnotifierwatcher (system tray): built but NOT in any redbear- config*. Activation file staged but the binary is not in the live ISO. Fix: add to config/redbear-full.toml [packages].

KWin 6.7.2 cmake flags (kwin/recipe.toml:88-104):

  • KWIN_BUILD_X11=OFF, KWIN_BUILD_SCREENLOCKER=OFF
  • KWIN_BUILD_KCMS=ON, KWIN_BUILD_TABBOX=ON, KWIN_BUILD_GLOBALSHORTCUTS=ON, KWIN_BUILD_RUNNERS=ON, KWIN_BUILD_NOTIFICATIONS=ON
  • ECMQmlModule disabled via sed (line 66): include(ECMQmlModule)#include(ECMQmlModule)
  • UiTools removed from CMakeLists (line 69)
  • QML effects disabled (ECMQmlModule removed)

TODO/FIXME pattern in KDE recipes: A pervasive BUILD_WITH_QML=OFF / ECMQmlModule disabled pattern across plasma-framework, kwin, kirigami, kf6-knewstuff, kf6-kio, kf6-prison. This is a compile-time workaround for the Qt6 Wayland null+8 crash — QML is blocked because QML windows crash in wl_proxy_add_listener. Once null+8 is runtime-validated, this can be reverted.

1.7 Boot → userspace → compositor

Full ordered boot sequence is captured in boot-to-compositor-audit (agent bg_aff9ad7c). Key nodes:

bootloader (UEFI x86_64; sets FRAMEBUFFER_* + RSDP_* + kernel env)
  → kernel (microkernel; 11 global schemes)
  → bootstrap → init (PID 1)
  → INITFS phase:
      logd → runtime.target → inputd → vesad (display.vesa) → fbcond (fbcon/VTs)
      → fbbootlogd → redox-drm (drm/card0) → pcid → hwd → acpid
      → driver-manager-initfs → redoxfs (rootfs mount)
  → SWITCHROOT to /usr
  → USERSPACE phase:
      base.target (ipcd, ptyd, driver-manager --hotplug)
      → smolnetd → dhcpd → evdevd → dbus-daemon
      → seatd → redbear-sessiond → redbear-authd → DRI symlinks
      → SDDM → redbear-compositor → sddm-greeter-qt6
      ★ BLOCKED ★ Qt6 Wayland null+8 crash
      ▼ FALLBACK ▼ 30_console.service (getty 2) — TEXT LOGIN on VT2

Specific blockers (with file:line):

# Blocker Evidence
1 Qt6 Wayland null+8 crash CONSOLE-TO-KDE §3.1; wl_proxy_add_listener segfaults; null-guard patches committed, never runtime-validated in isolation
2 redox-drm hardware validation CONSOLE-TO-KDE §2; QEMU has booted, AMD/Intel bare-metal never tested
3 redbear-statusnotifierwatcher not wired DBUS-INTEGRATION-PLAN.md F5:196; built but omitted from config
4 amdgpu CS seqno multi-context redox_drm_cs.h:11 requires kernel ABI extension
5 drm_crtc_handle_vblank returns 0 drm_shim.rs:714; first page-flip stalls KWin
6 drm_mode_config_reset ioctl with NULL data drm_shim.rs:703-704; null-pointer ioctl → stale connector list
7 KWin has no Redox platform plugin recipes/kde/kwin/recipe.toml builds upstream code with no platform plugin replacement
8 Atomic mode-setting rejected redox-drm scheme.rs:1969-1988EOPNOTSUPP
9 DRM_CLIENT_CAP_UNIVERSAL_PLANES rejected redox-drm scheme.rs:1976-1987EOPNOTSUPP
10 memfd_create absent in relibc Per Mesa audit; affects PipeWire + Mesa disk-cache fallback (already disabled)
11 DMABUF export is token, not POSIX fd redox-drm scheme.rs:2391-2458; cross-process GPU sharing broken
12 PRIME cross-process GPU sharing broken Same; only within redox-drm process boundary

1.8 Build configurations & scripts

Build configurations (config/):

Config Lines Status Used by build-redbear.sh
redbear-full.toml 918 ACTIVE — desktop/graphics; 10 package groups + ~100 explicit packages + 28 graphics/desktop [[files]]
redbear-mini.toml 633 ACTIVE — text-only with overridden init services
redbear-grub.toml 16 ACTIVE — adds grub = {} + bootloader=grub
redbear-bare.toml (small) ACTIVE — stripped kernel+zsh login
redbear-wifi-experimental.toml FIXED 2026-07-27 — typo corrected; line 9 now reads include = ["redbear-mini.toml"] (was redbear-minimal.toml). Config is buildable; not yet wired into a default redbear-* target ready
redbear-bluetooth-experimental.toml FIXED 2026-07-27 — same typo at line 10 now reads include = ["redbear-mini.toml", "redbear-bluetooth-services.toml"]. Config is buildable; not yet wired into a default redbear-* target ready
desktop.toml, desktop-minimal.toml, wayland.toml, x11.toml, dev.toml various DEAD — never referenced by any redbear config; wayland.toml + desktop-minimal.toml contain /usr/lib/init.d/ init path violations
redoxer.toml, redoxer-gui.toml, acid.toml, auto-test.toml, os-test.toml, tests.toml, sys-build.toml various DEAD — Redoxer/CI tooling inherited from upstream; not Red Bear
aarch64/, i586/, riscv64gc/ and subdirs ~20 files DEAD — Red Bear is x86_64 only
protected-recipes.toml NOT a build config — read by src/cook/fetch.rs (data only)

Massive duplication: redbear-device-services.toml (1,137 lines) contains the same 4 firmware fallback configs repeated ~14 times (00-amdgpu.toml, 10-iwlwifi.toml, 20-intel-dmc.toml, plus an unnamed class). Estimated ~900 redundant lines. Fix: dedupe to ~200 lines.

Lint state: bash scripts/lint-config-paths.sh passes for all redbear-*.toml. The script only checks redbear-* configs — dead upstream configs are not linted, but they're not in any redbear-include chain either.

Build scripts (local/scripts/): 174 entries. Classification per bg_3239014a audit:

Category Count Examples
DEAD (self-declared) 2 bump-fork.sh (DEPRECATED 2026-07-18, guarded by REDBEAR_I_KNOW_BUMP_FORK_IS_DEPRECATED=1); sync-upstream.sh (RETIRED, prints msg + exits)
OBSOLETE-TOOLING (one-time KF6 migrations) 5 edit-kf6-recipes-for-patches.sh, migrate-kf6-seds-direct.sh, migrate-kf6-seds-to-patches.sh, cleanup-kf6-noop-seds.sh, cleanup-kf6-noop-seds-targeted.sh — mission complete in 6.27.0 bump cycle
DUPLICATE / overlap 3 validate-patches.shverify-patches.sh (~50% overlap); driver-manager-audit-no-stubs.sh (5-line wrapper); verify-patch-content.sh (thin wrapper)
DIAGNOSTIC-ONLY (labelled, not build substitute) ~15 repair-cook.sh, fetch-sources.sh, scratch-rebuild.sh, rebuild-cascade.sh, build-redbear-wifictl-redox.sh, apply-rb-suffix.sh, gnulib-cross-fix.sh, libtool-version-sync.sh, qemu-ram.sh, etc.
CURRENT ~140 All core build pipeline, test scripts, lint, archive, fork-management

Misnamed / wrong-architected scripts:

Script Issue
test-baremetal.sh Hardcodes CONFIG="my-amd-desktop" at lines 16, 29 — my-* prefix is deprecated per AGENTS.md and git-ignored
test-amd-gpu.sh 3-line wrapper: exec test-drm-display-runtime.sh --vendor amd "$@" — pointless indirection
guard-recipes.sh References retired sync-upstream.sh in 3 comments (lines 4, 15, 112)
build-redbear-wifictl-redox.sh Single-package helper; make r.<pkg> already does this

TOOLS.md state: lists 15 tools — missing 30+ key scripts including build-redbear.sh itself. Needs Round-15 update to a "Full Inventory" round. Recommend grouping: Build Pipeline, Fork Management, Version Management, Cache, Quality/Lint, Testing Infrastructure, Archive/Release.

1.9 Documentation landscape

Per bg_94fb81cb audit: 75 docs across local/docs/ and subdirectories. Breakdown:

Category Count Lines Action
CURRENT (KEEP) 30 ~17,000 None
PARTIALLY-CURRENT (MERGE into this doc + companion) 4 ~2,100 See §10
STALE (mis-archived) 1 1,022 legacy-obsolete-2026-07-25/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.mdRESTORE to top-level
LEGACY (already isolated, DELETE candidates with backup) 40 ~11,200 See §10 — archived/* and legacy-obsolete-2026-07-25/* mostly

1.10 Custom redbear/redox crates inventory

11 in-house crates under local/recipes/ (+ adjacent: redbear-compositor, redbear-hid-core):

Crate LOC Maturity 3D-pipeline role
redox-driver-sys 6,866 Functional Foundation: scheme:memory, scheme:irq, scheme:pci, quirks
linux-kpi 8,867 + 43 C headers Functional (with 4 no-op helpers in drm_shim) Linux → Redox translator
firmware-loader 2,313 Functional scheme:firmware
redox-drm 15,478 Partial scheme:drm daemon — AMD+Intel+VirtIO drivers
amdgpu 1,692 C Skeleton (Stages 2-4 empty by design) AMD C glue (custom; full AMD DC NOT compiled)
redbear-sessiond 3,092 Functional org.freedesktop.login1 D-Bus broker
redbear-dbus-services 0 (config-only) Functional D-Bus .service + XML policy
redbear-power 16,984 Functional ratatui TUI for CPU/thermal — unrelated to 3D
redbear-iwlwifi 6,876 Partial Wi-Fi driver (C transport + Rust MLD)
redbear-wifictl 3,414 Functional Wi-Fi control CLI/D-Bus
redbear-btusb 5,461 Partial Bluetooth USB transport
redbear-compositor 7,013 Partial Wayland compositor (DRM/KMS + VESA)

TODO/FIXME/HACK inventory across the 11 crates: ZERO explicit markers found in Rust sources (AGENTS.md zero-stub policy observed). The closest equivalents:

  • redox-drm/src/scheme.rs:412: "The relocation list is not implemented" (in-code comment)
  • redox-drm/src/scheme.rs:2292: warn!("redox-drm: I915_GEM_VM_BIND extensions/syncs not implemented") (runtime warn)
  • redox-drm/src/main.rs:5-20: #[allow(dead_code)] at crate scope, justified for ~55 forward-looking GPU driver items
  • redox-drm/src/drivers/mod.rs:179: "Gen4-Gen7 ... are not yet supported" (info log)
  • amdgpu/recipe.toml:82,101,125: DISPLAY_SRCS="", TTM_SRCS="", CORE_SRCS="" (explicitly empty)
  • redox-drm/src/scheme.rs:1300,1972,1988,1995,2748,2754: EOPNOTSUPP for unreachable arms

Test coverage:

  • redox-driver-sys: 1 (tests/smoke_test.rs, 174 lines host unit)
  • linux-kpi: 1 (host shim test)
  • firmware-loader, redox-drm, amdgpu, redbear-sessiond, redbear-power, redbear-iwlwifi, redbear-btusb: ZERO dedicated tests
  • redbear-wifictl: 20 test files
  • redbear-compositor: 1 (tests/integration_test.rs)

Verdict: The GPU/3D pipeline crates have ZERO test coverage. The foundational layer has a host smoke test. Wi-Fi control has the best coverage. This is a structural gap to fix in parallel with the runtime validation.

Dependency graph (local/recipes/ inter-crate):

Foundational: redox-driver-sys (scheme:memory/irq/pci + quirks)
    ├── linux-kpi (C headers + Rust shim)
    │       ├── redox-drm (scheme:drm)
    │       ├── redbear-iwlwifi (C transport + Rust MLD)
    │       └── amdgpu (C glue -llinux_kpi)
    └── redbear-wifictl (scheme:wifictl)
Standalone:
    firmware-loader (scheme:firmware) — consumed by amdgpu, redox-drm at runtime
    redbear-sessiond — zbus + libredox
    redbear-power — ratatui (unrelated to 3D)
    redbear-btusb — libredox + redox-scheme
    redbear-compositor — libc only (self-contained Wayland wire)

2. Hard Blockers (cannot ship without fixing)

In decreasing severity order. None of these are isolated — they cascade. The first five together keep the boot-to-Wayland chain from reaching any graphical endpoint.

  1. Mesa 26.1.4 link never completed (local/docs/3D-DRIVER-PLAN §1.4). The single highest-impact unknown. Until ./local/scripts/build-redbear.sh redbear-full actually runs to a successful Mesa link, every downstream claim about Mesa is theory.

  2. Qt6 Wayland null+8 crashwl_proxy_add_listener(NULL, ...) segfaults. The null-guard patches (local/patches/libwayland/redox.patch + qtbase/qtwaylandscanner-null-guard-listeners.patch) are committed but never runtime-validated in isolation. Without this fixed, no graphical Wayland client (SDDM greeter, KWin, plasma-workspace) can render.

  3. amdgpu Stages 2-4 are empty (amdgpu/recipe.toml:82,101,125DISPLAY_SRCS="", TTM_SRCS="", CORE_SRCS=""). The imported Linux AMD DC tree (~6M lines) at local/recipes/gpu/amdgpu-source/ is adjacent but not in the retained build path. AMD hardware acceleration is structurally impossible today.

  4. DRM_CLIENT_CAP_ATOMIC rejected with EOPNOTSUPP (redox-drm scheme.rs:1969-1988). amdgpu Display Core (DC) and KWin's atomic commit path require this.

  5. SYNCOBJ_ ioctls absent* in redox-drm. Mesa EGL Wayland swapchain synchronization uses these. The REDOX_FENCE_EVENTFD substitute works only if Mesa is patched to translate syncobj ioctls to fence eventfds.

  6. drm_crtc_handle_vblank() no-op (linux-kpi drm_shim.rs:714) — always returns 0. Without a real vblank signal, KWin's compositor loop stalls at the first page-flip wait.

  7. drm_mode_config_reset() calls drm_ioctl with NULL data (drm_shim.rs:703-704) — returns EINVAL immediately, leaving stale connector/CRTC lists.

  8. PRIME is token-based, not POSIX fd (redox-drm scheme.rs:2391-2458). Sufficient within redox-drm process; breaks cross-process GPU sharing (Mesa client ↔ compositor).

  9. Universal planes rejected (redox-drm scheme.rs:1976-1987). KWin needs universal planes for HW cursor + overlay planes.

  10. KWin has no Redox platform plugin (recipes/kde/kwin/recipe.toml). KWin compiles but at runtime cannot open /scheme/drm/card0 or talk to evdevd.

  11. NO_REDOX atomic CS — multi-context CS requires kernel ABI extension (redox_drm_cs.h:11).

  12. kf6-krunner, kf6-threadweaver, kf6-frameworkintegration ABSENT — every plasmashell launch crashes on missing org.kde.krunner and KIO thread pools.

  13. polkit-kde-agent-1 ABSENT — privileged actions silently fail or time out.

  14. xdg-desktop-portal-kde ABSENT — Screenshot/ScreenCast portals not implemented.

  15. Zero firmware blobs in firmware/amdgpu/firmware-loader source local/recipes/system/firmware-loader/source/firmware/amdgpu/ is empty. AMD GPUs require DMCUB/GCP/SOS/VCN/SDMA blobs before DC init.

  16. No GPU command submission real pathamdgpu_cs (redox-drm scheme.rs:2320-2325) accepts the call but drops the PM4 command-buffer dwords. radeonsi's GFX ring is unimplemented per the trait docstring in redox-drm/src/driver.rs:527-531.

  17. No per-process GPUVM / PPGTT — both AMD and Intel drivers use global GGTT as single address space (redox-drm/src/driver.rs:295-301).

  18. memfd_create absent in relibc — Mesa disk cache patches around it; PipeWire emulates via /tmp ramfs.

  19. No runtime validation on any GPU path — even virtual-gpu has only QEMU proof.

  20. No DRM kernel shim — all of the above lives in userspace redox-drm. This is by-design microkernel, but it means the only path to fixing items 6, 7, 11 is in userspace, not kernel — which is actually more agile, but means every ioctl surface change requires a redox-drm patch.


3. Bad Patterns / Stubs / Shims (per bg_d8ff966d)

3.1 Honest compilation-time stubs (safe — do not remove)

Stub File:Line Severity
Mesa 04-sys-ioccom-stub-header.patch local/patches/mesa/ Compile-time macro math; no runtime effect
linux-kpi test_host_redox_shims.rs linux-kpi/source/src/ #[cfg(all(test, not(target_os="redox")))] — host test only
qtdeclarative shader_stub.cmake local/recipes/qt/qtdeclarative/ Build-time generated files
qtbase qt_float16_shims.c local/recipes/qt/qtbase/ Real float16 implementation, not a stub
redbear-input-headers local/recipes/drivers/redbear-input-headers/ Real header package, not stub

3.2 Real implementations (formerly stubs, now resolved)

Item File Resolution
libepoxy local/recipes/libs/libepoxy/ Real upstream v6.0 2026
libdisplay-info local/recipes/libs/libdisplay-info/ Real EDID parser (v6.0 2026)
libxcvt local/recipes/libs/libxcvt/ Real VESA CVT calculator (v6.0 2026)
lcms2 local/recipes/libs/lcms2/ Real liblcms2.19 color engine
libudev local/recipes/libs/libudev/source/libudev.c (1314 lines) Real — reads /scheme/udev/devices/
udev-shim (the daemon) local/recipes/system/udev-shim/source/src/scheme.rs (839 lines) Real — full scheme:udev daemon
libpciaccess local/recipes/libs/libpciaccess/source/libpciaccess.c (272 lines) Real — backed by /scheme/pci
pam-redbear local/recipes/libs/pam-redbear/source/src/lib.rs (945 lines) Real — full PAM ABI
amdgpu/redox_stubs.c local/recipes/gpu/amdgpu/source/redox_stubs.c (1223 lines) Real Linux-KPI compat — name is historical
Item Behavior Recommendation
SDDM VirtualTerminal (no-op VT_ACTIVATE etc.) local/recipes/kde/sddm/recipe.toml:14-15 LOG the attempted op + return success
SDDM utmpx (no-op utmpLogin/LogOut) local/recipes/kde/sddm/recipe.toml:15 LOG + return success
PipeWire memfd_create emulated via /tmp ramfs local/patches/pipewire/01-redox-compat-shims.patch:33-38 Keep — works for SPA pool
PipeWire pthread_setname_np no-op same patch Keep — relibc TBD
qt6-sensors dummy backend local/recipes/qt/qt6-sensors/recipe.toml:5-7 Safe no-op for off-target sensors; log once at startup
Mesa EGL Wayland platform zwp_linux_dmabuf_v1 stub upstream platform_wayland.c:699-824 Need Mesa patch to translate to fence eventfd

3.4 Lie-grade shims (NO-OP masquerading as real)

Stub File:Line Risk Crash mechanism
kirigami QtNetwork stubs local/recipes/kde/kirigami/source/stubs/QtNetwork/QNetworkAccessManager:10 CRITICAL KDE QML network code (mgr->get(req)) returns nullptr, dereferences → SIGSEGV
drm_crtc_handle_vblank always returns 0 local/recipes/drivers/linux-kpi/source/src/rust_impl/drm_shim.rs:714 HIGH KWin stalls at first page flip
drm_mode_config_reset calls drm_ioctl with NULL data linux-kpi drm_shim.rs:663-664,703-704 HIGH Stale connector/CRTC list
drm_connector_register userspace no-op linux-kpi drm_shim.rs:708-711 MEDIUM Hotplug silently dropped
drm_dev_register always returns 0 linux-kpi drm_shim.rs:437-439 LOW Silent success even for broken devices

Fix priority (in execution order):

  1. Wire drm_crtc_handle_vblank to scheme:drm vblank event path → use SchemeSync::one_shot to wait on the actual page-flip completion event (already used by Mesa).
  2. Fix drm_mode_config_reset to allocate a stack drm_mode_card_res buffer of sizeof() bytes and pass that.
  3. Replace kirigami QtNetwork get() with:
    QNetworkReply *get(const QNetworkRequest &req) override {
        qWarning("redbear: QNetworkAccessManager::get() — QtNetwork not available");
        Q_ASSERT_X(false, "QtNetwork", "no impl on Redox — caller must handle null");
        return nullptr;
    }
    
  4. Add qWarning() to SDDM VT/utmpx stubs.

4. Gaps vs Upstream Linux

Per bg_f07db183 and bg_5eeaa990 audits. Key gaps that block the 3D stack:

Subsystem Linux has Redox has Impact
DRM atomic modesetting drmModeAtomicCommit + properties + universal planes rejected with EOPNOTSUPP KWin + amdgpu DC need atomic
DMA-BUF cross-process Linux dma_buf kernel subsystem + POSIX fd passing + dma_fence chain + sync_file REDOX_FENCE_EVENTFD; PRIME is token-based Multi-client GPU sharing broken
KMS plane API full planes (primary, cursor, overlay) with z-order universal planes rejected HW cursor dead
vblank event kernel IRQ → drm event queue → userspace wakeup polled at 16 ms (works, low efficiency) Latency + CPU use
libudev device enumeration + hotplug monitoring libudev + udev_monitor real libudev via udev-shim (works); some monitor semantics bounded functional
memfd_create() / shm_open() memfd_create syscall + memfd sealing absent; shm_open via ipcd shm: some Mesa/KWin paths use memfd
syncobj_* ioctls DRM sync object + DMA fence chain absent Mesa Wayland swapchain
Per-process GPUVM (PPGTT) Linux GPUVM + softpin global GGTT only multi-process render isolation absent
AtomBIOS / VBIOS POST parser real parsers in upstream amdgpu not compiled (amdgpu Stages 2-4 empty) AMD display init impossible
Power management firmware (PSP, SMC, PMFW) amdgpu PM stack + 30+ firmware blobs NOT compiled; firmware directory is empty AMD GPU cannot complete init
GFX ring + per-process GPUVM + syncobj real radeonsi per redox-drm/driver.rs:527-531: "future Phase 6+" radeonsi startup always fails past UAPI

5. Critical Path to Boot → Plasma (software-rendered)

This is the minimal viable path that does NOT require AMD hardware acceleration. It uses llvmpipe + wl_shm + redbear-compositor + KWin (in a future switchover) and exercises every layer except HW acceleration.

Step Sub-task File:Line / Where Estimate
5.1 Run a clean Mesa link pass ./local/scripts/build-redbear.sh redbear-full; diagnose the link failure root cause (likely LLVM lib resolution or missing libglapi.so) 1-2 weeks
5.2 Runtime-validate Qt6 Wayland null+8 fix per local/docs/QT6-WAYLAND-NULL8-DIAGNOSIS.md §7; rebuild libwayland → qtbase → qtdeclarative → qtwayland end-to-end; verify a QML window renders under redbear-compositor 1-2 weeks
5.3 Boot redbear-full in QEMU and confirm /scheme/drm/card0 responds to drmGetVersion + drmModeGetResources (virtio-gpu path) local/scripts/test-redbear-full-qemu.sh 0.5 week
5.4 Wire redbear-statusnotifierwatcher into config/redbear-full.toml [packages] and re-add D-Bus activation files for kded6, kglobalaccel, ksmserver once daemon binaries are runtime-verified per bg_87ac9620; local/docs/DBUS-INTEGRATION-PLAN.md §F5 0.5 week
5.5 Port kf6-krunner, kf6-threadweaver, kf6-frameworkintegration — three hard deps for plasmashell new recipes in local/recipes/kde/ 2-4 weeks
5.6 Port polkit-kde-agent-1 and harfbuzz new recipes 1 week
5.7 Fix the 4 lie-grade shims in local/recipes/kde/kirigami/stubs/QtNetwork/ + linux-kpi drm_shim.rs (vblank, mode_config_reset, connector_register) per §3.4 above 1 week
5.8 Add logging to SDDM VT/utmpx stubs local/recipes/kde/sddm/recipe.toml patches 0.5 day
5.9 First plasma session launch end-to-end (SDDM greeter → KWin compositor → plasmashell → kded6 → kglobalacceld → system tray) iterate to fix individual crashes as they surface 2-4 weeks
5.10 Run all Phase 6 KDE test scripts test-phase6-kde-qemu.sh, test-kde-session.sh 1 week

Total estimate (serial): ~10-15 weeks of focused engineering. With 1-2 engineers working parallelizable items: ~6-10 weeks.


6. Critical Path to Hardware-Accelerated (Mesa radeonsi + KWin + real GPU)

After §5 completes (software path proven), this path adds real GPU work. Many of these steps require kernel ABI extensions (per redox_drm_cs.h:11).

Step Sub-task Where Estimate
6.1 Populate firmware blobs in local/recipes/system/firmware-loader/source/firmware/amdgpu/ via local/scripts/fetch-firmware.sh --vendor amd --subset=amdgpu-core + manual commit firmware/amdgpu/ is currently empty (HIGHEST prep gap) 0.5 week
6.2 Implement DRM_CLIENT_CAP_ATOMIC in redox-drm/src/scheme.rs + add drmModeAddFB2, drmModeAddFB2WithModifiers, drmModeAtomicCommit, drmModeGetProperty, drmModeSetProperty, DRM_IOCTL_MODE_OBJ_* ~1500 LOC ioctl handlers + per-resource state 4-8 weeks
6.3 Implement DRM_CLIENT_CAP_UNIVERSAL_PLANES (cursor + overlay planes) redox-drm 2 weeks
6.4 Implement DRM_IOCTL_SYNCOBJ_* family (5 ioctls) redox-drm 2 weeks
6.5 Patch Mesa to translate DRM_IOCTL_SYNCOBJ_WAIT to REDOX_FENCE_EVENTFD (when called from EGL Wayland swapchain) Mesa + Mesa redox winsys + EGL Wayland platform 2-4 weeks
6.6 Implement multi-context command submission in kernel + redox-drm (kernel ABI extension per redox_drm_cs.h:11) kernel + redox-drm 4-8 weeks
6.7 Implement per-process GPUVM (PPGTT) + softpin + per-context CS kernel + redox-drm (BigLift™) 8-12 weeks
6.8 Re-integrate amdgpu Stages 2-4 (Linux AMD DC tree at local/recipes/gpu/amdgpu-source/) — retain the bounded Red Bear glue + start adding the AMD DC core amdgpu/recipe.toml:82,101,125 8-16 weeks (this is the heaviest item)
6.9 Implement real GFX ring + radeonsi command submission path in redox-drm/src/drivers/amd/mod.rs per driver.rs:527-531: "Real radeonsi acceleration requires implementing the GFX ring + per-process GPUVM" 4-8 weeks
6.10 Implement AtomBIOS / VBIOS POST parser for AMD GPU bring-up new code in amdgpu glue (or pull from reference) 2-4 weeks
6.11 Write a Redox platform plugin for KWin that opens /scheme/drm/card0, talks to evdevd, integrates with redbear-sessiond logind device taking new code in local/recipes/kde/kwin/ 4-8 weeks
6.12 Wire redbear-keymapd into redbear-compositor so XKB keymaps are sent on wl_keyboard_keymap (currently WL_KEYBOARD_KEYMAP_FORMAT_NO_KEYMAP) redbear-compositor main.rs:930 + redbear-keymapd recipe 2 weeks
6.13 Validate on real AMD hardware (Ryzen Threadripper 128-thread verified host per AGENTS.md) local/scripts/test-amd-gpu.sh, test-intel-gpu.sh, test-baremetal.sh (fix my-amd-desktop first) 2-4 weeks

Total estimate for HW-accelerated path: 26-46 weeks from §5 completion. With 2 engineers parallelizable, ~13-26 weeks.


7. Critical Path: Mesa → KWin as a real compositing WM (intermediate)

A practical intermediate between §5 and §6: prove that KWin can run on the Mesa EGL Wayland platform using llvmpipe (no HW acceleration), without needing AMD/Intel DC work. This exercises the entire compositor layer.

Step Sub-task File:Line / Where Estimate
7.1 Write a Redox platform plugin for KWin that uses the bounded Mesa EGL Wayland platform instead of the Linux DRM backend new code in kwin/recipe.toml 4-6 weeks
7.2 OR write a wlroots port for Redox that KWin can consume via SessionBackend (wlroots has the policy_noop session backend that bypasses logind) recipes/wip/wayland/wlroots/redox.patch is staged 8-12 weeks
7.3 Boot KWin Wayland session in QEMU with llvmpipe test-phase6-kde-qemu.sh after KWin → Wayland switchover 2-4 weeks

Note: This is the optimal intermediate path because it exercises the entire 3D desktop pipeline without requiring AMD DC bring-up. It validates every architectural choice made to date. AGENTS.md references this as P4: Wayland compositor (4-6 weeks) + P3: KWin session (6-10 weeks).


8. Architecture rules (binding)

When working on any layer captured in this document:

  1. The validation bar is OS-level: code presence ≠ support. The only acceptable evidence is a real or host-rendered frame on screen with a real round-tripped EGL context that survives protocol transitions.

  2. Zero-stub policy: no unimplemented!(), todo!(), #[cfg(stub)], // TODO in production code. New stub surfaces must:

    • return a typed error or sentinel value, not zero,
    • log every invocation at WARN level,
    • appear in the §3 table of this document.
  3. No new submodules, no new branches (per local/AGENTS.md BRANCH AND SUBMODULE POLICY). All custom work lives in existing 0.3.1-versioned crates.

  4. Durability: every change to upstream-owned sources (e.g. Mesa source tree) MUST be durably saved (patches in local/patches/, or core-fork commits in local/sources/).

  5. Forks only via the canonical bump-release.sh (not the deprecated bump-fork.sh).

  6. Build via ./local/scripts/build-redbear.sh <config> only — not repo cook, not make r.<pkg>, not make live directly. The canonical pipeline has the prefix-staleness check, concurrency lock, and branch gates.

  7. D-Bus service registration via /etc/init.d/<NN>_* paths, never /usr/lib/init.d/ (collision rule).

  8. Recipe.toml changes are git-tracked and durable. Source-tree edits (e.g. recipes/libs/mesa/source/...) are disposable.

  9. Acceptable runtime fix modes: (a) patch the missing implementation, (b) honest shim with logging. Never: silent no-op, never: lying magic constant, never: remove from build.

  10. AMD DC re-integration is opt-in, not opt-out. Per amdgpu/recipe.toml:7-9, the imported Linux AMD DC tree is intentionally not in the default retained build path. This is by design until the bounded path proves a specific dependency.

8.1 Implementation progress log (2026-07-27)

This subsection records the concrete code work that landed on the 0.3.1 branch on 2026-07-27, in the order it was committed. Each entry lists commit hash, file(s), what changed, and what the next remaining gap is.

Wave 1 — linux-kpi lie-grade stub fixes

Commit: 0b19fddd2c 3d: harden 4 lie-grade stubs in linux-kpi; log SDDM no-ops; emit SeatNew in redbear-sessiond

File Change
local/recipes/drivers/linux-kpi/source/src/rust_impl/drm_shim.rs drm_crtc_handle_vblank: always-0 stub → per-crtc monotonic counter via lazy_static! Mutex<HashMap<usize, u32>>. Mesa/KWin's drmWaitVBlank no longer stalls on first page-flip wait.
local/recipes/drivers/linux-kpi/source/src/rust_impl/drm_shim.rs drm_mode_config_reset: was calling drm_ioctl(dev, GETRESOURCES, NULL, NULL) which drm_ioctl itself rejects (NULL _data-EINVAL). Replaced with a logged no-op.
local/recipes/drivers/linux-kpi/source/src/rust_impl/drm_shim.rs drm_connector_register: escalated log::debug! to log::warn!.
local/recipes/drivers/linux-kpi/source/src/rust_impl/drm_shim.rs drm_dev_register: log::warn! when caller passes non-zero flag bits.
local/recipes/kde/sddm/redox-virtualterminal-stub.patch qDebug() logs on every no-op invocation.
local/recipes/kde/sddm/redox-helper-utmpx-stub.patch qDebug() logs on every no-op invocation.
local/recipes/system/redbear-sessiond/source/src/manager.rs emit_seat_new() added (zbus signal) + set_connection triggers it on first call.

Wave 2 — redbear-sessiond SeatRemoved wire

Commit: e6e4289113 redbear-sessiond: emit SeatRemoved on shutdown

  • Hooked emit_seat_removed into wait_for_shutdown's return path so SDDM's LogindSeatManager observes seat departure before the D-Bus connection drops. Order: emit before drop.

Wave 3 — drm_crtc_handle_vblank_get + test fixture fix

Commit: 86a162c803 linux-kpi: add drm_crtc_handle_vblank_get read-only sister; fix test fixture

File Change
local/recipes/drivers/linux-kpi/source/src/rust_impl/drm_shim.rs New pub extern "C" fn drm_crtc_handle_vblank_get(crtc: *mut u8) -> u32 returns the current per-crtc counter without incrementing. Useful for diagnostics and deterministic tests.
local/recipes/drivers/linux-kpi/source/src/rust_impl/drm_shim.rs Two new tests: drm_crtc_handle_vblank_get_returns_counter_without_incrementing and drm_crtc_handle_vblank_get_returns_zero_for_unseen_crtc.
local/recipes/drivers/linux-kpi/source/src/rust_impl/error.rs Pre-existing test_handler had wrong signature (plain Rust fn vs ErrorHandlerFn's unsafe extern "C" fn). Fixed.

Wave 4 — kirigami QtNetwork lie-grade → real implementation

File Change
local/patches/kirigami/02-qnetwork-real-implementation.patch NEW PATCH. Replaces the upstream Kirigami's qnam = nullptr /* Redox: networkAccessManager not available */ hardcode with a real qnam = new QNetworkAccessManager(this) allocation. The Icon primitive's handleFinished already falls through to the placeholder icon when scheme:network is unavailable.
local/recipes/kde/kirigami/recipe.toml Added patches = ["02-qnetwork-real-implementation.patch"] and cookbook_apply_patches invocation. Removed the -I${COOKBOOK_SOURCE}/stubs/QtNetwork from CMAKE_CXX_FLAGS.
local/recipes/kde/kirigami/source/stubs/QtNetwork/ DELETED. Three files (QNetworkAccessManager, QNetworkReply, QNetworkRequest) that provided lying nullptr-returning and minimal-Q_OBJECT-having stubs. The real QtNetwork (built via qtbase's Qt6::Network module) is now used.
local/recipes/kde/sddm/stubs/ DELETED ENTIRELY. stubs/linux/ subdir was orphaned (SDDM patches wrap their use in #if !defined(__redox__) so the stubs are never actually compiled on Redox). The empty stubs/ dir had no other contents.

Wave 5 — bin/ toolchain wrappers

File Change
bin/x86_64-unknown-redox-gcc-ar NEW. Same 5-line redbear-run-tool wrapper pattern as existing x86_64-unknown-redox-gcc. The cookbook's [binaries] block (in src/cook/script.rs:340) requires this; without it, meson fails to find gcc-ar during regen.
bin/x86_64-unknown-redox-gcc-ranlib NEW. Same pattern.
bin/x86_64-unknown-redox-g++ NEW. Same pattern.
bin/x86_64-unknown-redox-cpp NEW. Same pattern.

These four wrappers unblock meson --internal regenerate for any mesa-style build. Verified: with PATH=.../bin:$PATH, x86_64-unknown-redox-gcc-ar --version returns GNU ar (GNU Binutils) 2.43.1.

The audit's §2 #1 ("Mesa 26.1.4 link has never completed") was misclassified. The actual blocker is upstream of the link step: mesa's meson configure fails with Dependency lookup for libclc with method 'pkg-config' failed. Mesa is the FIRST consumer to break because libclc is a hard dep of mesa's clc tool.

local/recipes/dev/libclc/ exists with a structurally-correct 142-line recipe (cmake + ninja, LLVM21+clang21 for bitcode generation). However, the libclc cook has never actually produced libclc.pc or any .bc bitcode files. The sysroot at local/recipes/dev/libclc/target/x86_64-unknown-redox/sysroot/usr/lib/ contains LLVM .a files (deposited by a prior clang21 cook that wrote to the wrong stage path) but no libclc output.

After the Wave 5 wrappers, meson regen no longer fails on gcc-ar missing. It now fails on libclc.pc missing (which is a libclc-cook problem, not a mesa-link problem). Once libclc is properly cooked, the next blocker would be libva's VA_VERSION macro missing.

This means the audit's §2 #1 is correctly captured in §6 as "amdgpu Stages 2-4 re-integration" but the mesa link itself is gated on a libclc cook run.

Implementation progress — what was NOT touched this round

The following audit items were tracked but not addressed in the 2026-07-27 implementation round. They are NOT closed; they remain open gaps per §2 / §5 / §6 of this document.

Round 2 (continued) — 2026-07-27, commit e6e4289113 and later

Added a second round of lie-grade-stub fixes beyond Round 1. The main Wave 1 fixes (Waves 1-5) all landed in commit 49326998a3 earlier this same day. Wave 6 (compositor spec fix) and a fresh doc-consolidation pass landed in commits e6e4289113 and 092d1b39c3. See git log 3fa874930e..HEAD for the full round log.

Wave 6 — redbear-compositor wl_keyboard_keymap spec compliance

File Change
local/recipes/wayland/redbear-compositor/source/src/main.rs send_keyboard_setup was passing /dev/null's fd as the keymap fd while setting format = NO_KEYMAP and size = 0. Per Wayland spec, NO_KEYMAP requires fd = -1 and size = 0; a non-(-1) fd violates the spec and crashes clients that validate the fd (older Qt, kglobalacceld). The previous code also couldn't use send_with_rights to transmit -1 (the kernel rejects it as EBADF and an empty fds array yields fd=0). Replaced with a direct stream.write_all(&msg) of the 12-byte event with 0xFFFF_FFFF_u32 (= -1 as u32) in the fd field. This is the spec-compliant honest fix until a real XKB v1 keymap generator lands (see §5.5 below).

The function still emits format = NO_KEYMAP because no compositor-side XKB v1 keymap generator exists yet (see local/recipes/system/redbear-keymapd/source/, which only produces character lookups, not XKB v1 binary). The fix is a wire-level correctness fix; producing a real keymap is a separate multi-day task tracked under §5.5 "Mesa → KWin as a real compositing WM".

Round 2 doc consolidation — commit 092d1b39c3

Deleted 14 additional stale docs beyond the round 1 sweep:

  • local/docs/boot-logs/*.log (11 files) — point-in-time QEMU boot logs from 2026-04-30 to 2026-06-29. All stale.
  • local/docs/evidence/v0.2/redbear-mini-login-prompt.png — early v0.2 era screenshot, stale.
  • local/docs/evidence/qemu-boot-login-prompt.png — same.
  • local/docs/networking-validation-log.md — content header self-declared as "Staged (2026-07-27)" with no body; orphan, deleted.

Backup: /tmp/opencode/round2-stale-doc-backup-2026-07-27-round2.tar.gz (53616 B, 15 entries).

Did NOT touch:

  • local/docs/legacy-recipe-patches/{base,bootloader,installer,kernel,relibc}/ — these contain 100+ ACTIVE in-tree patches (P0-P11 per component) that are still applied during canonical builds. They are not "stale docs" but a real durability surface.
  • local/docs/legacy-obsolete-2026-07-25/SUPERSEDED.md — the directory stub from Round 1.

Implementation progress — what was NOT touched this round

The following audit items were tracked but not addressed in the 2026-07-27 implementation round. They are NOT closed; they remain open gaps per §2 / §5 / §6 of this document.

  • §2 #2 atomic mode-settingredox-drm/scheme.rs:1969 still returns EOPNOTSUPP for DRM_CLIENT_CAP_ATOMIC. Multi-day ioctl implementation in redox-drm. Tracked under §6.
  • §2 #3 SYNCOBJ_ ioctls* — 5 ioctls absent. Requires Mesa patch to translate syncobj calls to REDOX_FENCE_EVENTFD.
  • §2 #4 universal planesredox-drm/scheme.rs:1976 returns EOPNOTSUPP for DRM_CLIENT_CAP_UNIVERSAL_PLANES.
  • §2 #5 KWin platform plugin — KWin has no Redox backend (local/recipes/kde/kwin/).
  • §2 #7 libvalibva.pc lacks VA_VERSION macro (just discovered via Wave 5).
  • §5.5 / §5.6 new KF6 recipeskf6-krunner, kf6-threadweaver, kf6-frameworkintegration, polkit-kde-agent-1, harfbuzz. Multi-day recipe authoring each.
  • §5.5 amdgpu Stages 2-4 re-integration — multi-month, integrates ~6M-line Linux AMD DC tree.
  • §5.2 Qt6 Wayland null+8 runtime validation — patches are committed but never runtime-validated in QEMU.
  • Wave 5 (redbear-compositor XKB keymap) — still emits WL_KEYBOARD_KEYMAP_FORMAT_NO_KEYMAP. Needs an XKB v1 keymap blob and redbear-keymapd integration; redbear-keymapd does NOT currently produce XKB v1 binary (only text-format scan-code lookups).
  • The unknown local/docs/NETWORKING-AND-DRIVERS-SYSTEMATIC-ASSESSMENT-2026-07-27.md (1057 lines) and local/docs/NETWORKING-AND-DRIVERS-CODE-ASSESSMENT-2026-07-27.md (1108 lines) — operator-authored authoritative docs for the network+driver surface. Not in scope of this round; left as-is.

9. Tracking

  • Each Round adds 1-2 sub-sections to this document rather than appending post-mortems to scratch files.
  • Each TODO discovered during §5/§6 implementation work goes in §2 ranked by severity.
  • Each completed item moves to §3.2 (RESOLVED).
  • Each deleted doc moves from §10 (delete list) to a tarball entry at /tmp/opencode/stale-doc-backup-<date>.tar.gz plus the deletion log at local/docs/SUPERSEDED-DOC-LOG.md.

10. Doc deletion manifest (post-consolidation)

All deletion candidates MUST be backed up first to /tmp/opencode/stale-doc-backup-2026-07-27.tar.gz per AGENTS.md "NEVER delete" rule and this document's notepad policy (§0 binding policy).

10.1 REPLACE — completed 2026-07-27

Both files listed below were deleted and their content absorbed here; backups are in /tmp/opencode/stale-doc-backup-2026-07-27.tar.gz and /tmp/opencode/round2-stale-doc-backup-2026-07-27-round2.tar.gz. The audit trail is in local/docs/legacy-obsolete-2026-07-25/SUPERSEDED.md.

Doc Lines Reason
local/docs/3D-DRIVER-PLAN.md 960 All Round 1-7 work fact-of-record here; operating rule restated in §0
local/docs/REDBEAR-FULL-SDDM-BRINGUP.md 177 Build-campaign log; status captured in §1.5

10.2 RESTORE — completed 2026-07-27

The IRQ plan restoration was completed; it now lives at the top-level local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md. Stale pcid-spawner references were updated to driver-manager in the same pass (and again as part of this round's doc cleanup). See local/docs/legacy-obsolete-2026-07-25/SUPERSEDED.md for the audit log.

10.3 DELETE candidates — completed 2026-07-27

All 28 docs listed below (and the 6 boot-log/fork-push-status entries that followed) were deleted in commit 092d1b39c3 ("docs: consolidate 3D-desktop docs"). A backup tarball of all deleted files is preserved at /tmp/opencode/stale-doc-backup-2026-07-27.tar.gz (round 1) and /tmp/opencode/round2-stale-doc-backup-2026-07-27-round2.tar.gz (round 2). The audit trail lives in local/docs/legacy-obsolete-2026-07-25/SUPERSEDED.md.

Doc Lines Reason
local/docs/legacy-obsolete-2026-07-25/05-KDE-PLASMA-ON-REDOX.md 560 Self-labeled historical. Pre-KF6 instructions superseded by this doc + CONSOLE-TO-KDE
local/docs/legacy-obsolete-2026-07-25/BUILD-SYSTEM-ASSESSMENT-2026-07-18.md 464 Audit that has been absorbed into AGENTS.md policies
local/docs/legacy-obsolete-2026-07-25/BUILD-SYSTEM-HARDENING-PLAN.md 624 Phases implemented; collision detection now in COLLISION-DETECTION-STATUS.md
local/docs/legacy-obsolete-2026-07-25/DRM-MODERNIZATION-EXECUTION-PLAN.md 498 Superseded by this doc
local/docs/legacy-obsolete-2026-07-25/HOOKS.md 188 Subsumed by RELEASE-BUMP-WORKFLOW.md + AGENTS.md
local/docs/legacy-obsolete-2026-07-25/INITNSMGR-CONCURRENCY-DESIGN.md 222 Design for implemented O_NONBLOCK fix
local/docs/legacy-obsolete-2026-07-25/NETWORKING-STACK-STATE.md 120 Superseded by NETWORKING-IMPROVEMENT-PLAN.md
local/docs/legacy-obsolete-2026-07-25/PATCH-PRESERVATION-AUDIT-2026-07-12.md 408 Historical audit — 144-patch finding was addressed
local/docs/legacy-obsolete-2026-07-25/RAPL-IMPLEMENTATION-PLAN.md 530 Draft, never implemented. Power planning in CONSOLE-TO-KDE
local/docs/legacy-obsolete-2026-07-25/redbear-power-improvement-plan.md 6,184 LARGEST file in repo. All improvement items done. Patterns extracted to RATATUI-APP-PATTERNS
local/docs/legacy-obsolete-2026-07-25/WAYLAND-IMPLEMENTATION-PLAN.md 186 Diagnostic §§1-2 accurate; execution plan superseded by this doc
local/docs/archived/ACPI-I2C-HID-IMPLEMENTATION-PLAN.md 339 Deferred; USB HID is primary input path
local/docs/archived/BUILD-SYSTEM-IMPROVEMENTS.md 621 Historical post-mortem
local/docs/archived/DRIVER-MANAGER-MIGRATION-PLAN.md 2,861 Round-by-round history (182 KB) superseded by DRIVER-MANAGER.md
local/docs/archived/IMPLEMENTATION-MASTER-PLAN.md 129 Completion report superseded by CONSOLE-TO-KDE
local/docs/archived/IMPROVEMENT-PLAN.md 575 RESOLVED quality audit
local/docs/archived/INTEL-HDA-IMPLEMENTATION-PLAN.md 417 Deferred audio plan
local/docs/archived/KERNEL-SCHEDULER-MULTITHREAD-IMPROVEMENT-PLAN.md 1,026 Historical scheduler
local/docs/archived/RELIBC-IPC-ASSESSMENT-AND-IMPROVEMENT-PLAN.md 165 Credential work resolved in KERNEL-IPC-CREDENTIAL-PLAN.md
local/docs/archived/repo-governance.md 99 Historical, absorbed into AGENTS.md
local/docs/archived/SLEEP-IMPLEMENTATION-PLAN.md 306 All phases committed
local/docs/archived/STUBS-FIX-PROGRESS.md 507 Completed v6.0 stubs work; outcome captured in §3.2 here
local/docs/archived/SYSTEM-STABILITY-AND-UPSTREAM-SYNC-PLAN.md 819 Archived, replaced by CONSOLE-TO-KDE
local/docs/archived/UPSTREAM-SYNC-PROCEDURE.md 829 References obsolete pcid-spawner model
local/docs/archived/USB-BOOT-INPUT-PLAN.md 169 Superseded
local/docs/archived/USB-VALIDATION-RUNBOOK-2026-07.md 137 Older version; canonical USB-VALIDATION-RUNBOOK.md at top-level
local/docs/archived/XHCID-DEVICE-IMPROVEMENT-PLAN.md 360 Superseded
local/docs/evidence/driver-manager/ASSESSMENT-2026-07-22.md 368 Pre-cutover; superseded by DRIVER-MANAGER.md
local/docs/evidence/driver-manager/D5-AUDIT.md 390 Pre-cutover D5 gate audit; superseded
local/docs/fork-push-status/2026-07-12-Round-9-phase-8.3.md 83 Point-in-time push log
local/docs/boot-logs/README.md 57 Keep as directory index only if whole dir is kept; otherwise delete
local/docs/boot-logs/cachyos-boot-20260629-0520.md 52 Reference log from CachyOS
local/docs/boot-logs/REDBEAR-FULL-BOOT-EXTENDED-RESULTS.md 295 Boot test from 2026-06-09
local/docs/boot-logs/REDBEAR-FULL-BOOT-POST-VIRTIO-BLKD-FIX-RESULTS.md 238 Boot test from 2026-06-09
local/docs/boot-logs/REDBEAR-FULL-BOOT-RESULTS.md 281 Boot test from 2026-06-09
local/docs/boot-logs/REDBEAR-MINI-BOOT-PS2D-INPUTD-LOG-FIX.md 134 Bug diagnostic from 2026-06-30; bug fixed
local/docs/legacy-recipe-patches/README.md 37 Navigation aid only

Backup procedure (BEFORE any rm):

DATE=2026-07-27
mkdir -p /tmp/opencode/stale-doc-backup-${DATE}
cd /mnt/data/Builds/RedBear-OS
tar -czvf /tmp/opencode/stale-doc-backup-${DATE}/docs-to-delete-1.tar.gz \
  $(awk '/|/{gsub(/^`| \\\\?$/,""); print "local/docs/" $NF}' /tmp/.../list) \
  2>/tmp/opencode/deletion-log-${DATE}.txt
git checkout -b docs/consolidation-2026-07-27
# now safe to delete, or use the `AgGet` script wrapper

The deletion log MUST record: file path, line count, last-modified git ref, why deleted (per this table), and where the backup tarball lives.

10.4 KEEP AS COMPANIONS (do not delete)

The following docs are referenced from AGENTS.md or this doc as the canonical authority for their scope. They are updated independently.

Subsystem companions (stay, cross-reference from this doc):

  • local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md — desktop journey; cross-ref §1.1, §1.6
  • local/docs/DBUS-INTEGRATION-PLAN.md — D-Bus architecture; cross-ref §1.5, §1.6
  • local/docs/QT6-WAYLAND-NULL8-DIAGNOSIS.md — null+8 root cause; cross-ref §2 #2, §3.4
  • local/docs/INPUT-STACK-LINUX-ALIGNMENT-PLAN.md — input stack; cross-ref §1.1
  • local/docs/KERNEL-IPC-CREDENTIAL-PLAN.md — kernel scheduler/credential; cross-ref §1.1
  • local/docs/ACPI-IMPROVEMENT-PLAN.md — ACPI; cross-ref §1.1 (RSDP propagation)
  • local/docs/USB-IMPLEMENTATION-PLAN.md — USB; cross-ref §1.1 (usbhidd)
  • local/docs/WIFI-IMPLEMENTATION-PLAN.md — Wi-Fi; not directly 3D-relevant
  • local/docs/BLUETOOTH-IMPLEMENTATION-PLAN.md — Bluetooth; not 3D-relevant
  • local/docs/NETWORKING-IMPROVEMENT-PLAN.md — networking; cross-ref §1.1 (smolnetd)
  • local/docs/DRIVER-MANAGER.md — PCI spawn; cross-ref §1.7 (00_driver-manager.service)
  • local/docs/INIT-NAMESPACE-MANAGER-SCALABILITY-PLAN.md — initnsmgr; cross-ref §1.7
  • local/docs/LG-GRAM-16Z90TP-COMPATIBILITY-PLAN.md — laptop integration
  • local/docs/HARDWARE-NETWORKING-INVENTORY.md — HW inventory
  • local/docs/HARDWARE-VALIDATION-MATRIX.md — HW validation matrix
  • local/docs/FIREWALL-VALIDATION-LOG.md — firewall
  • local/docs/BUILD-SYSTEM-INVARIANTS.md — build invariants (AGENTS.md reference)
  • local/docs/BUILD-CACHE-PLAN.md — build cache
  • local/docs/PACKAGE-BUILD-QUIRKS.md — build quirks (AGENTS.md reference)
  • local/docs/QUIRKS-SYSTEM.md — quirks (AGENTS.md reference)
  • local/docs/QUIRKS-AUDIT.md — quirks consumers
  • local/docs/QUIRKS-IMPROVEMENT-PLAN.md — quirks redesign
  • local/docs/LOCAL-FORK-SUPREMACY-POLICY.md — fork policy (AGENTS.md reference)
  • local/docs/PATCH-GOVERNANCE.md — patch governance (AGENTS.md reference)
  • local/docs/RELEASE-BUMP-WORKFLOW.md — release bumps (AGENTS.md reference)
  • local/docs/SCRIPT-BEHAVIOR-MATRIX.md — script matrix (AGENTS.md reference)
  • local/docs/RATATUI-APP-PATTERNS.md — patterns guide
  • local/docs/CUB-PACKAGE-MANAGER.md — cub package manager
  • local/docs/GRUB-INTEGRATION-PLAN.md — GRUB integration
  • local/docs/COLLISION-DETECTION-STATUS.md — installer collision detection (AGENTS.md reference)
  • local/docs/USB-VALIDATION-RUNBOOK.md — USB validation
  • local/docs/GREETER-LOGIN-IMPLEMENTATION-PLAN.md — greeter design (companion to this doc)
  • local/docs/evidence/lg-gram/ASSESSMENT-2026-07-26.md — LG Gram evidence

Audit / evidence docs KEPT:

  • local/docs/archived/README.md — directory inventory (KEEP — update to reflect new delete log)
  • local/docs/legacy-obsolete-2026-07-25/SUPERSEDED.md — directory inventory (KEEP — update IRQ-plan entry to reflect restore)

Within config/:

  • protected-recipes.toml — infrastructure data (NOT a build config)

11. Script deletion manifest

Per bg_3239014a audit. All deletions require backup to /tmp/opencode/stale-script-backup-2026-07-27.tar.gz before any rm.

11.1 DELETE (safe — self-declared dead or mission-complete)

Script Lines Reason
local/scripts/bump-fork.sh ~150 Self-declared DEPRECATED 2026-07-18. Superseded by bump-release.sh + upgrade-forks.sh. Guarded by env var.
local/scripts/sync-upstream.sh ~40 Self-declared RETIRED. Prints message, exits. Zero code path.
local/scripts/edit-kf6-recipes-for-patches.sh (large) One-time C-7 migration step 2; mission complete in 6.27.0 bump cycle
local/scripts/migrate-kf6-seds-direct.sh (small) One-time C-7 migration step 1
local/scripts/migrate-kf6-seds-to-patches.sh (medium) C-7 main migration. Superseded by bump-graphics-recipes.sh
local/scripts/cleanup-kf6-noop-seds.sh (small) C-7 cleanup of dead ecm/ki18n chains
local/scripts/cleanup-kf6-noop-seds-targeted.sh (small) C-7 targeted variant

11.2 DELETE (redundant wrappers)

Script Lines Reason
local/scripts/driver-manager-audit-no-stubs.sh 5 Just exec python3 driver-manager-audit-no-stubs.py
local/scripts/test-amd-gpu.sh 3 Just exec test-drm-display-runtime.sh --vendor amd "$@"

11.3 MERGE (consolidate overlapping functionality)

Keep Fold into it Reason
local/scripts/validate-patches.sh verify-patches.sh (add --components filter; delete the other) Both check patch application. 50% overlap.

11.4 FIX (not delete)

Script Issue Fix
local/scripts/test-baremetal.sh lines 16, 29 Hardcodes CONFIG="my-amd-desktop" Replace with redbear-full (the only redbear target with desktop/graphics)
local/scripts/guard-recipes.sh lines 4, 15, 112 References retired sync-upstream.sh Update to reference provision-release.sh

11.5 ENHANCE (not delete, but improve)

Script Improvement
local/scripts/TOOLS.md Round-15 update to enumerate all ~50+ canonical scripts, grouped by function
local/scripts/build-redbear-wifictl-redox.sh Generalize as build-single-redox-package.sh <crate-dir> or delete (use make r.<pkg>)

11.6 CONFIG DELETION MANIFEST (NOT consumed by build-redbear.sh)

File Lines Reason
config/desktop.toml (medium) Upstream Redox; not referenced by any redbear config
config/desktop-minimal.toml (medium) Same — uses /usr/lib/init.d/ paths (lint violation)
config/wayland.toml (large) Bounded Wayland validation upstream config; not consumed
config/x11.toml (medium) Self-declared non-primary; all X11 via Xwayland in redbear-full
config/dev.toml (small) Not referenced
config/redoxer.toml, redoxer-gui.toml (small) Redoxer CI; not Red Bear
config/acid.toml, auto-test.toml, os-test.toml, tests.toml, sys-build.toml (various) Upstream CI test configs
config/aarch64/* (entire dir) ~6 files Red Bear is x86_64 only
config/i586/* ~6 files Same
config/riscv64gc/* ~6 files Same

11.7 CONFIG FIX (not delete)

File Issue Fix
config/redbear-wifi-experimental.toml line 9 include = ["redbear-minimal.toml"] — typo FIXED 2026-07-27 — now include = ["redbear-mini.toml"] Done
config/redbear-bluetooth-experimental.toml line 10 Same typo FIXED 2026-07-27 — same Done
config/redbear-device-services.toml 1,137 lines with ~14x duplication of 4 firmware-fallback TOML blobs Deduplicate to ~200 lines

12. Cross-reference index (companion-plan anchors)

When you are working on:

Topic Read
Mesa link failure root cause local/docs/3D-DRIVER-PLAN.md §1.4 (and run a clean build to confirm)
Qt6 Wayland null+8 crash (root-cause analysis + fix author) local/docs/QT6-WAYLAND-NULL8-DIAGNOSIS.md
D-Bus service architecture, activation files, login1 local/docs/DBUS-INTEGRATION-PLAN.md
Greeter/SDDM/authd/session-launch design local/docs/GREETER-LOGIN-IMPLEMENTATION-PLAN.md
Desktop phase tracker (P1 → P5) local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md
Build system invariants (HIGH-RISK never-touch) local/docs/BUILD-SYSTEM-INVARIANTS.md
Build cache architecture (BLAKE3 content-hash) local/docs/BUILD-CACHE-PLAN.md
Cross-compilation quirks by package local/docs/PACKAGE-BUILD-QUIRKS.md
PCI driver spawn / driver-manager architecture local/docs/DRIVER-MANAGER.md
Init namespace manager (initnsmgr) local/docs/INIT-NAMESPACE-MANAGER-SCALABILITY-PLAN.md
IRQs / PCI / MSI-X / low-level controller quality local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md (restore per §10.2)
ACPI boot-to-S5 propagation local/docs/ACPI-IMPROVEMENT-PLAN.md
Quirks system architecture + per-device tables local/docs/QUIRKS-SYSTEM.md + QUIRKS-AUDIT.md + QUIRKS-IMPROVEMENT-PLAN.md
AMD GPU PCIe device-id coverage local/docs/3D-DRIVER-PLAN.md §4.3
Keyboard layout / input method / accessibility local/docs/INPUT-STACK-LINUX-ALIGNMENT-PLAN.md
fork-supremacy policy (Cat 2 +rb suffix) local/docs/LOCAL-FORK-SUPREMACY-POLICY.md
release bumps (operator workflow) local/docs/RELEASE-BUMP-WORKFLOW.md
Script behavior / TOOLS.md local/scripts/SCRIPT-BEHAVIOR-MATRIX.md
Hardware inventory / bring-up matrix local/docs/HARDWARE-NETWORKING-INVENTORY.md + HARDWARE-VALIDATION-MATRIX.md
Patching rules + orphan detection local/docs/PATCH-GOVERNANCE.md

13. Sign-off

  • Authored: 2026-07-27 by audit consolidation (from 12 explore + 2 librarian background agents).
  • Validation bar restated: §0 (operating principle from 3D-DRIVER-PLAN §10).
  • Superseded by this doc (post confirmation): 3D-DRIVER-PLAN.md, REDBEAR-FULL-SDDM-BRINGUP.md, 28 docs in §10.3 deletion manifest.
  • Restore (post confirmation): IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md to top-level.
  • Implementations unaffected until user authorizes a fix pass: all packages continue to compile as today; no code changed by writing this doc.
  • Manual QA tasks recorded: §5 (Phase-5 GPU submission) and §6 (HW validation) are the next sequential validation gates and require actual qemu-system-x86_64 boots with redbear-full.iso.

For the canonical single-doc-experience after this lands, an engineer should be able to: (a) read §0 + §1 + §2 + §3 to understand the 3D pipeline state at a glance, (b) read §5/§6 to pick a next task, (c) read §10 + §11 to know what docs/scripts survive consolidation, and (d) read §12 to know which companion-plan to open for deeper context on a specific subsystem.