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 (commita9e1c34e27). 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.
79 KiB
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
- Reports ground truth for each layer (drivers, Mesa, Wayland, SDDM, KDE, boot, configs, scripts, docs).
- Lists hard blockers, bad patterns, stubs/shims, and missing primitives — all with
file:line. - Provides three ordered execution paths: software-rendered boot→Plasma; hardware-accelerated Mesa; Mesa→KDE as a real compositing WM.
- Lists every doc deletion candidate in §10 (with backup tarball) and every script deletion candidate in §11.
- 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 1–7 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 scannermesa/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 viaredbear-keymapdis the proper fix; redbear-keymapd is in redbear-full butredbear-compositordoes not currently call it.main.rs:2comment: "Replaces the KWin stub that previously created a placeholder socket."- SHM fd passing uses payload bytes (not
SCM_RIGHTS) perCONSOLE-TO-KDE §3.1— Qt client may reject the wire format. (Round 7 addedSCM_RIGHTSper3D-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.patch—SDDM::VirtualTerminalis no-op (no Linux VT subsystem)redox-helper-utmpx-stub.patch—utmpLogin/utmpLogoutno-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=OFFKWIN_BUILD_KCMS=ON,KWIN_BUILD_TABBOX=ON,KWIN_BUILD_GLOBALSHORTCUTS=ON,KWIN_BUILD_RUNNERS=ON,KWIN_BUILD_NOTIFICATIONS=ONECMQmlModuledisabled via sed (line 66):include(ECMQmlModule)→#include(ECMQmlModule)UiToolsremoved 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-1988 → EOPNOTSUPP |
| 9 | DRM_CLIENT_CAP_UNIVERSAL_PLANES rejected |
redox-drm scheme.rs:1976-1987 → EOPNOTSUPP |
| 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.sh ↔ verify-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.md — RESTORE 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 itemsredox-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 testsredbear-wifictl: 20 test filesredbear-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.
-
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-fullactually runs to a successful Mesa link, every downstream claim about Mesa is theory. -
Qt6 Wayland null+8 crash —
wl_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. -
amdgpu Stages 2-4 are empty (
amdgpu/recipe.toml:82,101,125—DISPLAY_SRCS="",TTM_SRCS="",CORE_SRCS=""). The imported Linux AMD DC tree (~6M lines) atlocal/recipes/gpu/amdgpu-source/is adjacent but not in the retained build path. AMD hardware acceleration is structurally impossible today. -
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. -
SYNCOBJ_ ioctls absent* in redox-drm. Mesa EGL Wayland swapchain synchronization uses these. The
REDOX_FENCE_EVENTFDsubstitute works only if Mesa is patched to translate syncobj ioctls to fence eventfds. -
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. -
drm_mode_config_reset()callsdrm_ioctlwith NULL data (drm_shim.rs:703-704) — returns EINVAL immediately, leaving stale connector/CRTC lists. -
PRIME is token-based, not POSIX fd (
redox-drm scheme.rs:2391-2458). Sufficient withinredox-drmprocess; breaks cross-process GPU sharing (Mesa client ↔ compositor). -
Universal planes rejected (
redox-drm scheme.rs:1976-1987). KWin needs universal planes for HW cursor + overlay planes. -
KWin has no Redox platform plugin (
recipes/kde/kwin/recipe.toml). KWin compiles but at runtime cannot open/scheme/drm/card0or talk toevdevd. -
NO_REDOX atomic CS — multi-context CS requires kernel ABI extension (
redox_drm_cs.h:11). -
kf6-krunner, kf6-threadweaver, kf6-frameworkintegration ABSENT — every plasmashell launch crashes on missing
org.kde.krunnerand KIO thread pools. -
polkit-kde-agent-1 ABSENT — privileged actions silently fail or time out.
-
xdg-desktop-portal-kde ABSENT — Screenshot/ScreenCast portals not implemented.
-
Zero firmware blobs in
firmware/amdgpu/—firmware-loadersourcelocal/recipes/system/firmware-loader/source/firmware/amdgpu/is empty. AMD GPUs require DMCUB/GCP/SOS/VCN/SDMA blobs before DC init. -
No GPU command submission real path —
amdgpu_cs(redox-drm scheme.rs:2320-2325) accepts the call but drops the PM4 command-buffer dwords. radeonsi's GFX ring isunimplementedper the trait docstring inredox-drm/src/driver.rs:527-531. -
No per-process GPUVM / PPGTT — both AMD and Intel drivers use global GGTT as single address space (
redox-drm/src/driver.rs:295-301). -
memfd_createabsent in relibc — Mesa disk cache patches around it; PipeWire emulates via/tmpramfs. -
No runtime validation on any GPU path — even virtual-gpu has only QEMU proof.
-
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 aredox-drmpatch.
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 |
3.3 Honest runtime shims (functional substitute; logging recommended)
| 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):
- Wire
drm_crtc_handle_vblankto scheme:drm vblank event path → useSchemeSync::one_shotto wait on the actual page-flip completion event (already used by Mesa). - Fix
drm_mode_config_resetto allocate a stackdrm_mode_card_resbuffer ofsizeof()bytes and pass that. - 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; } - 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:
-
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.
-
Zero-stub policy: no
unimplemented!(),todo!(),#[cfg(stub)],// TODOin 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.
-
No new submodules, no new branches (per
local/AGENTS.mdBRANCH AND SUBMODULE POLICY). All custom work lives in existing 0.3.1-versioned crates. -
Durability: every change to upstream-owned sources (e.g. Mesa source tree) MUST be durably saved (patches in
local/patches/, or core-fork commits inlocal/sources/). -
Forks only via the canonical
bump-release.sh(not the deprecatedbump-fork.sh). -
Build via
./local/scripts/build-redbear.sh <config>only — notrepo cook, notmake r.<pkg>, notmake livedirectly. The canonical pipeline has the prefix-staleness check, concurrency lock, and branch gates. -
D-Bus service registration via
/etc/init.d/<NN>_*paths, never/usr/lib/init.d/(collision rule). -
Recipe.toml changes are git-tracked and durable. Source-tree edits (e.g.
recipes/libs/mesa/source/...) are disposable. -
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.
-
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_removedintowait_for_shutdown's return path so SDDM'sLogindSeatManagerobserves 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.
Audit-doc correction: Mesa "link never completed" — actual root cause
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-setting —
redox-drm/scheme.rs:1969still returnsEOPNOTSUPPforDRM_CLIENT_CAP_ATOMIC. Multi-day ioctl implementation inredox-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 planes —
redox-drm/scheme.rs:1976returnsEOPNOTSUPPforDRM_CLIENT_CAP_UNIVERSAL_PLANES. - §2 #5 KWin platform plugin — KWin has no Redox backend (
local/recipes/kde/kwin/). - §2 #7 libva —
libva.pclacksVA_VERSIONmacro (just discovered via Wave 5). - §5.5 / §5.6 new KF6 recipes —
kf6-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 andredbear-keymapdintegration;redbear-keymapddoes 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) andlocal/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.gzplus the deletion log atlocal/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.6local/docs/DBUS-INTEGRATION-PLAN.md— D-Bus architecture; cross-ref §1.5, §1.6local/docs/QT6-WAYLAND-NULL8-DIAGNOSIS.md— null+8 root cause; cross-ref §2 #2, §3.4local/docs/INPUT-STACK-LINUX-ALIGNMENT-PLAN.md— input stack; cross-ref §1.1local/docs/KERNEL-IPC-CREDENTIAL-PLAN.md— kernel scheduler/credential; cross-ref §1.1local/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-relevantlocal/docs/BLUETOOTH-IMPLEMENTATION-PLAN.md— Bluetooth; not 3D-relevantlocal/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.7local/docs/LG-GRAM-16Z90TP-COMPATIBILITY-PLAN.md— laptop integrationlocal/docs/HARDWARE-NETWORKING-INVENTORY.md— HW inventorylocal/docs/HARDWARE-VALIDATION-MATRIX.md— HW validation matrixlocal/docs/FIREWALL-VALIDATION-LOG.md— firewalllocal/docs/BUILD-SYSTEM-INVARIANTS.md— build invariants (AGENTS.md reference)local/docs/BUILD-CACHE-PLAN.md— build cachelocal/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 consumerslocal/docs/QUIRKS-IMPROVEMENT-PLAN.md— quirks redesignlocal/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 guidelocal/docs/CUB-PACKAGE-MANAGER.md— cub package managerlocal/docs/GRUB-INTEGRATION-PLAN.md— GRUB integrationlocal/docs/COLLISION-DETECTION-STATUS.md— installer collision detection (AGENTS.md reference)local/docs/USB-VALIDATION-RUNBOOK.md— USB validationlocal/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"] — typoinclude = ["redbear-mini.toml"] |
Done |
config/redbear-bluetooth-experimental.toml line 10 |
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.mdto 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_64boots withredbear-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.