Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
27 KiB
Stubs Fix Progress — Red Bear OS
Tracking document for the v6.0 stubs → real code rewrite work.
Started: 2026-06-09
Driver: Red Bear OS Build System
Reference Kernel: local/reference/linux-7.1/ (READ-ONLY)
Project Policies: zero tolerance for stubs, no unimplemented!() / todo!() in non-test code, no workarounds, real implementations only.
Overview
The four audit documents identified ~517 TODO/FIXME markers, 11 unimplemented!() calls, and 7 missing protocol implementations across the low-level driver stack. This document tracks the work to fix all of them.
| Audit Document | Lines | Scope |
|---|---|---|
| 935 + 50 progress rows | Comprehensive — 20 drivers, all subsystems | |
| 501 | USB stack — xhcid, usbhubd, usbctl, usbhidd, usbscsid, ucsid | |
| 419 | HID — usbhidd, i2c-hidd, intel-thc-hidd, ps2d, inputd, evdevd, xhcid glue | |
| 1091 | ACPI/PCI/IRQ/IOMMU/boot/init — 8 components, 50+ row coverage matrix | |
| 1559 | Kernel→initfs→init→display→Wayland→KDE chain | |
| 1572 | D-Bus, session, audio, network | |
| 1106 | Config, init.d, recipes, layering | |
| 1379 | Mesa → libdrm → redox-drm → Qt6 → KF6 → KWin → SDDM |
Red Bear source forks and patches
Per local/AGENTS.md "NO OVERLAY-STYLE PATCHES — SCOPED POLICY (AMENDED 2026)" two-rule model:
- Rule 1 (in-tree Red Bear components) — direct edits in
local/sources/<component>/andlocal/recipes/<category>/<name>/recipe.toml. No fork. No patches. - Rule 2 (big external projects) — Red Bear edits live as external patches in
local/patches/<component>/*.patch, applied on top of upstream git/tar source bycookbook_apply_patchesat build time.
| Component | Storage | Initial commit | Rationale |
|---|---|---|---|
base |
local/sources/base/ |
(pre-existing) | Userspace drivers (acpid, pcid, xhcid, etc.) — Rule 1 |
bootloader |
local/sources/bootloader/ |
(pre-existing) | UEFI bootloader — Rule 1 |
installer |
local/sources/installer/ |
(pre-existing) | ext4 + GRUB installer — Rule 1 |
kernel |
local/sources/kernel/ |
(pre-existing) | Microkernel — Rule 1 |
redox-drm |
local/sources/redox-drm/ |
bd787d3 + Gap 3/5/8 fixes |
DRM/KMS scheme daemon — Rule 1 (Red Bear-internal) |
redoxfs |
local/sources/redoxfs/ |
(pre-existing) | RedoxFS — Rule 1 |
relibc |
local/sources/relibc/ |
(pre-existing) | C library — Rule 1 |
userutils |
local/sources/userutils/ |
(pre-existing) | User utilities — Rule 1 |
libdrm |
local/patches/libdrm/*.patch |
5f5eec1c4 |
DRM/KMS userspace library — Rule 2 (external patches) |
mesa |
local/patches/mesa/*.patch |
bfbf128d5 |
Mesa 3D graphics library — Rule 2 (external patches) |
pipewire |
local/patches/pipewire/*.patch |
8ff9da2ff |
PipeWire audio server — Rule 2 (external patches) |
wireplumber |
local/patches/wireplumber/*.patch |
722f0c452 |
WirePlumber session manager — Rule 2 (external patches) |
Final State (2026-06-09, end of session)
cargo check status: 17+ modified base packages compile cleanly with 0 errors (xhcid, pcid, acpid, intel-thc-hidd, e1000d, usbscsid, nvmed, ps2d, inputd, i2c-hidd, usbhidd, ixgbed, rtl8168d, virtio-netd, common, init, vesad).
cargo test status: 9 ps2d unit tests pass; 43 redbear-hid-core unit tests pass.
QEMU boot validation:
local/scripts/test-redbear-full-qemu.sh(297 lines, executable) — comprehensive QEMU boot test launcher- 3 boot logs captured:
redbear-full-boot-20260609-125114.log(75s, 96 lines),redbear-full-boot-20260609-150550.log(300s, 204 lines),redbear-full-boot-post-virtio-blkd-fix-20260609-181340.log(post-fix) - 2 analysis docs:
REDBEAR-FULL-BOOT-RESULTS.md,REDBEAR-FULL-BOOT-EXTENDED-RESULTS.md,REDBEAR-FULL-BOOT-POST-VIRTIO-BLKD-FIX-RESULTS.md - Reached in 300s capture: PCI enumeration, pcid-spawner, nvmed (multi-queue), virtio-blkd, ahcid
- Real bug found and fixed:
virtio-blkdpanicked onassert_eq!(*status, 0)when boot drive is read-only (commitcffacf59) - Did NOT reach: D-Bus, KWin, SDDM, login prompt (would need redbear-full ISO + further fixes)
Gitea branches: All work on 0.2.3 (no local-only branches).
Final State (2026-06-10, v6.0-impl2 addendum)
The v6.0-impl2 session continued the desktop path from the build-system and doc-tree side. It did not change source code; it validated and shipped the external-patch chain so the build system can actually use the patches.
libdrm external-patch chain — verified end-to-end:
- The 5 libdrm patches that v6.0-impl produced (against the now-deleted
local/sources/libdrm/fork) were regenerated as 3 byte-equivalent patches against fresh upstream libdrm 2.4.125:00-xf86drm-redox-header.patch(186 lines) — createsxf86drm_redox.h01-virtgpu-drm-header.patch(138 lines) — createsvirtgpu_drm.h02-redox-dispatch.patch(806 lines) — 4 helper functions + 8__redox__branches inxf86drm.c(5276 → 5869 lines)
- All 3 verified: apply cleanly to fresh upstream, idempotent on rebuild
(cookbook helper's
git apply --reverse --checkcorrectly detects already-applied), byte-equivalent to old fork local/recipes/libs/libdrm/recipe.tomlhad two latent bugs from the v6.0-impl Rule 2 migration:pkgconftypo (real recipe ispkg-config) — fixed,repo cook-tree libdrmnow resolves deps[source].scriptno-op — moved to[build].scriptwithtemplate = "custom"socookbook_apply_patchesactually runs
Wayland re-enabling (per project policy "Enable wayland throughout"):
- 4 KF6 packages flipped from
WITH_WAYLAND=OFF→ON: kf6-kio, kf6-kidletime, kf6-kguiaddons, kf6-kwindowsystem local/recipes/libs/libxkbcommon/recipe.toml:-Denable-wayland=false→true; addedlibwayland+wayland-protocolsto dependencieslocal/recipes/kde/kf6-kded6/recipe.toml: removed the binary-rename wrapper (kded6-wrapper.sh, deleted) and replaced it with ased-injectedEnvironment=QT_QPA_PLATFORM=offscreenline in the kded6 systemd service file. This is the canonical Phase E approach recommended inlocal/docs/WAYLAND-IMPLEMENTATION-PLAN.md.local/recipes/libs/libdrm/recipe.toml:-Dintel=enabled(Intel GPU backend now builds iris + crocus).recipes/libs/libpciaccess/recipe.toml(libpciaccess 0.19, meson, BLAKE32bd8a8cc...) created; the danglingrecipes/libs/pciaccess-stubsymlink removed.
Mesa recipe — complete (build verification pending):
recipes/libs/mesa/recipe.toml:template = "custom", callscookbook_apply_patchesforlocal/patches/mesa/, sets-Dplatforms=wayland,-Degl=enabled,-Dgbm=enabled,-Dgallium-drivers=swrast,virgl,iris,crocus, and adds-lwayland-client -lwayland-server -lwayland-egl -lwayland-drmto LDFLAGS. Depends on libdrm (with the 3 regenerated patches) + libwayland + wayland-protocols.
Documentation tree cleanup:
local/docs/trimmed from 45 files (+ 30 archived) to 18 canonical files matching the PLANNING NOTES section oflocal/AGENTS.md- 65 files deleted (stale assessments, superseded plans, empty stubs, the
entire
local/docs/archived/folder, the 4 historicaldocs/0*-*.mdfiles, andlocal/recipes/qt/qtbase/recipe.toml.bak) - 4 files restored from
archived/tolocal/docs/(canonical perlocal/AGENTS.mdPLANNING NOTES) - 22 unique broken cross-references fixed across 9 canonical docs
docs/README.mdfully rewritten as a clean canonical index;docs/AGENTS.mdreduced to the 3-doc canonical structure- Net: −31,315 lines
Next concrete step for v6.0-impl3:
repo cook mesa end-to-end. All recipe + patch work is done; the build
verification is the next invocation. The plan's Phase 3 (Mesa EGL Wayland) is
recipe-complete; the next milestone is the cook itself.
P1: Phase 1 Unblockers — ✅ DONE (5/5)
| Fix | Commit | Description |
|---|---|---|
| xhcid MSI-X | eb59807b |
Enable MSI-X interrupts, remove polling fallback |
| xhci event ring growth | (in c25c7e74 inputd commit + later) |
Implement real grow_event_ring() |
| PCI multi-bus | 270a27a3 |
Full MCFG parsing, recursive PCI-PCI bridge |
| ACPI GPE | fa204528 |
FADT GPE base parsing, SCI handler, AML method dispatch |
| ACPI Notify | da327cae |
Notify opcode in AML interpreter dispatches to device's _LNN/_ENN |
P2: Phase 2-3 Fixes — ✅ DONE (5/5)
| Fix | Commit | Description |
|---|---|---|
| intel-thc-hidd HID | 98d7ecb4 |
Real HID report thread replaces sleep loop |
| PS/2 sets 2/3 + Intellimouse2 | e34c6184 |
Adds scancode set 2/3, 4-byte mouse packets |
| usbscsid UAS | c131fb13 |
Replaces empty uas mod with real UasProtocol |
| NVMe multi-queue | 4b0db467 |
Per-CPU I/O queues with MSI-X |
| e1000d stats | 494b671c |
Read+clear cycle for GORC/GOTCL/etc. |
P3: Architectural Refactor — ✅ DONE (4/4)
| Fix | Commit | Description |
|---|---|---|
| redbear-hid-core | 7b82f4d (new crate) |
2664 LoC, 43 unit tests, descriptor parser, usage mapper, quirks |
| usbhidd wiring | e1f9b2a2 |
Wire usbhidd to use redbear-hid-core |
| i2c-hidd wiring | d7284b50 |
Wire i2c-hidd to use redbear-hid-core (preserves boot fallback) |
| intel-thc-hidd wiring | (no separate commit — was already done in P2) | HID decoding path already used redbear-hid-core |
P4: Driver Wiring — ✅ DONE (4/4)
| Fix | Commit | Description |
|---|---|---|
| usbhidd wire to runtime | f6b5d759 |
Wire descriptor parsing, set_protocol/get_protocol/set_report/get_idle |
| intel-thc-hidd wire | (already done) | decode path is called |
| i2c-hidd wire | (already done) | descriptor parsing and translation |
| usbscsid wire UAS | bebfe9ad |
UAS dispatch, protocol constants |
| nvmed wire | 78ad2539 |
per-queue submission, MSI-X, queue count selection |
| acpid wire | 720870d4, 9894ed7b |
EC burst, EC constants, thermal accessors, TOML loaders |
P5: Phase 1 Implementation Work — ✅ DONE
| Fix | Commit | Description |
|---|---|---|
| Move libxkbcommon + xkeyboard-config | (main repo commits) | Now in local/recipes/, in redbear-full.toml |
| Replace 5 *-stub recipes | 8c35e8b4b, a6ad6b0a8, c8aa0d37d, 0e3cbbd2d, 77bd48332 |
libepoxy, libxcvt, libdisplay-info, lcms2, libudev all real |
| Fix dual pcid-spawner | c975cfb1 |
init.d requires_weak switched to driver-manager |
| Fix vesad handoff | 048b7000 |
Real display.vesa → drm/card0 handoff |
| Fix pcid todo!() | 17b6ec76 |
Real PCI config fallback + DMI device matching |
| Implement init expect(TODO) | 0df7977d |
Real getns/register_scheme + auto-restart + poweroff/reboot |
| Enable all 12 KWin features | 82acea3c8 |
All KWin features enabled |
| Replace 4 SDDM TODO:IMPLEMENT | (in main repo) | Real session/auth/VT/display logic |
| Port minimal PAM | 67c59641f |
pam-redbear proxies to redbear-authd |
| Implement real sessiond | 385f32704 |
kill_session, kill_user, power_off, reboot |
| Add 7 KDE D-Bus services | 3ce812bef |
All D-Bus session service files in build |
| Drop *-stub references | a63762b08 |
redbear-full.toml clean |
| Generate /etc/machine-id | 917baf7ef |
Built at compile time, no runtime generation |
| Remove firmware upstream pull | 106f1fc32 |
Manual archive reference, no silent wget |
| Implement UPower + UDisks2 | a9fa0310a |
Real D-Bus interfaces |
| Wire notifications+statusnotifier | (in main repo) | service files added to redbear-full.toml |
| Replace wifictl StubBackend | a68b49569 |
Real iwlwifi/netstack backend |
| Add pipewire + wireplumber | 4c2402af7, 9dfe7ce03 |
recipes + D-Bus activation in config |
P6: GPU/Mesa/KDE Build Chain — assessment complete (8 chains identified)
The GPU/MESA/KDE assessment document is at (note: file write tool failed during one of the agent runs; the comprehensive content is preserved in the model context and was provided as an assistant message. The file may need to be re-written by a subsequent session using heredoc.)
The assessment identified 9 hard build-chain breaks and 16+ stubs in the Mesa/KDE path. Top priorities:
- libdrm patches missing
- mesa missing radeonsi
- KWin: 7 of 12 features disabled (now all enabled by
82acea3c8) - SDDM: Qt version mismatch
- QML gate (kirigami QML_OFF_OFF_OFF_OFF_OFF_OFF no-ops)
- redbear-compositor is a bounded scaffold missing xdg-shell, xdg-output, etc.
P1: Phase 1 Unblockers (Boot, ACPI, IRQ, USB) — ✅ DONE
The audit identified that the current xhcid driver hardcodes (None, InterruptMethod::Polling) at main.rs:181, xhci's event ring growth is a stub at irq_reactor.rs:535-538, pcid's MCFG parsing only handles the first host bridge at main.rs:299, and acpid lacks GPE and Notify handling. None of these are blocking a QEMU boot, but all of them are required for real-hardware validation and for stable USB HID + storage on real silicon.
Fix 1.1: xhcid MSI-X interrupts — ✅ DONE
- Commit:
eb59807b(xhcid: enable MSI-X interrupts; remove polling fallback) - Status: Implemented
get_int_method()and wired into the Xhci struct - Verification:
cargo check -p xhcidclean
Fix 1.2: xhci event ring growth — ✅ DONE
- Status: Real
grow_event_ring()implementation replaces the stub - Verification:
cargo check -p xhcidclean
Fix 1.3: PCI multi-bus enumeration — ✅ DONE
- Commit:
270a27a3(pcid: implement multi-bus PCI enumeration from MCFG) - Status: Full MCFG parsing, multi-bus enumeration, recursive PCI-PCI bridge discovery
- Verification:
cargo check -p pcidclean
Fix 1.4: ACPI GPE handling — ✅ DONE
- Commit:
fa204528(acpid: implement GPE handling (SCI dispatch + AML method invocation)) - Status: FADT GPE base parsing, SCI handler, AML method dispatch per GPE bit
- Verification:
cargo check -p acpidclean
Fix 1.5: ACPI Notify handling — ✅ DONE
- Commit:
da327cae(acpid: implement AML Notify handling for device-specific event dispatch) - Status: Notify opcode in AML interpreter dispatches to device's _LNN/_ENN method
- Verification:
cargo check -p acpidclean
P2: Phase 2-3 Fixes (Storage, Network, HID) — ✅ DONE
The audit identified 5 medium-priority fixes that unblock Phase 2 (DRM/KMS) and Phase 3 (KDE Plasma Wayland).
Fix 2.1: intel-thc-hidd HID report decoding — ✅ DONE
- Commit:
98d7ecb4(intel-thc-hidd: implement HID report decoding + evdev translation) - Status: Replaces
loop { sleep(5s) }with real HID report thread, parses descriptors, translates to evdev - Verification:
cargo check -p intel-thc-hiddclean
Fix 2.2: PS/2 scancode sets 2/3 + Intellimouse2 — ✅ DONE
- Commit:
e34c6184(ps2d: implement scancode sets 2/3 and Intellimouse2 protocol) - Status: Adds scancode set 2 and 3 mappers, extended keys, Intellimouse2 4-byte packet handling
- Verification:
cargo test -p ps2d --libreturns 9 passed (3 original + 6 new)
Fix 2.3: USB Attached SCSI (UAS) — ✅ DONE
- Commit:
c131fb13(usbscsid: implement USB Attached SCSI (UAS) protocol) - Status: Replaces empty
mod uas { // TODO }with real UasProtocol: 4-stream setup, IU send/receive, sense data - Verification:
cargo check -p usbscsidclean
Fix 2.4: NVMe multi-queue — ✅ DONE
- Commit:
4b0db467(nvmed: implement multi-queue I/O with MSI-X) - Status: Reads "Number of Queues" feature, allocates per-CPU I/O queues, MSI-X per queue, per-queue completion
- Verification:
cargo check -p nvmedclean
Fix 2.5: e1000d statistical counters — ✅ DONE
- Commit:
494b671c(e1000d: implement statistical counter clearing) - Status: Reads GORC/GOTCL/GOTCH/TOTL/TOTH/TPR/TPT/BPRC/MPRC with read-then-clear sequence
- Verification:
cargo check -p e1000dclean
P3: Architectural Refactor (HID Core Extraction) — ✅ CRATE DONE, DRIVER INTEGRATION QUEUED
The audit identified that the three HID drivers (usbhidd, i2c-hidd, intel-thc-hidd) all duplicate HID report parsing and usage-to-evdev mapping. A shared redbear-hid-core crate will replace this with a single canonical implementation.
Fix 3.1: redbear-hid-core crate — ✅ DONE
- New crate:
local/recipes/drivers/redbear-hid-core/ - Commit:
7b82f4d(redbear-hid-core: initial implementation) - Code: 2664 LoC across 8 source files
- Tests: 43 unit tests, all passing
- Modules:
descriptor.rs(428 LoC) — HID Report Descriptor parseritem.rs(328 LoC) — HID Item parser (Main/Global/Local)usage_table.rs(351 LoC) — usage page → evdev code mappingtranslate.rs(206 LoC) — HID Report → evdev eventsquirks.rs(978 LoC) — HID quirk tablereport.rs(126 LoC) — parsed HID Reporttest_fixtures.rs(225 LoC) — synthetic Report Descriptors for testslib.rs(22 LoC) — re-exports
- Usage pages covered:
- 0x01 Generic Desktop (Pointer, Mouse, Keyboard, X, Y, Wheel)
- 0x07 Keyboard/Keypad (all 0x00-0xE7 mapped to KEY_*)
- 0x09 Button (BTN_MOUSE / BTN_LEFT-RIGHT)
- 0x0C Consumer (Volume, Play/Pause)
- 0x0D Digitizer (Touchscreen, Touchpad)
- 0x01 Game Controller (X, Y, Z, Rx, Ry, Rz, Hat Switch)
- Quirks supported: Invert, Notouch, MultiInput, SkipOutput, NoEmpty
Fix 3.2: usbhidd → redbear-hid-core — QUEUED
- Target:
local/sources/base/drivers/input/usbhidd/ - Work:
- Replace hardcoded KEY_* array with dynamic Report Descriptor parsing via redbear-hid-core
- Wire usage → evdev translation through the new crate
Fix 3.3: i2c-hidd → redbear-hid-core — QUEUED
- Target:
local/sources/base/drivers/input/i2c-hidd/ - Work:
- Replace boot-protocol-only code with full Report Protocol parsing
- Wire usage → evdev translation through the new crate
Fix 3.4: intel-thc-hidd → redbear-hid-core — QUEUED
- Target:
local/sources/base/drivers/input/intel-thc-hidd/ - Work:
- Wire HID report decoding through the new crate
- (Depends on Fix 2.1 which is DONE)
P4: Network Driver Hardening
The audit identified gaps in MSI-X support, PHY handling, and modern virtio-net features.
Fix 4.1: ixgbed MSI-X
- Target:
local/sources/base/drivers/net/ixgbed/ - Work:
- Enable MSI-X for the queue pairs
- Set up per-queue interrupts
Fix 4.2: RTL8168 PHY
- Target:
local/sources/base/drivers/net/rtl8168d/ - Work:
- PHY link state detection
- Auto-negotiation
- Speed/duplex configuration
Fix 4.3: virtio-net control queue
- Target:
local/sources/base/drivers/net/virtio-netd/ - Work:
- Use the control virtqueue for MAC address setting
- Implement the modern virtio-net 1.1 control queue
Fix 4.4: RTL8139 PHY
- Target:
local/sources/base/drivers/net/rtl8139d/ - Work:
- PHY link state detection
- Auto-negotiation
P5: ACPI Completeness
The audit identified missing ACPI features: Embedded Controller, Thermal, Battery, Wake.
Fix 5.1: ACPI Embedded Controller
- Target:
local/sources/base/drivers/acpid/ec.rs - Work:
- EC transactions (read/write/query)
- EC interrupts (SCI on EC events)
- Used by many laptops for fan control, hotkeys, etc.
Fix 5.2: ACPI Thermal
- Target:
local/sources/base/drivers/acpid/ - Work:
- Parse _TZ (thermal zone) objects
- Read _TMP, _TC1, _TC2, _TSP, _PSV, _CRT
- Notify on critical temperature
Fix 5.3: ACPI Battery
- Target:
local/sources/base/drivers/acpid/ - Work:
- Parse battery device (PNP0C0A)
- Read _BST (Battery Status) and _BIF (Battery Information)
- Notify on status change
Fix 5.4: ACPI Wake
- Target:
local/sources/base/drivers/acpid/ - Work:
- Parse _PRW (Power Resources for Wake)
- Implement S1, S3 (suspend to RAM) transitions
- Resume from S3 on wake event
P6: Storage Driver Hardening (not started)
Fix 6.1: AHCI NCQ
- Target:
local/sources/base/drivers/storage/ahcid/ - Work:
- Native Command Queuing for SATA SSDs
- Read LOG_PAGE_LOG_DIRECTORY for drive capabilities
Fix 6.2: NVMe TRIM/DISCARD
- Target:
local/sources/base/drivers/storage/nvmed/ - Work:
- Implement Dataset Management command for SSD TRIM
P7: Audio Driver Hardening (not started)
Fix 7.1: AC'97 full duplex
- Target:
local/sources/base/drivers/audio/ac97d/ - Work:
- PCM capture (record) in addition to playback
- Mixer controls
Fix 7.2: Intel HDA codec
- Target:
local/sources/base/drivers/audio/ihdad/ - Work:
- Full codec initialization
- HDMI/DP audio support
- Multiple streams per codec
P8: Graphics Driver Hardening (not started)
Fix 8.1: Intel iHD real implementation
- Target:
local/sources/base/drivers/graphics/ihdgd/ - Work:
- Use linux-kpi for full i915 compat
- Real connector enumeration
- Atomic modeset
- GPU command submission
Fix 8.2: virtio-gpu virgl
- Target:
local/sources/base/drivers/graphics/virtio-gpud/ - Work:
- 3D resource creation via virgl
- Mature 3D support for QEMU
Risk Assessment
What's the impact of shipping as-is?
- QEMU works (poll-mode USB, single-queue NVMe, no multi-touch)
- Real hardware has degraded USB, no touchpad (intel-thc-hidd stub), no power button, no lid switch, no thermal protection
What's the minimum to ship Red Bear OS 0.3.0?
- P1: xhcid MSI-X, xhci event ring growth, PCI multi-bus
- P2: intel-thc-hidd HID, PS/2 set 2/3, NVMe multi-queue
- P3: redbear-hid-core
What's the minimum to ship Red Bear OS 0.4.0 (KDE Plasma Wayland)?
- All of P1, P2, P3
- P4: ixgbed MSI-X, RTL8168 PHY
- P5: ACPI thermal (for laptop safety)
What's the minimum to ship Red Bear OS 0.5.0 (real-hardware KDE)?
- All of P1, P2, P3, P4
- P5: full ACPI completeness
- P6: AHCI NCQ, NVMe TRIM
Verification Strategy
For each fix:
cargo check -p <package>returns 0 errors- (If applicable)
cargo test -p <package>returns all tests passed - (If applicable) QEMU bare-metal boot
- (If applicable) Real-hardware smoke test
Cross-cutting:
cargo check --workspaceclean across all oflocal/sources/base/cargo check --workspaceclean across all oflocal/recipes/- All four audit documents are updated to mark the fixed items
Open Questions
- MSI-X vector cap: should we cap at 32, 64, or 128? Modern xHCI supports up to 1024 vectors.
- Event ring max size: 4096 TRBs? 8192? More?
- NVMe queue count: cap at 64, 128, or 256?
- redbear-hid-core license: MIT, Apache-2.0, or dual-licensed? Project preference is MIT.
- HID quirks table: how many quirks to include initially? 50? 100? 500?
- ps2d set 3 priority: is it actually used by any current hardware?
Document version: v6.0-impl3, 2026-06-10. Mesa, libdrm, PipeWire, WirePlumber Red Bear source forks were migrated to external patches (Rule 2) in June 2026; see local/AGENTS.md for the current policy. v6.0-impl2 updates: the 5 libdrm patches (generated against the deleted fork) were regenerated as 3 byte-equivalent patches against fresh upstream libdrm 2.4.125; the pkgconf typo in local/recipes/libs/libdrm/recipe.toml was fixed; the recipe's broken [source].script no-op was moved to [build].script with template = "custom" so cookbook_apply_patches actually runs. Wayland re-enabling: 4 KF6 packages flipped to WITH_WAYLAND=ON, libxkbcommon flipped to -Denable-wayland=true, kded6 wrapper replaced with Environment=QT_QPA_PLATFORM=offscreen in the systemd service file. Doc tree trimmed from 75 files to 18 canonical in local/docs/. redbear-compositor extended with zwp_linux_explicit_synchronization_v1 (Phase 3.4, no-tearing) and wp_presentation (Phase 3.3, vblank timing) — 3 files (+349/-10), 2 new integration tests pass. v6.0-impl3 update: attempted repo cook mesa end-to-end. Found and fixed 2 recipe rev mismatches (ninja-build, sddm). Discovered that the relibc-install cross-compile toolchain prefix is stale (pre-dates the utimensat commit) and that the relibc P3-.patch carriers in recipes/core/relibc/ are broken symlinks to a deleted local/patches/relibc/ directory. Per the user's "relibc is our internal project. We work on it directly without patches" policy, added getloadavg directly to the relibc source as a Rule 1 in-tree fork (not a patch), deleted the 33 broken P3-.patch symlinks, and refreshed the relibc-install prefix with the fresh libc. Mesa build now blocked by libpciaccess 0.19 which has no Redox backend (upstream #error "Unsupported OS").
v6.0-impl12 update (2026-06-11): Mesa 24.0 BUILT successfully on x86_64-unknown-redox. The mesa.pkgar artifact (169 MB) is in repo/x86_64-unknown-redox/ with libEGL.so.1.0.0, libgbm.so.1.0.0, libGLESv2.so.2.0.0, libGLESv1_CM.so.1.1.0, libOSMesa.so.8.0.0 all present. This is the gate the entire desktop path has been waiting for. Three mesa patches added in local/patches/mesa/:
04-sys-ioccom-stub-header.patch— provides a minimal Linux UAPIsys/ioccom.hin mesa's include tree (relibc doesn't ship one; the macros are pure compile-time encodings; runtime dispatch goes through libdrm'sdrmIoctlshim →scheme:drm/).05-vk-sync-wchar-include.patch— adds<wchar.h>tosrc/vulkan/runtime/vk_sync.hso thewchar_tin win32 sync function pointer types resolves. relibc's<vulkan/vulkan_core.h>chain doesn't transitively pull<wchar.h>like glibc does.
Mesa recipe fix in recipes/libs/mesa/recipe.toml: dropped the stale -lwayland-drm from LDFLAGS. Per upstream libwayland 1.24, the standalone libwayland-drm.so was removed from the project in 2018 and merged into Mesa as a bundled static libwayland_drm library (see src/egl/wayland/wayland-drm/meson.build lines 23-50 and src/egl/meson.build:132 link_for_egl += libwayland_drm). The -lwayland-drm was a stale flag from a non-Redox mesa recipe.
libwayland recipe change in local/recipes/wayland/libwayland/recipe.toml: the recipe uses -Dscanner=false (necessary because the Redox-target scanner binary has /lib/ld64.so.1 as its ELF interpreter and can't be exec'd on the build host), which means libwayland doesn't install wayland-scanner.pc. Mesa's meson.build:1995 does dependency('wayland-scanner', native: true) and needs a host-runnable path. The recipe now stages a wayland-scanner.pc that points to /usr/bin/wayland-scanner (the host binary), plus a symlink in usr/bin/wayland-scanner so the cookbook auto-extract populates mesa's sysroot.
Cumulative across v6.0-impl5/6/7/8/9/10/11/12:
- 9 cookbook + recipe files changed
- 2 vendored gnu-config files
- 8 durable build artifacts now in repo:
pkg-config,libdrm,libgmp,gcc13(131 MB) +gcc13.cxx(42 MB),libpciaccess,wayland-protocols, andmesa(169 MB) - 2 new mesa external patches (Rule 2) for sys/ioccom and wchar_t
- 1 in-tree fork source committed (libpciaccess, Rule 1)
- All changes staged, none committed (per "do not commit" instruction)
Phase 3 of the v6.0 console-to-KDE plan is COMPLETE (recipe + build verification). The desktop path can now proceed to the Qt6 → KF6 → KWin → SDDM chain.