diff --git a/docs/state/targets.toml b/docs/state/targets.toml index 43dcd3b5..50c39404 100644 --- a/docs/state/targets.toml +++ b/docs/state/targets.toml @@ -57,6 +57,18 @@ paquetes = [ # porque los 8 ficheros eran headers y `libzstd.a`. Ampliar la canónica re-hashearía a sus 13 # consumidores (mesa entre ellos), así que va como variante. Ver SDD 28 §6.13. "zstd-cli", + # ── LA CAPACIDAD QUE FALTABA: WiFi (2026-09-13, barrido de perfiles) ───────────────────────── + # La imagen NO podía asociarse a una red inalámbrica. `dhcpcd`, ahí arriba, resuelve la IP de un + # cable; el handshake WPA2 de 4 vías lo hace un supplicant en userspace, y busybox NO lo trae. + # La receta existía desde el frente de metal —su cabecera dice literalmente «para asociar el WiFi + # del medio live al AP»— y no estaba declarada en NINGÚN perfil: sellada, reproducible, y en cero + # imágenes. Es la figura de `foot` otra vez, y esta vez el precio era quedarse sin red. + # Va en `base` por el mismo argumento que `dhcpcd`: es la capa que convierte «la máquina arrancó» + # en «la máquina tiene red», y un portátil sin WiFi es una máquina sin red aunque el resto esté. + # ⚠ Son TRES binarios (`wpa_supplicant`, `wpa_cli`, `wpa_passphrase`) y nada más. NO trae gestor + # de red: `networkmanager` existe SÓLO en `incoming-kde`, así que GNOME, COSMIC y sway no lo + # alcanzan (cola hermana). Eso es una decisión aparte, escrita en el plan del barrido. + "wpa_supplicant", ] [perfil.cli] @@ -100,6 +112,18 @@ paquetes = [ # herramientas de quien CONSTRUYE con la distro, no de quien la usa: `sccache` ya estaba sellada # y sin perfil, `mold` es de hoy. Van acá y no en `base` porque un servidor pelado no las quiere. "sccache", "mold", + # ── BARRIDO DE PERFILES (2026-09-13): selladas hace meses y en ninguna imagen ──────────────── + # Criterio para entrar acá, y está escrito porque el barrido encontró 620 hojas sin perfil y + # meterlas todas habría sido peor que no mirar: entra lo que un usuario de esta capa ESPERA + # encontrar y hoy no está. Lo demás queda en el catálogo y se instala por nombre — ver + # `docs/plan-barrido-perfiles-y-servicios.md`, §la política. + "nano", # el editor que teclea quien no sabe salir de vim; `base` sólo trae vim + "tig", # git en TUI; el corpus tenía lazygit y gitui y ninguno declarado hasta hoy + "patch", # aplicar un diff a mano. Userland clásico que simplemente faltaba + "socat", # el destornillador de red: sockets, puertos, diagnóstico + "pigz", # gzip en paralelo + "miller", # `jq` para CSV/TSV — el hueco de datos tabulares + "dwarves", # `pahole`: inspeccionar el BTF/DWARF del kernel. Esta distro compila el suyo ] [perfil.escritorio-mirada] @@ -369,6 +393,31 @@ paquetes = [ "cups", "bluez", ] +# ── QUÉ ARRANCA (el «enable»; SDD 30 §3) ──────────────────────────────────────────────────────── +# ⚠ ESTE PERFIL NO TENÍA ESTA LISTA HASTA EL 2026-09-13, y eso NO se leía como un hueco: se leía +# como un perfil completo. `paquetes` dice qué se INSTALA y `servicios` dice qué se LEVANTA; sin la +# segunda, la imagen salía con sus demonios instalados y **ninguno arrancado**, y la métrica de +# clausura daba N/N igual. De los cuatro escritorios sólo `escritorio-gnome` la tenía. +# +# Cada entrada es el `label` de un `[[service]]` declarado por una receta de la CLAUSURA de este +# perfil (no de sus raíces: la mitad viven en deps). La lista es exactamente lo que la clausura +# ofrece hoy — se computó cruzando los `[[service]]` del corpus y las cuatro colas contra el campo +# `perfiles` de los cinco `build-state*.json`, no a ojo. +# +# ⚠ Declarar NO es hacer funcionar. Los de `scope = "session"` salen con AVISO a propósito, como en +# GNOME: fuera de `mirada` nadie entrega Cards de sesión todavía. Un hueco escrito se ve. +# +# ⚠ DOS AUSENCIAS QUE ESTE CRUCE DESTAPÓ Y QUE NO SE ARREGLAN ACÁ: +# · **no hay `wireplumber`** en la clausura. `pipewire` sin gestor de sesión no encamina nada: +# los nodos existen y nadie los conecta. GNOME y COSMIC sí lo tienen; KDE y sway, no. +# · **no hay `logind-compat`**. KWin pide una sesión de logind para tomar el seat; acá la cubre +# `seatd`/el propio `plasma-workspace`, pero conviene saber que el servicio no está. +# Las dos son deuda del perfil, no de esta lista. Se escriben para que se vean. +servicios = [ + "dbus-system", "upowerd", "cupsd", "bluetoothd", + "pipewire", "pipewire-pulse", +] + [perfil.escritorio-gnome] descripcion = "escritorio GNOME (Wayland-nativo) desde fuente — 3er escritorio, X11 al tacho" cola = "incoming-gnome" @@ -672,6 +721,9 @@ paquetes = [ servicios = [ "dbus-system", "logind-compat", "polkit-compat", "accounts-daemon", "upowerd", "colord", "pipewire", "pipewire-pulse", "wireplumber", + # 2026-09-13: los dos que nacieron con `cups` y `bluez`. Sin esta línea la imagen los traía + # instalados y apagados, que es la mitad inútil de tenerlos. + "cupsd", "bluetoothd", ] [perfil.escritorio-cosmic] @@ -884,6 +936,28 @@ paquetes = [ "cliphist", ] +# ── QUÉ ARRANCA (el «enable»; SDD 30 §3) ──────────────────────────────────────────────────────── +# ⚠ ESTE PERFIL NO TENÍA ESTA LISTA HASTA EL 2026-09-13, y eso NO se leía como un hueco: se leía +# como un perfil completo. `paquetes` dice qué se INSTALA y `servicios` dice qué se LEVANTA; sin la +# segunda, la imagen salía con sus demonios instalados y **ninguno arrancado**, y la métrica de +# clausura daba N/N igual. De los cuatro escritorios sólo `escritorio-gnome` la tenía. +# +# Cada entrada es el `label` de un `[[service]]` declarado por una receta de la CLAUSURA de este +# perfil (no de sus raíces: la mitad viven en deps). La lista es exactamente lo que la clausura +# ofrece hoy — se computó cruzando los `[[service]]` del corpus y las cuatro colas contra el campo +# `perfiles` de los cinco `build-state*.json`, no a ojo. +# +# ⚠ Declarar NO es hacer funcionar. Los de `scope = "session"` salen con AVISO a propósito, como en +# GNOME: fuera de `mirada` nadie entrega Cards de sesión todavía. Un hueco escrito se ve. +# +# ⚠ AUSENCIA DESTAPADA POR EL CRUCE: **no hay `upowerd`**. COSMIC dibuja un indicador de batería y +# el demonio que lo alimenta no está en la clausura ⇒ en un portátil el applet no tiene datos. +# Deuda del perfil, no de esta lista. +servicios = [ + "dbus-system", "logind-compat", "cupsd", "bluetoothd", + "pipewire", "pipewire-pulse", "wireplumber", +] + [perfil.escritorio-sway] descripcion = "WM Wayland ligero: sway sobre wlroots propio, sin X11 y sin systemd" cola = "incoming-wlr" @@ -1078,6 +1152,32 @@ paquetes = [ # este perfil y en COSMIC: habla `wlr-data-control`, que KWin y mutter NO implementan (mismo # muro que `wf-recorder`). Declararlo donde no funciona sería peor que no tenerlo. "cliphist", + # `wlr-randr` (2026-09-13, barrido): sway no tenía CON QUÉ cambiar la resolución ni orientar una + # pantalla. `swaymsg output` sirve si el compositor está vivo y configurado; esto es la + # herramienta equivalente a xrandr para wlroots, y era otra hoja sellada sin perfil. + "wlr-randr", +] + +# ── QUÉ ARRANCA (el «enable»; SDD 30 §3) ──────────────────────────────────────────────────────── +# ⚠ ESTE PERFIL NO TENÍA ESTA LISTA HASTA EL 2026-09-13, y eso NO se leía como un hueco: se leía +# como un perfil completo. `paquetes` dice qué se INSTALA y `servicios` dice qué se LEVANTA; sin la +# segunda, la imagen salía con sus demonios instalados y **ninguno arrancado**, y la métrica de +# clausura daba N/N igual. De los cuatro escritorios sólo `escritorio-gnome` la tenía. +# +# Cada entrada es el `label` de un `[[service]]` declarado por una receta de la CLAUSURA de este +# perfil (no de sus raíces: la mitad viven en deps). La lista es exactamente lo que la clausura +# ofrece hoy — se computó cruzando los `[[service]]` del corpus y las cuatro colas contra el campo +# `perfiles` de los cinco `build-state*.json`, no a ojo. +# +# ⚠ Declarar NO es hacer funcionar. Los de `scope = "session"` salen con AVISO a propósito, como en +# GNOME: fuera de `mirada` nadie entrega Cards de sesión todavía. Un hueco escrito se ve. +# +# ⚠ MISMA AUSENCIA QUE KDE: **no hay `wireplumber`**. `pipewire` sin gestor de sesión no encamina +# nada. Y tampoco hay `upowerd` ni `logind-compat` — en un WM ligero eso es defendible (seatd hace +# el seat y `yambar` puede leer la batería de sysfs), pero es una decisión, no un hecho dado. +servicios = [ + "dbus-system", "cupsd", "bluetoothd", + "pipewire", "pipewire-pulse", ] [perfil.servidor]