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 Sutichaykuna

triaje: nodejs y pipewire enteros — 18 más, y la distro no tiene Bluetooth

De 105 pendientes a 87. Cuatro de las cinco recetas que más candidatos arrastraban ya están
cerradas (ffmpeg, obs-studio, xwayland, nodejs, pipewire).

Las 8 de nodejs son todas BUNDLEADAS, y no se dio por bueno el comentario de la receta: se listó
el propio node-v24.18.1.tar.gz y ahí están, deps/googletest, deps/histogram, deps/llhttp,
deps/merve, deps/nbytes, deps/simdjson, deps/uvwasi. simdutf es la excepción que confirma que
mirar sirve — NO está en deps/ de primer nivel sino en deps/v8/third_party/simdutf, que es
exactamente el fichero que la receta parchea para apagar el kernel AVX-512.

⚠ CAPACIDAD AUSENTE, y más honda que la perilla: ldacbt, libfreeaptx y liblc3 son los codecs de
audio Bluetooth (LDAC de Sony, aptX de Qualcomm, LC3 de LE Audio). Caen por -Dbluez5=disabled,
pero el hecho de fondo es que NO HAY receta de bluez en todo el catálogo: la distro no tiene
Bluetooth, ni de audio ni de nada. Eso conviene que esté dicho acá y no descubierto por alguien
que enchufa unos auriculares.

⚠ SEGUNDO Y TERCER DESFASE DE VERSIÓN del barrido (el primero fue openapv/ffmpeg): libebur128 y
spandsp no aparecen en NINGÚN fichero de pipewire 1.2.7, que es la que la receta pinea. Salen de
una expresión de nixpkgs para una pipewire más nueva. Van como 'opcional' y no 'nix-ismo' a
propósito, igual que openapv: mandarlas al descarte del sembrador las haría invisibles el día que
subamos de versión, que es justo cuando vuelven a ser una pregunta legítima.

El resto de pipewire son perillas apagadas a mano y verificadas contra su meson_options.txt:
libffado:350 (audio FireWire), libcamera:180, libmysofa:229 (HRTF de audio espacial), lv2:261
(lilv, el host de plugins) y roc:237 (audio en tiempo real por red).

Nota sobre el commit anterior: dije que convenía normalizar guiones y mayúsculas en seed-graph.py.
Medido después — normalizando nombre de candidato contra el campo `name` de las 1141 recetas, de
los 105 pendientes CERO son ese caso. nlohmann_json y libxfont_2 eran los únicos. Sigue siendo
buena profilaxis, pero no hay backlog que la pague: no se toca el sembrador por ahora.

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

153725bf82cfd8c3b78a68141094dc6935a5e476 · ruwaq Sergio · (1 killa ñawpaq) · tayta 1ef1bea60 · kay commitpi sach'ata qhaway

Semántico sayk'uy

Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.

1 qillqakuna · +36 −36

diff --git a/docs/state/frontera-triaje.toml b/docs/state/frontera-triaje.toml
index 327a2023..f55b665c 100644
--- a/docs/state/frontera-triaje.toml
+++ b/docs/state/frontera-triaje.toml
@@ -406,9 +406,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor
 piden = ["obs-studio", "pipewire"]
 
 [candidato."ffado"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (pipewire); mirá si es una feature opcional"
+porque = "la receta pasa -Dlibffado=disabled (meson_options.txt:350). Es el soporte de interfaces de audio FireWire profesionales"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
 piden = ["pipewire"]
 
@@ -665,9 +665,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor
 piden = ["gnome-shell", "libcanberra", "opencv", "pipewire", "qtmultimedia", "xdg-desktop-portal", "xdg-desktop-portal-cosmic"]
 
 [candidato."gtest"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (nodejs); mirá si es una feature opcional"
+porque = "nodejs la BUNDLEA: está en deps/ del tarball pineado (verificado listando el propio node-v24.18.1.tar.gz, no de memoria). La receta ya declara la decisión de fondo: acá Node es una herramienta de build del sandbox de Gecko, no software que la distro publique, así que gana el cierre chico. Está como deps/googletest"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
 piden = ["nodejs"]
 
@@ -693,9 +693,9 @@ perfiles = ["escritorio-kde"]
 piden = ["opencv"]
 
 [candidato."hdrhistogram_c"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (nodejs); mirá si es una feature opcional"
+porque = "nodejs la BUNDLEA: está en deps/ del tarball pineado (verificado listando el propio node-v24.18.1.tar.gz, no de memoria). La receta ya declara la decisión de fondo: acá Node es una herramienta de build del sandbox de Gecko, no software que la distro publique, así que gana el cierre chico. Está como deps/histogram"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
 piden = ["nodejs"]
 
@@ -807,9 +807,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor
 piden = ["ffmpeg", "libsndfile"]
 
 [candidato."ldacbt"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (pipewire); mirá si es una feature opcional"
+porque = "codec de audio Bluetooth: vive en spa/plugins/bluez5, que spa/plugins/meson.build:19 sólo compila `if bluez_deps_found`, y la receta pasa -Dbluez5=disabled. ⚠ Y el hueco es más hondo que la perilla: NO HAY receta de bluez en todo el catálogo ⇒ la distro no tiene Bluetooth, ni de audio ni de nada. LDAC es el codec de Sony"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
 piden = ["pipewire"]
 
@@ -890,9 +890,9 @@ perfiles = ["base", "cli", "escritorio-sway"]
 piden = ["shadow"]
 
 [candidato."libcamera"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (pipewire); mirá si es una feature opcional"
+porque = "la receta pasa -Dlibcamera=disabled (meson_options.txt:180). La captura de cámara de la distro es un hueco YA CONOCIDO y declarado en obs-studio (-DENABLE_V4L2=OFF), no uno nuevo que destape este candidato"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
 piden = ["pipewire"]
 
@@ -953,9 +953,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor
 piden = ["libplacebo"]
 
 [candidato."libebur128"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (pipewire); mirá si es una feature opcional"
+porque = "⚠ DESFASE DE VERSIÓN, no una perilla apagada: pipewire 1.2.7 —la que pinea la receta— no nombra ebur128 en NINGÚN fichero (grep sobre el árbol entero). El candidato sale de una expresión de nixpkgs para una pipewire más nueva. Vuelve a ser pregunta legítima el día que subamos de versión"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
 piden = ["pipewire"]
 
@@ -975,9 +975,9 @@ perfiles = ["escritorio-gnome"]
 piden = ["nghttp2"]
 
 [candidato."libfreeaptx"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (pipewire); mirá si es una feature opcional"
+porque = "codec de audio Bluetooth: vive en spa/plugins/bluez5, que spa/plugins/meson.build:19 sólo compila `if bluez_deps_found`, y la receta pasa -Dbluez5=disabled. ⚠ Y el hueco es más hondo que la perilla: NO HAY receta de bluez en todo el catálogo ⇒ la distro no tiene Bluetooth, ni de audio ni de nada. aptX es el codec de Qualcomm (meson_options.txt:120)"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
 piden = ["pipewire"]
 
@@ -1048,9 +1048,9 @@ perfiles = ["escritorio-kde"]
 piden = ["okular", "plasma-workspace"]
 
 [candidato."liblc3"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (pipewire); mirá si es una feature opcional"
+porque = "codec de audio Bluetooth: vive en spa/plugins/bluez5, que spa/plugins/meson.build:19 sólo compila `if bluez_deps_found`, y la receta pasa -Dbluez5=disabled. ⚠ Y el hueco es más hondo que la perilla: NO HAY receta de bluez en todo el catálogo ⇒ la distro no tiene Bluetooth, ni de audio ni de nada. LC3 es el codec de Bluetooth LE Audio (meson_options.txt:140)"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
 piden = ["pipewire"]
 
@@ -1103,9 +1103,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor
 piden = ["libsndfile"]
 
 [candidato."libmysofa"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (pipewire); mirá si es una feature opcional"
+porque = "la receta pasa -Dlibmysofa=disabled (meson_options.txt:229): son las funciones de transferencia HRTF para audio espacial en auriculares"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
 piden = ["pipewire"]
 
@@ -1511,9 +1511,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor
 piden = ["mesa"]
 
 [candidato."lilv"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (pipewire); mirá si es una feature opcional"
+porque = "es el host de plugins LV2 y la receta pasa -Dlv2=disabled (meson_options.txt:261). Sin plugins LV2 en el catálogo no hay qué cargar"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
 piden = ["pipewire"]
 
@@ -1525,9 +1525,9 @@ perfiles = ["escritorio-kde"]
 piden = ["qtbase"]
 
 [candidato."llhttp"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (nodejs); mirá si es una feature opcional"
+porque = "nodejs la BUNDLEA: está en deps/ del tarball pineado (verificado listando el propio node-v24.18.1.tar.gz, no de memoria). La receta ya declara la decisión de fondo: acá Node es una herramienta de build del sandbox de Gecko, no software que la distro publique, así que gana el cierre chico. Está como deps/llhttp"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
 piden = ["nodejs"]
 
@@ -1603,9 +1603,9 @@ perfiles = ["escritorio-kde"]
 piden = ["qtbase"]
 
 [candidato."merve"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (nodejs); mirá si es una feature opcional"
+porque = "nodejs la BUNDLEA: está en deps/ del tarball pineado (verificado listando el propio node-v24.18.1.tar.gz, no de memoria). La receta ya declara la decisión de fondo: acá Node es una herramienta de build del sandbox de Gecko, no software que la distro publique, así que gana el cierre chico. Está como deps/merve"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
 piden = ["nodejs"]
 
@@ -1665,9 +1665,9 @@ perfiles = ["escritorio-gnome", "escritorio-sway"]
 piden = ["fcft"]
 
 [candidato."nbytes"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (nodejs); mirá si es una feature opcional"
+porque = "nodejs la BUNDLEA: está en deps/ del tarball pineado (verificado listando el propio node-v24.18.1.tar.gz, no de memoria). La receta ya declara la decisión de fondo: acá Node es una herramienta de build del sandbox de Gecko, no software que la distro publique, así que gana el cierre chico. Está como deps/nbytes"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
 piden = ["nodejs"]
 
@@ -2046,9 +2046,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor
 piden = ["cmake"]
 
 [candidato."roc-toolkit"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (pipewire); mirá si es una feature opcional"
+porque = "la receta pasa -Droc=disabled (meson_options.txt:237): es el transporte de audio en tiempo real por red"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
 piden = ["pipewire"]
 
@@ -2122,16 +2122,16 @@ perfiles = ["escritorio-kde"]
 piden = ["kcoreaddons", "kguiaddons", "kjobwidgets", "knotifications", "kstatusnotifieritem", "kunitconversion", "kwidgetsaddons", "kxmlgui"]
 
 [candidato."simdjson"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (nodejs); mirá si es una feature opcional"
+porque = "nodejs la BUNDLEA: está en deps/ del tarball pineado (verificado listando el propio node-v24.18.1.tar.gz, no de memoria). La receta ya declara la decisión de fondo: acá Node es una herramienta de build del sandbox de Gecko, no software que la distro publique, así que gana el cierre chico. Está como deps/simdjson, y la receta lo PARCHEA ahí mismo (apaga SIMDJSON_AVX512_ALLOWED en el .h y en el .cpp amalgamado)"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
 piden = ["nodejs"]
 
 [candidato."simdutf"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (nodejs); mirá si es una feature opcional"
+porque = "nodejs la BUNDLEA: está en deps/ del tarball pineado (verificado listando el propio node-v24.18.1.tar.gz, no de memoria). La receta ya declara la decisión de fondo: acá Node es una herramienta de build del sandbox de Gecko, no software que la distro publique, así que gana el cierre chico. No está en deps/ de primer nivel sino DENTRO de V8: deps/v8/third_party/simdutf, que es exactamente el fichero que la receta parchea"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
 piden = ["nodejs"]
 
@@ -2149,9 +2149,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor
 piden = ["ffmpeg", "pulseaudio"]
 
 [candidato."spandsp"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (pipewire); mirá si es una feature opcional"
+porque = "mismo caso que libebur128: pipewire 1.2.7 no lo nombra en ningún fichero. Sale de la expresión de nixpkgs para una versión más nueva que la que pineamos"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
 piden = ["pipewire"]
 
@@ -2333,9 +2333,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor
 piden = ["opencv", "sqlite"]
 
 [candidato."uvwasi"]
-veredicto = "pendiente"
+veredicto = "opcional"
 sugerencia = "opcional?"
-porque = "lo pide una sola receta (nodejs); mirá si es una feature opcional"
+porque = "nodejs la BUNDLEA: está en deps/ del tarball pineado (verificado listando el propio node-v24.18.1.tar.gz, no de memoria). La receta ya declara la decisión de fondo: acá Node es una herramienta de build del sandbox de Gecko, no software que la distro publique, así que gana el cierre chico. Está como deps/uvwasi"
 perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
 piden = ["nodejs"]