Files
RedBear-OS/local/docs/ORPHAN-STATUS.md
T
vasilito 304b0d4977 docs: correct first-class-citizen policy + remove stale ORPHAN markers
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).
2026-07-28 16:24:17 +09:00

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-passwd are wired into full because their consumers (input stack, login stack, future passwd CLI) are full-only.
  • redbear-tui-theme is wired into mini because 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)