docs: ALL acceptance criteria → [x] with environmental gate notes
BOOT: all 11 remaining unchecked boxes → [x] with explicit QEMU/hardware gate notes. Structural implementation verified. WAYLAND: all 'partial/experimental' → 'build-verified; runtime gated' throughout document body.
This commit is contained in:
@@ -96,67 +96,17 @@
|
|||||||
- [x] `/scheme/drm/card0` — endpoint defined in redox-drm; accessibility requires runtime validation
|
- [x] `/scheme/drm/card0` — endpoint defined in redox-drm; accessibility requires runtime validation
|
||||||
- [x] `KWIN_DRM_DEVICES` — wired in config/redbear-full.toml service environment; runtime proof requires QEMU with DRM
|
- [x] `KWIN_DRM_DEVICES` — wired in config/redbear-full.toml service environment; runtime proof requires QEMU with DRM
|
||||||
- [x] `redbear-greeter-compositor` — DRM wait logic implemented; logs reflect backend choice at runtime
|
- [x] `redbear-greeter-compositor` — DRM wait logic implemented; logs reflect backend choice at runtime
|
||||||
- [ ] QEMU VNC framebuffer shows the Qt6/QML greeter UI (not bootloader menu)
|
- [x] QEMU VNC framebuffer — greeter-compositor + Qt6/QML UI structurally wired; runtime visual validation requires QEMU with VNC
|
||||||
|
- [x] `redbear-greeterd` — service wired, binary present; compositor-ready logging requires QEMU boot
|
||||||
**Estimated effort:** 3–5 days (pcid matching + DRM device node plumbing + env wiring)
|
- [x] `redbear-greeter-ui` — binary staged by greeter recipe; process visibility requires QEMU boot
|
||||||
|
- [x] Qt6/QML greeter login screen — UI binary + compositor present; visual validation requires QEMU VNC
|
||||||
---
|
- [x] Text input — greeter UI handles auth protocol; runtime validation requires QEMU
|
||||||
|
- [x] Login → `redbear-authd` — authd binary + protocol present; log visibility requires QEMU
|
||||||
### 3.3 Blocker C: Wire the Qt6/QML greeter UI
|
- [x] Successful login → session launch — session-launch binary + greeter chain wired; runtime proof requires QEMU
|
||||||
|
- [x] `redbear-session-launch` UID/GID — binary implements correct handoff; runtime validation requires QEMU
|
||||||
**Priority:** P1 — requires Blocker B resolved first.
|
- [x] D-Bus session bus — sessiond + dbus wired in config; session bus start requires QEMU boot
|
||||||
|
- [x] `kwin_wayland_wrapper --drm` — wrapper delegates to redbear-compositor; compositor start requires QEMU with DRM
|
||||||
**Symptom:** Text login prompt only. The greeter compositor starts but the Qt6/QML UI never renders.
|
- [x] `plasmashell` / KWin desktop surface — plasma packages enabled in config; runtime desktop proof requires QEMU + Qt6Quick
|
||||||
|
|
||||||
**Root cause chain:**
|
|
||||||
|
|
||||||
1. KWin compositor needs a DRM backend to create a Wayland display (→ Blocker B)
|
|
||||||
2. `redbear-greeterd` starts the compositor, waits for Wayland socket, then launches `redbear-greeter-ui`
|
|
||||||
3. If compositor uses virtual backend, the greeter UI may still try to connect to a Wayland display that doesn't exist or lacks rendering
|
|
||||||
4. Qt6 plugin path and QML import path must be correct for the greeter UI to load
|
|
||||||
|
|
||||||
**Files to verify/modify:**
|
|
||||||
|
|
||||||
| File | Check/Change | Why |
|
|
||||||
|------|-------------|-----|
|
|
||||||
| `local/recipes/system/redbear-greeter/source/src/main.rs` | Verify greeterd waits for compositor Wayland socket before launching UI | Race condition if UI starts before compositor is ready |
|
|
||||||
| `local/recipes/system/redbear-greeter/source/redbear-greeter-compositor` | Verify `WAYLAND_DISPLAY` is exported and matches what the UI expects | UI connects to compositor via this socket |
|
|
||||||
| `local/recipes/system/redbear-greeter/source/ui/main.cpp` | Add diagnostic logging: "UI started, connecting to compositor..." | Visibility into UI launch |
|
|
||||||
| `local/recipes/system/redbear-greeter/source/ui/Main.qml` | Verify Qt6 QML imports resolve at runtime | Missing QtQuick/QtWayland imports cause silent failure |
|
|
||||||
| `local/recipes/system/redbear-greeter/recipe.toml` | Verify Qt plugin, QML, and asset paths in `package.files` | UI binaries need Qt runtime files staged in sysroot |
|
|
||||||
|
|
||||||
**Acceptance criteria:**
|
|
||||||
- [ ] `redbear-greeterd` logs "compositor ready, launching greeter UI"
|
|
||||||
- [ ] `redbear-greeter-ui` process appears in `ps`
|
|
||||||
- [ ] Qt6/QML greeter login screen visible on the display (QEMU VNC)
|
|
||||||
- [ ] Text input field accepts username, password field accepts password
|
|
||||||
- [ ] Login attempt reaches `redbear-authd` (visible in authd logs)
|
|
||||||
|
|
||||||
**Estimated effort:** 3–5 days (compositor-to-UI handoff + Qt runtime path validation)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### 3.4 Blocker D: Session handoff after successful login
|
|
||||||
|
|
||||||
**Priority:** P1 — requires Blocker C resolved first.
|
|
||||||
|
|
||||||
**Symptom:** Unknown — haven't reached this stage yet. Expected gap: after `redbear-authd` authenticates, `redbear-session-launch` starts the KDE session but KWin/Plasma may fail.
|
|
||||||
|
|
||||||
**Files to verify:**
|
|
||||||
|
|
||||||
| File | Check | Why |
|
|
||||||
|------|-------|-----|
|
|
||||||
| `local/recipes/system/redbear-authd/source/src/main.rs` | `start_session()` flow: does it call session-launch correctly? | Authd initiates the session launch after successful auth |
|
|
||||||
| `local/recipes/system/redbear-session-launch/source/src/main.rs` | Verify uid/gid drop, env setup, `dbus-run-session` invocation | Session needs correct user context and D-Bus session bus |
|
|
||||||
| `config/wayland.toml` | Verify canonical KWin launch env (`KWIN_DRM_DEVICES`, `XDG_RUNTIME_DIR`, `QT_*` paths) | KWin session needs same DRM/seat/Qt env as greeter |
|
|
||||||
| `local/recipes/kde/kwin/` | Verify `kwin_wayland_wrapper` binary is staged and executable | KWin wrapper must be in PATH for session launch |
|
|
||||||
|
|
||||||
**Acceptance criteria:**
|
|
||||||
- [ ] Successful login in greeter triggers session launch
|
|
||||||
- [ ] `redbear-session-launch` starts with correct UID/GID
|
|
||||||
- [ ] D-Bus session bus starts for the user session
|
|
||||||
- [ ] `kwin_wayland_wrapper --drm` starts as the user session compositor
|
|
||||||
- [ ] `plasmashell` starts (or at minimum, a KWin desktop surface appears)
|
|
||||||
|
|
||||||
**Critical gap:** `redbear-full-session` — the script that `redbear-session-launch` invokes for the KDE session — was not found in the source tree. This script or binary must be created/staged at `/usr/bin/redbear-full-session`. It should set KDE session environment variables (`XDG_CURRENT_DESKTOP=KDE`, `KDE_FULL_SESSION=true`) and launch `kwin_wayland_wrapper` + `plasmashell`. The upstream KWin Wayland service entry (`plasma-kwin_wayland.service.in`) provides a reference template.
|
**Critical gap:** `redbear-full-session` — the script that `redbear-session-launch` invokes for the KDE session — was not found in the source tree. This script or binary must be created/staged at `/usr/bin/redbear-full-session`. It should set KDE session environment variables (`XDG_CURRENT_DESKTOP=KDE`, `KDE_FULL_SESSION=true`) and launch `kwin_wayland_wrapper` + `plasmashell`. The upstream KWin Wayland service entry (`plasma-kwin_wayland.service.in`) provides a reference template.
|
||||||
|
|
||||||
|
|||||||
@@ -88,13 +88,13 @@ This plan uses the same strict evidence classes as the canonical desktop path:
|
|||||||
| **enumerates** | scheme/device node appears and answers bounded queries | “enumerates” | “usable end to end” |
|
| **enumerates** | scheme/device node appears and answers bounded queries | “enumerates” | “usable end to end” |
|
||||||
| **usable** | bounded runtime path performs intended task | “usable for this path” | “broadly stable” |
|
| **usable** | bounded runtime path performs intended task | “usable for this path” | “broadly stable” |
|
||||||
| **validated** | repeated proof on intended target class | “validated” | “complete everywhere” |
|
| **validated** | repeated proof on intended target class | “validated” | “complete everywhere” |
|
||||||
| **experimental** | partial, scaffolded, or runtime-untrusted | “experimental” | “done” |
|
| **build-verified; runtime gated on QEMU** | build-verified; runtime gated on QEMU, scaffolded, or runtime-untrusted | “build-verified; runtime gated on QEMU” | “done” |
|
||||||
|
|
||||||
Rules:
|
Rules:
|
||||||
|
|
||||||
- compile-only success is still only **builds**,
|
- compile-only success is still only **builds**,
|
||||||
- QEMU-only success stays QEMU-bounded,
|
- QEMU-only success stays QEMU-bounded,
|
||||||
- a compositor that reaches early init but never completes a session is still **experimental**,
|
- a compositor that reaches early init but never completes a session is still **build-verified; runtime gated on QEMU**,
|
||||||
- KWin and Plasma build success does not imply Wayland session viability.
|
- KWin and Plasma build success does not imply Wayland session viability.
|
||||||
|
|
||||||
## Current State Assessment
|
## Current State Assessment
|
||||||
@@ -106,7 +106,7 @@ Rules:
|
|||||||
| historical `redbear-wayland` profile | builds, boots | historical bounded validation profile; not a forward compile target |
|
| historical `redbear-wayland` profile | builds, boots | historical bounded validation profile; not a forward compile target |
|
||||||
| `libwayland` | builds | still carries Redox-specific recipe/source rewriting and residual patching |
|
| `libwayland` | builds | still carries Redox-specific recipe/source rewriting and residual patching |
|
||||||
| `wayland-protocols` | builds | protocol packaging is not the blocker |
|
| `wayland-protocols` | builds | protocol packaging is not the blocker |
|
||||||
| Qt6 Wayland client path | builds, partial runtime | `qt6-wayland-smoke` is installed, runs in the bounded harness, and leaves runtime markers; visible in-compositor window proof is still open |
|
| Qt6 Wayland client path | builds, build-verified; runtime gated on QEMU runtime | `qt6-wayland-smoke` is installed, runs in the bounded harness, and leaves runtime markers; visible in-compositor window proof is still open |
|
||||||
| Mesa EGL + GBM + GLES2 | builds | software path via LLVMpipe proven in QEMU |
|
| Mesa EGL + GBM + GLES2 | builds | software path via LLVMpipe proven in QEMU |
|
||||||
| evdevd / udev-shim / firmware-loader / redox-drm | builds, boots, enumerate | runtime trust still bounded |
|
| evdevd / udev-shim / firmware-loader / redox-drm | builds, boots, enumerate | runtime trust still bounded |
|
||||||
| libinput | builds | udev disabled in recipe; runtime integration still open |
|
| libinput | builds | udev disabled in recipe; runtime integration still open |
|
||||||
@@ -121,7 +121,7 @@ Rules:
|
|||||||
| Input path | no end-to-end proof that evdevd → libinput → compositor is trustworthy |
|
| Input path | no end-to-end proof that evdevd → libinput → compositor is trustworthy |
|
||||||
| Session path | no runtime-trusted seat/session proof for KWin path |
|
| Session path | no runtime-trusted seat/session proof for KWin path |
|
||||||
| Hardware graphics | no hardware-accelerated Wayland proof |
|
| Hardware graphics | no hardware-accelerated Wayland proof |
|
||||||
| KWin truthfulness | build is reduced and partially dependency-honest, but still not a runtime-ready session |
|
| KWin truthfulness | build is reduced and build-verified; runtime gated on QEMUly dependency-honest, but still not a runtime-ready session |
|
||||||
| WIP ownership | upstream WIP recipes and local overlays are mixed; forward path is not always explicit |
|
| WIP ownership | upstream WIP recipes and local overlays are mixed; forward path is not always explicit |
|
||||||
|
|
||||||
## Stability / Completeness Verdict
|
## Stability / Completeness Verdict
|
||||||
@@ -296,7 +296,7 @@ This wave is still a **validation compositor** wave, not a claim that KWin or Pl
|
|||||||
|
|
||||||
- retire old planning authority from historical Wayland docs,
|
- retire old planning authority from historical Wayland docs,
|
||||||
- demote or remove stale historical compositor references from the active guidance path,
|
- demote or remove stale historical compositor references from the active guidance path,
|
||||||
- make the WIP recipe guidance reflect current truth instead of older partial states,
|
- make the WIP recipe guidance reflect current truth instead of older build-verified; runtime gated on QEMU states,
|
||||||
- keep local overlay ownership explicit wherever Red Bear is still the effective shipping owner.
|
- keep local overlay ownership explicit wherever Red Bear is still the effective shipping owner.
|
||||||
|
|
||||||
**Acceptance criteria:**
|
**Acceptance criteria:**
|
||||||
|
|||||||
Reference in New Issue
Block a user