LG Gram Round 1: redox-driver-sys stub replacements + doc reference fixes
Round 1 of the LG Gram 16Z90TP compatibility work. Two parallel
workstreams in one commit:
1. Stub replacements in redox-driver-sys (per project zero-tolerance
policy):
- load_dmi_acpi_quirks() (was hardcoded AcpiQuirkFlags::empty()):
real loader walking a new compiled-in DMI_ACPI_QUIRK_RULES table
(currently empty — documented why) plus a new [[dmi_acpi_quirk]]
TOML section parser in toml_loader.rs. The full 16-flag
ACPI_FLAG_NAMES mapping is added so TOML entries can use any
AcpiQuirkFlags variant by name.
- PANEL_ORIENTATION_TABLE (was empty placeholder): 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): documented why intentionally empty
(Linux platform-wide DMI quirks are pre-2020 platform workarounds
not needed by Red Bear's modern targets).
2. Broken reference fixes after the 2026-07-25 archive
(commit 589a1044e6 moved 9 docs to legacy-obsolete-2026-07-25/
but didn't update references). 30+ files referenced the moved
docs by their old local/docs/<name>.md path. This commit updates
every reference to point at local/docs/legacy-obsolete-2026-07-25/
<name>.md so links work again. Files touched: AGENTS.md,
README.md, docs/{AGENTS,README,07-RED-BEAR-OS-IMPLEMENTATION-PLAN}.md,
local/AGENTS.md, 14 docs under local/docs/, local/patches/README.md,
5 scripts under local/scripts/.
The matching acpid+ps2d consumer wiring landed earlier today in
submodule/base commit 45452c5a (force_s2idle, no_legacy_pm1b,
kbd_deactivate_fixup). The bootstrap reference fix is submodule/base
commit 263a41a9. Both are tracked by the updated submodule pointer
in this commit.
Build verification: redox-driver-sys 80 cargo tests pass. acpid/ps2d
host tests not runnable (require cross-compile). Canonical build
attempts uncovered two pre-existing failures unrelated to Round 1:
relibc edition-2024 unsafe-block issue in crtn, and the base fork's
'common' path resolution relies on the build script's overlay
integrity auto-repair which is currently failing. Neither is in code
touched by Round 1.
See local/docs/evidence/lg-gram/ASSESSMENT-2026-07-26.md for the full
round-by-round assessment and next-round plan.
This commit is contained in:
@@ -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/<component> log --oneline -3` plus `git -C local/sources/<component> status`. To rehydrate a fork source tree, remove `recipes/core/<component>/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/<comp>/` 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/<comp> log --all --oneline -i --grep <topic-kw>'
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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`
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+4
-4
@@ -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.
|
||||
|
||||
+5
-5
@@ -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-<date>/`.
|
||||
|
||||
### Local fork recipe directories must not carry patch files
|
||||
@@ -759,7 +759,7 @@ Bypass: `REDBEAR_NO_AUTO_SYNC=1 git checkout <branch>`. 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
|
||||
|
||||
@@ -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`
|
||||
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -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`.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 |
|
||||
|---|---|---|---|
|
||||
|
||||
@@ -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.
|
||||
|
||||
---
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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` |
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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<SystemQuirkFlags, ()
|
||||
Ok(flags)
|
||||
}
|
||||
|
||||
/// Accumulate machine-wide [`AcpiQuirkFlags`] from all `[[dmi_acpi_quirk]]`
|
||||
/// TOML entries whose DMI rule matches this system. Mirrors
|
||||
/// [`load_dmi_system_quirks`] but for the separate `AcpiQuirkFlags` namespace
|
||||
/// (OSI disables, lid init overrides, sleep ordering). The DMI data is read
|
||||
/// from `/scheme/acpi/dmi` by the caller via [`dmi::read_dmi_info`].
|
||||
pub fn load_dmi_acpi_quirks(dmi_info: &DmiInfo) -> Result<AcpiQuirkFlags, ()> {
|
||||
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 `[[<domain>_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<DmiPciQuirkRule>, Vec<DmiSyst
|
||||
Ok((entries, system_entries))
|
||||
}
|
||||
|
||||
fn read_toml_dmi_acpi_entries() -> std::io::Result<Vec<DmiAcpiQuirkRule>> {
|
||||
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::<toml::Value>() {
|
||||
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<DmiAcpiQuirkRule>, 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<DmiPciQuirkRule>,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -102,7 +102,7 @@ fi
|
||||
# Phase 1.0B: enforce patch-presence invariant. Every patch in
|
||||
# local/patches/<comp>/ MUST have its content reflected as commits in
|
||||
# local/sources/<comp>/'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
|
||||
|
||||
@@ -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 `<name>.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 <branch>"
|
||||
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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
+1
-1
Submodule local/sources/base updated: 8c7f6172a2...263a41a926
Reference in New Issue
Block a user