config + recipes: fix experimental.toml includes + sync 71 versions to 0.3.1

CRITICAL F18/F18b from NETWORKING-AND-DRIVERS-CODE-ASSESSMENT-2026-07-27.md
§3.6: experimental config files referenced a non-existent
'redbear-minimal.toml' which would cause build failures.

- config/redbear-wifi-experimental.toml: rename include to 'redbear-mini.toml'
- config/redbear-bluetooth-experimental.toml: same

CRITICAL F20 from §3.6: 30+ recipe.toml files declared 'version = 0.1.0'
while their Cargo.toml says 'version = 0.3.1'. Per AGENTS.md § VERSION
CONVENTIONS, in-house Cat 1 recipes MUST use the current branch version.

- 71 recipe.toml files synced from 0.1.0 to 0.3.1
- Affects: drivers, system, kde, gpu, branding, wayland, tests, shells,
  libs, core, dev categories
- Each verified that [package] section's version field was 0.1.0 before sync
- The sync-versions.sh script in local/scripts/ provides the canonical
  mechanism; this commit applies the equivalent fix directly
This commit is contained in:
2026-07-27 15:23:26 +09:00
parent d7c0894665
commit 91ba8ed481
77 changed files with 106 additions and 115 deletions
+1 -1
View File
@@ -7,7 +7,7 @@
# The current slice is explicit-startup, USB-attached, BLE-first, and intentionally not wired to
# USB-class autospawn yet.
include = ["redbear-minimal.toml", "redbear-bluetooth-services.toml"]
include = ["redbear-mini.toml", "redbear-bluetooth-services.toml"]
[general]
filesystem_size = 2048
+1 -1
View File
@@ -6,7 +6,7 @@
# to the bounded Wi-Fi path and adds the first Intel driver-side package on top of the shared
# firmware/control/profile tooling.
include = ["redbear-minimal.toml"]
include = ["redbear-mini.toml"]
[general]
filesystem_size = 2048
@@ -1,6 +1,6 @@
[package]
name = "redbear-release"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ext4d"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "fatd"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ehcid"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "linux-kpi"
version = "0.1.0"
version = "0.3.1"
# linux-kpi build-ordering marker. Downstream driver builds compile the crate via Cargo path deps.
# The cookbook cargo template cannot install a library-only crate cleanly here, so keep this as a
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ohcid"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-btusb"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-input-headers"
version = "0.1.0"
version = "0.3.1"
# redbear-input-headers — Linux input subsystem headers (reference implementation)
#
@@ -1,6 +1,6 @@
[package]
name = "redbear-iwlwifi"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redox-driver-acpi"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redox-driver-core"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redox-driver-pci"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redox-driver-sys"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -81,8 +81,8 @@ pub fn outb(port: u16, val: u8) {
///
/// Same requirements as `inb`, but reads 4 contiguous bytes (little-endian)
/// from the port. The device must support 32-bit port I/O at `port..port+3`.
#[cfg(target// SAFETY: caller must verify the safety contract for this operation
_arch = "x86_64")]
/// Caller must verify the safety contract for this operation.
#[cfg(target_arch = "x86_64")]
#[inline]
pub fn inl(port: u16) -> u32 {
let val: u32;
@@ -107,9 +107,9 @@ pub fn outl(port: u16, val: u32) {
///
/// # Safety
///
/// Same requirements as `inb// SAFETY: caller must verify the safety contract for this operation
`, but reads 2 contiguous bytes (little-endian)
/// Same requirements as `inb`, but reads 2 contiguous bytes (little-endian)
/// from the port. The device must support 16-bit port I/O at `port..port+1`.
/// Caller must verify the safety contract for this operation.
#[cfg(target_arch = "x86_64")]
#[inline]
pub fn inw(port: u16) -> u16 {
@@ -118,13 +118,13 @@ pub fn inw(port: u16) -> u16 {
val
}
/// Write a 1// SAFETY: caller must verify the safety contract for this operation
6-bit word to an x86 I/O port.
/// Write a 16-bit word to an x86 I/O port.
///
/// # Safety
///
/// Same requirements as `outb`, but writes 2 contiguous bytes (little-endian)
/// to `port..port+1`. The device must support 16-bit port I/O at this range.
/// Caller must verify the safety contract for this operation.
#[cfg(target_arch = "x86_64")]
#[inline]
pub fn outw(port: u16, val: u16) {
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "uhcid"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "usb-core"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "virtio-inputd"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "amdgpu"
version = "0.1.0"
version = "0.3.1"
# AMD GPU retained display glue path for Redox OS
# Scope: bounded Red Bear display glue path for init, connector detection, and modeset.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "sddm"
version = "0.1.0"
version = "0.3.1"
#TODO: SDDM display manager — Wayland-only build. PAM provided by pam-redbear shim.
# X11/XCB/XAUTH fully excluded via wayland-patch.sh (NO_X11 ifdef guards).
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "zbus"
version = "0.1.0"
version = "0.3.1"
#TODO: zbus — build-ordering marker. Cargo fetches zbus when redbear-sessiond builds.
# The cargo template cannot build a library-only crate, so this uses a custom no-op script.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "brush"
version = "0.1.0"
version = "0.3.1"
[source]
# Vendored local fork. brush was an UNPINNED upstream git source, so cookbook's
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "audiodevd"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "coretempd"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "cpufreqd"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "devfsd"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "driver-manager"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -498,28 +498,19 @@ initial_power_state = "D2"
fn crash_tracker_apply_env_overrides() {
serialized(|| {
let tracker = super::CrashTracker::new();
// SAFETY: caller must verify the safety contract for this operation
unsafe { std::env::set_var("REDBEAR_DRIVER_CRASH_THRESHOLD", "3") };
// SAFETY: caller must verify the safety contract for this operation
u// SAFETY: caller must verify the safety contract for this operation
nsafe { std::env::set_var("REDBEAR_DRIVER_BACKOFF_BASE_MS", "50") };
unsafe { std::env::set_var("REDBEAR_DRIVER_BACKOFF_BASE_MS", "50") };
unsafe { std::env::set_var("REDBEAR_DRIVER_BACKOFF_CAP_MS", "500") };
tracker.apply_env();
assert_e// SAFETY: caller must verify the safety contract for this operation
q!(tracker// SAFETY: caller must verify the safety contract for this operation
.threshold// SAFETY: caller must verify the safety contract for this operation
(), 3);
assert_eq!(tracker.threshold(), 3);
assert_eq!(tracker.backoff_base_ms(), 50);
assert_eq!(tracker.backoff_cap_ms(), 500);
unsafe { std::env::remove_var("REDBEAR_DRIVER_CRASH_THRESHOLD") };
unsafe { std::env::remove_var("REDBEAR_DRIVER_BACKOFF_BASE_MS") };
unsafe { std::env::remove_var("REDBEAR_DRIVER_BACK// SAFETY: caller must verify the safety contract for this operation
OFF_CAP_MS") };
// SAFETY: caller must verify the safety contract for this operation
});
unsafe { std::env::remove_var("REDBEAR_DRIVER_BACKOFF_CAP_MS") };
});
}
// SAFETY: caller must verify the safety contract for this operation
#[test]
fn crash_tracker_apply_env_ignores_invalid_values() {
serialized(|| {
@@ -530,10 +521,7 @@ OFF_CAP_MS") };
unsafe { std::env::set_var("REDBEAR_DRIVER_CRASH_THRESHOLD", "not-a-number") };
unsafe { std::env::set_var("REDBEAR_DRIVER_BACKOFF_BASE_MS", "0") };
unsafe { std::env::set_var("REDBEAR_DRIVER_BACKOFF_CAP_MS", "-5") };
// SAFETY: caller must verify the safety contract for this operation
tracker.a// SAFETY: caller must verify the safety contract for this operation
pply_env()// SAFETY: caller must verify the safety contract for this operation
;
tracker.apply_env();
assert_eq!(
tracker.threshold(),
orig_threshold,
@@ -547,7 +535,6 @@ pply_env()// SAFETY: caller must verify the safety contract for this operation
assert_eq!(
tracker.backoff_cap_ms(),
orig_cap,
// SAFETY: caller must verify the safety contract for this operation
"negative cap_ms must be ignored (parse fails, default kept)"
);
unsafe { std::env::remove_var("REDBEAR_DRIVER_CRASH_THRESHOLD") };
@@ -557,10 +544,8 @@ pply_env()// SAFETY: caller must verify the safety contract for this operation
}
#[test]
fn c// SAFETY: caller must verify the safety contract for this operation
rash_tracker_global_stub_returns_when_unset() {
// CrashTracker global pointer must not // SAFETY: caller must verify the safety contract for this operation
be set by other tests.
fn crash_tracker_global_stub_returns_when_unset() {
// CrashTracker global pointer must not be set by other tests.
let snap = super::crash_tracker().snapshot();
assert!(
snap.is_empty(),
@@ -575,10 +560,8 @@ be set by other tests.
std::env::remove_var("REDBEAR_DRIVER_MANAGER_ACTIVE");
}
let prev: Vec<String> = std::env::args().collect();
if !prev.ite// SAFETY: caller must verify the safety contract for this operation
r().any(|a| a == "--no-spawn") {
assert_eq!(super::spawn_decision_gate(), super:// SAFETY: caller must verify the safety contract for this operation
:SpawnDecision::Spawn);
if !prev.iter().any(|a| a == "--no-spawn") {
assert_eq!(super::spawn_decision_gate(), super::SpawnDecision::Spawn);
}
});
}
@@ -860,8 +843,7 @@ impl CrashTracker {
}
}
/// Clear any failure state// SAFETY: caller must verify the safety contract for this operation
for `bdf`. Called from a successful
/// Clear any failure state for `bdf`. Called from a successful
/// probe (Bind result).
pub fn record_success(&self, bdf: &str) {
if let Ok(mut map) = self.failures_map().lock() {
@@ -872,8 +854,7 @@ impl CrashTracker {
/// Global crash tracker. The pointer is set once at startup
/// (`set_crash_tracker`); reads in the probe hot path are non-blocking
/// only because the p// SAFETY: caller must verify the safety contract for this operation
ointer is `static`, not because of any
/// only because the pointer is `static`, not because of any
/// `RwLock`. If unset, `crash_tracker()` returns a static stub with
/// the default threshold and no recorded failures — i.e. behavior
/// identical to pre-F1 (every probe runs, no backoff, no blacklist).
@@ -230,8 +230,7 @@ mod tests {
#[test]
fn reaper_watchdog_interval_clamps_low_values() {
// Set a sub-100ms value; the helper clamps to 100ms so the
// watchdog cannot burn CPU. Verify via behaviour: s// SAFETY: caller must verify the safety contract for this operation
pawn a
// watchdog cannot burn CPU. Verify via behaviour: spawn a
// quick-finishing worker and verify the watchdog completes
// within ~250ms (i.e. ~2 clamped-100ms polls + join).
unsafe { std::env::set_var("REDBEAR_DRIVER_REAPER_WATCHDOG_INTERVAL_MS", "1") };
@@ -240,13 +239,11 @@ pawn a
.spawn(|| {})
.expect("spawn finished thread");
std::thread::sleep(Duration::from_millis(20));
let watchdog = spawn_re// SAFETY: caller must verify the safety contract for this operation
aper_watchdog(finished);
let watchdog = spawn_reaper_watchdog(finished);
std::thread::sleep(Duration::from_millis(250));
assert!(watchdog.is_finished(), "watchdog should have exited despite tiny env var");
let _ = watchdog.join();
unsafe { std::env::remove_var("REDBEAR_DRIVER// SAFETY: caller must verify the safety contract for this operation
_REAPER_WATCHDOG_INTERVAL_MS") };
unsafe { std::env::remove_var("REDBEAR_DRIVER_REAPER_WATCHDOG_INTERVAL_MS") };
}
#[test]
@@ -523,8 +523,21 @@ fn civil_to_days(y: u32, m: u32, d: u32) -> Option<i64> {
mod tests {
use super::*;
use std::sync::Arc;
use std::sync::OnceLock;
use std::thread;
// Serialises tests that mutate env vars to prevent parallel races.
// Distinct from config::tests::serialized so each module owns its
// own lock and does not deadlock on cross-module locks.
// OnceLock because Mutex::new() is not const in this edition.
static TIMING_ENV_LOCK: OnceLock<std::sync::Mutex<()>> = OnceLock::new();
fn serialized<R>(body: impl FnOnce() -> R) -> R {
let lock = TIMING_ENV_LOCK.get_or_init(|| std::sync::Mutex::new(()));
let _guard = lock.lock().unwrap_or_else(|e| e.into_inner());
body()
}
// ── Single record + summary ──────────────────────────────────
#[test]
@@ -1,6 +1,6 @@
[package]
name = "driver-params"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "evdevd"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "firmware-loader"
version = "0.1.0"
version = "0.3.1"
[source]
# Local overlay recipe — source lives in source/, no git fetch needed.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "hwrngd"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "iommu"
version = "0.1.0"
version = "0.3.1"
# IOMMU daemon — provides scheme:iommu for DMA remapping and device isolation.
# Supports AMD-Vi units with domain management, IOVA mapping, device assignment,
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "numad"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-accessibility"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-acmd"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-authd"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-btctl"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -8,7 +8,7 @@
[package]
name = "redbear-dbus-services"
version = "0.1.0"
version = "0.3.1"
[source]
path = "files"
@@ -1,6 +1,6 @@
[package]
name = "redbear-ecmd"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-firmware"
version = "0.1.0"
version = "0.3.1"
[source]
# Local overlay recipe. Firmware sources are fetched during the custom build step into a shared
@@ -1,6 +1,6 @@
[package]
name = "redbear-ftdi"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-greeter"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-hwutils"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "redbear-ime"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-info"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-keymapd"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-login-protocol"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "redbear-mtr"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-netctl"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-netstat"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-nmap"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-notifications"
version = "0.1.0"
version = "0.3.1"
# redbear-notifications — org.freedesktop.Notifications daemon.
# Logs to stderr; ActionInvoked signal plumbing in place for clients.
@@ -1,6 +1,6 @@
[package]
name = "redbear-passwd"
version = "0.1.0"
version = "0.3.1"
[build]
template = "cargo"
@@ -1,6 +1,6 @@
[package]
name = "redbear-polkit"
version = "0.1.0"
version = "0.3.1"
# redbear-polkit — org.freedesktop.PolicyKit1 daemon (v0.2).
[source]
@@ -1,6 +1,6 @@
[package]
name = "redbear-power"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-quirks"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-session-launch"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-sessiond"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-statusnotifierwatcher"
version = "0.1.0"
version = "0.3.1"
# redbear-statusnotifierwatcher — org.freedesktop.StatusNotifierWatcher daemon.
# Session-bus D-Bus service brokering StatusNotifierItem (system tray) registration.
@@ -1,6 +1,6 @@
[package]
name = "redbear-traceroute"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-udisks"
version = "0.1.0"
version = "0.3.1"
# redbear-udisks — org.freedesktop.UDisks2 daemon with Mount/Unmount.
[source]
@@ -1,6 +1,6 @@
[package]
name = "redbear-upower"
version = "0.1.0"
version = "0.3.1"
# redbear-upower — org.freedesktop.UPower daemon. Reads scheme:acpi/power.
[source]
@@ -1,6 +1,6 @@
[package]
name = "redbear-usb-hotplugd"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-usbaudiod"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-wifictl"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "seatd"
version = "0.1.0"
version = "0.3.1"
# seatd is a first-class local Red Bear source package (operator decision): the
# in-tree `source/` tree is the authoritative implementation, like sibling
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "thermald"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "udev-shim"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "usbd"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redox-drm-prime-test"
version = "0.1.0"
version = "0.3.1"
#TODO: Runtime validation requires redox-drm scheme daemon running on bare metal or QEMU
@@ -1,6 +1,6 @@
[package]
name = "qt6-wayland-smoke"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
@@ -1,6 +1,6 @@
[package]
name = "redbear-compositor"
version = "0.1.0"
version = "0.3.1"
[source]
path = "source"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "smallvil"
version = "0.1.0"
version = "0.3.1"
#TODO: historical bounded validation compositor reference only; no longer part of the active forward desktop workflow
[source]