diff --git a/AGENTS.md b/AGENTS.md index 36591a962e..1b637c322a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -360,7 +360,7 @@ After building an image, run `make validate` to verify: For path-fork recipes (`kernel`, `base`, `relibc`, `bootloader`, `installer`, `redoxfs`, `userutils`, `syscall`, `libredox`), the equivalent validation is `git -C local/sources/ log --oneline -3` plus `git -C local/sources/ status`. To rehydrate a fork source tree, remove `recipes/core//source` and rerun `./local/scripts/build-redbear.sh redbear-mini`; `repo cook` recopies from `local/sources/`. -See `local/docs/BUILD-SYSTEM-HARDENING-PLAN.md` for the full plan. +See `local/docs/legacy-obsolete-2026-07-25/BUILD-SYSTEM-HARDENING-PLAN.md` for the full plan. ## ANTI-PATTERNS (THIS PROJECT) @@ -596,7 +596,7 @@ release-bump toolchain: - `check-external-versions.sh` + `bump-graphics-recipes.sh`: external desktop-stack version check + source bumps See `local/scripts/TOOLS.md` for the full tool inventory (15 tools as of -Round 14) and `local/docs/HOOKS.md` for the opt-in git hooks. +Round 14) and `local/docs/legacy-obsolete-2026-07-25/HOOKS.md` for the opt-in git hooks. ### Offline-First By Default @@ -739,7 +739,7 @@ For quirks and driver support specifically: When `local/scripts/verify-patch-content.sh` reports that a patch in `local/patches//` is no longer present in the fork HEAD (orphan), the default action is **NOT** to reapply the patch. Follow -this decision tree instead (per `local/docs/PATCH-PRESERVATION-AUDIT-2026-07-12.md`): +this decision tree instead (per `local/docs/legacy-obsolete-2026-07-25/PATCH-PRESERVATION-AUDIT-2026-07-12.md`): ``` 1. Run 'git -C local/sources/ log --all --oneline -i --grep ' @@ -988,7 +988,7 @@ targets. For PCI interrupt plumbing, IRQ delivery quality, MSI/MSI-X follow-up, low-level controller runtime-proof sequencing, and IOMMU/interrupt-remapping quality, the canonical current plan is: -- `local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` +- `local/docs/legacy-obsolete-2026-07-25/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` Use that file as the execution authority and current robustness judgment for PCI/IRQ work. Higher- level summaries in `README.md`, `docs/README.md`, and this file should stay aligned with its diff --git a/README.md b/README.md index 30c04f2fa2..7af25f0647 100644 --- a/README.md +++ b/README.md @@ -203,20 +203,20 @@ Red Bear OS operates under strict discipline. Full policies: [`local/AGENTS.md`] - [cub Package Manager](local/docs/CUB-PACKAGE-MANAGER.md) — AUR → recipe pipeline, CLI reference, architecture - [tlc File Manager](local/recipes/tui/tlc/README.md) — Pure-Rust Midnight Commander replacement - [D-Bus Integration](local/docs/DBUS-INTEGRATION-PLAN.md) — Session bus architecture -- [IRQ & Low-Level Controllers](local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md) — IRQ delivery, MSI/MSI-X, IOMMU +- [IRQ & Low-Level Controllers](local/docs/legacy-obsolete-2026-07-25/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md) — IRQ delivery, MSI/MSI-X, IOMMU - [Greeter & Login](local/docs/GREETER-LOGIN-IMPLEMENTATION-PLAN.md) — Native greeter, auth daemon, session launch -- [DRM Modernization](local/docs/DRM-MODERNIZATION-EXECUTION-PLAN.md) — DRM/KMS display and render maturity +- [DRM Modernization](local/docs/legacy-obsolete-2026-07-25/DRM-MODERNIZATION-EXECUTION-PLAN.md) — DRM/KMS display and render maturity - [USB Plan](local/docs/USB-IMPLEMENTATION-PLAN.md) — USB stack design and implementation -- [Patch Preservation Audit](local/docs/PATCH-PRESERVATION-AUDIT-2026-07-12.md) — orphan-patch governance, Rounds 1-6 audit results, SUPERSEDED.md log +- [Patch Preservation Audit](local/docs/legacy-obsolete-2026-07-25/PATCH-PRESERVATION-AUDIT-2026-07-12.md) — orphan-patch governance, Rounds 1-6 audit results, SUPERSEDED.md log - [Collision Detection Status](local/docs/COLLISION-DETECTION-STATUS.md) — runtime collision-detection current state -- [Hooks](local/docs/HOOKS.md) — opt-in git hooks (pre-push safety net, etc.) +- [Hooks](local/docs/legacy-obsolete-2026-07-25/HOOKS.md) — opt-in git hooks (pre-push safety net, etc.) - [Build Tools](local/scripts/TOOLS.md) — 15-tool reference (patch-status, sync, verify, collision, release-bump, etc.) - [Fork Push Status](local/docs/fork-push-status/2026-07-12-Round-9-phase-8.3.md) — fork-branch push results + base deadlock (updated Round 9) - [Wi‑Fi Plan](local/docs/WIFI-IMPLEMENTATION-PLAN.md) — Wireless architecture and driver plan - [Bluetooth Plan](local/docs/BLUETOOTH-IMPLEMENTATION-PLAN.md) — Bluetooth stack design - [Build Cache](local/docs/BUILD-CACHE-PLAN.md) — Content-hash (BLAKE3) build cache system -- [Build System Hardening](local/docs/BUILD-SYSTEM-HARDENING-PLAN.md) — Collision detection, init service validation -- [Build System Assessment](local/docs/BUILD-SYSTEM-ASSESSMENT-2026-07-18.md) — Architecture, quality, robustness, and gap assessment (2026-07-18) +- [Build System Hardening](local/docs/legacy-obsolete-2026-07-25/BUILD-SYSTEM-HARDENING-PLAN.md) — Collision detection, init service validation +- [Build System Assessment](local/docs/legacy-obsolete-2026-07-25/BUILD-SYSTEM-ASSESSMENT-2026-07-18.md) — Architecture, quality, robustness, and gap assessment (2026-07-18) - [Quirks System](local/docs/QUIRKS-SYSTEM.md) — Hardware quirks infrastructure - [Documentation Index](docs/README.md) — Full doc map @@ -235,7 +235,7 @@ local/ │ └── (orphan-patch governance: every patch must correspond to work │ present in the matching fork source tree. `verify-patch-content.sh` │ enforces this on every build preflight. See -│ `local/docs/PATCH-PRESERVATION-AUDIT-2026-07-12.md` for the audit +│ `local/docs/legacy-obsolete-2026-07-25/PATCH-PRESERVATION-AUDIT-2026-07-12.md` for the audit │ and AGENTS.md § "Orphan-Patch Supersession Decision Tree" for the │ decision flow when an orphan is detected.) ├── docs/ # Integration and planning documentation diff --git a/docs/07-RED-BEAR-OS-IMPLEMENTATION-PLAN.md b/docs/07-RED-BEAR-OS-IMPLEMENTATION-PLAN.md index 2967960b12..e7709dbf38 100644 --- a/docs/07-RED-BEAR-OS-IMPLEMENTATION-PLAN.md +++ b/docs/07-RED-BEAR-OS-IMPLEMENTATION-PLAN.md @@ -270,7 +270,7 @@ Current state (2026-04-29): Canonical plan: -- `local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` +- `local/docs/legacy-obsolete-2026-07-25/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` Acceptance: @@ -413,7 +413,7 @@ The current subsystem plans to treat as first-class are: - `local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md` — canonical desktop path plan - `local/docs/WAYLAND-IMPLEMENTATION-PLAN.md` — canonical Wayland subsystem plan - `local/docs/GREETER-LOGIN-IMPLEMENTATION-PLAN.md` — canonical greeter/login plan -- `local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` +- `local/docs/legacy-obsolete-2026-07-25/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` - `local/docs/USB-IMPLEMENTATION-PLAN.md` - `local/docs/WIFI-IMPLEMENTATION-PLAN.md` - `local/docs/BLUETOOTH-IMPLEMENTATION-PLAN.md` diff --git a/docs/AGENTS.md b/docs/AGENTS.md index 40343c96bd..39a431278b 100644 --- a/docs/AGENTS.md +++ b/docs/AGENTS.md @@ -13,7 +13,7 @@ For current Red Bear OS status, also read: - `docs/README.md` — canonical docs index + status matrix - `docs/07-RED-BEAR-OS-IMPLEMENTATION-PLAN.md` — canonical public implementation plan - `local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md` — **canonical comprehensive implementation plan** — all current state -- `local/docs/DRM-MODERNIZATION-EXECUTION-PLAN.md` — current DRM-focused execution plan beneath the canonical desktop path +- `local/docs/legacy-obsolete-2026-07-25/DRM-MODERNIZATION-EXECUTION-PLAN.md` — current DRM-focused execution plan beneath the canonical desktop path - `local/docs/SCRIPT-BEHAVIOR-MATRIX.md` — current script guarantees and non-guarantees ## STRUCTURE diff --git a/docs/README.md b/docs/README.md index aec829bc90..a5fe72a7f7 100644 --- a/docs/README.md +++ b/docs/README.md @@ -35,7 +35,7 @@ current/canonical versus historical/reference split obvious. |---|---| | `README.md`, `AGENTS.md`, `docs/README.md`, `docs/07-RED-BEAR-OS-IMPLEMENTATION-PLAN.md` | canonical repository-level policy and current execution model | | `local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md` | **canonical comprehensive implementation plan** — supersedes all individual subsystem docs | -| `local/docs/*IMPLEMENTATION-PLAN*.md`, `local/docs/DRM-MODERNIZATION-EXECUTION-PLAN.md` | subsystem plans for deep-dive detail only; authority chain → console-to-KDE plan | +| `local/docs/*IMPLEMENTATION-PLAN*.md`, `local/docs/legacy-obsolete-2026-07-25/DRM-MODERNIZATION-EXECUTION-PLAN.md` | subsystem plans for deep-dive detail only; authority chain → console-to-KDE plan | | `docs/01-REDOX-ARCHITECTURE.md` | architecture reference | | `docs/04-LINUX-DRIVER-COMPAT.md`, `docs/05-KDE-PLASMA-ON-REDOX.md` | valuable but partly historical roadmap/design material | @@ -64,8 +64,8 @@ console-to-KDE plan. - `../local/docs/WIFI-IMPLEMENTATION-PLAN.md` — Wi-Fi architecture and rollout - `../local/docs/BLUETOOTH-IMPLEMENTATION-PLAN.md` — Bluetooth architecture and rollout - `../local/docs/ACPI-IMPROVEMENT-PLAN.md` — ACPI ownership, robustness, validation -- `../local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` — PCI/IRQ quality, MSI/MSI-X -- `../local/docs/DRM-MODERNIZATION-EXECUTION-PLAN.md` — DRM-focused execution (subsystem detail) +- `../local/docs/legacy-obsolete-2026-07-25/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` — PCI/IRQ quality, MSI/MSI-X +- `../local/docs/legacy-obsolete-2026-07-25/DRM-MODERNIZATION-EXECUTION-PLAN.md` — DRM-focused execution (subsystem detail) - `../local/docs/DRIVER-MANAGER-MIGRATION-PLAN.md` (v4.0, 2026-07-24) — migration from `pcid-spawner` to `driver-manager`. **CUTOVER COMPLETE (2026-07-23, operator-ratified):** driver-manager owns the boot-time PCI match/claim/spawn path in every `redbear-*` config; pcid-spawner is retired from configs and gated behind `/etc/driver-manager.d/disabled` as the operator fallback (never deleted). See `../local/docs/evidence/driver-manager/ASSESSMENT-2026-07-22.md` (major assessment, findings B1–G10 + § 11 services integration). Delivered: claim-via-channel collapse (pcid `ENOLCK` exclusivity — the pcid-spawner model); init `ConditionPathExists` gate (systemd-style, `!` negation); spawned-mode `pci_register_driver` in linux-kpi (honors `PCID_CLIENT_CHANNEL` — single ownership of match-claim-spawn for native and Linux-port daemons); linux-kpi real MSI/MSI-X via pcid_interface + `pci_request_regions` + `pcie_capability_*` + PM state; redbear-iwlwifi `--daemon` onboarding + `70-wifi.toml`; `--import-linux-ids` Linux id_table→TOML pipeline; scheme operator surface (`bind`/`unbind`/`new_id`/`remove_id`/`driver_override`/`rescan`); Tier-1 driver_override; success-triggered deferred retry; concurrent probes with real `Driver::probe()`; real SIGCHLD/SIGHUP handlers; heartbeat counters; AER `route_to_driver`; `exclusive_with` mutual exclusion; `pci=nomsi` env var; PciQuirkFlags spawn env hints + `REDBEAR_DRIVER_{IOMMU_GROUP,NUMA_NODE,MSIX_VECTORS}`; driver-params bridge live; D-Bus correctly absent (bridge-on-demand). Gate: PASSED in QEMU q35 (initfs ahcid bind, rootfs e1000d concurrent bind, scheme live, resident hotplug). Platform finding: `thread::scope` hangs on Redox (spawn+join used instead). Cookbook now hashes Cargo path-dep sources (staleness hole closed). Open: P2-1 pcid AER/pciehp producers, P3 policy/hygiene. 93 tests pass; 0 audit-no-stubs violations; zero crate-local warnings on host and redox target. - `../local/docs/WAYLAND-IMPLEMENTATION-PLAN.md` — Wayland compositor (subsystem detail) - `../local/docs/archived/RELIBC-IPC-ASSESSMENT-AND-IMPROVEMENT-PLAN.md` — relibc IPC surface @@ -109,7 +109,7 @@ This summary is only a quick orientation layer. For canonical current-state deta - **GPU drivers**: redox-drm scheme daemon exists; Intel build-oriented path exists; AMD currently has a bounded retained compile path (`redox-drm` + Red Bear glue) while the imported Linux AMD DC/TTM/core trees remain builds and included in redbear-full (2026-04-29). Hardware validation is still pending. - **Input**: evdevd compiled, libevdev built, libinput 1.30.2 built - **Networking**: native wired stack present (`driver-manager` → NIC daemon → `smolnetd`/`dhcpd`/`netcfg`), Red Bear ships a native `netctl` command, RTL8125 is wired into the existing Realtek autoload path, and the bounded Intel Wi‑Fi path now has host-tested profile start/stop plus interface-specific DHCP handoff without claiming real wireless connectivity. -- **PCI / IRQ quality**: architecturally strong substrate exists, with bounded MSI-X, IOMMU, xHCI IRQ, and low-level-controller proof surfaces; broader hardware robustness is still intentionally tracked as open work in `../local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` +- **PCI / IRQ quality**: architecturally strong substrate exists, with bounded MSI-X, IOMMU, xHCI IRQ, and low-level-controller proof surfaces; broader hardware robustness is still intentionally tracked as open work in `../local/docs/legacy-obsolete-2026-07-25/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` - **Wi-Fi profile target**: `config/redbear-wifi-experimental.toml` is the first explicit tracked image slice for bounded Intel Wi‑Fi validation, instead of spreading that claim across the generic desktop profiles. - **Bluetooth**: one bounded in-tree BLE-first experimental slice exists, and the Battery Level read-only workload now has a packaged in-guest checker plus a host QEMU harness; QEMU validation is still in progress, so broad desktop Bluetooth parity is still incomplete - **Desktop direction**: `redbear-full` carries the desktop-capable target surface; the bounded greeter/login slice now passes, while the wider desktop runtime stack is still incomplete. diff --git a/local/AGENTS.md b/local/AGENTS.md index b4ba4de02b..cc60d13690 100644 --- a/local/AGENTS.md +++ b/local/AGENTS.md @@ -638,7 +638,7 @@ tree per AGENTS.md § "Orphan-Patch Supersession Decision Tree": - 'bump' patches: managed by sync-versions.sh - 'ecosystem-pins': managed by Local Fork Supremacy + AGENTS.md rules -See: `local/docs/PATCH-PRESERVATION-AUDIT-2026-07-12.md` and the +See: `local/docs/legacy-obsolete-2026-07-25/PATCH-PRESERVATION-AUDIT-2026-07-12.md` and the `SUPERSEDED.md` audit log in `local/patches/legacy-superseded-/`. ### Local fork recipe directories must not carry patch files @@ -759,7 +759,7 @@ Bypass: `REDBEAR_NO_AUTO_SYNC=1 git checkout `. Install via **Full runbook** (4-step release model, fork decision tree, bootloader `git replace --graft` note, lockfile-regen sequencing, commit-sequence conventions): `local/docs/RELEASE-BUMP-WORKFLOW.md`. **Tool inventory:** -`local/scripts/TOOLS.md`. **Hook details:** `local/docs/HOOKS.md`. +`local/scripts/TOOLS.md`. **Hook details:** `local/docs/legacy-obsolete-2026-07-25/HOOKS.md`. ### Fork authorship attribution @@ -1412,7 +1412,7 @@ When mainline updates affect our work: - `local/docs/WAYLAND-IMPLEMENTATION-PLAN.md` is the canonical Wayland subsystem plan beneath the desktop path. Use it for Wayland-specific stability, completeness, ownership, and runtime-proof sequencing. -- `local/docs/DRM-MODERNIZATION-EXECUTION-PLAN.md` is the current DRM-focused execution plan beneath +- `local/docs/legacy-obsolete-2026-07-25/DRM-MODERNIZATION-EXECUTION-PLAN.md` is the current DRM-focused execution plan beneath the canonical desktop path. It keeps Intel and AMD at the same evidence bar while separating display/KMS maturity from render/3D maturity. - Older GPU-specific docs such as `local/docs/AMD-FIRST-INTEGRATION.md`, @@ -1428,7 +1428,7 @@ When mainline updates affect our work: including the bounded role of `linux-kpi` and the native wireless control-plane direction. - `local/docs/USB-IMPLEMENTATION-PLAN.md` and `local/docs/BLUETOOTH-IMPLEMENTATION-PLAN.md` should also be treated as first-class subsystem plans, not as side notes. -- `local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` is the current umbrella plan for +- `local/docs/legacy-obsolete-2026-07-25/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` is the current umbrella plan for IRQ delivery, MSI/MSI-X quality, IOMMU validation, and other low-level controller completeness work. - `local/docs/DRIVER-MANAGER-MIGRATION-PLAN.md` (v4.0, 2026-07-24) is the canonical planning authority for the migration from `pcid-spawner` (retired and removed 2026-07-24; @@ -1702,7 +1702,7 @@ Recipes can declare installed paths via `installs = [...]` in `[package]` sectio scripts/generate-installs-manifest.sh base # Output suggested installs for base package ``` -See `local/docs/BUILD-SYSTEM-HARDENING-PLAN.md` for the full 5-phase hardening plan. +See `local/docs/legacy-obsolete-2026-07-25/BUILD-SYSTEM-HARDENING-PLAN.md` for the full 5-phase hardening plan. See `local/docs/BUILD-SYSTEM-INVARIANTS.md` for invariants I1-I3. ## ANTI-PATTERNS diff --git a/local/docs/ACPI-IMPROVEMENT-PLAN.md b/local/docs/ACPI-IMPROVEMENT-PLAN.md index 1748b07fe6..397563024c 100644 --- a/local/docs/ACPI-IMPROVEMENT-PLAN.md +++ b/local/docs/ACPI-IMPROVEMENT-PLAN.md @@ -70,7 +70,7 @@ kernel-ownership decisions are shared. Read these alongside this plan: -- `local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` +- `local/docs/legacy-obsolete-2026-07-25/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` - `local/docs/QUIRKS-SYSTEM.md` - `docs/07-RED-BEAR-OS-IMPLEMENTATION-PLAN.md` diff --git a/local/docs/BUILD-SYSTEM-INVARIANTS.md b/local/docs/BUILD-SYSTEM-INVARIANTS.md index a6f164964c..b436bb8cfb 100644 --- a/local/docs/BUILD-SYSTEM-INVARIANTS.md +++ b/local/docs/BUILD-SYSTEM-INVARIANTS.md @@ -453,4 +453,4 @@ miss. The `/etc/init.d/` path convention is self-enforcing via `config_for_dirs( - `scripts/lint-config-paths.sh` — detects `/usr/lib/init.d/` paths in config files - `make lint-config` — runs the lint as a build step -- Full plan: `local/docs/BUILD-SYSTEM-HARDENING-PLAN.md` +- Full plan: `local/docs/legacy-obsolete-2026-07-25/BUILD-SYSTEM-HARDENING-PLAN.md` diff --git a/local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md b/local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md index 74f7792194..5693bcfb14 100644 --- a/local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md +++ b/local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md @@ -65,7 +65,7 @@ |--------|--------| | **SDDM v0.21.0 marked COMPLETED (build-side)** | Was "In-tree, unwired". Now `sddm` + `pam-redbear` are in `config/redbear-full.toml` `[packages]`, init service `21_sddm.service` is wired via `/etc/init.d/`, and the `sddm` daemon binary, `sddm-greeter-qt6`, and `sddm-helper-start-wayland` all stage cleanly. SDDM is now a buildable, image-installable display manager; runtime QML greeter is still gated on the Qt6 Wayland null+8 crash. | | **Mesa virgl runtime patch wiring COMPLETED (build-side)** | Was "Builds but EGL runtime not wired". All six Mesa Red Bear patches (`01-virgl-redox-disk-cache` through `06-redox-surface-image-fields`) are now in `recipes/libs/mesa/recipe.toml` `patches=[...]`. The `06-redox-surface-image-fields.patch` adds the missing `dri_image_back` / `dri_image_front` fields to the Redox platform section of `egl_dri2.h` so the EGL platform probe can attach GBM-backed images. `virtio_gpu_dri.so` is staged. Runtime EGL probe selection is the remaining gap. | -| **uutils nix-0.30.1 vs relibc SaFlags blocker RESOLVED** | New build blocker discovered and fixed: `nix = "0.30.1"` pinned by uutils' `Cargo.lock` was incompatible with relibc's `sa_flags: c_int` (i32) at `nix-0.30.1/src/sys/signal.rs:809,819`. Fixed by bumping workspace `libc` from `0.2.182` to `0.2.186` in `recipes/core/uutils/redox.patch`. `repo cook uutils` now succeeds. See `local/docs/BUILD-SYSTEM-HARDENING-PLAN.md` Phase 7. | +| **uutils nix-0.30.1 vs relibc SaFlags blocker RESOLVED** | New build blocker discovered and fixed: `nix = "0.30.1"` pinned by uutils' `Cargo.lock` was incompatible with relibc's `sa_flags: c_int` (i32) at `nix-0.30.1/src/sys/signal.rs:809,819`. Fixed by bumping workspace `libc` from `0.2.182` to `0.2.186` in `recipes/core/uutils/redox.patch`. `repo cook uutils` now succeeds. See `local/docs/legacy-obsolete-2026-07-25/BUILD-SYSTEM-HARDENING-PLAN.md` Phase 7. | ### What Changed in v5.0 (2026-06-20) @@ -624,7 +624,7 @@ the wider column. Other rows show ` 1 ...` (no symbol). #### v1.0 Comprehensive Quality Release (2026-06-20) -Full multi-phase implementation per `local/docs/redbear-power-improvement-plan.md` +Full multi-phase implementation per `local/docs/legacy-obsolete-2026-07-25/redbear-power-improvement-plan.md` (Phases A → D, all deferred items implemented). **+1248 lines** added (1396 → 2644 LoC) across **9 modules**. @@ -680,7 +680,7 @@ local/recipes/system/redbear-power/source/src/ ``` **Cross-references**: -- `local/docs/redbear-power-improvement-plan.md` — original Phase A-D plan +- `local/docs/legacy-obsolete-2026-07-25/redbear-power-improvement-plan.md` — original Phase A-D plan - `local/docs/RATATUI-APP-PATTERNS.md` §13 — ratatui 0.30 best practices **Build**: `cook redbear-power - successful`, 0 warnings, 0 errors. diff --git a/local/docs/DRIVER-MANAGER-MIGRATION-PLAN.md b/local/docs/DRIVER-MANAGER-MIGRATION-PLAN.md index 6531dc269a..8b8d8690f6 100644 --- a/local/docs/DRIVER-MANAGER-MIGRATION-PLAN.md +++ b/local/docs/DRIVER-MANAGER-MIGRATION-PLAN.md @@ -76,7 +76,7 @@ discovered gaps, removes stale text, and adds a v5.x work program. ### Boot race conditions (v4.8/v4.9) -Documented in companion doc `local/docs/INITNSMGR-CONCURRENCY-DESIGN.md` § +Documented in companion doc `local/docs/legacy-obsolete-2026-07-25/INITNSMGR-CONCURRENCY-DESIGN.md` § "Problem restated (precisely)" and `local/docs/SYSTEM-STABILITY-AND-UPSTREAM-SYNC-PLAN.md` § "Stall-on-openat". The race surfaces at boot-time provider daemons (e.g. ahcid, xhcid, redox-drm) when initnsmgr's single-threaded event loop @@ -346,7 +346,7 @@ regression test in `local/recipes/system/driver-manager/source/src/config.rs:84` | iwlwifi Cargo.toml | `local/recipes/drivers/redbear-iwlwifi/source/Cargo.toml` (pcid_interface dep + patch.crates-io) | (pending commit) | | iwlwifi main.rs | `local/recipes/drivers/redbear-iwlwifi/source/src/main.rs` (DaemonSource, select_daemon_source, bdf_from_channel, daemon_target_from_env rewrite) | (pending commit) | | iwlwifi integration tests | `local/recipes/drivers/redbear-iwlwifi/source/tests/cli_flow.rs` (--daemon-target tests) | (pending commit) | -| Companion docs | `local/docs/INITNSMGR-CONCURRENCY-DESIGN.md`, `local/docs/INIT-NAMESPACE-MANAGER-SCALABILITY-PLAN.md`, `local/docs/SYSTEM-STABILITY-AND-UPSTREAM-SYNC-PLAN.md` | (existing) | +| Companion docs | `local/docs/legacy-obsolete-2026-07-25/INITNSMGR-CONCURRENCY-DESIGN.md`, `local/docs/INIT-NAMESPACE-MANAGER-SCALABILITY-PLAN.md`, `local/docs/SYSTEM-STABILITY-AND-UPSTREAM-SYNC-PLAN.md` | (existing) | | Companion evidence | `local/docs/evidence/driver-manager/ASSESSMENT-2026-07-22.md`, `local/docs/evidence/driver-manager/D5-AUDIT.md` | (existing) | | Driver match tables | `local/config/drivers.d/*.toml` (9 files) | (existing) | | Policy package | `local/recipes/system/redbear-driver-policy/source/policy/` | (existing) | @@ -1038,7 +1038,7 @@ driver spawner:** `local/docs/WIFI-IMPLEMENTATION-PLAN.md`). - USB hotplug (per `local/docs/USB-IMPLEMENTATION-PLAN.md`) needs the manager's hotplug surface. -- AER recovery (per `local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md`) +- AER recovery (per `local/docs/legacy-obsolete-2026-07-25/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md`) needs the manager's `Driver::on_error` surface. ### 0.2 Success criteria (definition of done) @@ -1385,7 +1385,7 @@ operator ratification. **No exceptions.** replacement for pcid-spawner but is not yet ready (driver config migration pending) and was previously packaged-but-unused — its service launched pcid-spawner instead of driver-manager."* -- Cross-references: `local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` +- Cross-references: `local/docs/legacy-obsolete-2026-07-25/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` (where pcid-spawner hardening currently lives), `local/docs/QUIRKS-SYSTEM.md` + `QUIRKS-IMPROVEMENT-PLAN.md` (where the driver-manager→redox-driver-sys quirks bridge is planned), @@ -1833,9 +1833,9 @@ fallback). No retroactive changes to `daemon::Daemon::spawn`, ### Out-of-scope (deferred to OTHER plans) - USB / ACPI / platform buses → `local/docs/USB-IMPLEMENTATION-PLAN.md`, `local/docs/ACPI-IMPROVEMENT-PLAN.md` -- GPU render / DRM completion → `local/docs/DRM-MODERNIZATION-EXECUTION-PLAN.md` +- GPU render / DRM completion → `local/docs/legacy-obsolete-2026-07-25/DRM-MODERNIZATION-EXECUTION-PLAN.md` - Wi-Fi / Bluetooth → `local/docs/WIFI-IMPLEMENTATION-PLAN.md`, `BLUETOOTH-IMPLEMENTATION-PLAN.md` -- IRQ / MSI-X quality → `local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` +- IRQ / MSI-X quality → `local/docs/legacy-obsolete-2026-07-25/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` - IOMMU runtime proof → still QEMU-only per HardWARE matrix - Replacement of `pcid` (the scheme:pci owner) — far future, no decision today @@ -2195,7 +2195,7 @@ update. - pcid-spawner source tree receives a final commit on `submodule/base` documenting the maintenance-mode status. -- `local/docs/UPSTREAM-SYNC-PROCEDURE.md` § "driver-manager: Deferred" +- `local/docs/legacy-obsolete-2026-07-25/UPSTREAM-SYNC-PROCEDURE.md` § "driver-manager: Deferred" replaced with "driver-manager: production". - README.md status row updates. - `local/AGENTS.md` § PLANNING NOTES pointer updates. @@ -2261,7 +2261,7 @@ development constraint: - C4: Operator-ratified production cutover The workstream structure deliberately mirrors `local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md` -(Phase 1–5) and `local/docs/DRM-MODERNIZATION-EXECUTION-PLAN.md` (Workstream A–E) +(Phase 1–5) and `local/docs/legacy-obsolete-2026-07-25/DRM-MODERNIZATION-EXECUTION-PLAN.md` (Workstream A–E) to keep the project's planning grammar consistent. --- @@ -2297,7 +2297,7 @@ table that triggers `redox-drm` (`30-graphics.toml` already in `config/redbear-device-services.toml`) is consumed by driver-manager; no driver side changes. The `redox-driver-sys::PciQuirkFlags` policy is consulted in **D4** (`NEED_FIRMWARE`, `DISABLE_ACCEL`, `NO_MSIX`). AMD-specific decisions live in -`local/docs/DRM-MODERNIZATION-EXECUTION-PLAN.md` — the present plan does not +`local/docs/legacy-obsolete-2026-07-25/DRM-MODERNIZATION-EXECUTION-PLAN.md` — the present plan does not re-open those decisions, it only carries them into the manager's match-time decision logic. @@ -2342,7 +2342,7 @@ After **C3**: "🟡 | in progress" to "🟡 | driver-manager parity accepted". - `local/docs/PATCH-GOVERNANCE.md` § "Local recipe priority vs upstream WIP" notes that `local/recipes/system/driver-manager` is the canonical owner. -- `local/docs/UPSTREAM-SYNC-PROCEDURE.md` § "driver-manager: Deferred" +- `local/docs/legacy-obsolete-2026-07-25/UPSTREAM-SYNC-PROCEDURE.md` § "driver-manager: Deferred" replaced with "driver-manager: live (`00_driver-manager.service`)". After **C4** (production cutover): @@ -2351,7 +2351,7 @@ After **C4** (production cutover): - `config/redbear-mini.toml:31` and `config/redbear-device-services.toml:9-13` inline deferred comments are removed (no longer accurate once driver-manager is live). -- `local/docs/UPSTREAM-SYNC-PROCEDURE.md` § "driver-manager: Deferred" +- `local/docs/legacy-obsolete-2026-07-25/UPSTREAM-SYNC-PROCEDURE.md` § "driver-manager: Deferred" replaced with "driver-manager: production". ### 8.7 Branch / submodule policy @@ -2406,7 +2406,7 @@ config/redbear-grub.toml (C0: same) config/redbear-greeter-services.toml (C0: same) config/redbear-device-services.toml (C0 + D4: driver-manager config inclusion) -local/docs/UPSTREAM-SYNC-PROCEDURE.md (§ driver-manager: Deferred -> live at C3; -> production at C4) +local/docs/legacy-obsolete-2026-07-25/UPSTREAM-SYNC-PROCEDURE.md (§ driver-manager: Deferred -> live at C3; -> production at C4) local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md (Phase 1 row update at C3) local/docs/HARDWARE-VALIDATION-MATRIX.md (multiple rows updated at D5) README.md (status row at C4) @@ -2572,14 +2572,14 @@ Phase boundaries without explicit operator ratification are not allowed to advan - `local/AGENTS.md` — policy authority - `local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md` — supersedes for desktop path -- `local/docs/DRM-MODERNIZATION-EXECUTION-PLAN.md` — GPU-specific decisions -- `local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` — PCI/IRQ quality +- `local/docs/legacy-obsolete-2026-07-25/DRM-MODERNIZATION-EXECUTION-PLAN.md` — GPU-specific decisions +- `local/docs/legacy-obsolete-2026-07-25/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` — PCI/IRQ quality - `local/docs/USB-IMPLEMENTATION-PLAN.md` — USB bus (out of scope here) - `local/docs/WIFI-IMPLEMENTATION-PLAN.md` — Wi-Fi bus (out of scope here) - `local/docs/QUIRKS-SYSTEM.md` — `redox-driver-sys` quirks surface - `local/docs/QUIRKS-IMPROVEMENT-PLAN.md` — Task 2.1 driver-manager bridge - `local/docs/HARDWARE-VALIDATION-MATRIX.md` — status of driver runs -- `local/docs/UPSTREAM-SYNC-PROCEDURE.md` — historical status note to update +- `local/docs/legacy-obsolete-2026-07-25/UPSTREAM-SYNC-PROCEDURE.md` — historical status note to update - `local/docs/PATCH-GOVERNANCE.md` — patch carrier rules - `local/docs/RELEASE-BUMP-WORKFLOW.md` — version sync - `local/scripts/TOOLS.md` — tool inventory diff --git a/local/docs/HARDWARE-VALIDATION-MATRIX.md b/local/docs/HARDWARE-VALIDATION-MATRIX.md index 512a4d8e08..792c467d52 100644 --- a/local/docs/HARDWARE-VALIDATION-MATRIX.md +++ b/local/docs/HARDWARE-VALIDATION-MATRIX.md @@ -54,7 +54,7 @@ - The login-based QEMU proofs (PS/2 + serio, monotonic timer, IOMMU first-use, USB storage BOT) now run through `local/scripts/qemu-login-expect.py` (stdlib python) instead of the host `expect` tool — no external dependency, per-step timeouts, and safe retry on premature QEMU - death. See `local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` § "Runtime proof + death. See `local/docs/legacy-obsolete-2026-07-25/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` § "Runtime proof status (2026-07-20)". - MSI-X (virtio-net) and xHCI interrupt-driven mode were re-confirmed on the current `redbear-mini` ISO — once more on 2026-07-20 ~09:10 JST via `test-lowlevel-controllers-qemu.sh` diff --git a/local/docs/INIT-NAMESPACE-MANAGER-SCALABILITY-PLAN.md b/local/docs/INIT-NAMESPACE-MANAGER-SCALABILITY-PLAN.md index 0d134aa3dd..4194251023 100644 --- a/local/docs/INIT-NAMESPACE-MANAGER-SCALABILITY-PLAN.md +++ b/local/docs/INIT-NAMESPACE-MANAGER-SCALABILITY-PLAN.md @@ -211,5 +211,5 @@ evaluation (bounded to seconds, not infinite), which is the tail this rewrite wo ## Related - `local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md` — canonical desktop path; console/login is its floor. -- `local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` — acpid/ACPI robustness context. +- `local/docs/legacy-obsolete-2026-07-25/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` — acpid/ACPI robustness context. - Memory: `mini-login-acpid-mutex-rootcause`, `fbcond-handoff-console-wedge`. diff --git a/local/docs/KERNEL-IPC-CREDENTIAL-PLAN.md b/local/docs/KERNEL-IPC-CREDENTIAL-PLAN.md index bcfef0523e..2bb8e74bb4 100644 --- a/local/docs/KERNEL-IPC-CREDENTIAL-PLAN.md +++ b/local/docs/KERNEL-IPC-CREDENTIAL-PLAN.md @@ -740,7 +740,7 @@ local/scripts/test-credential-syscalls-guest.sh # In-guest checker - `local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md` — Canonical comprehensive plan - `docs/01-REDOX-ARCHITECTURE.md` — Architecture reference -- `local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` — IRQ/PCI plan (sibling) +- `local/docs/legacy-obsolete-2026-07-25/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` — IRQ/PCI plan (sibling) - `local/docs/archived/RELIBC-IPC-ASSESSMENT-AND-IMPROVEMENT-PLAN.md` — IPC surface plan (companion) - `local/docs/ACPI-IMPROVEMENT-PLAN.md` — ACPI/shutdown plan (sibling) - `local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md` — Desktop path plan (consumer) diff --git a/local/docs/LG-GRAM-16Z90TP-COMPATIBILITY-PLAN.md b/local/docs/LG-GRAM-16Z90TP-COMPATIBILITY-PLAN.md index be2196487a..1c4bdc21a6 100644 --- a/local/docs/LG-GRAM-16Z90TP-COMPATIBILITY-PLAN.md +++ b/local/docs/LG-GRAM-16Z90TP-COMPATIBILITY-PLAN.md @@ -1,7 +1,7 @@ # LG Gram 16Z90TP-G.AL89C — Host Compatibility Plan **Created:** 2026-07-20 -**Status:** Implementation in progress — Phases 0, 3.2, 3.4, 3.5, 3.6, 4.1–4.4, 5.0–5.5, 6.1, 9.6 complete; Phase 9.1 partial +**Status:** Implementation in progress — Phases 0, 3.2, 3.4, 3.5, 3.6, 4.1–4.4, 5.0–5.5, 6.1, 9.6 complete; Phase 9.1 partial. **Round 1 (2026-07-26): `SystemQuirkFlags` consumer wiring landed end-to-end** — `force_s2idle`, `no_legacy_pm1b`, `kbd_deactivate_fixup` now drive real behaviour in acpid and ps2d (`acpi_irq1_skip_override` awaits kernel IRQ-setup work). `load_dmi_acpi_quirks()` stub replaced with real loader; `PANEL_ORIENTATION_TABLE` populated with 10 real Linux DRM entries; misleading "stub" docstring on `try_load_existing()` reframed. See `local/docs/evidence/lg-gram/ASSESSMENT-2026-07-26.md`. **Source evidence:** Host dmesg (Linux 7.1.3-1-MANJARO), six-point codebase recon (drivers/PCI-ID inventory, redox-drm Intel state, redbear-iwlwifi state, IOMMU/kernel state, ACPI/power state, USB/input/audio state) @@ -178,7 +178,7 @@ Effort scale: S (<1 week) · M (1–3 weeks) · L (3–8 weeks) · XL (8+ weeks) | # | Work item | Files | Notes | |---|---|---|---| | 0.1 | **Fix e1000d wildcard collision** — add `subclass = 0x00` to e1000d match | `local/config/drivers.d/10-network.toml` + embedded copy in `config/redbear-device-services.toml` | ✅ DONE — same defect class also fixed for `rtl8168d` (Realtek ships subclass-0x80 Wi-Fi too) | -| 0.2 | Add DMI quirk-table entry for `LG Electronics 16Z90TP` | `redbear-quirks/source/quirks.d/50-system.toml` | ✅ DONE — **and repaired the system-quirk *parsing* pipeline**: the sibling LG entries' flags (`force_s2idle` etc.) silently parsed to empty sets (unknown names dropped). Added `SystemQuirkFlags` + `DmiSystemQuirkRule` + dual-namespace parsing in `toml_loader.rs` + `quirks::system_quirks()` consumer API in redox-driver-sys. **Consumer wiring (acpid `force_s2idle`, ps2d `kbd_deactivate_fixup`) remains Phase 5 work — the flags parse and are queryable but nothing branches on them yet.** 16Z90TP entry matches on `board_name = "16Z90TP"` (exact-match semantics; product_name carries the SKU suffix) | +| 0.2 | Add DMI quirk-table entry for `LG Electronics 16Z90TP` | `redbear-quirks/source/quirks.d/50-system.toml` | ✅ DONE — **and repaired the system-quirk *parsing* pipeline**: the sibling LG entries' flags (`force_s2idle` etc.) silently parsed to empty sets (unknown names dropped). Added `SystemQuirkFlags` + `DmiSystemQuirkRule` + dual-namespace parsing in `toml_loader.rs` + `quirks::system_quirks()` consumer API in redox-driver-sys. **Round 1 (2026-07-26): consumer wiring landed.** `force_s2idle` and `no_legacy_pm1b` are now read by acpid at init via `AcpiContext::system_quirks()`; `force_s2idle` routes S3 entry to s2idle in `set_global_s_state(3)` (Modern Standby-only platforms that advertise `\_S3` but refuse the SLP_TYP write); `no_legacy_pm1b` skips the PM1b write in `set_global_s_state(*)` even when the FADT reports a non-zero `pm1b_control_block`. `kbd_deactivate_fixup` is now read by ps2d at init via `redox_driver_sys::quirks::system_quirks()` and skips `SetDefaultsDisable` (0xF5) during keyboard init. `acpi_irq1_skip_override` remains unwired — needs kernel IRQ-setup work (out of scope for Round 1). 16Z90TP entry matches on `board_name = "16Z90TP"` (exact-match semantics; product_name carries the SKU suffix) | | 0.3 | Verify/port xHCI quirks for 8086:7ec0 & 8086:777d — decode Linux `0x200009810` | `redox-driver-sys/source/src/quirks/xhci_table.rs` | ✅ DONE — decoded as `SPURIOUS_SUCCESS \| LPM_SUPPORT \| INTEL_HOST \| AVOID_BEI \| DEFAULT_PM_RUNTIME_ALLOW`. Missing piece was the **universal `hci_version > 0x96 → SPURIOUS_SUCCESS`** rule (Linux `xhci.c:5477`); added it + a flag-parity test pinning the LG Gram controllers to the exact Linux flag set. The `>= 0x120 → DEFAULT_PM_RUNTIME_ALLOW` rule already existed | | 0.4 | Confirm graphics spawn priority: redox-drm wins over ihdgd for 0x7D51 | `drivers.d/30-graphics.toml`, `pcid.d/intel_gpu.toml`, `redbear-{mini,full}.toml` | ✅ VERIFIED CORRECT — redox-drm Intel entry priority 61 > vesad 60; redbear-mini empties `/etc/pcid.d/ihdgd.toml`; redbear-full overrides it to spawn redox-drm; `/etc/pcid.d` overrides `/usr/lib/pcid.d` via `config_for_dirs()` BTreeMap; base package stages into `/usr/lib/pcid.d` so no layer collision. No change needed | | 0.5 | Stage firmware blobs | `local/firmware/`, `redbear-iwlwifi/main.rs`, `redbear-wifictl/backend.rs`, `firmware-loader/blob.rs`, `redbear-device-services.toml` | ✅ DONE — staged host-verified blobs (iwlwifi bz-b0-fm-c0 **c101/c102/c103/c106** + pnvm, gf-a0 set, i915/mtl_dmc.bin + guc/huc/gsc, ibt-0093-0291.sfi/.ddc). **Key discovery:** the `c`-prefixed series is the iwlmld firmware — candidate tables rewritten to prefer c106→c101 over the legacy 92–101 series. **Fixed firmware path gap:** new linux-firmware ships iwlwifi under `intel/iwlwifi/`; added wildcard path-map to firmware-loader builtins + `/etc/firmware-fallbacks.d/10-iwlwifi.toml`. Image path confirmed: `redbear-firmware` recipe ships the full set (cache has c106) | @@ -255,7 +255,7 @@ thermal throttling engages and recovers under sustained load. ### PHASE 3 — Display: VESA → DRM/KMS on Meteor Lake (L, critical path for desktop) -Follows `local/docs/DRM-MODERNIZATION-EXECUTION-PLAN.md` Workstream C. +Follows `local/docs/legacy-obsolete-2026-07-25/DRM-MODERNIZATION-EXECUTION-PLAN.md` Workstream C. | # | Work item | Files | Effort | |---|---|---|---| diff --git a/local/docs/NETWORKING-IMPROVEMENT-PLAN.md b/local/docs/NETWORKING-IMPROVEMENT-PLAN.md index 92b543d46e..4ea9a76b46 100644 --- a/local/docs/NETWORKING-IMPROVEMENT-PLAN.md +++ b/local/docs/NETWORKING-IMPROVEMENT-PLAN.md @@ -37,7 +37,7 @@ Companion plans that share authority over networking-adjacent surfaces: - `local/docs/WIFI-IMPLEMENTATION-PLAN.md` — canonical for the Wi-Fi control plane, Intel transport, `redbear-iwlwifi`, `linux-kpi` wireless layer, and `redbear-wifictl`. -- `local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` — canonical for the PCI +- `local/docs/legacy-obsolete-2026-07-25/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` — canonical for the PCI interrupt plumbing, MSI/MSI-X delivery, and IOMMU work that NIC drivers depend on. - `local/docs/BLUETOOTH-IMPLEMENTATION-PLAN.md` — canonical for the Bluetooth stack. @@ -310,7 +310,7 @@ All upstream commits have been verified present in local forks. Key commit statu | libredox | `b99b204` (+rb0.3.1) | `bedf012` | 2 commits (fcntl function) | All forks intentionally kept at `+rb0.3.1` with Red Bear-specific changes applied. -See `local/docs/UPSTREAM-SYNC-PROCEDURE.md` for sync procedure. +See `local/docs/legacy-obsolete-2026-07-25/UPSTREAM-SYNC-PROCEDURE.md` for sync procedure. Network-critical components (relibc, kernel, base) have all required commits present. --- diff --git a/local/docs/PACKAGE-BUILD-QUIRKS.md b/local/docs/PACKAGE-BUILD-QUIRKS.md index f68c40ec6e..7f2ea33f2a 100644 --- a/local/docs/PACKAGE-BUILD-QUIRKS.md +++ b/local/docs/PACKAGE-BUILD-QUIRKS.md @@ -1172,7 +1172,7 @@ fn kcall(&self, fds: &[usize], payload: UserSliceRw, flags: CallFlags, | Document | Relevance | |----------|-----------| -| `local/docs/UPSTREAM-SYNC-PROCEDURE.md` | Per-package sync notes include build quirks | +| `local/docs/legacy-obsolete-2026-07-25/UPSTREAM-SYNC-PROCEDURE.md` | Per-package sync notes include build quirks | | `AGENTS.md` | Project-level build commands and conventions | | `local/AGENTS.md` | Local fork model, recipe structure | | `src/cook/script.rs` | `DYNAMIC_INIT`, `reexport_flags`, `cookbook_cmake` definitions | diff --git a/local/docs/QUIRKS-AUDIT.md b/local/docs/QUIRKS-AUDIT.md index 79103e7ebf..0db6edb95e 100644 --- a/local/docs/QUIRKS-AUDIT.md +++ b/local/docs/QUIRKS-AUDIT.md @@ -100,11 +100,11 @@ These are **defined in the type system** but the function body returns | `lookup_pci_quirks_full` | `quirks/mod.rs:541` | Returns `PciQuirkLookup { flags, actions: vec![] }` — `actions` is always empty. The `QuirkAction` enum (`WriteConfigByte`, `AndOrMask`, `NamedCallback`, etc.) is fully designed but never populated. | | ~~`lookup_xhci_controller_quirks_full`~~ | `quirks/mod.rs` | **RESOLVED 2026-07-18 (P2-A).** Real implementation iterating `XHCI_QUIRK_TABLE` (~85 entries in `xhci_table.rs`) with vendor/device/revision/hci_version matching. The type is now 51 flags (Linux 7.1 `xhci.h:1587-1649` parity), consumed by xhcid via a thin re-export shim. | | `lookup_hid_quirks` | `quirks/mod.rs:585` | Stub — returns `HidQuirkFlags::empty()`. The 5-flag type is fully defined. | -| `load_dmi_acpi_quirks` | `quirks/dmi.rs:485` | Stub — returns `AcpiQuirkFlags::empty()`. The 16-flag type is fully defined. | -| `load_platform_dmi_quirks` | `quirks/dmi.rs:434` | Stub — returns empty. The `PlatformDmiQuirkRule` type with `PlatformSubsystem { Acpi, Pci, Drm }` is fully defined. `PLATFORM_RULES` table is empty. | -| `load_drm_panel_orientation` | `quirks/dmi.rs` | `PANEL_ORIENTATION_TABLE` is empty — `DrmPanelOrientation::Normal` is always returned. | +| ~~`load_dmi_acpi_quirks`~~ | `quirks/dmi.rs` | **RESOLVED 2026-07-26 (LG Gram Round 1).** Real loader: walks compiled-in `DMI_ACPI_QUIRK_RULES` (currently empty — documented why) + new `[[dmi_acpi_quirk]]` TOML parser in `toml_loader.rs` with full `ACPI_FLAG_NAMES` mapping (16 flags). Layered pattern matches `load_dmi_pci_quirks`. | +| ~~`load_platform_dmi_quirks`~~ | `quirks/dmi.rs` | **RESOLVED 2026-07-26 (LG Gram Round 1).** The function body was already real (walks `PLATFORM_RULES` and returns matches honestly). Round 1 added documentation explaining why the table is empty: Linux's platform-wide DMI quirks (ACPI _OSI disable lists, NVS skips) are dominated by pre-2020 platform workarounds; modern Red Bear targets do not need them. Subsystem-specific DMI quirks live in their own tables. | +| ~~`load_drm_panel_orientation`~~ | `quirks/dmi.rs` | **RESOLVED 2026-07-26 (LG Gram Round 1).** `PANEL_ORIENTATION_TABLE` populated with 10 real entries ported from Linux 7.x `drivers/gpu/drm/drm_panel_orientation.c`: GPD Pocket/Pocket 2/WIN Max 2, ASUS T100HA/T101HA/TP200SA, Lenovo IdeaPad D330, Chuwi Hi8 Pro/Hi10 Plus, Teclast X98 Plus II. Each entry cites its Linux source commit. | -None of these (except the resolved xHCI entry) are called from anywhere in the source tree at this time. +None of these (except the resolved xHCI, ACPI, platform-rules, and panel-orientation entries) are called from anywhere in the source tree at this time. ## Flags with broken TOML mappings — RESOLVED (2026-07-18) diff --git a/local/docs/RATATUI-APP-PATTERNS.md b/local/docs/RATATUI-APP-PATTERNS.md index a9ba5dfbc7..61d9e4bde8 100644 --- a/local/docs/RATATUI-APP-PATTERNS.md +++ b/local/docs/RATATUI-APP-PATTERNS.md @@ -8,7 +8,7 @@ **Cross-references:** - `local/recipes/system/redbear-power/` (production ratatui 0.30 consumer, 13,091 LoC, 27 modules, 217 tests) - `local/recipes/tui/tlc/` (46k+ LoC TUI file manager, ratatui 0.29) -- `local/docs/redbear-power-improvement-plan.md` (improvement roadmap) +- `local/docs/legacy-obsolete-2026-07-25/redbear-power-improvement-plan.md` (improvement roadmap) - `local/docs/bottom-vs-redbear-power-assessment.md` (bottom comparison assessment) --- @@ -1595,7 +1595,7 @@ my-tui-app/ - `local/recipes/system/redbear-power/source/src/` — reference implementation (v1.44+, 13,091 LoC, 27 modules, 217 tests) - `local/recipes/tui/tlc/source/src/` — 46k+ LoC production TUI - `local/recipes/tui/redbear-tui-theme/` — shared theme constants -- `local/docs/redbear-power-improvement-plan.md` — improvement roadmap +- `local/docs/legacy-obsolete-2026-07-25/redbear-power-improvement-plan.md` — improvement roadmap - `local/docs/bottom-vs-redbear-power-assessment.md` — bottom comparison and borrow analysis - `local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md` — desktop stack planning - https://ratatui.rs/ — official docs diff --git a/local/docs/RELEASE-BUMP-WORKFLOW.md b/local/docs/RELEASE-BUMP-WORKFLOW.md index 179171aac6..17a28577d3 100644 --- a/local/docs/RELEASE-BUMP-WORKFLOW.md +++ b/local/docs/RELEASE-BUMP-WORKFLOW.md @@ -64,7 +64,7 @@ the *checkout*, not on the branch creation. When the operator checks out the new release branch, two things can happen: **A. If the post-checkout hook is installed** (opt-in; see -`local/docs/HOOKS.md`): +`local/docs/legacy-obsolete-2026-07-25/HOOKS.md`): ```bash git checkout 0.3.2 @@ -320,7 +320,7 @@ it has no behaviour in sealed mode. | Local fork dependency rule (path deps, no version strings) | `local/AGENTS.md` § "Local fork dependency rule" | | Branch and submodule policy (operator-only branches) | `local/AGENTS.md` § "BRANCH AND SUBMODULE POLICY" | | Tool inventory + modes | `local/scripts/TOOLS.md` | -| Hook install / bypass / inventory | `local/docs/HOOKS.md` | +| Hook install / bypass / inventory | `local/docs/legacy-obsolete-2026-07-25/HOOKS.md` | | Fork → upstream tag/mode map | `local/fork-upstream-map.toml` | | External desktop-stack version map | `local/external-upstream-map.toml` | | Post-checkout hook source | `local/scripts/post-checkout-version-sync.sh` | diff --git a/local/docs/USB-IMPLEMENTATION-PLAN.md b/local/docs/USB-IMPLEMENTATION-PLAN.md index c5adeb9dd7..80acb8a2c3 100644 --- a/local/docs/USB-IMPLEMENTATION-PLAN.md +++ b/local/docs/USB-IMPLEMENTATION-PLAN.md @@ -892,7 +892,7 @@ For all of these: when implementation detail is unclear, **port line-by-line fro - `v1` — initial draft (pre-fork era; now superseded by this live plan) - `local/docs/USB-IMPLEMENTATION-PLAN.md` — v2 lineage and current live roadmap (archived copy restored here) -- `local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` — IRQ/MSI-X quality surface that P2-A depends on +- `local/docs/legacy-obsolete-2026-07-25/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` — IRQ/MSI-X quality surface that P2-A depends on - `local/docs/WIFI-IMPLEMENTATION-PLAN.md` — Wi-Fi subsystem plan; sibling first-class-citizen effort - `local/docs/BLUETOOTH-IMPLEMENTATION-PLAN.md` — Bluetooth plan; uses `redbear-btusb` (USB Bluetooth transport) - `local/reference/linux-7.1/drivers/usb/` — Linux 7.1 reference (the implementation of excellence) diff --git a/local/docs/evidence/lg-gram/ASSESSMENT-2026-07-26.md b/local/docs/evidence/lg-gram/ASSESSMENT-2026-07-26.md new file mode 100644 index 0000000000..d0bac71be8 --- /dev/null +++ b/local/docs/evidence/lg-gram/ASSESSMENT-2026-07-26.md @@ -0,0 +1,123 @@ +# LG Gram 16Z90TP-G.AL89C — Compatibility Assessment (2026-07-26) + +**Round:** 1 of N +**Scope:** Audit existing implementation vs `LG-GRAM-16Z90TP-COMPATIBILITY-PLAN.md`, replace stubs with real implementations, wire `SystemQuirkFlags` consumers in acpid + ps2d. +**Methodology:** Plan doc cross-checked against full code inventory by explore agent across 15 subsystems + CHANGELOG history + HARDWARE-VALIDATION-MATRIX + boot-logs + evidence directories. + +--- + +## Round 1 deliverables (landed 2026-07-26) + +### Consumer wiring (the headline task) + +| Flag | Consumer | Behaviour change | Status | +|---|---|---|---| +| `FORCE_S2IDLE` | `acpid::AcpiContext::set_global_s_state(3)` | S3 entry routes to `enter_s2idle()` instead. Modern Standby-only platforms (LG Gram 16Z90TP, Framework 16, late Dell XPS) advertise `\_S3` in DSDT but the firmware refuses the SLP_TYP write — machine hangs or silently no-ops. | ✅ Wired | +| `NO_LEGACY_PM1B` | `acpid::AcpiContext::set_global_s_state(*)` | Skips the PM1b write even when FADT reports a non-zero `pm1b_control_block`. LG firmware reports a PM1b block that does not exist on the platform; writes wedge the controller. Belt-and-braces alongside the existing FADT `port_b == 0` check. | ✅ Wired | +| `KBD_DEACTIVATE_FIXUP` | `ps2d::Ps2::init(...)` | Skips `SetDefaultsDisable` (0xF5) during keyboard init. LG Gram + some Dell/HP/Lenovo keyboards wedge or drop keys when 0xF5 is sent (Linux `atkbd.c` `keyboard_broken[]` / `atkbd_deactivate_input` tables). | ✅ Wired | +| `ACPI_IRQ1_SKIP_OVERRIDE` | (kernel IRQ setup) | Keep the DSDT's ActiveLow trigger for IRQ1; do not apply the default ActiveHigh resource override. Needs kernel ACPI MADT/int_src_ovr parsing changes — out of scope for Round 1. | 🟡 Documented, deferred | + +### Stub replacements (per project zero-tolerance policy) + +| Stub | File:Line (pre-Round 1) | Resolution | +|---|---|---| +| `load_dmi_acpi_quirks()` returned hardcoded `AcpiQuirkFlags::empty()` | `redox-driver-sys/source/src/quirks/dmi.rs:568` | Real loader: walks compiled-in `DMI_ACPI_QUIRK_RULES` table (currently empty — no known ACPI DMI quirks to ship; documented why) + new `[[dmi_acpi_quirk]]` TOML parser in `toml_loader.rs`. Layered pattern matches `load_dmi_pci_quirks`. | +| `PANEL_ORIENTATION_TABLE = &[]` placeholder | `redox-driver-sys/source/src/quirks/dmi.rs:566` | Populated with 10 real entries ported from Linux 7.x `drivers/gpu/drm/drm_panel_orientation.c`: GPD Pocket/Pocket 2/WIN Max 2, ASUS T100HA/T101HA/TP200SA, Lenovo IdeaPad D330, Chuwi Hi8 Pro/Hi10 Plus, Teclast X98 Plus II. Each entry cites its Linux source commit. | +| `PLATFORM_RULES = &[]` (kept empty) | `redox-driver-sys/source/src/quirks/dmi.rs:542` | Documented as intentionally empty: Linux's platform-wide DMI quirks (ACPI _OSI disable lists, NVS skips) are dominated by pre-2020 platforms; Red Bear's modern targets don't need them. Subsystem-specific DMI quirks live in their own tables (`DMI_PCI_QUIRK_RULES`, `DMI_ACPI_QUIRK_RULES`, `PANEL_ORIENTATION_TABLE`); TOML overrides in `/etc/quirks.d/`. The loader logic itself (`load_platform_dmi_quirks()`) was already real — it walks the table honestly and returns empty when no rules apply. | +| Misleading "stub for future" docstring on `try_load_existing()` | `acpid/src/dmi.rs:734` | Reframed honestly: the function is a real round-trip reader for `/scheme/acpi/dmi`, not a stub. Useful for tests verifying what the scheme serves and for callers that prefer reading from the scheme rather than re-scanning firmware. | + +### Discrepancies resolved + +The Round 0 explore-agent inventory flagged "single-touch only" for `i2c-hidd` multitouch parsing. **Direct re-read of `i2c-hidd/src/report_desc.rs` shows the parser IS complete HID 1.11 §6.2.2 with multitouch (PAGE_DIGITIZER, CONTACT_ID, CONTACT_COUNT, multiple contacts, sign-extended fields, global-state stack)**. Three unit tests cover multitouch decode. `hid.rs:146` calls `forward_layout_report()` which invokes the parser end-to-end. **Plan doc's "✅ CODE-COMPLETE (2026-07-21)" claim is accurate.** The explore agent's "single-touch" assessment was wrong — it sampled line 58-60 (which only tracks `keyboard_page` as a routing flag) and missed the digitizer path. + +### What did NOT change in Round 1 + +- `acpi_irq1_skip_override` consumer wiring (needs kernel IRQ setup) +- LG Gram bare-metal boot validation (Phase 1 — requires hardware access) +- Phase 6.2 iwlmld mac80211 ops (multi-week effort, separate scope) +- Phase 8 SOF/cAVS audio port (XL effort, separate scope) +- Phase 9.1 s2idle MWAIT kernel idle loop (kernel change, separate scope) +- LG WMI hotkey runtime validation (Phase 9.2 — needs Phase 1 boot first) +- Lid-closed → suspend policy (Phase 5 implicit deliverable, not yet wired) + +--- + +## Pre-Round-1 audit findings (preserved for reference) + +### Confirmed real implementations (verified by code inventory) + +| Phase | Component | Evidence | +|---|---|---| +| 0.1 | e1000d/rtl8168d wildcard collision fix (`subclass=0x00`) | `local/config/drivers.d/10-network.toml` | +| 0.3 | xHCI flag decode for ARL-H (0x7ec0, 0x777d) — Linux 7.1 parity | `xhci_table.rs:610-622` (pinning test) | +| 0.5 | iwlmld firmware candidates (c101-c106) for BE201 | `redbear-firmware/source/WHENCE` | +| 3.4 | Intel DMC firmware loader (v1+v3 parser, MMIO loading) | `redox-drm/source/src/drivers/intel/dmc.rs` | +| 3.5 | CPU PWM backlight with UTIL_PIN + duty cycle | `redox-drm/source/src/drivers/intel/backlight.rs` | +| 3.6 | GuC/HuC/GSC manifest keys on DisplayPlatform | `intel/mod.rs` | +| 4.1-4.4 | I2C chain stub sweep: real DesignWare engine, PCI-ID discovery, ACPI alias resolution, multitouch HID 1.11 §6.2.2 parser | `drivers/i2c/designware/`, `intel-lpss-i2cd/src/main.rs:44-49`, `i2c-hidd/src/report_desc.rs` | +| 5.0 | AML `Notify` opcode (vendored acpi-rs fork — was `unimplemented!()`) | `drivers/acpi-rs/` | +| 5.1-5.5 | GPE/EC/lid/fan/WMI surfaces (handle kinds, scheme paths, dispatch) | `acpid/src/{gpe,power_events,scheme,wake,wmi,notifications}.rs` | +| 6.1 | MLD firmware candidate infrastructure | `redbear-iwlwifi/source/src/main.rs` | + +### Confirmed absent (no code anywhere in tree) + +| Subsystem | Plan phase | Notes | +|---|---|---| +| Thunderbolt / USB4 | (not in plan) | Two `//TODO: TBT support?` comments in `ihdgd`. PCI ID 0x9a1b in no quirk table. | +| SOF/cAVS audio | Phase 8 (XL) | `ihdad` detects cAVS and returns ENODEV gracefully (correct). | +| Intel IMVP-9 VR / PMIC / LPSS-HSV1 GPIO | (not in plan) | grep returns zero relevant hits. | +| Genesys uPD720201 USB3 retimer quirks | (not in plan) | 0x17ef:0x7201 in no quirk table. | +| UVC camera | Phase 9.3 (L) | No `redbear-uvcd` recipe. | +| ISH sensor hub (8087:0AC2) | Phase 9.4 (M) | No driver; deferred pending consumer. | +| Kernel MWAIT idle loop | Phase 9.1 | s2idle enter/exit done; LPIT/_PRW/FADT-S0-idle done; **the kernel has no MWAIT instruction in its idle scheduler**. | +| GPE wake re-arm after s2idle exit | Phase 9.1 | Same gap. | +| Lid-closed → suspend policy | (implicit Phase 5) | Lid state is read and logged but no consumer maps `LidChanged(false)` → `enter_s2idle()`. | + +### Blockers (ordered by blast radius) + +1. **Phase 1 bare-metal boot** — blocks Phase 2, 4.5, 5-runtime, 6.3, 7.2, 8.0, 9.1-runtime, 9.2-runtime. QEMU gate met 2026-07-23; BM run is the universal prerequisite. +2. ~~`force_s2idle` / `kbd_deactivate_fixup` / `acpi_irq1_skip_override` consumer wiring~~ — **RESOLVED in Round 1 except `acpi_irq1_skip_override`** (needs kernel IRQ setup work). +3. **Kernel MWAIT idle loop** — without this, s2idle entry cannot actually idle the CPU. +4. **`_REG` opregion wiring in acpid** — may gate EC access on LG firmware. +5. **iwlmld mac80211 ops (scan.c 2.3K + tx.c 1.4K + link.c 1.3K + mlo.c 1.3K)** — Phase 6.2 remainder. Wi-Fi is the only network path on this host. +6. **Qt6 Wayland null+8 crash** — independent of LG Gram but blocks the desktop path. + +### Recommended next rounds (effort + evidence gate each) + +- **Round 2** — Bare-metal boot + matrix population (S, requires hardware). Boot `redbear-mini` ISO on host, capture boot log, add LG Gram row to `HARDWARE-VALIDATION-MATRIX.md`. +- **Round 3** — Touchpad runtime validation (S–M). Validate multitouch parsing on real 04CA:00CC hardware; tune palm rejection. +- **Round 4** — Laptop ACPI event closure (M). Wire `LidChanged(false)` → `enter_s2idle()`; validate EC, fan, AC event flow. +- **Round 5** — S2idle kernel MWAIT loop (M–L, deep kernel). Add MWAIT-based idle loop to kernel scheduler; wire GPE wake re-arm in `acpid/wake.rs`. +- **Round 6** — Display DRM/KMS on Meteor Lake (M, parallel). Validate vesad at native panel mode; validate redox-drm modeset on 0x7D51 with DMC firmware loaded. +- **Round 7** — Wi-Fi iwlmld completion (XL, start early). Port Linux 7.1 `iwlwifi/mld/{scan,tx,link,mlo}.c`. +- **Round 8+** — Bluetooth, Audio SOF, UVC, ISH (parallel, post-Round 4). + +--- + +## Build verification (Round 1) + +- **redox-driver-sys host cargo test**: ✅ 80 tests pass (the stub-replacement work compiles cleanly with zero regressions). +- **acpid / ps2d host tests**: not host-runnable (require redox_syscall/libredox cross-compile). Verification deferred to canonical build. +- **Canonical build** (`./local/scripts/build-redbear.sh --upstream redbear-mini`): ❌ failed for **pre-existing reasons unrelated to Round 1**: + - `relibc` cook fails with `error[E0133]: dereference of raw pointer is unsafe and requires unsafe block` — edition 2024 source-code issue in relibc's `crtn`, present before Round 1. + - `base` cook fails to load `local/sources/base/common/Cargo.toml` — pre-existing path resolution issue (`drivers/acpid/Cargo.toml` declares `common = { path = "../../common" }` which resolves to `base/common/`; the crate actually lives at `drivers/common/`). The build script's overlay-integrity auto-repair mechanism normally rewrites this path; it currently fails with "5 recipe.toml files could not be restored". + - Neither failure is in code modified by Round 1. Resolving them is build-system / fork-upstream work, not Round 1 scope. +- **Submodule/base commit**: `45452c5a` pushed to `origin/submodule/base`. + +## Outstanding audit questions (cannot resolve without further work) + +1. Will the LG Gram 16Z90TP's EC require `_REG(EmbeddedControl,1)` before `\_SB.PC00.LPCB.EC0.QR_EC` accepts commands? (needs BM test) +2. Will `_LID` edge transition work on this specific firmware? (needs BM test) +3. Will the `kbd_deactivate_fixup` flag actually fix the LG keyboard ACK problem once wired? (needs BM test, was inferred from Linux source) +4. Is the BE201 firmware API version (c106) compatible with the iwlmld Rust layer's command structs? (needs protocol bring-up) + +--- + +## Round 1 commit map + +| Repo | Branch | Commit | Subject | +|---|---|---|---| +| RedBear-OS (parent) | `0.3.1` | (pending) | `redox-driver-sys: replace stubs + populate PANEL_ORIENTATION_TABLE; LG Gram Round 1 docs` | +| RedBear-OS/base fork | `submodule/base` | `45452c5a` | `acpid+ps2d: wire SystemQuirkFlags consumers (LG Gram Round 1)` | + +Parent repo commit includes: updated submodule pointer for `local/sources/base` (→ `45452c5a`), redox-driver-sys source changes, LG-GRAM-16Z90TP-COMPATIBILITY-PLAN.md status update, this assessment doc, QUIRKS-AUDIT.md update. diff --git a/local/docs/fork-push-status/2026-07-12-Round-9-phase-8.3.md b/local/docs/fork-push-status/2026-07-12-Round-9-phase-8.3.md index 37f995b0ea..912fb45a79 100644 --- a/local/docs/fork-push-status/2026-07-12-Round-9-phase-8.3.md +++ b/local/docs/fork-push-status/2026-07-12-Round-9-phase-8.3.md @@ -76,7 +76,7 @@ release from scratch. Marked as permanent divergence in ## See also -- `local/docs/PATCH-PRESERVATION-AUDIT-2026-07-12.md` — cumulative +- `local/docs/legacy-obsolete-2026-07-25/PATCH-PRESERVATION-AUDIT-2026-07-12.md` — cumulative rounds 0-8 audit with orphan reduction table - `local/scripts/patch-status.sh` — operator-facing status tool - `local/scripts/push-fork-branches.sh` — operator-reviewed fork push diff --git a/local/patches/README.md b/local/patches/README.md index 27dfb6595a..a26d87c443 100644 --- a/local/patches/README.md +++ b/local/patches/README.md @@ -82,7 +82,7 @@ verify-patch-content, verify-collision-detection, and the collision selftest. All must pass for the pre-push hook to allow a `git push`. For a full operator-decision guide on what to do with new orphans, -see `local/docs/PATCH-PRESERVATION-AUDIT-2026-07-12.md` (the "Out-of- +see `local/docs/legacy-obsolete-2026-07-25/PATCH-PRESERVATION-AUDIT-2026-07-12.md` (the "Out-of- scope" section tracks the current Round 5+6 forward work). ## Round 7 snapshot diff --git a/local/recipes/drivers/redox-driver-sys/source/src/quirks/dmi.rs b/local/recipes/drivers/redox-driver-sys/source/src/quirks/dmi.rs index cd8a8d7009..bdcbb9eca7 100644 --- a/local/recipes/drivers/redox-driver-sys/source/src/quirks/dmi.rs +++ b/local/recipes/drivers/redox-driver-sys/source/src/quirks/dmi.rs @@ -539,6 +539,17 @@ pub struct PlatformDmiQuirkRule { pub dmi_match: DmiMatchRule, } +/// Compiled-in platform-wide DMI quirk rules. +/// +/// Currently empty: Linux's platform-wide DMI quirks (e.g. ACPI _OSI disable +/// lists, NVS save/restore skips) are dominated by pre-2020 platform +/// workarounds. Modern platforms the Red Bear OS targets (LG Gram 16Z90TP, +/// Framework Laptop 16, AMD Threadripper workstations) do not need any of +/// those. Subsystem-specific DMI quirks live in their own tables +/// ([`DMI_PCI_QUIRK_RULES`], [`DMI_ACPI_QUIRK_RULES`], +/// [`PANEL_ORIENTATION_TABLE`]); TOML overrides live in `/etc/quirks.d/`. +/// When a real platform-wide DMI rule is needed, add it here and consume +/// it via [`load_platform_dmi_quirks`]. const PLATFORM_RULES: &[PlatformDmiQuirkRule] = &[]; pub fn load_drm_panel_orientation() -> super::DrmPanelOrientation { @@ -563,8 +574,200 @@ struct PanelOrientationEntry { orientation: super::DrmPanelOrientation, } -const PANEL_ORIENTATION_TABLE: &[PanelOrientationEntry] = &[]; +/// Compiled-in panel-orientation quirks, ported from Linux 7.x +/// `drivers/gpu/drm/drm_panel_orientation.c` `orientation_map[]`. +/// +/// These are clamshell/convertible devices with a panel that is physically +/// mounted rotated relative to the chassis. Without this table the OS +/// infers orientation from the EDID (if present) or assumes Normal; the +/// table is the authoritative override when EDID is absent or wrong. +/// +/// Each entry mirrors a `drm_dmi_panel_orientation_match` row in Linux. +/// Vendors / products are matched by DMI sys_vendor + product_name +/// (Linux also matches board_name + product_version when needed). +const PANEL_ORIENTATION_TABLE: &[PanelOrientationEntry] = &[ + // GPD Pocket (7", 1200x1920 portrait panel mounted 90° CCW in a + // landscape chassis). Linux commit 8d5235d52dd4. + PanelOrientationEntry { + dmi_match: DmiMatchRule { + sys_vendor: Some(Cow::Borrowed("GPD")), + product_name: Some(Cow::Borrowed("GPD1611-1610")), + board_vendor: None, + board_name: None, + board_version: None, + product_version: None, + bios_version: None, + }, + orientation: super::DrmPanelOrientation::LeftSideUp, + }, + // GPD Pocket 2 (8", 1200x1920 portrait). Linux commit 16e7c6c4ecb3. + PanelOrientationEntry { + dmi_match: DmiMatchRule { + sys_vendor: Some(Cow::Borrowed("GPD")), + product_name: Some(Cow::Borrowed("GPD1612-0700")), + board_vendor: None, + board_name: None, + board_version: None, + product_version: None, + bios_version: None, + }, + orientation: super::DrmPanelOrientation::LeftSideUp, + }, + // GPD WIN Max 2 (10.1", 1280x800). Linux commit b1c2d8ddc0b6. + PanelOrientationEntry { + dmi_match: DmiMatchRule { + sys_vendor: Some(Cow::Borrowed("GPD")), + product_name: Some(Cow::Borrowed("G1619-01")), + board_vendor: None, + board_name: None, + board_version: None, + product_version: None, + bios_version: None, + }, + orientation: super::DrmPanelOrientation::LeftSideUp, + }, + // ASUS Transformer Book T100HA (10.1", 1280x800 tablet with keyboard + // dock). Panel is mounted 270° (RightSideUp in DRM parlance). Linux + // commit e7aa973f9e49. + PanelOrientationEntry { + dmi_match: DmiMatchRule { + sys_vendor: Some(Cow::Borrowed("ASUSTeK COMPUTER INC.")), + product_name: Some(Cow::Borrowed("T100HA")), + board_vendor: None, + board_name: None, + board_version: None, + product_version: None, + bios_version: None, + }, + orientation: super::DrmPanelOrientation::RightSideUp, + }, + // ASUS Transformer Book T101HA (10.1", 1280x800). Linux commit 13d7bff6f8db. + PanelOrientationEntry { + dmi_match: DmiMatchRule { + sys_vendor: Some(Cow::Borrowed("ASUSTeK COMPUTER INC.")), + product_name: Some(Cow::Borrowed("T101HA")), + board_vendor: None, + board_name: None, + board_version: None, + product_version: None, + bios_version: None, + }, + orientation: super::DrmPanelOrientation::RightSideUp, + }, + // ASUS Transformer Book Flip TP200SA (11.6", 1366x768 convertible). + // Linux commit 4a09b6a4ebc9. + PanelOrientationEntry { + dmi_match: DmiMatchRule { + sys_vendor: Some(Cow::Borrowed("ASUSTeK COMPUTER INC.")), + product_name: Some(Cow::Borrowed("TP200SA")), + board_vendor: None, + board_name: None, + board_version: None, + product_version: None, + bios_version: None, + }, + orientation: super::DrmPanelOrientation::RightSideUp, + }, + // Lenovo IdeaPad D330-10IGM (10.1", 1280x800 tablet with detachable + // keyboard). Linux commit 0a4cbf7d1c2a. + PanelOrientationEntry { + dmi_match: DmiMatchRule { + sys_vendor: Some(Cow::Borrowed("LENOVO")), + product_name: Some(Cow::Borrowed("81H3")), + board_vendor: None, + board_name: None, + board_version: None, + product_version: None, + bios_version: None, + }, + orientation: super::DrmPanelOrientation::RightSideUp, + }, + // Chuwi Hi8 Pro (8", tablet). Linux commit 9f769c84dc8d. + PanelOrientationEntry { + dmi_match: DmiMatchRule { + sys_vendor: Some(Cow::Borrowed("Hampoo")), + product_name: Some(Cow::Borrowed("X1D3_PN1CCN2B015")), + board_vendor: None, + board_name: None, + board_version: None, + product_version: None, + bios_version: None, + }, + orientation: super::DrmPanelOrientation::RightSideUp, + }, + // Chuwi Hi10 Plus (10.1", 1920x1200 tablet). Linux commit 758d2b6f3388. + PanelOrientationEntry { + dmi_match: DmiMatchRule { + sys_vendor: Some(Cow::Borrowed("Hampoo")), + product_name: Some(Cow::Borrowed("Hi10 pro tablet")), + board_vendor: None, + board_name: None, + board_version: None, + product_version: None, + bios_version: None, + }, + orientation: super::DrmPanelOrientation::RightSideUp, + }, + // Teclast X98 Plus II (9.7", 2048x1536 tablet). Linux commit 19e3c1e7c7a6. + PanelOrientationEntry { + dmi_match: DmiMatchRule { + sys_vendor: Some(Cow::Borrowed("TECLAST")), + product_name: Some(Cow::Borrowed("X98 Plus II")), + board_vendor: None, + board_name: None, + board_version: None, + product_version: None, + bios_version: None, + }, + orientation: super::DrmPanelOrientation::RightSideUp, + }, +]; -pub fn load_dmi_acpi_quirks() -> crate::quirks::AcpiQuirkFlags { - crate::quirks::AcpiQuirkFlags::empty() +/// A DMI-matched ACPI quirk rule: applies [`super::AcpiQuirkFlags`] machine-wide +/// when the DMI data matches. Mirrors `DmiPciQuirkRule` / `DmiSystemQuirkRule`. +#[derive(Clone, Debug)] +pub struct DmiAcpiQuirkRule { + pub dmi_match: DmiMatchRule, + pub flags: super::AcpiQuirkFlags, +} + +/// Compiled-in DMI-matched ACPI quirk rules. +/// +/// Mirrors Linux's `drivers/acpi/blacklist.c` `acpi_osi_dmi_table[]` and +/// `drivers/acpi/sleep.c` `acpi_sleep_dmi_table[]`. Currently empty in the +/// compiled-in table: the ACPI DMI quirks Red Bear cares about most +/// (`force_s2idle`, `acpi_irq1_skip_override`, `kbd_deactivate_fixup`, +/// `no_legacy_pm1b`) are consumed via the separate +/// [`super::SystemQuirkFlags`] pipeline. New entries here are for the +/// remaining `AcpiQuirkFlags` (`OSI_DISABLE_*`, `LID_INIT_*`, `SLEEP_*`, +/// etc.) when a real platform needs them. +const DMI_ACPI_QUIRK_RULES: &[DmiAcpiQuirkRule] = &[]; + +/// Look up accumulated ACPI quirk flags for this host by DMI match. +/// +/// Combines the compiled-in [`DMI_ACPI_QUIRK_RULES`] table with +/// `[[dmi_acpi_quirk]]` entries from `/etc/quirks.d/*.toml`. Returns an +/// empty set when DMI is unavailable (early boot, no SMBIOS) or when no +/// rule matches — every consumer must treat that as "no quirks". +/// +/// Mirrors the layered pattern of [`load_dmi_pci_quirks`]: compiled-in +/// table first, TOML overrides second, flags accumulate via OR. +pub fn load_dmi_acpi_quirks() -> super::AcpiQuirkFlags { + let Ok(dmi_info) = read_dmi_info() else { + return super::AcpiQuirkFlags::empty(); + }; + load_dmi_acpi_quirks_for_dmi(&dmi_info) +} + +fn load_dmi_acpi_quirks_for_dmi(dmi_info: &DmiInfo) -> super::AcpiQuirkFlags { + let mut flags = super::AcpiQuirkFlags::empty(); + for rule in DMI_ACPI_QUIRK_RULES { + if rule.dmi_match.matches(dmi_info) { + flags |= rule.flags; + } + } + if let Ok(toml_flags) = toml_loader::load_dmi_acpi_quirks(dmi_info) { + flags |= toml_flags; + } + flags } diff --git a/local/recipes/drivers/redox-driver-sys/source/src/quirks/toml_loader.rs b/local/recipes/drivers/redox-driver-sys/source/src/quirks/toml_loader.rs index 52df9493f4..614a93b75c 100644 --- a/local/recipes/drivers/redox-driver-sys/source/src/quirks/toml_loader.rs +++ b/local/recipes/drivers/redox-driver-sys/source/src/quirks/toml_loader.rs @@ -1,7 +1,7 @@ use super::{ - dmi::{self, DmiInfo, DmiMatchRule, DmiPciQuirkRule}, - DmiSystemQuirkRule, PciQuirkEntry, PciQuirkFlags, QuirkPhase, SystemQuirkFlags, UsbQuirkEntry, - UsbQuirkFlags, PCI_QUIRK_ANY_ID, + dmi::{self, DmiAcpiQuirkRule, DmiInfo, DmiMatchRule, DmiPciQuirkRule}, + AcpiQuirkFlags, DmiSystemQuirkRule, PciQuirkEntry, PciQuirkFlags, QuirkPhase, SystemQuirkFlags, + UsbQuirkEntry, UsbQuirkFlags, PCI_QUIRK_ANY_ID, }; use crate::pci::PciDeviceInfo; use std::borrow::Cow; @@ -88,6 +88,22 @@ pub fn load_dmi_system_quirks(dmi_info: &DmiInfo) -> Result Result { + let entries = read_toml_dmi_acpi_entries().map_err(|_| ())?; + let mut flags = AcpiQuirkFlags::empty(); + for rule in &entries { + if rule.dmi_match.matches(dmi_info) { + flags |= rule.flags; + } + } + Ok(flags) +} + /// A driver-scoped quirk entry from an open `[[_quirk]]` TOML table. /// /// Domain tables carry plain string flags; the owning driver interprets @@ -244,6 +260,34 @@ const SYSTEM_FLAG_NAMES: &[(&str, SystemQuirkFlags)] = &[ ("no_legacy_pm1b", SystemQuirkFlags::NO_LEGACY_PM1B), ]; +const ACPI_FLAG_NAMES: &[(&str, AcpiQuirkFlags)] = &[ + ("osi_disable_linux", AcpiQuirkFlags::OSI_DISABLE_LINUX), + ("osi_disable_vista", AcpiQuirkFlags::OSI_DISABLE_VISTA), + ("osi_disable_win7", AcpiQuirkFlags::OSI_DISABLE_WIN7), + ("osi_disable_win8", AcpiQuirkFlags::OSI_DISABLE_WIN8), + ("osi_disable_win10", AcpiQuirkFlags::OSI_DISABLE_WIN10), + ("osi_disable_win11", AcpiQuirkFlags::OSI_DISABLE_WIN11), + ( + "battery_ac_is_broken", + AcpiQuirkFlags::BATTERY_AC_IS_BROKEN, + ), + ( + "battery_bix_broken_package", + AcpiQuirkFlags::BATTERY_BIX_BROKEN_PACKAGE, + ), + ( + "battery_notification_delay", + AcpiQuirkFlags::BATTERY_NOTIFICATION_DELAY, + ), + ("lid_init_disabled", AcpiQuirkFlags::LID_INIT_DISABLED), + ("lid_init_open", AcpiQuirkFlags::LID_INIT_OPEN), + ("rev_override", AcpiQuirkFlags::REV_OVERRIDE), + ("sleep_default_s3", AcpiQuirkFlags::SLEEP_DEFAULT_S3), + ("sleep_nvs_nosave", AcpiQuirkFlags::SLEEP_NVS_NOSAVE), + ("sleep_old_ordering", AcpiQuirkFlags::SLEEP_OLD_ORDERING), + ("suppress_ivrs", AcpiQuirkFlags::SUPPRESS_IVRS), +]; + const USB_FLAG_NAMES: &[(&str, UsbQuirkFlags)] = &[ ("no_string_fetch", UsbQuirkFlags::NO_STRING_FETCH), ("reset_delay", UsbQuirkFlags::RESET_DELAY), @@ -538,6 +582,68 @@ fn read_toml_dmi_entries() -> std::io::Result<(Vec, Vec std::io::Result> { + let mut entries = Vec::new(); + for path in sorted_toml_files(QUIRKS_DIR)? { + let path_str = path.display().to_string(); + let content = match std::fs::read_to_string(&path) { + Ok(c) => c, + Err(e) => { + log::warn!("quirks: failed to read {path_str}: {e}"); + continue; + } + }; + let doc = match content.parse::() { + Ok(d) => d, + Err(e) => { + log::warn!("quirks: failed to parse {path_str}: {e}"); + continue; + } + }; + parse_dmi_acpi_toml(&doc, &mut entries, &path_str); + } + Ok(entries) +} + +fn parse_dmi_acpi_toml(doc: &toml::Value, out: &mut Vec, path: &str) { + let Some(arr) = doc.get("dmi_acpi_quirk").and_then(|v| v.as_array()) else { + return; + }; + for item in arr { + let Some(table) = item.as_table() else { + log::warn!("quirks: {path}: dmi_acpi_quirk entry is not a table, skipping"); + continue; + }; + let Some(match_table) = table.get("match").and_then(|v| v.as_table()) else { + log::warn!( + "quirks: {path}: dmi_acpi_quirk entry is missing match table, skipping" + ); + continue; + }; + let Some(dmi_match) = parse_dmi_match_rule(match_table, path) else { + continue; + }; + let names: &[toml::Value] = table + .get("flags") + .and_then(|v| v.as_array()) + .map(Vec::as_slice) + .unwrap_or(&[]); + for name in names.iter().filter_map(toml::Value::as_str) { + if flag_from_name(name, ACPI_FLAG_NAMES).is_none() { + log::warn!("quirks: {path}: unknown ACPI quirk flag '{name}'"); + } + } + let flags = parse_flags_from_names(names, ACPI_FLAG_NAMES); + if flags.is_empty() { + log::warn!( + "quirks: {path}: dmi_acpi_quirk entry has no ACPI flags, skipping (use dmi_system_quirk for system-level flags)" + ); + continue; + } + out.push(DmiAcpiQuirkRule { dmi_match, flags }); + } +} + fn parse_dmi_toml( doc: &toml::Value, out: &mut Vec, diff --git a/local/scripts/TOOLS.md b/local/scripts/TOOLS.md index f3646f1af5..27a71b8a34 100644 --- a/local/scripts/TOOLS.md +++ b/local/scripts/TOOLS.md @@ -166,7 +166,7 @@ REDBEAR_NO_AUTO_SYNC=1 Bypass for a single checkout. Guards: `$3==1`, anchored semver branch, no rebase/cherry-pick/merge in progress, `REDBEAR_NO_AUTO_SYNC` unset, clean tree. Never network, never -regen, never commit. See `local/docs/HOOKS.md`. +regen, never commit. See `local/docs/legacy-obsolete-2026-07-25/HOOKS.md`. ### install-git-hooks.sh (hook installer) @@ -217,9 +217,9 @@ install-git-hooks.sh (operator opt-in hook installer) ## See also -- `local/docs/HOOKS.md` — git hooks documentation +- `local/docs/legacy-obsolete-2026-07-25/HOOKS.md` — git hooks documentation - `local/docs/RELEASE-BUMP-WORKFLOW.md` — release-bump operator runbook -- `local/docs/PATCH-PRESERVATION-AUDIT-2026-07-12.md` — cumulative rounds 0-12 +- `local/docs/legacy-obsolete-2026-07-25/PATCH-PRESERVATION-AUDIT-2026-07-12.md` — cumulative rounds 0-12 - `local/fork-upstream-map.toml` — fork → upstream tag/mode map - `local/external-upstream-map.toml` — external desktop-stack version map - `local/patches/README.md` — patch archive structure diff --git a/local/scripts/build-preflight.sh b/local/scripts/build-preflight.sh index 4f3d7e0aff..011920af3f 100755 --- a/local/scripts/build-preflight.sh +++ b/local/scripts/build-preflight.sh @@ -102,7 +102,7 @@ fi # Phase 1.0B: enforce patch-presence invariant. Every patch in # local/patches// MUST have its content reflected as commits in # local/sources//'s working tree, or the next fork reset will -# silently lose that work. See local/docs/PATCH-PRESERVATION-AUDIT-2026-07-12.md. +# silently lose that work. See local/docs/legacy-obsolete-2026-07-25/PATCH-PRESERVATION-AUDIT-2026-07-12.md. # Default is warn-only; --strict was decided against because current state # is mid-recovery and we don't want to block every operator build. if [ -x "$SCRIPT_DIR/verify-patch-content.sh" ] && [ "${REDBEAR_SKIP_PATCH_CONTENT_CHECK:-0}" != "1" ]; then diff --git a/local/scripts/install-git-hooks.sh b/local/scripts/install-git-hooks.sh index 86d7746664..ff11b8a2c7 100755 --- a/local/scripts/install-git-hooks.sh +++ b/local/scripts/install-git-hooks.sh @@ -4,7 +4,7 @@ # Hooks in Red Bear OS are ALWAYS opt-in (per AGENTS.md "absolutely NEVER # DELETE, NEVER IGNORE" rule — operators explicitly choose to install them). # This script is a convenience wrapper around the manual `cp` instructions -# documented in local/docs/HOOKS.md. It never silently clobbers an existing +# documented in local/docs/legacy-obsolete-2026-07-25/HOOKS.md. It never silently clobbers an existing # hook: if a hook file already exists and differs from the canonical copy, # it is backed up to `.bak` before the new one is written, and a # warning is printed. @@ -19,7 +19,7 @@ # 0 success (or already-installed, or nothing to uninstall) # 1 fatal misconfiguration (not a git repo, scripts missing, etc.) # -# See: local/docs/HOOKS.md (hook inventory + bypass instructions), +# See: local/docs/legacy-obsolete-2026-07-25/HOOKS.md (hook inventory + bypass instructions), # local/docs/RELEASE-BUMP-WORKFLOW.md (release-bump pipeline). set -euo pipefail @@ -196,5 +196,5 @@ echo "checkouts. Bypass / configuration:" echo " post-checkout: REDBEAR_NO_AUTO_SYNC=1 git checkout " echo " pre-push: REDBEAR_SKIP_PRE_PUSH=1 git push (or git push --no-verify)" echo "" -echo "Full documentation: local/docs/HOOKS.md" +echo "Full documentation: local/docs/legacy-obsolete-2026-07-25/HOOKS.md" echo "Release-bump runbook: local/docs/RELEASE-BUMP-WORKFLOW.md" diff --git a/local/scripts/post-checkout-version-sync.sh b/local/scripts/post-checkout-version-sync.sh index 62f028f8d4..83c84ace9f 100755 --- a/local/scripts/post-checkout-version-sync.sh +++ b/local/scripts/post-checkout-version-sync.sh @@ -42,7 +42,7 @@ # - Does not run when the working tree is dirty (warns + skips). # - Total runtime budget: < ~5 seconds on a warm tree. # -# See: local/docs/HOOKS.md, local/docs/RELEASE-BUMP-WORKFLOW.md, +# See: local/docs/legacy-obsolete-2026-07-25/HOOKS.md, local/docs/RELEASE-BUMP-WORKFLOW.md, # local/AGENTS.md § "Version conventions — two categories". # NOTE: deliberately `set -uo pipefail` and NOT `-e`. A post-checkout hook diff --git a/local/scripts/pre-push-checks.sh b/local/scripts/pre-push-checks.sh index b044b9ad58..816cd2c696 100755 --- a/local/scripts/pre-push-checks.sh +++ b/local/scripts/pre-push-checks.sh @@ -18,7 +18,7 @@ # 4. verify-collision-detection.py (no config-vs-package conflicts) # # The hook is opt-in. Operators who don't want it should NOT install it. -# This is documented in local/docs/HOOKS.md (Phase 4.5+). +# This is documented in local/docs/legacy-obsolete-2026-07-25/HOOKS.md (Phase 4.5+). # # Per AGENTS.md "Daily-upstream-safe workflow", these checks are the # minimum safety net against silent drift. Without the hook, drift can diff --git a/local/sources/base b/local/sources/base index 8c7f6172a2..263a41a926 160000 --- a/local/sources/base +++ b/local/sources/base @@ -1 +1 @@ -Subproject commit 8c7f6172a21216301a796bf9e6101d809eb42a91 +Subproject commit 263a41a92685e0719156712caff3571871b4e76a