Define local overlay governance
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
+144
-6
@@ -31,6 +31,67 @@ make all CONFIG_NAME=redbear-full # Rebuild with latest
|
|||||||
Red Bear OS tracks the Redox OS build system as upstream. The `local/` directory
|
Red Bear OS tracks the Redox OS build system as upstream. The `local/` directory
|
||||||
survives upstream updates untouched.
|
survives upstream updates untouched.
|
||||||
|
|
||||||
|
## SOURCE-OF-TRUTH RULE (VERY IMPORTANT)
|
||||||
|
|
||||||
|
Treat the repository as two different layers with different durability guarantees:
|
||||||
|
|
||||||
|
### 1. Upstream-owned layer — disposable, refreshable every day
|
||||||
|
|
||||||
|
These paths are expected to be replaced, refetched, or regenerated when upstream changes:
|
||||||
|
|
||||||
|
- `recipes/*/source/`
|
||||||
|
- most of `recipes/` outside our symlinked `local/recipes/*` overlays
|
||||||
|
- `config/desktop.toml`, `config/minimal.toml`, and other mainline configs
|
||||||
|
- generated build outputs under `target/`, `build/`, `repo/`, and recipe-local `target/*`
|
||||||
|
|
||||||
|
For relibc specifically, **`recipes/core/relibc/source/` is upstream-owned working source**, not
|
||||||
|
Red Bear’s durable storage location. We may build and validate there, but we must not rely on that
|
||||||
|
tree alone to preserve Red Bear work.
|
||||||
|
|
||||||
|
### 2. Red Bear-owned layer — durable, must survive upstream refresh
|
||||||
|
|
||||||
|
These paths are our actual long-term source of truth:
|
||||||
|
|
||||||
|
- `local/patches/` — all durable changes to upstream-owned source trees
|
||||||
|
- `local/recipes/` — Red Bear recipe overlays and new packages
|
||||||
|
- `local/docs/` — Red Bear planning, validation, and integration documentation
|
||||||
|
- tracked Red Bear configs such as `config/redbear-*.toml`
|
||||||
|
|
||||||
|
If we can fetch fresh upstream sources tomorrow, reapply `local/patches/*`, relink
|
||||||
|
`local/recipes/*`, and rebuild successfully, then the work is in the right place.
|
||||||
|
|
||||||
|
If a change exists only inside an upstream-owned `recipes/*/source/` tree, then it is **not yet
|
||||||
|
preserved**, even if the current build happens to pass.
|
||||||
|
|
||||||
|
### Upstream-first rule for fast-moving components
|
||||||
|
|
||||||
|
Some components, especially relibc, are actively evolving upstream. For those areas, Red Bear must
|
||||||
|
prefer the upstream solution whenever upstream already solves the same problem.
|
||||||
|
|
||||||
|
That means:
|
||||||
|
|
||||||
|
- if our local patch solves a gap that upstream still has, keep the patch carrier
|
||||||
|
- if upstream lands an equivalent or better solution, prefer upstream and shrink or drop our local patch
|
||||||
|
- do not keep a Red Bear patch just because it existed first; keep it only while it still provides unique value
|
||||||
|
|
||||||
|
For relibc specifically, patch carriers should be treated as **temporary compatibility overlays**,
|
||||||
|
not a permanent fork strategy.
|
||||||
|
|
||||||
|
### Daily-upstream-safe workflow
|
||||||
|
|
||||||
|
For any change to upstream-owned source:
|
||||||
|
|
||||||
|
1. make the minimal working change in the live source tree if needed for validation
|
||||||
|
2. prove it builds/tests against the real recipe
|
||||||
|
3. mirror that delta into `local/patches/<component>/...`
|
||||||
|
4. update `local/docs/...` so the rebuild/reapply story is explicit
|
||||||
|
5. assume the live upstream source tree may be thrown away and recreated at any time
|
||||||
|
|
||||||
|
The success criterion is therefore:
|
||||||
|
|
||||||
|
> We can pull renewed upstream sources every day, reapply Red Bear’s local overlays, and still
|
||||||
|
> build the project successfully.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Automated sync (preferred):
|
# Automated sync (preferred):
|
||||||
./local/scripts/sync-upstream.sh # Fetch + rebase + check patches
|
./local/scripts/sync-upstream.sh # Fetch + rebase + check patches
|
||||||
@@ -78,7 +139,7 @@ redox-master/ ← git pull updates mainline Redox
|
|||||||
│ ├── patches/
|
│ ├── patches/
|
||||||
│ │ ├── kernel/ ← Kernel patches (ACPI, x2APIC)
|
│ │ ├── kernel/ ← Kernel patches (ACPI, x2APIC)
|
||||||
│ │ ├── base/ ← Base patches (acpid fixes, power methods, pcid /config endpoint)
|
│ │ ├── base/ ← Base patches (acpid fixes, power methods, pcid /config endpoint)
|
||||||
│ │ ├── relibc/ ← relibc patches (POSIX: eventfd, signalfd, timerfd)
|
│ │ ├── relibc/ ← relibc compatibility overlays still needed beyond upstream (eventfd, signalfd, timerfd, waitid, SysV IPC)
|
||||||
│ │ ├── bootloader/ ← Bootloader patches
|
│ │ ├── bootloader/ ← Bootloader patches
|
||||||
│ │ └── installer/ ← Installer patches (ext4 filesystem support)
|
│ │ └── installer/ ← Installer patches (ext4 filesystem support)
|
||||||
│ ├── Assets/ ← Branding assets (icon, loading background)
|
│ ├── Assets/ ← Branding assets (icon, loading background)
|
||||||
@@ -90,7 +151,10 @@ redox-master/ ← git pull updates mainline Redox
|
|||||||
│ │ ├── fetch-firmware.sh ← Download AMD firmware
|
│ │ ├── fetch-firmware.sh ← Download AMD firmware
|
||||||
│ │ ├── build-amd.sh ← Legacy AMD-specific build (use build-redbear.sh)
|
│ │ ├── build-amd.sh ← Legacy AMD-specific build (use build-redbear.sh)
|
||||||
│ │ ├── test-amd-gpu.sh ← AMD GPU test script
|
│ │ ├── test-amd-gpu.sh ← AMD GPU test script
|
||||||
│ │ └── test-baremetal.sh ← Bare metal test script
|
│ │ ├── test-baremetal.sh ← Bare metal test script
|
||||||
|
│ │ ├── validate-vm-network-baseline.sh ← Static repo-level VM networking baseline check
|
||||||
|
│ │ ├── test-vm-network-qemu.sh ← QEMU launcher for the VirtIO VM networking baseline
|
||||||
|
│ │ └── test-vm-network-runtime.sh ← In-guest runtime check for the VM networking baseline
|
||||||
│ └── docs/ ← Integration docs
|
│ └── docs/ ← Integration docs
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -106,6 +170,47 @@ redox-master/ ← git pull updates mainline Redox
|
|||||||
# Live ISO
|
# Live ISO
|
||||||
./local/scripts/build-redbear.sh redbear-live && make live CONFIG_NAME=redbear-live
|
./local/scripts/build-redbear.sh redbear-live && make live CONFIG_NAME=redbear-live
|
||||||
|
|
||||||
|
# VM-network baseline validation helpers
|
||||||
|
./local/scripts/validate-vm-network-baseline.sh
|
||||||
|
./local/scripts/test-vm-network-qemu.sh redbear-minimal
|
||||||
|
# Then run inside the guest:
|
||||||
|
# ./local/scripts/test-vm-network-runtime.sh
|
||||||
|
|
||||||
|
# Phase 3 runtime-substrate validation
|
||||||
|
./local/scripts/test-phase3-runtime-substrate.sh --qemu redbear-desktop
|
||||||
|
|
||||||
|
# Low-level controller validation
|
||||||
|
./local/scripts/test-xhci-irq-qemu.sh --check
|
||||||
|
./local/scripts/test-msix-qemu.sh
|
||||||
|
./local/scripts/test-iommu-qemu.sh
|
||||||
|
./local/scripts/test-usb-storage-qemu.sh
|
||||||
|
|
||||||
|
# The current xHCI proof checks for an interrupt-driven mode in boot logs.
|
||||||
|
# The current MSI-X proof uses the live virtio-net path in QEMU.
|
||||||
|
# The current IOMMU proof checks for the AMD IOMMU device plus guest boot reachability.
|
||||||
|
# The USB storage proof currently verifies whether usbscsid autospawns without hitting crash-class errors.
|
||||||
|
|
||||||
|
# Phase 4 Wayland runtime validation
|
||||||
|
./local/scripts/build-redbear.sh redbear-wayland
|
||||||
|
./local/scripts/test-phase4-wayland-qemu.sh
|
||||||
|
# Then run inside the guest:
|
||||||
|
# redbear-phase4-wayland-check
|
||||||
|
|
||||||
|
# Phase 5 desktop/network plumbing validation
|
||||||
|
./local/scripts/build-redbear.sh redbear-full
|
||||||
|
./local/scripts/test-phase5-network-qemu.sh --check
|
||||||
|
# Then run inside the guest:
|
||||||
|
# redbear-phase5-network-check
|
||||||
|
|
||||||
|
# Phase 6 KDE session-surface validation
|
||||||
|
./local/scripts/build-redbear.sh redbear-kde
|
||||||
|
./local/scripts/test-phase6-kde-qemu.sh --check
|
||||||
|
# Then run inside the guest:
|
||||||
|
# redbear-phase6-kde-check
|
||||||
|
|
||||||
|
# redbear-netctl user-facing alias
|
||||||
|
redbear-netctl --help
|
||||||
|
|
||||||
# Or manually:
|
# Or manually:
|
||||||
make all CONFIG_NAME=redbear-desktop
|
make all CONFIG_NAME=redbear-desktop
|
||||||
|
|
||||||
@@ -130,6 +235,31 @@ When mainline updates affect our work:
|
|||||||
| rsext4 | ext4 crate API changes | `local/recipes/core/ext4d/source/` Cargo.toml |
|
| rsext4 | ext4 crate API changes | `local/recipes/core/ext4d/source/` Cargo.toml |
|
||||||
| Installer | ext4 dispatch, filesystem selection | `local/patches/installer/redox.patch` |
|
| Installer | ext4 dispatch, filesystem selection | `local/patches/installer/redox.patch` |
|
||||||
|
|
||||||
|
## PLANNING NOTES
|
||||||
|
|
||||||
|
- `docs/07-RED-BEAR-OS-IMPLEMENTATION-PLAN.md` is the canonical public execution plan.
|
||||||
|
- `local/docs/AMD-FIRST-INTEGRATION.md` remains the deeper AMD-specific technical roadmap, but AMD
|
||||||
|
and Intel machines are now equal-priority Red Bear OS targets.
|
||||||
|
- `local/docs/PHASE-0-3-REASSESSMENT.md` explains how to read the early phases consistently when
|
||||||
|
the historical hardware-enablement phases and newer product-enablement phases use different
|
||||||
|
numbering.
|
||||||
|
- `local/docs/WIFI-IMPLEMENTATION-PLAN.md` is the current Wi-Fi architecture and rollout plan,
|
||||||
|
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
|
||||||
|
IRQ delivery, MSI/MSI-X quality, IOMMU validation, and other low-level controller completeness work.
|
||||||
|
|
||||||
|
The current execution order for these subsystem plans is:
|
||||||
|
|
||||||
|
1. IRQ / low-level controller quality
|
||||||
|
2. USB maturity
|
||||||
|
3. Wi-Fi native control plane and first driver family
|
||||||
|
4. Bluetooth controller + host path
|
||||||
|
5. desktop/session compatibility on top of those runtime services
|
||||||
|
|
||||||
|
Do not present USB, Wi-Fi, Bluetooth, or low-level controller work as optional or secondary.
|
||||||
|
|
||||||
## FILESYSTEMS
|
## FILESYSTEMS
|
||||||
|
|
||||||
Red Bear OS supports two filesystems:
|
Red Bear OS supports two filesystems:
|
||||||
@@ -241,6 +371,9 @@ local/Assets/
|
|||||||
```
|
```
|
||||||
redbear-live.toml
|
redbear-live.toml
|
||||||
└── redbear-desktop.toml
|
└── redbear-desktop.toml
|
||||||
|
├── redbear-legacy-base.toml ← Neutralize broken base legacy init scripts
|
||||||
|
├── redbear-device-services.toml ← Shared firmware-loader / evdevd / udev service wiring
|
||||||
|
├── redbear-netctl.toml ← Shared Red Bear network profile files + netctl boot service
|
||||||
├── desktop.toml (mainline)
|
├── desktop.toml (mainline)
|
||||||
│ ├── desktop-minimal.toml
|
│ ├── desktop-minimal.toml
|
||||||
│ │ └── minimal.toml
|
│ │ └── minimal.toml
|
||||||
@@ -248,9 +381,9 @@ redbear-live.toml
|
|||||||
│ └── server.toml
|
│ └── server.toml
|
||||||
│ └── minimal.toml
|
│ └── minimal.toml
|
||||||
│ └── base.toml
|
│ └── base.toml
|
||||||
└── [packages] redbear-release, redox-driver-sys, linux-kpi,
|
└── [packages] redbear-release, redbear-hwutils, redbear-netctl,
|
||||||
firmware-loader, redox-drm, cub, redbear-hwutils,
|
firmware-loader, evdevd, udev-shim, redbear-info,
|
||||||
redbear-netctl, evdevd, udev-shim, redbear-meta
|
mc, cub
|
||||||
NOTE: ext4d is inherited from desktop.toml (mainline package)
|
NOTE: ext4d is inherited from desktop.toml (mainline package)
|
||||||
NOTE: cub is included via redbear-desktop.toml and depends on the custom
|
NOTE: cub is included via redbear-desktop.toml and depends on the custom
|
||||||
recipe symlink (recipes/system/cub → local/recipes/system/cub) being
|
recipe symlink (recipes/system/cub → local/recipes/system/cub) being
|
||||||
@@ -267,6 +400,11 @@ redbear-full.toml
|
|||||||
└── redbear-device-services.toml ← Shared firmware-loader / evdevd / udev service wiring
|
└── redbear-device-services.toml ← Shared firmware-loader / evdevd / udev service wiring
|
||||||
└── redbear-netctl.toml ← Shared Red Bear network profile files + netctl boot service
|
└── redbear-netctl.toml ← Shared Red Bear network profile files + netctl boot service
|
||||||
|
|
||||||
|
redbear-wayland.toml
|
||||||
|
└── wayland.toml (mainline-derived Wayland profile)
|
||||||
|
└── runtime surface: orbital-wayland → smallvil
|
||||||
|
└── validation entrypoints: test-phase4-wayland-qemu.sh + redbear-phase4-wayland-check
|
||||||
|
|
||||||
redbear-kde.toml
|
redbear-kde.toml
|
||||||
└── desktop.toml (mainline)
|
└── desktop.toml (mainline)
|
||||||
└── redbear-legacy-base.toml ← Neutralize broken base legacy init scripts
|
└── redbear-legacy-base.toml ← Neutralize broken base legacy init scripts
|
||||||
@@ -281,7 +419,7 @@ redbear-minimal.toml
|
|||||||
└── redbear-device-services.toml ← Shared firmware-loader / evdevd / udev service wiring
|
└── redbear-device-services.toml ← Shared firmware-loader / evdevd / udev service wiring
|
||||||
└── redbear-netctl.toml ← Shared Red Bear network profile files + netctl boot service
|
└── redbear-netctl.toml ← Shared Red Bear network profile files + netctl boot service
|
||||||
└── [packages] redbear-release, redbear-hwutils, redbear-netctl,
|
└── [packages] redbear-release, redbear-hwutils, redbear-netctl,
|
||||||
redox-driver-sys, firmware-loader, evdevd, udev-shim
|
firmware-loader, evdevd, udev-shim, redbear-info
|
||||||
```
|
```
|
||||||
|
|
||||||
Config comparison:
|
Config comparison:
|
||||||
|
|||||||
Reference in New Issue
Block a user