Append §17 documenting the implementation round that closed the blocking
and high-severity items flagged by the round-2 5-lane review (§16).
Version bumped from 4.1 to 4.2.
§17 R1 — StatusNotifierWatcher: fix bus name wire-mismatch (BUS_NAME +
#[interface(name)] now org.kde), canonicalize item keys as
<sender><path> to fix multi-client collision, narrow purge to vanished
unique names, emit unregister signals on purge.
§17 R2 — sessiond: add per-FD POLLHUP monitoring to reap inhibitors
when the returned FD closes (logind contract compliance). The §16
G8 claim that reaping was missing was factually wrong (the sender
reaping was already in place); the gap was actually FD-close detection.
§17 R3 — notifications: full lifecycle — bounded at 1024 with FIFO
eviction, replaces_id semantics (update existing record), expiry-timeout
sweep emitting NotificationClosed(EXPIRED), sender-loss purge via
DBusProxy::name_has_owner, InvokeAction cleanup removing the record.
§17 R4 — wifictl: add AccessPointInterface and serve it at every
returned path via serve_at(). ActiveAccessPoint now returns the
actual matched index instead of always 0.
§17 R5 — Mesa: fix three batch pool follow-on defects — format=0
→ 0-byte BO allocation (redox_drm_bo.c handles PIPE_BUFFER +
NONE format specially), unchecked mtx_init failure (winsys now returns
false on init failure + initialized flag), oversized batch size
truncation (rejects byte_count > UINT32_MAX).
§17 R6 — doc corrections: §16 G1 honesty flag (bus name NOW changed),
§16 §3.3 note (daemon IS wired into redbear-full.toml:233), §16 G8/G9/G14
(inhibitor reaping WAS applied — G2 above is the actual FD-close gap).
§17 R7 — remaining gaps documented: dbus_nm backend wiring (deferred
to NM round), NM StateChanged signal, partial write_all error propagation,
hardcoded root password (operator decision out of scope), no canonical
build-redbear.sh redbear-full run yet.
All 6 implementation commits already pushed to origin/0.3.1:
1ffc9299be — mesa batch pool follow-ons
5fdfa4384c — sessiond FD-close inhibitor removal
25cb25c373 — statusnotifierwatcher bus name + identity + lifecycle
cd429e8c74 — wifictl dbus_nm AP interface + active index
4d00f7ad09 — notifications full lifecycle
+ this §17 doc commit.
Adds 5.10.4 Round-6 summary section to DRIVER-MANAGER.md covering
N20-E1 (error_channel OOM cap), N20-E2 (6-variant decode), N20-A4
(aer BDF validation), N20-S6 (heartbeat log failures), and N22 (stale
doc removal). Updates last-updated header and test count (164->166).
Removes three orphaned docs that had zero references in the repo
and were last-modified Jul 10-14 vs every other doc Jul 26-27:
BLUETOOTH-IMPLEMENTATION-PLAN.md, CUB-PACKAGE-MANAGER.md, and
USB-VALIDATION-RUNBOOK.md. Backup tarball at
/tmp/opencode/stale-doc-backup-2026-07-27-round18.tar.gz; audit trail
in SUPERSEDED-DOC-LOG.md Round-18 entry.
E1: bound incoming payload length to 64 KiB at both vec![0u8; len]
sites (request_recovery + test daemon) so a buggy or malicious
child cannot trigger OOM by sending len=0xFFFFFFFF.
E2: decode all 6 RecoveryAction discriminants in
DriverErrorResponse::decode (previously 4/5 silently dropped to None).
Extend encode_decode_response_round_trip to cover CanRecover and
Recovered.
libredox: pulls in d6b223d (revert O_CLOEXEC to literal in protocol
module — fixes standalone build). Per upstream
isn't accessible in standalone contexts; restoring the literal constant
restores cross-compile parity with the cookbook's prefix environment.
The relibc fork already imports etc. via the full
syscall crate path, so this reversion does not affect the relibc-side
accept4 changes in commit 1fb16386.
local/docs/evidence/round-17-network-stack-tier-a-b.md:
Evidence log for Round 17 network stack work (commits 1fb16386 +
5b470b98a8). Records:
- 10-file relibc fork diff (+1117/-160)
- doc updates that landed concurrently in aa12991053
- pre-existing P0 defects confirmed resolved in prior sessions
- pre-existing errors and stale files left as-is per session contract
- verification status (cargo check passes modulo ld_so errors)
Round 17 audit cleanup. Two main fixes plus one incidental update:
1. local/recipes/system/iommu/source/src/lib.rs — removed the entire
host_redox_stubs module (341 lines, lines 815-1155). The module
was guarded by #[cfg(not(target_os = 'redox'))] so it never compiled
for Redox targets, but it ALSO failed to compile for host (Linux)
builds because it used a 'libc' crate that isn't in iommu's
Cargo.toml dependencies — 41 compile errors. Verified by:
cargo check --target x86_64-unknown-linux-gnu
before the deletion: 41 errors (all in host_redox_stubs).
after the deletion: clean build, Finished 'dev' profile in 0.21s.
The 21 redox_open_v1/redox_dup_v1/redox_kill_v1/etc. extern 'C'
functions were supposed to provide host-side link table entries
for the upstream-crates-io 'redox-scheme' crate. But:
- iommu depends on the LOCAL redox-scheme fork
(path = '../../../../../local/sources/redox-scheme')
- the local fork doesn't call any of these symbols
- even the upstream-crates-io version doesn't call most of them
So the stubs were dead code that also happened to be broken.
Removal cleans up 341 lines + makes the package host-buildable.
2. local/recipes/gpu/redox-drm/source/src/kms/{plane,crtc,connector}.rs —
added module-level //! docstrings documenting that these modules
are software-state models, not GPU-register-programming. Per the
Round 16 audit, the gap between software-model validation and
actual hardware programming lives in the per-driver backend
(FakeDriver/IntelDriver/AmdDriver). Without these docstrings,
a future maintainer might add hardware programming here and
duplicate the driver-backend responsibilities.
3. local/docs/NETWORKING-AND-DRIVERS-SYSTEMATIC-ASSESSMENT-2026-07-27.md
— incidental update (the operator's parallel work).
Completes the round-2 docs cleanup sweep by repairing the same
stale-reference pattern in files I missed in the prior commit.
Same pattern as 5970dd226f: each replacement points at the
current canonical doc (restored to top-level, absorbed into a
different plan, or now tracked in SUPERSEDED-DOC-LOG.md for
historical reference).
- AGENTS.md: legacy-obsolete/BUILD-SYSTEM-HARDENING-PLAN.md
-> COLLISION-DETECTION-STATUS.md
legacy-obsolete/HOOKS.md -> RELEASE-BUMP-WORKFLOW.md § Git Hooks
legacy-obsolete/PATCH-PRESERVATION-AUDIT -> SUPERSEDED-DOC-LOG.md
- CONTRIBUTING.md: same legacy-obsolete repairs
- README.md: same legacy-obsolete repairs
- docs/01-REDOX-ARCHITECTURE.md:
WAYLAND-IMPLEMENTATION-PLAN.md -> 3D-DESKTOP-COMPREHENSIVE-PLAN.md
- docs/07-RED-BEAR-OS-IMPLEMENTATION-PLAN.md:
legacy-obsolete/IRQ -> top-level IRQ plan;
legacy-obsolete/05-KDE-PLASMA -> struck-through with deletion note;
WAYLAND-IMPLEMENTATION-PLAN.md -> 3D-DESKTOP-COMPREHENSIVE-PLAN.md
- docs/AGENTS.md: same legacy-obsolete repairs; 05-KDE marked as
deleted; legacy-obsolete/DRM-MODERNIZATION -> 3D-DESKTOP-COMPREHENSIVE
- docs/README.md: same legacy-obsolete repairs
- local/AGENTS.md: same legacy-obsolete repairs
- local/docs/SUPERSEDED-DOC-LOG.md: alignment with the
2026-07-27 consolidation entry
- recipes/wip/AGENTS.md: legacy-obsolete/05-KDE-PLASMA repoint
The deltas are documented verbatim in each diff; nothing was
rephrased, only the link target was corrected.
Several docs still referenced files in local/docs/legacy-obsolete-
2026-07-25/ after that directory's 2026-07-27 cleanup deleted most of
its contents. The directory now only contains SUPERSEDED.md; all
other legacy-obsolete entries were fully removed. The doc cleanup
phase of the round-2 D-Bus audit identified each broken reference and
fixed it by pointing at the current canonical location.
Repairs:
- ACPI-IMPROVEMENT-PLAN.md, BUILD-SYSTEM-INVARIANTS.md,
INIT-NAMESPACE-MANAGER-SCALABILITY-PLAN.md,
NETWORKING-IMPROVEMENT-PLAN.md, USB-IMPLEMENTATION-PLAN.md:
legacy-obsolete-2026-07-25/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md
-> IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md
(restored to top-level local/docs/).
- CONSOLE-TO-KDE-DESKTOP-PLAN.md:
legacy-obsolete/BUILD-SYSTEM-HARDENING-PLAN.md
-> COLLISION-DETECTION-STATUS.md
- TOOLS.md, RELEASE-BUMP-WORKFLOW.md:
legacy-obsolete/HOOKS.md
-> RELEASE-BUMP-WORKFLOW.md § 'Git Hooks' (content merged).
- patches/README.md, RATATUI-APP-PATTERNS.md:
removed dangling refs to legacy-obsolete/PATCH-PRESERVATION-AUDIT
and redbear-power-improvement-plan (both deleted with no successor
doc; the related guidance lives in the canonical plans).
Each replacement preserves the link's intent: every old reference was
pointing to a doc whose content has either been restored to top-level,
absorbed into a different canonical doc, or replaced by a plan
reference that covers the same surface.
Bump to v4.1 and add §16 documenting the round-2 fixes verified during
the doc-cleanup phase. Each finding cites exact paths and distinguishes
working-tree present from runtime-proven, following the §15 evidence
discipline.
G1. StatusNotifierWatcher — sender validation, owner-keyed registry,
lifecycle purging, bounded entries (APPLIED, 22 tests)
Honesty flag: the const BUS_NAME remains
"org.freedesktop.StatusNotifierWatcher" — only the recipe.toml
comment was updated to reference org.kde. The actual well-known
name change was NOT applied.
G2. redbear-notifications — sender-validated InvokeAction
NotificationRecord stores { owner, action_keys }. InvokeAction
returns fdo::Result<()> with three-condition validate_invoke
(id known, caller == owner, action_key declared).
G3. redbear-wifictl — NmState enum 0..70 + OwnedObjectPath types
New NmState enum covers Unknown..ConnectedGlobal. Root state()
maps NmDeviceState via from_device_state(). All NM interface
methods now return OwnedObjectPath via try_path() helper.
G4. redbear-sessiond — host-safe Can* test
can_methods_return_na now detects host vs Redox target via
kstop_writable() and asserts the correct expected value. No
behavioral change in the production path.
G5. redbear-statusnotifierwatcher — comprehensive sender tracking
and purge-on-disconnect (covered in G1 detail).
Also corrects two stale inline entries:
- §5.1 service-name table now notes 22 tests (vs prior 12)
- §3.1 redbear-statusnotifierwatcher entry expanded with round-2
scope per the G1 changes.
Verified against committed HEAD (1dc5b0dcb0): 22 statusnotifierwatcher
tests pass; 16 notifications tests pass; 35 wifictl tests pass;
52 sessiond tests pass.
Round 16 audit follow-up. Three small fixes:
1. local/recipes/system/redbear-authd/source/src/main.rs:328 — the
validation-mode spawn-reaper thread did 'let _ = child.wait();'
silently dropping the session child's exit status. Replaced with
'match' that eprintln-logs both successful exit status and wait
failure (with errno). Operators can now see when the session
child exits abnormally in validation mode.
2. local/recipes/system/redbear-dnsd/source/src/main.rs:111 — the
loopback DNS responder did 'let _ = socket.send_to(&reply, &src);'
silently. Replaced with 'if let Err(e) = socket.send_to(...)' that
eprintln-logs the failure with the source peer address. Previously
DNS clients could fail to receive a valid reply with no visible
error.
3. local/docs/SUPERSEDED-DOC-LOG.md — appended Round 16 entries
documenting the authd/dnsd fixes plus the Round-16 audit findings
that did not require code changes (acpi-rs AML 41 panics classified
as internal-invariant, pcid panics already have messages, all stale
CONFIG refs already retired, USB-daemon let _ = is in host-only test
paths, sessiond can_* for sleep is honest stub, Mesa CS ioctl
numbers verified no drift).
3 files changed, +27/-2.
Round 16 audit follow-up. Two small but useful additions:
1. local/docs/SUPERSEDED-DOC-LOG.md — appended R15 entries:
greeter/netctl/hotplugd let-underscore-to-logged (5682072e58),
acmd setrens security fix (883e8147ec), README null+8 contradiction
reconciliation, and the redbear-live.iso stale-reference fix.
2. local/recipes/system/redbear-sessiond/source/src/manager.rs —
the can_hibernate / can_hybrid_sleep / can_suspend_then_hibernate
/ can_sleep functions all return hardcoded 'na'. Documented the
integration plan in a block comment above them: when the
/scheme/sys/sleep and /scheme/sys/hybrid_sleep schemes exist
in the Redox kernel, replace these with fs::metadata() probes
matching the kstop_writable() pattern used by
can_power_off/can_reboot/can_suspend. No code change yet —
just the docstring pointing the next maintainer at the pattern.
Without this comment, a future maintainer reading the four
hardcoded 'na' returns would not know about the kstop_writable
probe pattern that enables the matching sleep capabilities.
2 files changed, +32/-5.
Updates the canonical current-state doc to reflect the Round-5
deliverables:
- "Last updated" header bumped to
"F1-F6d fixes + Round-5 N17+N18".
- § 5.10.3 Round-5 summary section added (cross-references
the new code-audit doc).
- § 6.5 per-fix summary table extended with the 4 N18 driver-
manager bug fixes (Q1, Q2+Bug4, S3, Bug5) and a row pointing
to the new `DRIVER-MANAGER-CODE-AUDIT-2026-07-27.md` for
the full audit context.
- § 7.1 References updated to list the new code-audit doc as
the primary Round-5 internal reference.
Consolidates 4 prior code-level review agents for the
driver-manager subsystem: 2 CRITICAL (reaper-clone, every-exit-
as-crash), 3 HIGH (scheme 100 ms block, reap_pid error_channel
fd leak, watchdog-exit-on-panic), ~10 MEDIUM, ~11 LOW with
file:line refs and planned-fix table. Companion to
DRIVER-MANAGER.md; no source or recipe changes.
Round 14 audit cleanup. Six coordinated fixes across seven files
plus a documentation log update:
1. local/recipes/system/redbear-wayland-guard/ — REMOVED entirely.
The directory contained only source/wayland_guard.c — an LD_PRELOAD
interposer stub for three wl_proxy_* functions — with NO recipe.toml.
This violated local/AGENTS.md STUB AND WORKAROUND POLICY ('No LD_PRELOAD
tricks'). The correct null-guard fix lives in libwayland upstream per
QT6-WAYLAND-NULL8-DIAGNOSIS.md (already covered by Mesa win compat).
2. recipes/system/redbear-wayland-guard — broken symlink cleaned up.
3. local/recipes/AGENTS.md — catalog entry for redbear-wayland-guard was
wrong (claimed 'Rust' but the code was C LD_PRELOAD). Replaced with
REMOVED note explaining the policy violation and the correct fix
location in libwayland.
4. local/recipes/system/firmware-loader/source/src/main.rs — converted
9 .expect() calls in the daemon init path (Socket::create, scheme_root,
create_this_scheme_fd, syscall::call_wo notify, setrens, next_request,
write_response) to Result propagation. get_init_notify_fd() and
notify_scheme_ready() now return Result; run_daemon() returns Result and
main() matches on Err to log+exit(1) cleanly. The daemon was
crashing the entire firmware-delivery subsystem on any init failure;
now init can fall back or restart the daemon.
5. local/recipes/system/{redbear-keymapd,redbear-ime,redbear-accessibility}/
source/src/main.rs — three scheme daemons used the same
Socket::create().expect() + register_sync_scheme().expect() pattern.
Replaced all six .expect() calls with match expressions that
log_msg('ERROR', ...) and process::exit(1). Same pattern.
6. local/docs/NETWORKING-AND-DRIVERS-SYSTEMATIC-ASSESSMENT-2026-07-27.md —
struck through 5 references to the now-removed redbear-wayland-guard
(line 65 missing-daemons list, line 344 table row, line 397
implementation list, line 414 source-list, line 797 P3-8 backlog).
7. local/docs/SUPERSEDED-DOC-LOG.md — appended a 'Rounds 11-14 Source-Level
Supersessions' table logging every lie-grade fix and stale-doc
strike from this session. Mirrors the original deletion-log style for
consistency, and gives operators a single place to see what was
resolved and where. Documents the emerging pattern: lie-grade code in
Red Bear concentrates in (a) relibc panic-site catch-alls (addressed
rounds 9-10), (b) scheme daemon init paths using .expect() instead of
Result (rounds 11-14), (c) Mesa DRM/Wayland stubbing (rounds 12;
remaining work tracked in 3D-DESKTOP-COMPREHENSIVE-PLAN.md).
Not committed in this commit (operator's parallel work, to be
committed by them):
- driver-manager/* (N-tier edits)
- redbear-sessiond/manager.rs (can_* probe refinements)
- redbear-statusnotifierwatcher/* (recipe + source)
- redbear-dbus-services/* (dbus service cleanup)
- redox-driver-core/manager.rs (test-only)
- Mesa redox_drm_cs.c (CS submit fix)
7 files changed in this commit + 2 deletions.
The Round 11 commit (a9e1c34e27) fixed both findings 14/15 and
18/18b/19 in the assessment doc; the Round 11 fix and Round 12
follow-ups (this round) update the remaining stale references.
1. local/docs/3D-DESKTOP-COMPREHENSIVE-PLAN.md §10 config table
(lines 1159-1160): marked wifi-experimental.toml and
bluetooth-experimental.toml include-typo as ✅ FIXED 2026-07-27
(was still listed as open).
2. local/docs/NETWORKING-AND-DRIVERS-CODE-ASSESSMENT-2026-07-27.md:
struck through:
- Finding 15 (redbear-passwd missing [source])
- Critical-path P0-12/13/14 (include typo + [source] todo)
- The Critical Path Hierarchy bullet list items
- TODO priority list line 718 (redbear-passwd [source])
- Backlog line 923 (C-23)
Marked each with ✅ RESOLVED 2026-07-27 (commit a9e1c34e27).
These were the last unstruck-through references after the
Round 11 fix landed. The assessment doc is now consistent
with the post-fix state.
2 files changed, +14/-12.
§15.3 had a contradiction: the table at line 1065 listed items as
'Remaining' that were already marked DONE in §15.1 and in the
commit history. This was a documentation hazard - an operator
reading §15.3 would waste time chasing already-fixed bugs.
Update the CRITICAL row to reflect the actual current state:
- Added explicit notes on completed this-round refinements
(BufferPool v.resize completion, xHCI snapshot-before-clear,
IPv6 final-protocol+offset+AH-formula fixes, F002 RawFd,
F003 redundant cast, TCP call() override, getsockopt
todo_skip removal)
- Updated HIGH row similarly (TCP SendMsg, MSG_NOSIGNAL,
relibc option level collision now marked DONE)
§15.3 now accurately reflects the current state of the
implementation effort.
Round 12 audit cleanup. Five fixes across five files plus a
zero-tolerance stub policy win:
1. local/patches/mesa/04-sys-ioccom-stub-header.patch — DELETED.
The patch was a hand-rolled include/sys/ioccom.h with Linux IOC
bitfield constants, living as a Mesa-side stub. Per local/AGENTS.md
zero-tolerance policy: 'Any stub found in the tree is a bug to
be fixed, not a precedent to follow.' relibc's new
include/sys/ioccom.h (commit ca7a7edb on submodule/relibc,
bumped in f145e9e768) provides the same constants natively,
making the patch redundant.
2. local/recipes/libs/mesa/recipe.toml — removed the now-dead
'04-sys-ioccom-stub-header.patch' entry from the patches list.
Note added explaining the removal so a future maintainer does
not re-add it.
3. local/recipes/system/udev-shim/source/src/naming.rs —
predictable_net_name() used to return the hardcoded 'eth0' on
parse failure of the PCI address. On multi-interface systems
where multiple devices had unparseable PCI addresses, all
collided on 'eth0'. Now returns 'net-malformed-<sanitized>'
(unique per PCI string) so each device gets a distinct name.
4. local/sources/base/netstack/src/scheme/netcfg/mod.rs — the
'summary' branch hardcoded devices.borrow().get("eth0") which
made the summary output invisible to non-eth0 interfaces.
Now iterates the full devices map and prints each interface's
state. (The deeper 'ifaces' routing tree still has 20+ eth0
references — restructuring that requires a schema change;
deferred to a follow-up that adds a configurable default iface.)
5. local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md + 3D-DESKTOP-COMPREHENSIVE-PLAN.md
— renamed 'redbear-kde-session' → 'redbear-session-launch' in the
final stale reference; clarified 'redbear-wayland.desktop' (not
yet wired).
Deferred: acpi-rs AML interpreter bare panic() (34 sites across
mod.rs) and netcfg ifaces routing tree (20+ eth0 references)
require schema-level refactors beyond one-shot fixes; tracked
for follow-up rounds.
N13 updates the policy.rs module docstring to reflect the four
current policy surfaces (blacklist + options + autoload + initfs-
manifest) and the active redbear-driver-policy state. Drops the
"before v1.4 the policy was dormant" stale reference.
N14 removes the remaining "previously marked as dormant" stale
comment in main.rs (now describes the four-count summary as
confirming the redbear-driver-policy package's curated config files
are wired). Simplifies the redbear-driver-policy README's
historical-dormant note to a single sentence about the cutover
date.
N15 — no stale doc removals needed: the 2026-07-27 doc
consolidation (recorded in SUPERSEDED-DOC-LOG.md) already
removed all known-stale docs. The 3D-DESKTOP-COMPREHENSIVE-PLAN
explicitly designates the two remaining NETWORKING assessment
files as operator-authored authoritative docs, so this round
does not delete them.
DRIVER-MANAGER.md adds § 5.10.3 Round-4 (N13–N15) summary.
164 driver-manager tests pass.
driver-manager-audit-no-stubs.py: 46 files, 0 violations.
Round 11 audit cleanup. Six fixes across six files:
1. local/recipes/system/redbear-passwd/recipe.toml — CRITICAL: was
missing the [source] block entirely. The recipe had only [package]
and [build] with template=cargo, which the cookbook cannot fetch.
Added [source] path = "source" so the cookbook locates the local
Rust crate. Also added a one-line description.
2. local/recipes/dev/libclc/recipe.toml — MEDIUM: the build script
installs via cmake but never verifies that libclc.pc (Mesa's
pkg-config dependency) and the .bc bitcode files actually landed.
Without these, Mesa's 3D driver cook fails opaquely with
'Dependency libclc not found (tried pkg-config)'. Added three
post-install test -f checks that fail the build with a precise
error pointing at the missing path.
3. local/recipes/system/redbear-sessiond/source/src/manager.rs — HIGH:
the D-Bus login1 can_power_off / can_reboot / can_suspend methods
were returning 'yes' unconditionally — the archetype lie-grade-ok
pattern (probe says success, then the real action fails because
/scheme/sys/kstop is missing). Replaced with a kstop_writable()
probe that fs::metadata()s the path. Used metadata() rather than
an actual write because writing 'shutdown'/'reset'/'s3' to
/scheme/sys/kstop would trigger the action. The actual power_off/
reboot/suspend methods still report granular errors when the
write is refused.
4. local/recipes/system/redbear-dnsd/source/src/transport.rs — MEDIUM:
UpstreamConfig::default() hardcoded 8.8.8.8 + 1.1.1.1 as fallback
upstream DNS. Hardcoding third-party DNS bypasses netcfg integration
and leaks user queries without consent on first boot. Replaced with
an empty Vec — main() reads the upstream list from netcfg before
any query is dispatched; upstream queries SERVFAIL until netcfg
populates the list (honest default).
5. local/docs/GREETER-LOGIN-IMPLEMENTATION-PLAN.md — MEDIUM: 16
references to the non-existent binary 'redbear-kde-session' (now
'redbear-session-launch'). Global s/redbear-kde-session/redbear-
session-launch/g. Also updated two 'redbear-kde' profile-name
references to reflect the 2026-07-24 retirement and the current
'redbear-full' ownership of the desktop path.
6. local/docs/DBUS-INTEGRATION-PLAN.md — LOW: 7 references to
'redbear-kde-session' renamed to 'redbear-session-launch' (same
binary rename).
6 files changed, +68/-28.
Note: Mesa 04-sys-ioccom-stub-header.patch migration to relibc proper
(sys/ioccom.h with Linux-style IOC encoding) is deferred — the
patch is a genuine gap-filler (relibc's sys/ioctl.h has the basic
macros but sys/ioccom.h is the BSD include path DRM UAPI expects).
That work belongs in the relibc fork with a prefix rebuild and
should be coordinated with the operator's prefix-staleness policy.
Round 10 audit cleanup. Six fixes across nine files:
1. config/redbear-netctl.toml: stale comment referenced three
non-existent configs (redbear-minimal, redbear-desktop,
redbear-kde). Replaced with accurate include-chain note.
2. scripts/run.sh, build.sh, scripts/fetch-all-sources.sh:
replaced all 'redbear-minimal' references with the actual
canonical config names (redbear-mini, redbear-grub,
redbear-wifi-experimental, redbear-bluetooth-experimental).
Three previously listed configs (redbear-kde, redbear-live,
redbear-wayland) never existed; removed them from the loop
that preflights/scans/fetches 'ALL_CONFIGS' so those broken
references no longer abort the script.
3. local/recipes/wayland/xwayland/recipe.toml:
- removed stale '#TODO wayland-client, fix linux/input,
wayland-scanner shim' (the workarounds are now real fixes).
- added redbear-input-headers to dependencies so the
uncommented <linux/input.h> include in xwayland-input.c
resolves via Red Bear's in-tree input-headers recipe
(per local/AGENTS.md LINUX KERNEL SOURCE POLICY).
4. local/recipes/wayland/xwayland/redox.patch:
- stripped diff -ruwN timestamps from all ---/+++ headers
(AGENTS.md patch format policy).
- dropped the three xwayland-glamor.h / xwayland-window.h/c
DRM-only hunks: they commented out xf86drm.h + drmDevice
fields, but the recipe's mesonflags already sets
'-Ddrm=false -Dglamor=false' so those code paths never
compile. Removing them eliminates dead commented-out code
that future maintainers would misread as 'in-progress'.
- replaced hardcoded 0x110/0x112/0x111 button constants
with the symbolic BTN_LEFT/BTN_MIDDLE/BTN_RIGHT names
(the include is now real), matching upstream style and
making the intent self-documenting.
5. local/recipes/libs/mesa/source/src/gallium/winsys/redox/drm/
redox_drm_surface.h: rewrote the stale header comment that
still claimed 'the actual present path is a no-op until
kernel-side scanout ioctls are added' — REDOX_SCANOUT_FLIP
is wired and working; the comment now describes the real
implementation.
6. local/docs/3D-DESKTOP-COMPREHENSIVE-PLAN.md: marked
redbear-wifi-experimental.toml and redbear-bluetooth-
experimental.toml as FIXED 2026-07-27 in the config
status table (the redbear-minimal → redbear-mini typo
was corrected earlier).
7. local/docs/NETWORKING-AND-DRIVERS-CODE-ASSESSMENT-2026-07-27.md:
struck through Findings 14, 18, 18b, C-21, C-22 and the
corresponding 'Config cleanup' todo — all resolved by
the rename to redbear-mini.toml.
9 files changed, +45/-115.
The 2026-07-27 Round 9 cleanup deleted 36 docs (3D-DRIVER-PLAN,
WAYLAND-IMPLEMENTATION-PLAN, DRM-MODERNIZATION-EXECUTION-PLAN,
REDBEAR-FULL-SDDM-BRINGUP, and the entire archived/ and
legacy-obsolete-2026-07-25/ contents) but several active docs still
cross-referenced those deleted files. This commit sweeps the surviving
docs and:
* Replaces every deleted-path reference with the live target:
WAYLAND-IMPLEMENTATION-PLAN.md -> 3D-DESKTOP-COMPREHENSIVE-PLAN.md
3D-DRIVER-PLAN.md -> 3D-DESKTOP-COMPREHENSIVE-PLAN.md
REDBEAR-FULL-SDDM-BRINGUP.md -> 3D-DESKTOP-COMPREHENSIVE-PLAN.md
legacy-obsolete-2026-07-25/DRM... -> 3D-DESKTOP-COMPREHENSIVE-PLAN.md
legacy-obsolete-2026-07-25/IRQ... -> IRQ-AND-LOWLEVEL-...-PLAN.md
archived/UPSTREAM-SYNC-PROCEDURE.md -> removed (sync procedure now in
BUILD-CACHE-PLAN.md +
sync-versions.sh)
archived/RELIBC-IPC-ASSESSMENT-... -> removed (work captured in
KERNEL-IPC-CREDENTIAL-PLAN.md)
archived/DRIVER-MANAGER-MIGRATION-PLAN -> removed (history in DRIVER-MANAGER.md
and git log)
archived/INTEL-HDA-IMPLEMENTATION-PLAN -> removed (track now in 3D-DESKTOP-
COMPREHENSIVE-PLAN.md § SOF/AVS)
* Rewrites pcid-spawner references to driver-manager in PACKAGE-BUILD-QUIRKS,
PATCH-GOVERNANCE, NETWORKING-IMPROVEMENT, LG-GRAM-16Z90TP, and the IRQ plan
status note. The retired pcid-spawner service no longer exists in any
redbear-* config as of the 2026-07-24 cutover.
* Rewrites CONSOLE-TO-KDE-DESKTOP-PLAN.md §9 plan table to point at the
post-Round-9 canonical doc map (3D-DESKTOP-COMPREHENSIVE-PLAN.md as the
single coherent 3D-render plan; IRQ plan at top-level). Drops the
misleading 'archived legacy-obsolete-2026-07-25/' status line and the
'work subsumed by Round 1-5' sentence that was explicitly rejected by
SUPERSEDED-DOC-LOG.
* Updates 3D-DESKTOP-COMPREHENSIVE-PLAN.md §10 to mark the REPLACE, RESTORE,
and DELETE pre-execution audit as completed 2026-07-27. Tables remain as
historical record of what was done, with a pointer to the backup tarballs
and SUPERSEDED.md log.
* Bumps 'Last updated' of CONSOLE-TO-KDE-DESKTOP-PLAN.md to v6.1.
13 files changed, +78/-65.
Round-3 closes three real operational gaps from Round-2 follow-ups:
- N9 — SIGHUP reloads all 4 policy surfaces (not just blacklist)
- N10 — initfs-manifest stage-aware probing (was a single pass)
- N11 — linux-kpi SAFETY comment cleanup (already done in
parallel by commits b295b80882 and a56cf84154; documented)
Updated:
- Last-updated banner
- § 5.10.2 Round-3 (N9–N11) summary section
- § 6.1 test inventory table (164 driver-manager tests, 200+ total)
The doc is now consistent with the current source state.
The first-round assessment (NETWORKING-AND-DRIVERS-SYSTEMATIC-
ASSESSMENT-2026-07-27.md) was never committed to the parent 0.3.1
branch. It captures the docs audit that preceded the code audit
(now at NETWORKING-AND-DRIVERS-CODE-ASSESSMENT-2026-07-27.md).
Both files live in the repo as the docs and code halves of the
audit series.
SUPERSEDED-DOC-LOG.md is the change-log file referenced from
local/docs/legacy-obsolete-2026-07-25/SUPERSEDED.md. Previously
untracked; this commit makes it visible to the doc audit trail.
libredox O_CLOEXEC now references syscall::flag::O_CLOEXEC instead
of duplicating the literal 0x0100_0000. Per Single Source of Truth
and the Local Fork Supremacy Policy: a primitive constant should be
defined once in the most-primitive crate that has it (syscall) and
re-exported by higher-level crates (libredox).
R002 fix: netstack/src/filter/conntrack.rs captured '(is_orig, entry_key)'
in an if/else, but the 'if let' arm early-returned, so is_orig was
always true. Reply-direction state machine was unreachable for
already-established flows. Flattened the conditional: reply-side
'if let' early-returns; fall-through uses original key directly.
The is_orig variable is gone; orig-side path calls
advance_entry_state with is_orig=true explicitly.
Three-touchpoint fix for the option level collision (option 4 reads
as TCP_KEEPIDLE at SOL_SOCKET vs IP_TOS at IPPROTO_IP):
1. relibc/src/platform/redox/socket.rs: setsockopt/getsockopt
wire format changed from [SocketCall, option] to
[SocketCall, level, option]. The stale 'TODO convert back to
match when we support more levels' comment removed.
2. base/netstack/src/scheme/socket.rs: SocketT::set_sock_opt and
get_sock_opt now take (level, name) separately. The scheme dispatch
reads metadata[1] as level and metadata[2] as option.
3. base/netstack/src/scheme/{tcp,udp}.rs: TCP and UDP SocketT impls
updated to the new (level, name) signature.
libredox API bug: Fd::ftruncate and Fd::futimens previously took 'self'
(consuming the Fd), which would trigger Fd::drop and close the fd as
a side effect. POSIX ftruncate/futimens do NOT close the fd. Changed
to '&self' to match the surrounding methods (fsync, fdatasync) and
match POSIX semantics.
HIGH DEF-P0-7: relibc MSG_NOSIGNAL now properly blocks SIGPIPE via
pthread_sigmask around the syscall, instead of stripping the flag.
sendmsg does the sigprocmask block; sendto forwards the original
flags to sendmsg (removing the previous 'flags & !MSG_NOSIGNAL'
workaround).
Also removed the stale 'TCP lacks SocketCall::SendMsg handling' TODO
- the netstack scheme handler at
local/sources/base/netstack/src/scheme/socket.rs:519-533 does handle
SocketCall::SendMsg for both SOCK_STREAM and SOCK_DGRAM.
The relibc commit (f7f27a91f3) accidentally included phantom deletions
of local/docs/networking-validation-log.md because the relibc
submodule's working tree had a stale reference to a file that
belonged only to the parent 0.3.1 branch. Restoring the file in
the parent.
The relibc commit itself only affects the relibc submodule pointer
in the parent. The MSG_NOSIGNAL fix lives in the relibc submodule
at its own branch (submodule/relibc), not in the parent 0.3.1
branch. The parent 0.3.1 only tracks the submodule pointer bump.
CRITICAL F003 fixed: netstack/src/scheme/mod.rs had 2 unsafe
File::from_raw_fd sites with redundant 'as RawFd' casts. The 'as
RawFd' cast was a no-op on platforms where RawFd = i32 but was
misleading (suggests a conversion). Removed the cast. Also replaced
generic boilerplate SAFETY comments with specific invariants.
CRITICAL progress: 13 of 13 original findings now addressed
(F001, F1.6, F1.1, F2, F3, DEF-P0-6, DEF-P0-7, F18/F18b, F20,
F21, F3.1, F22, P001).
CRITICAL F002: worker_pool from_raw_fd changed from 'raw: usize' to
'std::os::fd::RawFd' (c_int). A garbage 64-bit value can no longer
be cast to a valid i32 fd; the value can only have come from a
previously-validated fd (via IntoRawFd::into_raw_fd, libredox::Fd::raw,
or a similar source that went through the kernel's open-fd table).
CRITICAL progress: 12 of 13 original findings now addressed.
Remaining: F003 (scheme File ownership, 3 unsafe sites in
scheme/mod.rs around lines 183 and 195).
Adds two new rows to the Implementation Status table:
- CRITICAL F22: btintel ECDSA firmware length check — now uses
ECDSA_FULL_LEN = 964 (full header: CSS 128 + PKEY 96 + SIG 96 bytes
after the 644-byte header start). Was 645..963 byte blobs would
panic on the PKEY/SIG slices.
- P001 (firewalling): IPv6 ext header firewall bypass fix — added
ipv6_transport_offset() walker that properly walks the IPv6
extension header chain (Hop-by-Hop, Routing, Fragment, Destination,
AH) to find the actual transport-layer offset. Was using a fixed
40-byte offset, so any IPv6 packet with extension headers caused
parse_ports() to read wrong bytes and silently fail to match
firewall port rules (firewall bypass).
Both pushed to origin.
CRITICAL progress: 11 of 12 original findings now addressed
(F001, F1.6, F1.1, DEF-P0-6, DEF-P0-7, F18/F18b, F20, F21, F3.1,
F22, P001). Remaining: F002 worker_pool from_raw_fd + F003 scheme
File ownership (the two remaining F-series items in netstack/src/).
Closes the doc consolidation that was authorized in option A of the
prior turn but was undone (untracked files back on disk). Re-executes
the deletion + restore + stub updates in a single coherent commit.
Stale docs deleted (40 files, backup at
/tmp/opencode/stale-doc-backup-2026-07-27.tar.gz, 387925 bytes,
40 entries):
- local/docs/3D-DRIVER-PLAN.md (Rounds 1-7, replaced by
3D-DESKTOP-COMPREHENSIVE-PLAN.md)
- local/docs/REDBEAR-FULL-SDDM-BRINGUP.md (build campaign log, status
folded into the comprehensive plan)
- 11 docs under local/docs/legacy-obsolete-2026-07-25/ (5-KDE-PLASMA-ON-REDOX,
BUILD-SYSTEM-ASSESSMENT, BUILD-SYSTEM-HARDENING-PLAN,
DRM-MODERNIZATION-EXECUTION-PLAN, HOOKS, INITNSMGR-CONCURRENCY-DESIGN,
NETWORKING-STACK-STATE, PATCH-PRESERVATION-AUDIT-2026-07-12,
RAPL-IMPLEMENTATION-PLAN, redbear-power-improvement-plan,
WAYLAND-IMPLEMENTATION-PLAN)
- 15 docs under local/docs/archived/ (ACPI-I2C-HID, BUILD-SYSTEM-IMPROVEMENTS,
DRIVER-MANAGER-MIGRATION-PLAN, IMPLEMENTATION-MASTER-PLAN,
IMPROVEMENT-PLAN, INTEL-HDA, KERNEL-SCHEDULER-MULTITHREAD,
README (replaced with stub), RELIBC-IPC-ASSESSMENT, repo-governance,
SLEEP-IMPLEMENTATION-PLAN, STUBS-FIX-PROGRESS,
SYSTEM-STABILITY-AND-UPSTREAM-SYNC, UPSTREAM-SYNC-PROCEDURE,
USB-BOOT-INPUT, USB-VALIDATION-RUNBOOK, XHCID-DEVICE-IMPROVEMENT)
- 6 docs under local/docs/boot-logs/ (cachyos-boot, README
(replaced with stub), REDBEAR-FULL-BOOT-EXTENDED,
REDBEAR-FULL-BOOT-POST-VIRTIO-BLKD, REDBEAR-FULL-BOOT-RESULTS,
REDBEAR-MINI-BOOT-PS2D-INPUTD-LOG-FIX)
- 2 docs under local/docs/evidence/driver-manager/ (ASSESSMENT,
D5-AUDIT, both pre-cutover, replaced by DRIVER-MANAGER.md)
- 1 doc under local/docs/fork-push-status/ (Round-9-phase-8.3, point-in-time)
- 1 doc under local/docs/legacy-recipe-patches/ (README,
navigation aid for moved symlinks, redundant after consolidation)
Stale-content redirection:
- The IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN was already
restored to top-level by a previous commit (it self-declares active
authority per its own §0).
- The 2 '3D driver plan' / 'SDDM bring-up' docs are folded into
3D-DESKTOP-COMPREHENSIVE-PLAN.md (the single source of truth for
3D-stack audit, blockers, and remediation per §0 of that file).
Stub updates:
- local/docs/legacy-obsolete-2026-07-25/SUPERSEDED.md: 18-line stub
pointing to SUPERSEDED-DOC-LOG.md, explaining the directory's role
and noting the IRQ plan restore.
- local/docs/archived/README.md: 18-line stub doing the same for
the archived/ directory.
Verification:
- tar -tzf /tmp/opencode/stale-doc-backup-2026-07-27.tar.gz | wc -l = 40
(all deleted files preserved; restoration is tar -xzf).
No operator work (driver-manager, libclc source tree, NETWORKING-AND-DRIVERS
assessments) was touched in this commit.
Round 1 of the 3D-Desktop-Implementation work. Closes audit §3.4 #1
(kirigami QtNetwork lie-grade stub) and the missing bin/ toolchain
wrappers that block any meson regen of mesa-style recipes.
kirigami Icon primitive network path
- local/patches/kirigami/02-qnetwork-real-implementation.patch: replaces
the upstream Kirigami's Icon::loadImageFromSource lie-grade
'qnam = nullptr /* Redox: networkAccessManager not available */' hardcode
with a real 'qnam = new QNetworkAccessManager(this)' allocation. The
parented QNetworkAccessManager is destroyed with the icon; the existing
handleFinished falls through to the placeholder icon when scheme:network
is unavailable, so the network path now actually works on Redox.
- local/recipes/kde/kirigami/recipe.toml: wired the patch into
[source].patches and added cookbook_apply_patches call. Removed the
-I${COOKBOOK_SOURCE}/stubs/QtNetwork CMAKE_CXX_FLAGS entry that
previously shadowed the real QtNetwork headers with the stub classes.
Stub directory removal
- local/recipes/kde/kirigami/source/stubs/QtNetwork/: 3 files deleted
(QNetworkAccessManager returning nullptr, minimal Q_OBJECT-having
QNetworkReply, forward-declared QNetworkRequest). The real QtNetwork
(built via Qt6::Network in qtbase) is now used.
- local/recipes/kde/sddm/stubs/: directory deleted entirely. The
stubs/linux/{kd.h,vt.h} subdir was orphaned (SDDM patches wrap their
use in #if !defined(__redox__) so the stubs were never compiled on
Redox). After the linux/ subdir removal the stubs/ dir was empty.
bin/ toolchain wrappers (required by the cookbook's [binaries] block at
src/cook/script.rs:340; without these, meson --internal regenerate fails
with 'x86_64-unknown-redox-gcc-ar: No such file or directory')
- bin/x86_64-unknown-redox-gcc-ar
- bin/x86_64-unknown-redox-gcc-ranlib
- bin/x86_64-unknown-redox-g++
- bin/x86_64-unknown-redox-cpp
All four are 5-line redbear-run-tool wrappers matching the pattern of
the pre-existing x86_64-unknown-redox-{gcc,c++}.
local/docs/3D-DESKTOP-COMPREHENSIVE-PLAN.md
- §8.1 Implementation progress log added, recording this commit (Round 1)
alongside the previously-committed Rounds 0-3 of the implementation
work (commits 0b19fddd2c, e6e4289113, 86a162c803). §8.1 also documents
the audit correction: the Mesa 'link never completed' is actually a
mesa-config failure due to libclc.pc missing, not a link error.
Recipe-level stub removal and bin/ toolchain wrappers address one
blocker; libclc cook run remains the next Mesa prerequisite.
Verified: PATH=.../bin:$PATH x86_64-unknown-redox-gcc-ar --version
returns 'GNU ar (GNU Binutils) 2.43.1' via redbear-run-tool.
No operator files (local/recipes/system/driver-manager/, the new
NETWORKING-AND-DRIVERS-*-ASSESSMENT-2026-07-27.md docs, the libclc
untracked source files) were touched in this commit.
Adds two new rows to the Implementation Status table:
- CRITICAL F1.1: xHCI re-entrancy — clear event TRB before state.finish()
at 4 call sites in irq_reactor.rs (CommandCompletion, Transfer,
dead-ring Transfer, Other, acknowledge_failed_transfer_trbs).
Submodule base 51ae1567, parent 4fc85b9be4.
- CRITICAL F3.1: libredox demux() — replace .expect() with
.unwrap_or(u16::MAX) to prevent panic on edge-case errno.
Submodule libredox bfb5f8b, parent 7aba4f84ed.
Both pushed to origin.
This round's additions to the Implementation Status:
- F22 (btintel ECDSA firmware length check) - locally committed, ready
- F21 (redbear-dnsd config wiring) - now wired into redbear-mini
- 3 ghost recipes (netd/audiodevd/usbd) - WIP per AGENTS.md policy
- local ssh recipe - Red Bear fork with IPv6 detect + host-key gen
Stale doc audit:
- 8 docs reference redbear-mini.toml, redbear-minimal.toml, or
networking-validation-log.md - all are current canonical plans
(per audit §11.6, Round 6 cleanups already complete; this round's
networking-validation-log.md is now real)
- No docs need removal
After operator feedback: editing mainline recipes/net/openssh/recipe.toml
directly is a policy violation (per AGENTS.md: 'DO NOT edit files under
mainline recipes/ directly — put patches in local/patches/').
This commit reverts that incorrect approach in the documentation and
correctly states the proper fix path:
1. Create local/recipes/net/openssh/ as a Red Bear fork recipe that
uses the same upstream tar with a Red Bear patch file
(local/patches/openssh/01-ipv6-capability-detect.patch)
2. OR implement IPv6 in netstack/relibc (root cause fix, tracked
elsewhere)
The current sed workaround in recipes/net/openssh/recipe.toml remains
in place, documented as a known gap. This commit is documentation-only.
Also marks 4 of 12 original CRITICAL findings as DONE this round:
- F001 BufferPool zero-fill ✅
- F1.6 xHCI phys_addr_to_index >= ✅
- DEF-P0-7 rtl8139d/rtl8168d panic ✅
- DEF-P0-6 e1000d MMIO bounds check ✅
- F22 ECDSA firmware length check ✅
NETWORKING-IMPROVEMENT-PLAN.md:803 referenced a non-existent file
'local/docs/networking-validation-log.md' (Finding F19 from audit).
Created that file as the canonical per-run bare-metal networking
validation log, cross-referencing:
- HARDWARE-NETWORKING-INVENTORY.md (what hardware is available)
- HARDWARE-VALIDATION-MATRIX.md (the state of validation)
- FIREWALL-VALIDATION-LOG.md (netfilter scenario validation)
- USB-VALIDATION-RUNBOOK.md (USB controller validation)
Document structure: each run entry records hardware, software versions,
commands, results, regressions, fixes. Open tasks: acquire USB-C
dongle, Threadripper NIC inventory, USB Bluetooth adapter, first run.
Also updated NETWORKING-AND-DRIVERS-CODE-ASSESSMENT-2026-07-27.md §15.1
to reflect this round's fixes (config includes, recipe versions,
submodule CRITICAL fixes: BufferPool zero-fill, xHCI bounds, e1000d
bounds, rtl8139d/rtl8168d panic→exit).
Also documents that the openssh IPv4-only sed workaround was
correctly identified as needing a local fork (local/recipes/net/openssh/)
to fix properly, NOT a direct mainline edit (per AGENTS.md).
Adds a rolling changelog tracking fixes applied in this implementation round:
- 590 SAFETY docs in local/recipes/* (70 files)
- 174 SAFETY docs in relibc submodule (4 files)
- 45 SAFETY docs in libredox submodule (1 file)
- 40 SAFETY docs in base submodule (9 files)
- dnsd CRITICAL: AtomicU16 + compression loop limit
Total: 849 SAFETY comments + 2 dnsd CRITICAL fixes. All pushed to
origin. Document remaining work for the next implementation round.
Also documents 3 submodule commits pushed: relibc, libredox, base.
Remaining work: CRITICAL defects in §6.2, HIGH FFI in §3.4, HIGH error
handling in §3.5, config cleanup, recipe.toml version sync.
Post-implementation sync of the canonical current-state doc:
- §5 fix plan: every section now marked DONE 2026-07-27 with
implementation details, file:line refs, env-var surface, and
test results
- §6 test inventory: updated from 148 -> 181 tests; per-fix
summary table added showing the 33 new tests distributed across
the 8 fix commits
Verification status: 46 files scan clean by the no-stubs audit
(0 violations); all 181 host tests pass; linux-kpi lib compiles
clean on the redox target; the canonical doc remains the single
source of truth for current state.
Historical round-by-round detail remains in the archived
DRIVER-MANAGER-MIGRATION-PLAN.md.
Add local/docs/BUILD-SYSTEM.md as the single authoritative build-system
reference (entry point, CLI flags, pipeline stages, offline/release, caching,
no working-tree stashing, fork/vendored-upstream versioning, self-versioning).
Update AGENTS.md (dirty-gate replaces the removed stash-and-restore; --allow-dirty;
pointer), SCRIPT-BEHAVIOR-MATRIX.md (stash line -> dirty-source gate), README.md
(flags + pointer), and add canonical-doc pointers to BUILD-SYSTEM-INVARIANTS.md
and docs/06-BUILD-SYSTEM-SETUP.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit replaces the D-Bus implementation stubs and gaps identified
during the zbus/D-Bus review round with real, tested implementations.
**redbear-sessiond: real login1 properties + PrepareForShutdown signals**
The login1.Manager interface had hardcoded stub values:
- idle_since_hint() and idle_since_hint_monotonic() returned 0
- inhibit_delay_max_usec() returned 0
- handle_lid_switch() returned 'ignore'
- handle_power_key() returned 'poweroff'
- power_off/reboot/suspend wrote to /scheme/sys/kstop but did NOT
emit PrepareForShutdown(before=true) / PrepareForSleep(true) first
Replace with:
- Run-time configurable atomic fields (last_activity_us,
inhibit_delay_max_us) and RwLock<String> fields (handle_lid_switch,
handle_power_key) on SessionRuntime, mutated by the existing control
socket. Defaults: 5s inhibit delay, 'ignore' lid, 'poweroff' power key.
- power_off/reboot are now async, emit PrepareForShutdown(true) before
/scheme/sys/kstop write, emit PrepareForShutdown(false) after a
successful write, and return a D-Bus error if the kstop write fails
(resetting preparing_for_shutdown).
- suspend emits PrepareForSleep(true)/(false) similarly.
- Bash-style dangling-Clone problem solved via manual Clone impl on
SessionRuntime that snapshots the atomics and lock contents.
**redbear-wifictl: real NetworkManager-shaped D-Bus interface**
The dbus-nm feature was a no-op stub that just logged 'registered'
without actually doing anything. Replace with a real zbus interface:
- zbus::interface structs wrapping Arc<Mutex<NmWifiDevice>> shared state
- org.freedesktop.NetworkManager at /org/freedesktop/NetworkManager
exposes WirelessEnabled, WirelessHardwareEnabled, State, and
GetDevices().
- org.freedesktop.NetworkManager.Device.Wireless at
/org/freedesktop/NetworkManager/Devices/0 exposes HwAddress,
PermHwAddress, State, Ssid, Strength, LastScan, AccessPoints,
GetAccessPoints(), WirelessCapabilities.
- register_nm_interface() now actually builds a blocking
zbus::connection::Builder on the session bus, registers both
service name + object paths, spawns a background thread to hold the
connection alive, and returns. On session-bus connect failure it
logs an error and returns without crashing.
- When the dbus-nm feature is disabled, behavior is unchanged (no-op).
- Type model enriched: NmWifiDevice gains last_scan, active_ssid,
active_strength fields + Default derives; NmDeviceState gains
Default; NmAccessPoint gains Default.
**redbear-statusnotifierwatcher: wired into redbear-full**
The recipe compiled and had 12 tests but was NOT in any config —
the binary never deployed. Add:
- [package.files] stanza to its recipe.toml so the binary is staged
- redbear-statusnotifierwatcher = {} to config/redbear-full.toml
- launch_optional_component invocation in redbear-kde-session
**redbear-notifications: 8 host unit tests**
Previously zero tests. Add a #[cfg(test)] module covering:
- monotonic notification IDs
- capabilities list (spec values present)
- server information strings
- close-id + reason recording
- action invocation payload
- ordering preserved across multiple notifications
- independence between close and action records
**zbus build-ordering marker: clean source**
The marker source lib.rs contained 'pub struct Connection;' which
is misleading. Replace with a minimal comment explaining the
build-ordering purpose. The actual zbus crate is still resolved by
Cargo at downstream build time (unchanged behavior).
**D-Bus symlink cleanup**
Remove recipes/system/dbus/dbus-root-uid.patch (orphan symlink, not
in .gitignore-relevant scope). The actual patch stays in
local/patches/dbus/. The redox.patch in the same directory is a
real file (not a symlink) and is preserved.
**Build-system bug fixes**
- build-preflight.sh: when broken recipe.toml links cannot be restored
from git, invoke the guard-recipes.sh --fix path so untracked
custom links are regenerated.
- verify-fork-functions.sh: skip std-trait method names (fmt, eq,
clone, drop, etc.) when checking for dropped upstream functions —
these are derivable or compiler-caught, so a missed refactor is
inert, not a build blocker.
- verify-overlay-integrity.sh: add explicit 'return 0' on log helpers
so --quiet mode does not abort on the first log call under set -e.
Verification: host cargo test passes on all four modified daemons.
redbear-sessiond: 52 tests (12 new for the properties + signals).
redbear-wifictl: 35 tests (4 new for dbus_nm) + 2 cli_transport.
redbear-notifications: 8 tests (all new).
redbear-upower/udisks/polkit: unchanged, still pass.
The DRIVER-MANAGER-MIGRATION-PLAN was self-declared complete (the
driver-manager cutover happened 2026-07-23 per local/AGENTS.md). It
is now historical reference material rather than current planning
authority. Move it from local/docs/ into the established
legacy-obsolete-2026-07-25/ archive directory, updating every
inbound reference.
Also includes minor cross-doc alignment for the previous round's
relocations:
- local/AGENTS.md: update DRIVER-MANAGER-MIGRATION-PLAN to point to
the legacy archive
- local/docs/REDBEAR-FULL-SDDM-BRINGUP.md: alignment update
- local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md: alignment update
- local/docs/archived/README.md: refresh archive contents note
- local/recipes/system/redbear-driver-policy/source/policy/README.md:
policy doc drift alignment
- local/scripts/guard-recipes.sh: fix symlink target computation
(relative path was being glued onto an absolute path, producing
malformed dangling links like '../..//mnt/.../recipe.toml')
-- this is a real bug fix discovered during this audit round.
Cross-doc alignment fixes (refining prior round's canonical
references per AGENTS.md vocabulary normalization and ownership
statement rules):
- DBUS-INTEGRATION-PLAN.md: extensive edits to match the
canonical references and vocabulary used by v5.10/v5.11.
Cross-references to legacy-obsolete/ now point at the
correct canonical names. Support-coverage table updated.
- ACPI-IMPROVEMENT-PLAN.md: kstop ownership statement
cross-reference corrected (CONSOLE-TO-KDE-DESKTOP-PLAN.md
instead of DESKTOP-STACK-CURRENT-STATUS.md). W0.3 evidence
link fixed.
- GREETER-LOGIN-IMPLEMENTATION-PLAN.md: minor alignment
with canonical cross-references.
- KERNEL-SCHEDULER-MULTITHREAD-IMPROVEMENT-PLAN.md
(archived/): minor alignment.
- local/sources/syscall: submodule update (typo fixes
and consistency updates from upstream).
- local/sources/relibc: submodule update at v5.11
(round-9 fix + ifaddrs repair at commit 4ff980ab).
Per AGENTS.md DOCUMENTATION VOCABULARY NORMALIZATION
(W0.1, W0.2) and OWNERSHIP STATEMENT (W0.2).
Completes the round-9 relibc fix pass (commit a41c5cb0) with
gap-fills and a critical build repair:
1. getrusage (relibc/src/platform/redox/mod.rs) - extended
ProcStatFields to parse minflt/majflt/cminflt/cmajflt from the
/proc/pid/stat line. The kernel currently hardwires these to
0 but parsing them anyway means relibc automatically reports
correct values when the kernel starts tracking them. inblock/
oublock/nvcsw/nivcsw remain zero with a doc-comment noting
the kernel proc scheme doesn't provide them (they're in
/proc/pid/io and /proc/pid/status which relibc doesn't read).
2. pthread_condattr_setclock (relibc/src/header/pthread/cond.rs)
- added CLOCK_PROCESS_CPUTIME_ID to the accepted-clocks set.
(CLOCK_THREAD_CPUTIME_ID and the COARSE clocks are Linux-only
and not defined on Redox; the existing CLOCK_REALTIME/
CLOCK_MONOTONIC acceptance was POSIX-correct; this is the
Redox-available extension.)
3. ifaddrs module - repaired pre-existing compilation errors
introduced by commit d9760bdc:
- AF_INET/AF_INET6 used to be imported from netinet_in
(wrong module); now defined locally as sa_family_t with
the correct values (2 and 10).
- sa_family_t was imported from sys_socket (wrong module);
now imported from bits_safamily_t.
- AF_PACKET was used as the IPv6 family (wrong); replaced
with AF_INET6.
- Vec was not in scope; added use alloc::vec::Vec;.
- copy_nonoverlapping direction bug: was copying zeroed
sockaddr bytes into iface.addr (backwards); fixed to copy
from iface.addr into the sockaddr.
- CIDR prefix validation was rejecting all valid values
(0..=128 => return None); fixed to accept all parseable
values and let the per-family length check validate.
4. Reverted the uncommitted ifaddrs workaround (pub mod
ifaddrs;) and broken clock_settime (referenced non-existent
libredox::clock_settime) - per AGENTS.md NEVER comment out to
fix builds and no stubs policies.
Per AGENTS.md NO-STUB POLICY: all ifaddrs module compilation
errors from the previous getifaddrs implementation are real
implementation bugs that have been fixed properly, not worked
around.
Adds section 8.2 documenting the Round 8 follow-up commits:
* c20032435d: Mesa EGL back-buffer allocation in redox_image_get_buffers
(was hard stub - back=NULL always)
* 101ce11844: pipe_loader_redux backend for /scheme/drm/card0
(closes the non-EGL gallium consumer gap)
* 5aa5c96506: kf6-kcmutils git conflict markers resolved
(BLOCKER - shell would have tried to execute literal
<<<<<<< and >>>>>>> strings as commands)
* c73e4227 (relibc): cfgetispeed/cfgetospeed/cfsetispeed/cfsetospeed
real impl on Redox (was 0 or EINVAL unconditionally)
* 9bc6ba0b6e: redbear-compositor keyboard modifier state tracking
(shift/ctrl/alt/logo/caps/num/mod5 with apply_modifier_event)
* 1d930cd425: qtbase open_memstream stub removed (relibc provides it)
* f6420ec8c3: relibc submodule pointer bump
* Documentation cleanups in local/AGENTS.md and local/recipes/AGENTS.md
Combined with the Round 7 follow-up and the v5.8/v5.9/v5.10
parallel sweeps, the surface of unimplemented hard stubs in the
Mesa/relibc/compositor stack is now near zero. Remaining deferred
items (Qt6 Wayland null+8 runtime validation, QML gate in
plasma-framework + kirigami, HW validation) require kernel ABI
work or external hardware.
This commit implements the kglobalacceld5 daemon binary, closing the
last kf6-daemon-binary gap.
Before: kf6-kglobalaccel built only the KF6GlobalAccel library and
its tests; the upstream CMakeLists had no add_executable for
kglobalacceld5. The upstream sources had no main.cpp either.
After:
* Add kglobalacceld-main.cpp — a minimal daemon main that:
- Sets up QApplication (this is a GUI daemon, it uses QWidgets for
system tray integration with the host).
- Registers at the org.kde.kglobalacceld D-Bus name (the only one
that existing KDE clients try to talk to).
- Stale-lockfile handling: if /run/user/1000/kglobalacceld.lock is
left over from a crashed instance, delete it before claiming the
name (mirrors the systemd user-D-Bus session convention).
- Crash reporting via KCrash.
- Version 0.3.0-? pulled from the generated config-kglobalaccel.h.
* Add kglobalacceld5-wrapper.sh — disable the Wayland QPA on Redox
before exec'ing the real binary, same approach as kded6-wrapper.sh.
kglobalacceld5 is a QtWidgets GUI daemon, so it would otherwise
page-fault the same way kded6 did.
* Extend src/CMakeLists.txt to add_executable(kglobalacceld) and
install it. The target emits kglobalacceld5 as its output binary
name (matches the upstream convention used by the KDE distro
packaging) and links against the freshly-built KF6GlobalAccel
library.
* Extend the kf6-kglobalaccel recipe to invoke the wrap-and-install
step on the resulting binary.
DBUS-INTEGRATION-PLAN bumped to v4.0 (2026-07-26). The §3.2 row
for kf6-kglobalaccel is updated from 'daemon binary not built' to
'kglobalacceld5 daemon built (v4.0)'. The §14.4 implementation
order (DB-5) now only has kf6-kwallet's kwalletd binary
remaining.
Tested: 0 (no build per user request). The new main.cpp follows
the upstream KF6 daemon pattern (KDBusService::Unique + KCrash
+ application metadata), the CMakeLists addition follows the
existing kf6-kded6 pattern, and the wrapper script is identical
to kded6-wrapper.sh. The actual build verification is deferred
to the next buildable round.
Adds section 8.1 documenting the Round 7 follow-up commits (2026-07-27):
* redbear-compositor: real wp_presentation_feedback timing with
CLOCK_MONOTONIC + frame sequence counter (commit 28eea74305)
* xwayland: restore BTN_LEFT/RIGHT/MIDDLE switch (commit f10a0ec89c)
* redbear-compositor: real wl_data_offer clipboard/drag-and-drop
pipeline with pipe + SCM_RIGHTS (commit d324ed3634)
* relibc: real getifaddrs implementation (submodule commit d9760bdc)
Each section explains the file path, the previous state, the new
implementation, and the edge cases handled. Combined with the
Round 7 core work in earlier commits, the surface of unimplemented
stubs in the compositor + Mesa + relibc has been reduced to near
zero, with the remaining gaps (Mesa EGL back-buffer, Qt6 null+8
runtime validation, QML gate, HW validation) deferred to Round 8+
since they require kernel ABI work or external hardware.