gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1471Shell 173Rust 105Markdown 943545 Definitions

triaje: de 365 candidatos quedan TRES pendientes — y ninguno es «opcional»

Cierran las 24 que quedaban de una vuelta. El barrido de la frontera queda así: 327 opcional,
25 provisto, 10 nix-ismo, 3 pendientes. Arrancó la jornada en 152 pendientes.

⚠ SÉPTIMO ALIAS, y resuelve el enigma que dejé abierto esta mañana. libmpc → mpc: nixpkgs llama
`libmpc` a GNU MPC y `mpc` al cliente de MPD; acá GNU MPC se llama `mpc`. O sea que el «lo piden
mpc y yambar» de libmpdclient no era un error del sembrador cruzando mal: es que los dos catálogos
usan el MISMO nombre para paquetes DISTINTOS. Las dos puntas de esa confusión quedan cerradas.
Van siete alias y cinco formas: puntuación, mayúsculas, prefijo `lib`, versión en el nombre, y
ahora homonimia cruzada.

Lo demás, cada uno con su prueba en la receta o en el fuente: libev cae por el mismo
--enable-lib-only de nghttp2 que c-ares (configure.ac:230); graphite2 por -Dgraphite=disabled;
libliftoff por -Dlibliftoff=disabled; libtasn1 por -Dtrust_module=disabled; libasyncns por
-Dasyncns=disabled; inih por -DEXIV2_ENABLE_INIH=OFF contra un default ON; rdma-core por
--disable-rdma. nanosvg y resvg caen juntas porque fuzzel VENDORIZA nanosvg (su receta ya lo
decía) y fcft va con -Dsvg-backend=none. boost-build no hace falta porque la receta de boost es
sólo cabeceras. validate-pkg-config no es una librería sino un setup hook de nixpkgs → nix-ismo.

CAPACIDADES AUSENTES que quedan dichas: sin polkitd no corren las reglas .rules de JavaScript
(duktape); no se regula el brillo de un monitor EXTERNO por DDC/CI (ddcutil); los PDF con
tipografías CJK no incrustadas se ven mal (poppler-data); dolphin navega sin panel de metadatos
ni etiquetas (baloo-widgets).

⚠ LOS TRES QUE NO FIRMO, y por qué. No son «opcional»: son huecos de RUNTIME que ninguna receta
delata al construir, y decidirlos es elegir alcance de la distro, no triaje. Los tres con la
medición hecha y escrita en su `porque`:

  gnome-keyring   NINGÚN artefacto del store declara org.freedesktop.secrets (grep sobre el store
                  entero), y el artefacto de kwallet trae sólo libKF6Wallet.so, sin kwalletd6. Los
                  dos escritorios tienen el PROMPTER sellado y ninguno tiene el ALMACÉN
  glib-networking los usr/lib/gio/modules/ de los cuatro artefactos de glib están VACÍOS ⇒ GIO no
                  tiene TLS, y libsoup 3 delega el TLS en GIO ⇒ HTTPS mudo en el stack GNOME
  xdg-desktop-portal-kde  los únicos backends de portal sellados son el de cosmic y el de gnome; la
                  cola kde no tiene ni receta de xdg-desktop-portal ⇒ en Plasma la captura de
                  pantalla de obs-studio (linux-pipewire → portal ScreenCast) no tiene con quién
                  hablar, mientras que en GNOME y COSMIC sí

Los tres son el mismo patrón que ya nos costó una noche con las fuentes: una raíz que no resuelve
queda `wanted` y NINGUNA métrica lo dice. Marcarlos `hueco` los mete como raíz en targets.toml y
al drenaje; eso lo decide el usuario.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LCt3ettR4Z7b6wPCBmbvEV

893b126c31f23998561d50b36e1aebb498df7225 · by Sergio · (1 month ago) · parent f09927cc5 · browse the tree at this commit

Semantic delta

No definition changed: this change is text, documentation or data.

3 files · +53 −50

diff --git a/docs/state/alias-triaje.txt b/docs/state/alias-triaje.txt
index 5740d0d0..8898c1cf 100644
--- a/docs/state/alias-triaje.txt
+++ b/docs/state/alias-triaje.txt
@@ -7,6 +7,7 @@ desktop-file-utils desktop-file-utils
 glad2 glad
 gmp-with-cxx gmp
 gusb libgusb
+libmpc mpc
 libxcb-cursor xcb-util-cursor
 libxcb-image xcb-util-image
 libxcb-keysyms xcb-util-keysyms
diff --git a/docs/state/frontera-triaje.toml b/docs/state/frontera-triaje.toml
index ef762e84..08bd2536 100644
--- a/docs/state/frontera-triaje.toml
+++ b/docs/state/frontera-triaje.toml
@@ -161,9 +161,9 @@ perfiles = ["escritorio-kde"]
 piden = ["dolphin", "gwenview", "plasma-desktop", "plasma-workspace"]
 
 [candidato."baloo-widgets"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (dolphin); mirá si es una feature opcional"
+porque = "dolphin la declara TYPE OPTIONAL (CMakeLists.txt:131-135) y su rama exige además KF6Baloo. Es el panel de metadatos y etiquetas; sin él dolphin navega igual"
 perfiles = ["escritorio-kde"]
 piden = ["dolphin"]
 
@@ -189,9 +189,9 @@ perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-
 piden = ["python3"]
 
 [candidato."boost-build"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (boost); mirá si es una feature opcional"
+porque = "la receta de boost construye SÓLO cabeceras — su fase configure es un `true` y su [deps].build está vacío —, así que no hay nada que compilar y b2 no hace falta"
 perfiles = ["escritorio-kde"]
 piden = ["boost"]
 
@@ -276,9 +276,9 @@ perfiles = ["escritorio-gnome", "escritorio-kde"]
 piden = ["libsecret", "modemmanager"]
 
 [candidato."ddcutil"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (powerdevil); mirá si es una feature opcional"
+porque = "powerdevil la declara TYPE OPTIONAL (CMakeLists.txt:70-77) con su PURPOSE: «Set monitor settings over DDC/CI channel». Capacidad ausente: no se regula el brillo de un monitor EXTERNO por DDC/CI; el de un portátil va por sysfs"
 perfiles = ["escritorio-kde"]
 piden = ["powerdevil"]
 
@@ -360,9 +360,9 @@ perfiles = ["escritorio-kde"]
 piden = ["xwayland"]
 
 [candidato."duktape"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (polkit); mirá si es una feature opcional"
+porque = "la receta de polkit ya lo tenía escrito: -Dlibs-only=true deja fuera polkitd, y el bloque `if not libs_only` del meson es justo el que pide expat y duktape (el motor JS de las reglas). ⚠ Capacidad ausente que conviene tener dicha: sin polkitd no corren las reglas .rules de JavaScript"
 perfiles = ["escritorio-gnome", "escritorio-kde"]
 piden = ["polkit"]
 
@@ -472,9 +472,9 @@ perfiles = ["escritorio-gnome"]
 piden = ["gnome-shell"]
 
 [candidato."getopt"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (libseccomp); mirá si es una feature opcional"
+porque = "el `getopt` de nixpkgs es el BINARIO suelto de util-linux. Lo que libseccomp usa es getopt(3), que provee musl: no hay librería que traer"
 perfiles = ["escritorio-gnome"]
 piden = ["libseccomp"]
 
@@ -511,7 +511,7 @@ piden = ["libplacebo"]
 [candidato."glib-networking"]
 veredicto = "pendiente"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (evolution-data-server); mirá si es una feature opcional"
+porque = "PENDIENTE A PROPÓSITO, no es 'opcional': es el back-end TLS de GIO y se carga como módulo, no se enlaza. MEDIDO: los directorios usr/lib/gio/modules/ de los CUATRO artefactos de glib del store están VACÍOS ⇒ GIO no tiene TLS, y libsoup 3 (que es quien habla HTTP en el stack GNOME) delega el TLS en GIO. Consecuencia: HTTPS mudo para eds y para todo lo que use libsoup. No hay receta de glib-networking ni de gnutls en el catálogo. Que la distro quiera o no HTTPS en el stack GNOME es decisión de diseño, no de triaje"
 perfiles = ["escritorio-gnome"]
 piden = ["evolution-data-server"]
 
@@ -612,9 +612,9 @@ perfiles = ["escritorio-kde"]
 piden = ["plasma-workspace", "plasma5support"]
 
 [candidato."graphite2"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (harfbuzz); mirá si es una feature opcional"
+porque = "harfbuzz va con -Dgraphite=disabled explícito: es el motor de tipografías Graphite (escrituras complejas de SIL), no el moldeado normal"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
 piden = ["harfbuzz"]
 
@@ -716,9 +716,9 @@ perfiles = ["escritorio-kde"]
 piden = ["sonnet"]
 
 [candidato."inih"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (exiv2); mirá si es una feature opcional"
+porque = "exiv2 va con -DEXIV2_ENABLE_INIH=OFF explícito contra un default ON (CMakeLists.txt:38), y la receta lo documenta. Es el parser del fichero de configuración"
 perfiles = ["escritorio-kde"]
 piden = ["exiv2"]
 
@@ -771,9 +771,9 @@ perfiles = ["escritorio-kde"]
 piden = ["gwenview"]
 
 [candidato."kimageformats"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (kscreen); mirá si es una feature opcional"
+porque = "no aparece en el CMakeLists de kscreen: son PLUGINS de imagen de Qt que se cargan en runtime (avif, heif, psd…). Nada de esto se enlaza"
 perfiles = ["escritorio-kde"]
 piden = ["kscreen"]
 
@@ -844,9 +844,9 @@ perfiles = ["escritorio-kde"]
 piden = ["kfilemetadata"]
 
 [candidato."libasyncns"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (pulseaudio); mirá si es una feature opcional"
+porque = "pulseaudio va con -Dasyncns=disabled explícito, y además con -Ddaemon=false -Dclient=true: de pulseaudio se construye la librería cliente (para las apps que hablan su protocolo), no el servidor, que acá es PipeWire"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
 piden = ["pulseaudio"]
 
@@ -970,9 +970,9 @@ piden = ["kwin"]
 ausente = true  # ya no aparece en el último barrido de la frontera
 
 [candidato."libev"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (nghttp2); mirá si es una feature opcional"
+porque = "configure.ac:230 de nghttp2 pone request_libev=no DENTRO del bloque --enable-lib-only, que es lo que la receta pasa. Mismo mecanismo que c-ares"
 perfiles = ["escritorio-gnome"]
 piden = ["nghttp2"]
 
@@ -1057,9 +1057,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor
 piden = ["pipewire"]
 
 [candidato."libliftoff"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (wlroots); mirá si es una feature opcional"
+porque = "wlroots va con -Dlibliftoff=disabled explícito: descarga la composición en los planos de hardware del KMS. Optimización, no función"
 perfiles = ["escritorio-sway"]
 piden = ["wlroots"]
 
@@ -1085,9 +1085,10 @@ perfiles = ["base", "cli", "escritorio-sway"]
 piden = ["iproute2"]
 
 [candidato."libmpc"]
-veredicto = "pendiente"
+veredicto = "provisto"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (kcalc); mirá si es una feature opcional"
+provee = "mpc"
+porque = "no falta, y cierra el enigma de libmpdclient: nixpkgs llama `libmpc` a GNU MPC y `mpc` al cliente de MPD; acá GNU MPC se llama `mpc` (recipes/mpc.toml, --with-gmp --with-mpfr) y ya figura en el [deps].build de kcalc junto a gmp y mpfr. Séptimo alias, quinta forma: el mismo nombre significa DOS paquetes distintos en los dos catálogos"
 perfiles = ["escritorio-kde"]
 piden = ["kcalc"]
 
@@ -1271,9 +1272,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor
 piden = ["glib"]
 
 [candidato."libtasn1"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (p11-kit); mirá si es una feature opcional"
+porque = "p11-kit va con -Dtrust_module=disabled, que es el módulo que parsea certificados y lo único que pediría libtasn1"
 perfiles = ["escritorio-gnome"]
 piden = ["p11-kit"]
 
@@ -1653,16 +1654,16 @@ perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-
 piden = ["python3"]
 
 [candidato."mutest"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (graphene); mirá si es una feature opcional"
+porque = "es el marco de tests de graphene y la receta va con -Dtests=false -Dinstalled_tests=false"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-sway"]
 piden = ["graphene"]
 
 [candidato."nanosvg"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (fcft); mirá si es una feature opcional"
+porque = "fcft va con -Dsvg-backend=none. Y donde SÍ se usa —fuzzel, -Dsvg-backend=nanosvg— va VENDORIZADO en el árbol, cosa que la receta de fuzzel ya documenta: por eso no aparece como dep"
 perfiles = ["escritorio-gnome", "escritorio-sway"]
 piden = ["fcft"]
 
@@ -1810,9 +1811,9 @@ perfiles = ["escritorio-kde"]
 piden = ["plasma-desktop"]
 
 [candidato."plasma-systemmonitor"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (kinfocenter); mirá si es una feature opcional"
+porque = "no aparece en el CMakeLists de kinfocenter: es una APP aparte que kinfocenter puede lanzar. El sembrador la hereda de la expresión de nixpkgs"
 perfiles = ["escritorio-kde"]
 piden = ["kinfocenter"]
 
@@ -1839,16 +1840,16 @@ piden = ["kauth", "plasma-workspace"]
 ausente = true  # ya no aparece en el último barrido de la frontera
 
 [candidato."pop-icon-theme"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (cosmic-icons); mirá si es una feature opcional"
+porque = "es un tema de ICONOS: datos, no código, y cosmic-icons ya provee el suyo. Nada lo enlaza ni lo exige para construir"
 perfiles = ["escritorio-cosmic"]
 piden = ["cosmic-icons"]
 
 [candidato."poppler-data"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (poppler); mirá si es una feature opcional"
+porque = "son las TABLAS de codificación CJK que poppler busca en runtime para PDFs con tipografías asiáticas sin incrustar. El build no las necesita. Capacidad ausente acotada: PDFs CJK sin fuentes incrustadas se ven mal"
 perfiles = ["escritorio-kde"]
 piden = ["poppler"]
 
@@ -1881,9 +1882,9 @@ perfiles = ["escritorio-gnome", "escritorio-kde"]
 piden = ["evolution-data-server", "libei", "opencv"]
 
 [candidato."protobuf-c"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (libei); mirá si es una feature opcional"
+porque = "libei 1.5.0 —la que pinea la receta— no nombra protobuf en NINGÚN fichero (grep sobre el árbol entero). Su generación de código va por jinja2, que sí está en [deps]"
 perfiles = ["escritorio-gnome"]
 piden = ["libei"]
 
@@ -2019,9 +2020,9 @@ perfiles = ["escritorio-kde"]
 piden = ["qcoro"]
 
 [candidato."rdma-core"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (libpcap); mirá si es una feature opcional"
+porque = "libpcap va con --disable-rdma explícito: es la captura sobre InfiniBand/RoCE"
 perfiles = ["escritorio-kde"]
 piden = ["libpcap"]
 
@@ -2034,9 +2035,9 @@ piden = ["jq"]
 ausente = true  # ya no aparece en el último barrido de la frontera
 
 [candidato."resvg"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (fuzzel); mirá si es una feature opcional"
+porque = "fuzzel va con -Dsvg-backend=nanosvg, que es su default y viene vendorizado ⇒ no entra NINGUNA librería SVG externa, ni librsvg ni resvg"
 perfiles = ["escritorio-sway"]
 piden = ["fuzzel"]
 
@@ -2273,9 +2274,9 @@ perfiles = ["base", "cli", "escritorio-sway"]
 piden = ["shadow"]
 
 [candidato."tcl"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (sqlite); mirá si es una feature opcional"
+porque = "sólo lo pide el arnés de tests de sqlite y las ligaduras tclsqlite; la receta construye la amalgamación con ./configure --disable-shared --enable-static"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-sway"]
 piden = ["sqlite"]
 
@@ -2361,9 +2362,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor
 piden = ["libdrm", "mesa", "pipewire"]
 
 [candidato."validate-pkg-config"]
-veredicto = "pendiente"
+veredicto = "nix-ismo"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (jansson); mirá si es una feature opcional"
+porque = "no es una librería: es un SETUP HOOK de nixpkgs (validatePkgConfig) que revisa los .pc al final del build. Andamiaje del otro sistema"
 perfiles = ["escritorio-kde"]
 piden = ["jansson"]
 
@@ -2433,7 +2434,7 @@ piden = ["gitui"]
 [candidato."xdg-desktop-portal-kde"]
 veredicto = "pendiente"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (kinfocenter); mirá si es una feature opcional"
+porque = "PENDIENTE A PROPÓSITO, no es 'opcional': kinfocenter no lo necesita para construir, pero el candidato destapa un hueco de RUNTIME del perfil KDE. MEDIDO sobre el store: los únicos backends de portal sellados son org.freedesktop.impl.portal.desktop.cosmic y .desktop.gnome; no hay ninguno de KDE, y la cola kde ni siquiera tiene receta de xdg-desktop-portal. Consecuencia concreta: en Plasma, la captura de pantalla de obs-studio —que va por linux-pipewire → portal ScreenCast— no tiene con quién hablar, mientras que en GNOME y COSMIC sí (ese frente está cerrado). Decidirlo es elegir alcance del perfil KDE, no triaje"
 perfiles = ["escritorio-kde"]
 piden = ["kinfocenter"]
 
@@ -2510,9 +2511,9 @@ piden = ["rsync"]
 ausente = true  # ya no aparece en el último barrido de la frontera
 
 [candidato."yasm"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (libass); mirá si es una feature opcional"
+porque = "libass va con --enable-asm y su [deps].build declara `nasm`, que es el ensamblador que usa todo el corpus (ffmpeg incluido). El artefacto sella con eso: yasm es el ensamblador ALTERNATIVO, no uno que falte"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
 piden = ["libass"]
 
diff --git a/docs/state/nixismos-triaje.txt b/docs/state/nixismos-triaje.txt
index d16af816..ca3e96ca 100644
--- a/docs/state/nixismos-triaje.txt
+++ b/docs/state/nixismos-triaje.txt
@@ -9,3 +9,4 @@ lzip
 python3-3.14.6-env
 python3-3.14.7-env
 remove-references-to
+validate-pkg-config