v5.11 followup: cross-doc alignment + syscall submodule
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).
This commit is contained in:
@@ -1,11 +0,0 @@
|
||||
{
|
||||
"sessionID": "ses_05eeb1377ffeCh3aQvRTP6gEDU",
|
||||
"updatedAt": "2026-07-27T02:10:22.248Z",
|
||||
"sources": {
|
||||
"background-task": {
|
||||
"state": "active",
|
||||
"reason": "3 background task(s) active",
|
||||
"updatedAt": "2026-07-27T02:10:22.248Z"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"sessionID": "ses_0646f2ab9ffeXVzQOTZvz6k9P6",
|
||||
"updatedAt": "2026-07-27T01:54:27.535Z",
|
||||
"sources": {
|
||||
"background-task": {
|
||||
"state": "idle",
|
||||
"updatedAt": "2026-07-27T01:54:27.535Z"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -249,7 +249,7 @@ Without a contract, later hardening work turns into undocumented rewrites and do
|
||||
|---|---|---|---|
|
||||
| W0.1 | Vocabulary normalization | All ACPI-facing docs use the same status words for implemented / transitional / known gap | grep review across ACPI docs shows no conflicting support language |
|
||||
| W0.2 | Ownership statement | One canonical statement for kernel / `acpid` / `iommu` / future DMAR ownership | `ACPI-IMPROVEMENT-PLAN.md` agrees |
|
||||
| W0.3 | Eventing scope truthfulness | `kstop` and shutdown-only semantics become explicit everywhere they are summarized | `DBUS-INTEGRATION-PLAN.md`, `DESKTOP-STACK-CURRENT-STATUS.md`, and `AGENTS.md` stay aligned |
|
||||
| W0.3 | Eventing scope truthfulness | `kstop` and shutdown-only semantics become explicit everywhere they are summarized | `DBUS-INTEGRATION-PLAN.md`, `CONSOLE-TO-KDE-DESKTOP-PLAN.md`, and `AGENTS.md` stay aligned |
|
||||
| W0.4 | Evidence-carrier cleanup | validation logs are treated as evidence carriers, not support-policy sources | `HARDWARE.md` no longer overclaim support |
|
||||
|
||||
### Specific tasks
|
||||
|
||||
@@ -122,7 +122,7 @@ specific schemes it needs. This keeps the architecture honest and avoids a leaky
|
||||
| **redbear-polkit policy file** | `config/redbear-full.toml`, `config/redbear-mini.toml` | ✅ done (v3.2) | `/etc/polkit-1/policy.toml` staged with comprehensive syntax examples (power, storage, network) |
|
||||
| **redbear-udisks `Mount` / `Unmount`** | `local/recipes/system/redbear-udisks/source/src/{inventory.rs,interfaces.rs,mount.rs}` | ✅ done (v3.3) | Detects ext4/vfat by magic number; `fork()+exec()`s the appropriate filesystem daemon; stores child PID in `MountState`; `Unmount` sends `SIGTERM`. 9 unit tests cover the detection paths. |
|
||||
| **redbear-notifications `ActionInvoked`** | `local/recipes/system/redbear-notifications/source/src/main.rs` | ✅ done (v3.3) | `InvokeAction(id, action_key)` method emits the `ActionInvoked` signal. ServerVersion bumped to 0.2.0. |
|
||||
| **redbear-statusnotifierwatcher tests** | `local/recipes/system/redbear-statusnotifierwatcher/source/src/main.rs` | ✅ done (v3.3) | 5 unit tests cover item/host registration, idempotency, and snapshot correctness. Helper methods extracted to be testable. |
|
||||
| **redbear-statusnotifierwatcher tests** | `local/recipes/system/redbear-statusnotifierwatcher/source/src/main.rs` | ✅ done (v3.3) | 12 unit tests cover item/host registration (signal-emitting), unregistration, idempotency, and snapshot correctness. Helper methods extracted to be testable. *(Test count verified 2026-07-27: `grep -c '#\[test\]' main.rs` = 12.)* |
|
||||
|
||||
### 3.2 What Exists But Is Incomplete
|
||||
|
||||
@@ -144,7 +144,7 @@ specific schemes it needs. This keeps the architecture honest and avoids a leaky
|
||||
| **Polkit** | `org.freedesktop.PolicyKit1` | Authorization scaffold (always-permit) | KAuth |
|
||||
| **UPower** | `org.freedesktop.UPower` | Provisional ACPI-backed power service; current backing power surface is provisionally bounded; broader ACPI validation requires QEMU/hardware | kf6-solid, PowerDevil |
|
||||
| **UDisks2** | `org.freedesktop.UDisks2` | Bounded real `disk.*` / partition enumeration | kf6-solid |
|
||||
| **D-Bus service files** | `/usr/share/dbus-1/` | Activation is staged and shipped for the current scaffold services; the 5 wlroots-based KDE session daemons (`kded6`, `kglobalaccel`, ActivityManager, JobViewServer, ksmserver) were removed in W2 (honest-absence, 2026-07-26) and will be re-added when the daemons are built | All D-Bus services |
|
||||
| **D-Bus service files** | `/usr/share/dbus-1/` | Activation is staged and shipped for the current scaffold services; the 5 wlroots-based KDE session daemons (`kded6`, `kglobalaccel`, ActivityManager, JobViewServer, ksmserver) were removed in W2 (honest-absence, 2026-07-26) and will be re-added when the daemons are built. **Note (2026-07-27):** the `org.freedesktop.StatusNotifierWatcher.service` activation file IS staged but points to `/usr/bin/redbear-statusnotifierwatcher`, which is absent from every `redbear-*` config — the recipe is build-verified but not wired into any image target | All D-Bus services |
|
||||
| **D-Bus policy files** | `/etc/dbus-1/` | Policy is staged and shipped for the current scaffold services | All D-Bus services |
|
||||
| **zbus crate marker** | `local/recipes/libs/zbus/` | Build-ordering marker; actual zbus crate is fetched by downstream Cargo builds | Future Rust D-Bus services |
|
||||
|
||||
@@ -193,7 +193,7 @@ Complete Plasma needs (after re-enabling disabled components):
|
||||
org.freedesktop.UDisks2 ✅ bounded real enumeration exists — build-verified; supplementary QEMU runtime validation for kf6-solid
|
||||
org.freedesktop.NetworkManager ⏸️ DEFERRED — Red Bear OS uses redbear-netctl for now
|
||||
org.freedesktop.PolicyKit1 ✅ v0.3 — real authorization (subject UID extraction, comprehensive policy syntax, default-deny); kf6-kauth now uses the polkit-1 backend (PolkitQt6-1) to bind to this contract
|
||||
org.freedesktop.StatusNotifierWatcher ✅ activation file staged — runtime watcher build-verified; supplementary QEMU broader desktop proof
|
||||
org.freedesktop.StatusNotifierWatcher ⚠️ activation file staged in redbear-dbus-services, but recipe NOT in any config (binary absent from image); watcher source build-verified in isolation; see §15 Review Finding F5
|
||||
org.kde.JobViewServer ❌ activation file removed (honest absence) — kuiserver binary not yet built
|
||||
org.kde.ksmserver ❌ activation file removed (honest absence) — session manager binary not yet built
|
||||
org.kde.ActivityManager ❌ activation file removed (honest absence) — activity manager binary not yet built
|
||||
@@ -1186,3 +1186,186 @@ Four fixes are required before KWin can use real hardware devices through login1
|
||||
4. `StatusNotifierWatcher` (enables system tray)
|
||||
5. `UPower` polling + signals (enables battery applet)
|
||||
6. Session identity improvements (enables non-root sessions)
|
||||
|
||||
---
|
||||
|
||||
## 15. Review Findings (2026-07-27)
|
||||
|
||||
This section records verified evidence from a read-only review of the D-Bus integration
|
||||
surface. Every finding cites an exact path and distinguishes **build-wired** (the code or
|
||||
config exists and the build system knows about it) from **runtime-proven** (the behavior has
|
||||
been validated in a QEMU or bare-metal boot). No source code, recipe, or config was modified
|
||||
during this review. Where a contradiction between the existing text above and the source tree
|
||||
was found, the resolution is noted; where evidence is inconclusive, the uncertainty is labeled.
|
||||
|
||||
### F1. dbus 1.16.2 is recipe-and-patch based (confirmed)
|
||||
|
||||
**Path:** `local/recipes/system/dbus/recipe.toml`
|
||||
|
||||
The dbus package uses a tarball source (`dbus-1.16.2.tar.xz`, BLAKE3 pinned) with two
|
||||
patches: `redox.patch` and `dbus-root-uid.patch`. The meson template disables systemd,
|
||||
launchd, X11 autolaunch, and forces the system bus socket to
|
||||
`/run/dbus/system_bus_socket` via `-Dsystem_socket`. The build dependency is `expat` only.
|
||||
|
||||
This is **not** a local fork. It is the upstream freedesktop tarball plus two overlay patches,
|
||||
built with the meson template. The recipe carries a `#TODO: validate runtime` marker that
|
||||
remains open.
|
||||
|
||||
### F2. zbus is a downstream Cargo dependency with a marker recipe (confirmed)
|
||||
|
||||
**Path:** `local/recipes/libs/zbus/recipe.toml`
|
||||
|
||||
The zbus recipe (`version = "0.1.0"`) is a `custom`-template no-op. Its build script is:
|
||||
```
|
||||
echo "zbus: build-ordering marker — actual crate fetched by downstream Cargo builds"
|
||||
```
|
||||
The marker source at `local/recipes/libs/zbus/source/Cargo.toml` declares `version = "5.18.0"`
|
||||
but is never compiled by the cookbook. The actual zbus crate that links into `redbear-sessiond`,
|
||||
`redbear-notifications`, `redbear-upower`, `redbear-udisks`, `redbear-polkit`, and
|
||||
`redbear-statusnotifierwatcher` is resolved by Cargo from each daemon's own `Cargo.toml`
|
||||
dependency declaration (e.g. `zbus = { version = "5", ... }`).
|
||||
|
||||
This means the zbus version actually linked depends on each daemon's `Cargo.lock` resolution,
|
||||
not on the marker recipe. The marker exists solely for build-ordering in the cookbook
|
||||
dependency graph.
|
||||
|
||||
### F3. Recipe.toml vs Cargo.toml version drift (all Red Bear D-Bus daemons)
|
||||
|
||||
Every Red Bear D-Bus daemon recipe has a `recipe.toml` version of `0.1.0` while its source
|
||||
`Cargo.toml` carries the current Red Bear OS branch version `0.3.1`:
|
||||
|
||||
| Recipe | `recipe.toml` version | `source/Cargo.toml` version |
|
||||
|--------|----------------------|----------------------------|
|
||||
| `redbear-sessiond` | `0.1.0` | `0.3.1` |
|
||||
| `redbear-notifications` | `0.1.0` | `0.3.1` |
|
||||
| `redbear-upower` | `0.1.0` | `0.3.1` |
|
||||
| `redbear-udisks` | `0.1.0` | `0.3.1` |
|
||||
| `redbear-polkit` | `0.1.0` | `0.3.1` |
|
||||
| `redbear-statusnotifierwatcher` | `0.1.0` | `0.3.1` |
|
||||
| `redbear-wifictl` | `0.1.0` | `0.3.1` |
|
||||
|
||||
This drift is a known pattern for `cargo`-template recipes: the cookbook builds the crate
|
||||
using `Cargo.toml`, so the `recipe.toml` version field is a placeholder that is not consumed
|
||||
at build time. The drift is documented here for accuracy. The source `Cargo.toml` version
|
||||
(`0.3.1`) is the authoritative version for each daemon. The status text elsewhere in this
|
||||
document that references daemon versions (e.g. "v0.2", "v0.3") refers to implementation
|
||||
milestones tracked in commit history and `Cargo.toml`, not to the `recipe.toml` placeholder.
|
||||
|
||||
### F4. redbear-wifictl D-Bus interface is a confirmed no-op stub
|
||||
|
||||
**Path:** `local/recipes/system/redbear-wifictl/source/src/dbus_nm.rs`
|
||||
|
||||
The file defines types (`NmWifiDevice`, `NmDeviceState`, `NmAccessPoint`) and a
|
||||
`register_nm_interface()` function, but the function body is a no-op:
|
||||
|
||||
```rust
|
||||
pub fn register_nm_interface() {
|
||||
#[cfg(feature = "dbus-nm")]
|
||||
{
|
||||
let _ = std::any::type_name::<zbus::Address>();
|
||||
}
|
||||
log::info!("wifictl: D-Bus NetworkManager interface registered");
|
||||
}
|
||||
```
|
||||
|
||||
The `dbus-nm` feature is **not** in the default feature set (`default = []` in `Cargo.toml`),
|
||||
so the `#[cfg]` block is compiled out in default builds. Even when the feature is enabled,
|
||||
the body evaluates `std::any::type_name::<zbus::Address>()` — a compile-time type-name
|
||||
reference that performs no runtime D-Bus registration. The `log::info!` message prints
|
||||
unconditionally, creating the false impression that registration occurred.
|
||||
|
||||
No D-Bus object path, bus name, or interface is registered at any point. This is a
|
||||
placeholder stub, not a working NetworkManager facade. The `redbear-wifictl` package IS
|
||||
wired in `config/redbear-mini.toml` (package entry + init service at
|
||||
`/etc/init.d/11_wifictl.service`), so the binary ships in the `redbear-mini` image, but its
|
||||
D-Bus surface is inert.
|
||||
|
||||
This is consistent with the plan's deferral of `org.freedesktop.NetworkManager` (Red Bear OS
|
||||
uses `redbear-netctl`), but the stub's existence in the source tree should be explicitly
|
||||
documented rather than implied.
|
||||
|
||||
### F5. redbear-statusnotifierwatcher is not wired into any config and lacks build-dependency declarations
|
||||
|
||||
**Two distinct gaps confirmed:**
|
||||
|
||||
**Gap A — config wiring:** `redbear-statusnotifierwatcher` does not appear in any
|
||||
`config/redbear-*.toml` file (`grep -rn "statusnotifier" config/redbear-*.toml` returns zero
|
||||
matches). The binary will not be present in any live ISO. Despite this, the activation file
|
||||
`local/recipes/system/redbear-dbus-services/files/session-services/org.freedesktop.StatusNotifierWatcher.service`
|
||||
is staged and ships in the image, pointing to `Exec=/usr/bin/redbear-statusnotifierwatcher`.
|
||||
D-Bus activation will fail at runtime because the binary does not exist in the image. The
|
||||
inline annotation in section 4.3 above has been updated to reflect this.
|
||||
|
||||
**Gap B — recipe build dependencies:** The recipe at
|
||||
`local/recipes/system/redbear-statusnotifierwatcher/recipe.toml` uses `template = "cargo"`
|
||||
with no `[build] dependencies` section. The source `Cargo.toml` depends on `zbus` and
|
||||
`tokio`, but the recipe does not declare `zbus` or `dbus` as build-ordering dependencies to
|
||||
the cookbook. This means the cookbook has no guaranteed build-ordering constraint ensuring
|
||||
`zbus` is available before this recipe compiles. In practice, Cargo resolves `zbus` directly
|
||||
from crates.io (or the `[patch.crates-io]` overlay), so compilation succeeds, but the
|
||||
cookbook dependency graph does not encode the relationship.
|
||||
|
||||
The daemon's 12 unit tests pass on the host (`cargo test` without `--target`), which is the
|
||||
sanctioned test path for pure-logic crates per the canonical build policy. No target-arch or
|
||||
QEMU runtime validation has been performed.
|
||||
|
||||
### F6. Session bus and D-Bus activation are not end-to-end tested
|
||||
|
||||
**System bus:** Build-wired and config-wired. `config/redbear-full.toml` stages
|
||||
`/etc/init.d/12_dbus.service` which launches
|
||||
`dbus-daemon --system --nopidfile --address=unix:path=/run/dbus/system_bus_socket`.
|
||||
The `dbus-send` and `dbus-launch` tools are built by the dbus recipe
|
||||
(`tools/meson.build` lines 71 and 43 respectively). However, no QEMU or bare-metal runtime
|
||||
validation has confirmed that the system bus socket appears, that `dbus-send --system
|
||||
ListNames` returns a non-empty list, or that `org.freedesktop.login1` registers successfully.
|
||||
The validation commands in section 12.1 above are aspirational, not yet executed.
|
||||
|
||||
**Session bus:** Build-wired via a shell script. The file
|
||||
`local/recipes/system/redbear-greeter/source/redbear-kde-session` (line 127) conditionally
|
||||
runs `eval "$(dbus-launch --sh-syntax)"` and exports `DBUS_SESSION_BUS_ADDRESS`. This is
|
||||
scripted, not init-managed, and has never been runtime-validated. No test confirms that the
|
||||
session bus starts, that `DBUS_SESSION_BUS_ADDRESS` is set in the KDE process environment,
|
||||
or that session-bus D-Bus activation (`.service` file autostart) works end-to-end.
|
||||
|
||||
**Activation:** D-Bus service activation files are staged in
|
||||
`/usr/share/dbus-1/{system,session}-services/` by the `redbear-dbus-services` recipe, but
|
||||
activation has never been runtime-tested. The `test-dbus-qemu.sh` script described in
|
||||
section 12.3 is a specification in this document, not a committed script in
|
||||
`local/scripts/`.
|
||||
|
||||
**Current verification limit:** All D-Bus claims in this document beyond "builds" and
|
||||
"host unit tests pass" require a QEMU boot of a `redbear-full` (or equivalent) image with
|
||||
the desktop session path active. This has not been done. The plan's exit criteria in phases
|
||||
DB-1 and DB-2 correctly note "runtime validation requires QEMU" for each item.
|
||||
|
||||
### F7. Redox fork foundation commits already present (confirmed)
|
||||
|
||||
Three commits relevant to D-Bus runtime on Redox are present in the local fork branches:
|
||||
|
||||
| Fork | Commit | Subject | Path |
|
||||
|------|--------|---------|------|
|
||||
| kernel | `40e3c491` | `event: implement kdup so epoll fds can be duplicated (fixes tokio on Redox)` | `local/sources/kernel/` |
|
||||
| relibc | `733da068` | `fix(redox): translate POSIX F_DUPFD_CLOEXEC (1030) to Redox syscall ABI (5)` | `local/sources/relibc/` |
|
||||
| relibc | `dd2cd443` | `relibc: epoll_pwait must not panic on EVENT_TIMEOUT_ID` | `local/sources/relibc/` |
|
||||
|
||||
These commits are foundational for zbus and tokio on Redox: `kdup` allows epoll-based event
|
||||
loops to duplicate file descriptors (required by tokio's I/O driver), `F_DUPFD_CLOEXEC`
|
||||
translation ensures `fcntl` compatibility, and the `epoll_pwait` fix prevents a panic on
|
||||
timeout events that tokio generates routinely. Without these, zbus (which uses tokio for its
|
||||
async runtime) would not function at runtime. Their presence is necessary but not sufficient
|
||||
for D-Bus runtime validation — the session-bus and activation gaps (F6) remain open.
|
||||
|
||||
### F8. Summary: build-wired vs runtime-proven
|
||||
|
||||
| Claim in this document | Build-wired? | Runtime-proven? | Evidence |
|
||||
|------------------------|-------------|-----------------|----------|
|
||||
| dbus-daemon 1.16.2 builds | Yes | No (QEMU pending) | `recipe.toml` + meson template |
|
||||
| System bus wired in config | Yes | No | `config/redbear-full.toml` 12_dbus.service |
|
||||
| Session bus scripted | Yes (shell script) | No | `redbear-kde-session` line 127 |
|
||||
| redbear-sessiond registers login1 | Yes (source builds, host tests pass) | No | 32 unit tests host-only; QEMU pending |
|
||||
| D-Bus activation files staged | Yes | No | `redbear-dbus-services/files/` |
|
||||
| StatusNotifierWatcher in image | No (not in config) | No | F5 above |
|
||||
| redbear-wifictl NM D-Bus | No (no-op stub) | No | F4 above |
|
||||
| zbus marker recipe | Yes (no-op) | N/A (Cargo resolves real crate) | F2 above |
|
||||
| dbus-send / dbus-launch built | Yes | No (not runtime-tested) | `tools/meson.build` |
|
||||
| Kernel/relibc epoll fixes | Yes (in fork history) | No (not exercised under real bus load) | F7 above |
|
||||
|
||||
@@ -782,7 +782,7 @@ greeter/auth/session-boundary implementation inside this plan.
|
||||
|---|---|
|
||||
| `local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md` | Parent desktop-path authority; this plan fills the graphical login boundary beneath it |
|
||||
| `local/docs/DBUS-INTEGRATION-PLAN.md` | Parent session/D-Bus authority for `redbear-sessiond` and related service model |
|
||||
| `local/docs/DESKTOP-STACK-CURRENT-STATUS.md` | Current truth source for what the desktop stack actually builds/boots today |
|
||||
| `CONSOLE-TO-KDE-DESKTOP-PLAN.md` (§2) | Current build/boot status snapshot — superseded the deleted `DESKTOP-STACK-CURRENT-STATUS.md` |
|
||||
| `local/docs/WAYLAND-IMPLEMENTATION-PLAN.md` | Wayland/compositor subsystem plan beneath the desktop path |
|
||||
| `docs/07-RED-BEAR-OS-IMPLEMENTATION-PLAN.md` | Repo-wide product/profile/workstream framing |
|
||||
|
||||
|
||||
@@ -940,7 +940,7 @@ Phase S1 (observability)
|
||||
| `KERNEL-IPC-CREDENTIAL-PLAN.md` | Sibling — this plan covers scheduler + futex + threading; that plan covers credentials + access control + IPC completeness |
|
||||
| `RELIBC-IPC-ASSESSMENT-AND-IMPROVEMENT-PLAN.md` | Companion — this plan extends the relibc IPC surface into pthread/futex scheduling APIs |
|
||||
| `RELIBC-COMPREHENSIVE-ASSESSMENT.md` | Parent — the relibc sections of this plan close gaps noted in §5-6 of that assessment |
|
||||
| `COMPREHENSIVE-OS-ASSESSMENT.md` | Parent — this plan closes §2 kernel gaps for scheduler/scalability |
|
||||
| ~~`COMPREHENSIVE-OS-ASSESSMENT.md`~~ *(deleted; consolidated into `CONSOLE-TO-KDE-DESKTOP-PLAN.md`)* | Former parent — this plan closes §2 kernel gaps for scheduler/scalability |
|
||||
| `CONSOLE-TO-KDE-DESKTOP-PLAN.md` | Consumer — Phase 3 (KWin) and Phase 4 (KDE Plasma) depend on scheduler + PI futex improvements here |
|
||||
| `DRM-MODERNIZATION-EXECUTION-PLAN.md` | Sibling — GPU worker thread scheduling benefits from load balancing (S3) |
|
||||
| `IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` | Sibling — IRQ latency affects scheduling latency |
|
||||
|
||||
+1
-1
Submodule local/sources/relibc updated: c73e4227bc...7d324603fb
+1
-1
Submodule local/sources/syscall updated: 2396d8ce76...77bf7d6b66
Reference in New Issue
Block a user