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:
2026-07-27 11:23:26 +09:00
parent fc666a7078
commit 97508c7ce2
8 changed files with 191 additions and 29 deletions
@@ -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"
}
}
}
+1 -1
View File
@@ -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
+186 -3
View File
@@ -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 |