The 2026-07-28 FIRST-CLASS CITIZEN POLICY was initially drafted with all 48
redbear-* recipes wired into redbear-mini. The operator corrected this:
MINI target includes just packages whicha are not related to graphics.
While FULL must contain all text+graphial packages.
So the corrected architecture is:
- redbear-mini = text-only binaries (24 original + a few more)
- redbear-full = ALL redbear-* (text + graphics, via inheritance + explicit
full-only entries)
Updated docs:
- REDBEAR-FIRST-CLASS-CITIZEN-POLICY.md: rewrote with the wiring table per
program classification (text-only binary / graphics binary / library-only /
hardware peripheral driver). Library-only recipes follow their consumers'
target: tui-theme (consumed by power/cub/tlc in mini) goes in mini;
hid-core/login-protocol/passwd (consumed by desktop-only programs) go in full.
- ORPHAN-STATUS.md: rewrote as 'Library-only Red Bear Crates' reference.
Documents the 4 library-only recipes, their consumers, and the config
they are wired into per the corrected policy.
- FIRMWARE-SUBSETS-DECISION.md: rewrote. All 5 firmware recipes (monolithic
+ 4 subsets) are now correctly classified as graphics-related and wired
into redbear-full (not mini). Original decision was to KEEP-ORPHAN them,
but the corrected FIRST-CLASS policy promotes them to first-class citizens
in redbear-full.
- REDBEAR-UFW-STATUS.md: rewrote. redbear-ufw is a text-only firewall prototype
and is wired into redbear-mini (the text-only target), not redbear-full.
The prototype is built on every canonical build invocation per the
FIRST-CLASS CITIZEN policy.
- 5 firmware README.md files: removed stale 'KEEP-ORPHAN' / 'STUB-DATA'
markers that were written before the corrected policy. Each now reads
'FIRST-CLASS CITIZEN (wired into config/redbear-full.toml [packages])'
per the corrected wiring.
All 48 redbear-* recipes remain reachable from at least one config:
- text-only binaries + their consumers' libraries in redbear-mini
- graphics binaries + library-only recipes for desktop consumers in redbear-full
- hardware peripherals in redbear-{wifi,bluetooth}-experimental.toml (inherited by full)
sync-versions.sh --check still passes (75 Cat 1 crates, 0 drift).
4.1 KiB
Orphan Status — Library-Only Red Bear Crates (corrected 2026-07-28)
Date: 2026-07-28 (corrected to reflect FIRST-CLASS CITIZEN wiring)
Status: NO ORPHANS REMAIN
As of 2026-07-28, every redbear-* recipe is reachable from at least one Red Bear OS
build config (redbear-mini.toml for text-only, redbear-full.toml for graphics, plus
experimental configs for peripherals). Verification:
# All 48 redbear-* recipe directories in local/recipes/ are referenced from
# at least one config (via direct [packages] entry or transitive inheritance).
$ for r in $(find local/recipes -maxdepth 3 -type d -name "redbear-*" | sort -u); do
prog=$(basename "$r")
if ! grep -rq "$prog" config/redbear-full.toml config/redbear-mini.toml \
config/redbear-*-experimental.toml 2>/dev/null; then
echo "ORPHAN: $prog"
fi
done
# (prints nothing)
See local/docs/REDBEAR-FIRST-CLASS-CITIZEN-POLICY.md for the policy text.
What this doc covers
This doc explains the library-only category: recipes that produce no binary and are consumed via Cargo path dependencies. Library-only recipes are still first-class citizens (they appear in some config) — they just don't ship a binary.
Library-only recipes (4)
| Recipe | Consumers | Config |
|---|---|---|
redbear-hid-core |
(HID parser library — future input stack consumers; no current consumers in mini) | redbear-full.toml [packages] (paired with desktop input stack) |
redbear-login-protocol |
redbear-authd, redbear-greeter (both in full) |
redbear-full.toml [packages] |
redbear-passwd |
(account parsing library — currently unused by any binary in mini; consumed by future passwd CLI) |
redbear-full.toml [packages] |
redbear-tui-theme |
redbear-power, cub, tlc (all in mini) |
redbear-mini.toml [packages] |
These recipes have a [lib] section in their Cargo.toml but no [[bin]] entries. The
cookbook builds them as .rlib artifacts that consumers link against via Cargo path deps.
Why library-only recipes are not "orphans"
A recipe is "orphaned" if it is unreachable from any build config. Library-only recipes are unreachable only if their consumers don't exist. In Red Bear OS:
redbear-hid-core,redbear-login-protocol,redbear-passwdare wired intofullbecause their consumers (input stack, login stack, future passwd CLI) are full-only.redbear-tui-themeis wired intominibecause its consumers (TUI apps: power, cub, tlc) are in mini.
This is not an orphan pattern. It is the correct consumption pattern for libraries: declare the library as a build target, list it in some config so the cookbook cooks it, and let consumers pull it in via Cargo path dep.
Historical note
Before 2026-07-28, redbear-hid-core, redbear-login-protocol, redbear-passwd,
redbear-tui-theme, redbear-input-headers, redbear-driver-policy were all considered
"orphans" by the systematic assessment because they did not appear in any config. This was
incorrect analysis — the correct classification is "library-only / data-only / cross-category
build dep". The 2026-07-28 FIRST-CLASS CITIZEN wiring pass resolved all such cases by
adding them to the appropriate config (mini or full) per the wiring table in
local/docs/REDBEAR-FIRST-CLASS-CITIZEN-POLICY.md.
Recipe TOML files for library-only crates
All 4 library-only recipes follow the standard cookbook format:
[package]
name = "<recipe>"
version = "0.3.1"
edition = "2024"
license = "MIT"
repository = "https://gitea.redbearos.org/vasilito/RedBear-OS"
[source]
path = "source"
[build]
template = "cargo"
Their source Cargo.toml files have a [lib] section (e.g. [lib] name = "redbear_login_protocol")
but no [[bin]] entries. Consumers add a path dependency:
[dependencies]
redbear-login-protocol = { path = "../../../system/redbear-login-protocol/source" }
This is the standard Cargo workspace pattern for library-only internal crates.
See also
local/docs/REDBEAR-FIRST-CLASS-CITIZEN-POLICY.md— wiring policy (mini vs full table)local/docs/FIRMWARE-SUBSETS-DECISION.md— firmware subset recipes (data-only, graphics-only)