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 1373Shell 116Rust 74Markdown 641915 Definitions

⎇ d513a391074b0dc7ee97ea3d9f8eda9972f8fcf3 docs/state/frontera-triaje.toml TOML · 2553 lines · 114.2 KB History raw

triaje: corrijo pygobject — no era «opcional», ya la teníamos como py3-gobject 70a1593f5 · Sergio ·

1# frontera-triaje.toml — VEREDICTOS sobre los candidatos a hueco de la frontera.
2#
3# Lo genera y sincroniza `scripts/triaje.py` desde `seed-frontera.json`; los veredictos los
4# pone un HUMANO editando este fichero. Sincronizar NO pisa lo ya decidido: sólo agrega
5# candidatos nuevos y marca `[ausente]` los que dejaron de aparecer.
6#
7# veredicto ∈ pendiente | hueco | opcional | nix-ismo | provisto
8#   hueco    — falta de verdad. Ponelo como raíz en docs/state/targets.toml ⇒ nace un nodo
9#              `wanted` en el grafo y entra al drenaje. (`triaje.py --aplicar` te da la línea.)
10#   opcional — dep que nixpkgs habilita y nosotros no queremos. Queda registrada para que no
11#              vuelva a preguntarse.
12#   nix-ismo — andamiaje de nixpkgs sin contraparte acá. `--aplicar` lo manda al descarte del
13#              sembrador ⇒ la próxima corrida sale más limpia.
14#   provisto — no falta: ya lo da otra receta con otro nombre. `provee = "<receta>"` dice cuál;
15#              `--aplicar` lo manda al sembrador como alias.
16#
17# `sugerencia` es una heurística con evidencia, NO un veredicto: abarata el juicio, no lo cierra.
18schema = "hammer-frontera-triaje/1"
19
20[candidato."CUnit"]
21veredicto = "nix-ismo"
22sugerencia = "opcional?"
23porque = "nghttp2 1.64.0 no nombra CUnit en ningún fichero: sus tests usan munit VENDORIZADO en tests/munit/. Es una dep rancia de la expresión de nixpkgs ⇒ no puede volver como hueco ni encendiendo los tests"
24perfiles = ["escritorio-gnome"]
25piden = ["nghttp2"]
26ausente = true  # ya no aparece en el último barrido de la frontera
27
28[candidato."SPIRV-LLVM-Translator"]
29veredicto = "opcional"
30sugerencia = "opcional?"
31porque = "Vulkan / compilación de shaders / dispatch GL: no habilitado (mesa se construye sin ellos)"
32perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
33piden = ["mesa"]
34
35[candidato."acl"]
36veredicto = "opcional"
37porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
38perfiles = ["base", "cli", "escritorio-kde", "escritorio-sway"]
39piden = ["kio", "libarchive", "rsync"]
40
41[candidato."ada"]
42veredicto = "opcional"
43sugerencia = "opcional?"
44porque = "nodejs la bundlea a propósito y la receta lo dice con nombre y apellido (ada, brotli, c-ares, icu, nghttp2, openssl, simdjson, simdutf, sqlite, zstd): acá Node es una HERRAMIENTA DE BUILD del sandbox de Gecko, no software que la distro publique"
45perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
46piden = ["nodejs"]
47
48[candidato."adns"]
49veredicto = "opcional"
50sugerencia = "opcional?"
51porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
52perfiles = ["base", "cli", "escritorio-sway"]
53piden = ["gnupg"]
54
55[candidato."amf-headers"]
56veredicto = "opcional"
57sugerencia = "opcional?"
58porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-amf, la codificación por hardware de AMD: necesita el driver propietario, que la distro no trae"
59perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
60piden = ["ffmpeg"]
61
62[candidato."appstream-qt"]
63veredicto = "opcional"
64porque = "formatos/paquetería ajenos; hammer tiene los suyos (.swm, Etapa F)"
65perfiles = ["escritorio-kde"]
66piden = ["frameworkintegration", "plasma-workspace"]
67
68[candidato."argcomplete"]
69veredicto = "opcional"
70sugerencia = "opcional?"
71porque = "no lo enlaza nada: tools/meson.build:17 lo usa como PROGRAMA (register-python-argcomplete) para generar el completado de bash de `gdctl`, dentro del bloque `if bash_completion`. La receta pasa -Dbash_completion=false"
72perfiles = ["escritorio-gnome"]
73piden = ["mutter"]
74
75[candidato."argyllcms"]
76veredicto = "opcional"
77sugerencia = "opcional?"
78porque = "colord va con -Dargyllcms_sensor=false explícito: es el soporte de colorímetros de hardware para calibrar la pantalla"
79perfiles = ["escritorio-gnome"]
80piden = ["colord"]
81
82[candidato."asio"]
83veredicto = "opcional"
84sugerencia = "opcional?"
85porque = "dep del plugin obs-websocket, que NO se construye: la receta lo neutraliza con `touch plugins/obs-websocket/CMakeLists.txt` y el artefacto sellado lo confirma — usr/lib/obs-plugins no tiene obs-websocket.so. asio es su capa de red asíncrona"
86perfiles = ["escritorio-kde"]
87piden = ["obs-studio"]
88
89[candidato."aspell"]
90veredicto = "opcional"
91sugerencia = "opcional?"
92porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
93perfiles = ["escritorio-kde"]
94piden = ["sonnet"]
95
96[candidato."at-spi2-core"]
97veredicto = "opcional"
98sugerencia = "opcional?"
99porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
100perfiles = ["escritorio-kde"]
101piden = ["qtbase"]
102ausente = true  # ya no aparece en el último barrido de la frontera
103
104[candidato."attr"]
105veredicto = "opcional"
106porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
107perfiles = ["escritorio-kde"]
108piden = ["kfilemetadata", "kio", "libarchive"]
109
110[candidato."audit"]
111veredicto = "opcional"
112porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
113perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
114piden = ["dbus", "linux-pam", "networkmanager"]
115
116[candidato."aurorae"]
117veredicto = "opcional"
118sugerencia = "opcional?"
119porque = "módulo opcional de Qt/KDE: el escritorio construye sin él — revisá si lo querés para un Plasma completo"
120perfiles = ["escritorio-kde"]
121piden = ["kwin"]
122
123[candidato."autoconf"]
124veredicto = "opcional"
125sugerencia = "opcional?"
126porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
127perfiles = ["base", "cli", "escritorio-kde", "escritorio-sway"]
128piden = ["util-linux"]
129
130[candidato."autoconf-archive"]
131veredicto = "opcional"
132sugerencia = "opcional?"
133porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
134perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
135piden = ["python3"]
136
137[candidato."autogen"]
138veredicto = "opcional"
139sugerencia = "opcional?"
140porque = "no se enlaza: configure.ac:68 busca el PROGRAMA `autogen` y si no está sólo hace `touch tests/*.c` (línea 535). El Makefile.am:414 lo dice con todas las letras — los ficheros generados VIENEN en el tarball de release y el touch existe «to prevent stale files from calling autogen in tarball releases». Andamiaje de los tests, no de la librería"
141perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
142piden = ["libsndfile"]
143
144[candidato."automake"]
145veredicto = "opcional"
146sugerencia = "opcional?"
147porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
148perfiles = ["base", "cli", "escritorio-kde", "escritorio-sway"]
149piden = ["util-linux"]
150
151[candidato."avahi"]
152veredicto = "opcional"
153porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
154perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
155piden = ["kdnssd", "pipewire"]
156
157[candidato."baloo"]
158veredicto = "opcional"
159sugerencia = "hueco?"
160porque = "módulo opcional de Qt/KDE: el escritorio construye sin él — revisá si lo querés para un Plasma completo"
161perfiles = ["escritorio-kde"]
162piden = ["dolphin", "gwenview", "plasma-desktop", "plasma-workspace"]
163
164[candidato."baloo-widgets"]
165veredicto = "opcional"
166sugerencia = "opcional?"
167porque = "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"
168perfiles = ["escritorio-kde"]
169piden = ["dolphin"]
170
171[candidato."bash-completion"]
172veredicto = "provisto"
173sugerencia = "hueco?"
174provee = "bash-completion"
175porque = "lo piden 5 recetas de la imagen — difícil que sea accesorio"
176perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
177piden = ["appstream", "colord", "gnome-shell", "modemmanager", "swayimg"]
178ausente = true  # ya no aparece en el último barrido de la frontera
179
180[candidato."bluez"]
181veredicto = "opcional"
182porque = "lo piden 3 recetas"
183perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
184piden = ["networkmanager", "pipewire", "pulseaudio"]
185
186[candidato."bluez-headers"]
187veredicto = "opcional"
188sugerencia = "opcional?"
189porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
190perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
191piden = ["python3"]
192
193[candidato."boost-build"]
194veredicto = "opcional"
195sugerencia = "opcional?"
196porque = "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"
197perfiles = ["escritorio-kde"]
198piden = ["boost"]
199
200[candidato."bpftools"]
201veredicto = "opcional"
202sugerencia = "opcional?"
203porque = "la receta pasa -Debpf=false, y ya estaba escrito en sus comentarios"
204perfiles = ["escritorio-kde"]
205piden = ["networkmanager"]
206
207[candidato."bubblewrap"]
208veredicto = "provisto"
209provee = "bwrap"
210porque = "lo piden 2 recetas"
211perfiles = ["escritorio-cosmic", "escritorio-gnome"]
212piden = ["gnome-desktop", "xdg-desktop-portal"]
213ausente = true  # ya no aparece en el último barrido de la frontera
214
215[candidato."c-ares"]
216veredicto = "opcional"
217porque = "configure.ac:225 de nghttp2 pone request_libcares=no DENTRO del bloque --enable-lib-only, que es justo lo que pasa la receta ⇒ ni estando presente se usaría; y nodejs la bundlea a propósito (su receta lo documenta: Alpine construye contra diez deps de sistema, el corpus tiene dos)"
218perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
219piden = ["nghttp2", "nodejs"]
220
221[candidato."cef-binary"]
222veredicto = "opcional"
223sugerencia = "opcional?"
224porque = "-DENABLE_BROWSER=OFF, y la receta ya lo explica: CEF es un prebuilt de glibc ⇒ montón B (qorpa, ADR 0015), no se construye desde fuente"
225perfiles = ["escritorio-kde"]
226piden = ["obs-studio"]
227
228[candidato."cfitsio"]
229veredicto = "opcional"
230sugerencia = "opcional?"
231porque = "CMakeLists.txt:121 la usa `if(CFITSIO_FOUND)` con un FindCFitsio propio: son imágenes FITS de astronomía. ⚠ Es un `find` AUTOMÁTICO sin apagar, pero eso NO es una escotilla del catálogo: el sandbox de hammer monta SÓLO las deps declaradas (docs/02-build-lab.md §3.4, raíz tmpfs + bind read-only de las deps) y agregarla a [deps] movería el ArtifactHash, o sea que se vería. La vía silenciosa es otra: que aparezca en el LAB, que no entra en hash_inputs. "
232perfiles = ["escritorio-kde"]
233piden = ["gwenview"]
234
235[candidato."check"]
236veredicto = "opcional"
237sugerencia = "hueco?"
238porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
239perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
240piden = ["fcft", "girara", "parted", "pulseaudio"]
241
242[candidato."cjson"]
243veredicto = "opcional"
244sugerencia = "opcional?"
245porque = "el artefacto sellado de obs-studio no tiene NINGÚN NEEDED a libcjson (medido con readelf sobre los 13 plugins y los binarios): el JSON que OBS enlaza de verdad es jansson, que sí está en [deps]"
246perfiles = ["escritorio-kde"]
247piden = ["obs-studio"]
248
249[candidato."clang"]
250veredicto = "opcional"
251sugerencia = "opcional?"
252porque = "Vulkan / compilación de shaders / dispatch GL: no habilitado (mesa se construye sin ellos)"
253perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
254piden = ["mesa"]
255
256[candidato."cmocka"]
257veredicto = "opcional"
258sugerencia = "opcional?"
259porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
260perfiles = ["base", "cli", "escritorio-sway"]
261piden = ["shadow"]
262
263[candidato."cups"]
264veredicto = "opcional"
265porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
266perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
267piden = ["gtk3", "gtk4", "qtbase"]
268
269[candidato."db"]
270veredicto = "opcional"
271porque = "conectores de base de datos: ninguna imagen los pide"
272perfiles = ["base", "cli", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
273piden = ["evolution-data-server", "iproute2", "linux-pam"]
274
275[candidato."dbus-python"]
276veredicto = "opcional"
277porque = "sólo la usan los tests: en libsecret 0.21.7 vive en mock-service*.py y test-py-*.py y el árbol no la nombra fuera de ahí; modemmanager va con -Dtests=false. Ninguna librería instalada la enlaza"
278perfiles = ["escritorio-gnome", "escritorio-kde"]
279piden = ["libsecret", "modemmanager"]
280
281[candidato."ddcutil"]
282veredicto = "opcional"
283sugerencia = "opcional?"
284porque = "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"
285perfiles = ["escritorio-kde"]
286piden = ["powerdevil"]
287
288[candidato."dejagnu"]
289veredicto = "opcional"
290sugerencia = "opcional?"
291porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
292perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
293piden = ["libffi"]
294
295[candidato."desktop-file-utils"]
296veredicto = "provisto"
297provee = "desktop-file-utils"
298porque = "lo piden 3 recetas"
299perfiles = ["escritorio-gnome"]
300piden = ["gnome-shell", "libadwaita", "mutter"]
301ausente = true  # ya no aparece en el último barrido de la frontera
302
303[candidato."directx-headers"]
304veredicto = "opcional"
305sugerencia = "opcional?"
306porque = "Vulkan / compilación de shaders / dispatch GL: no habilitado (mesa se construye sin ellos)"
307perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
308piden = ["mesa"]
309
310[candidato."discount"]
311veredicto = "opcional"
312sugerencia = "opcional?"
313porque = "okular la declara OPCIONAL dos veces: entra en la lista FORCE_NOT_REQUIRED_DEPENDENCIES (CMakeLists.txt:37) y su find_package va con set_okular_optional_package_properties. Es el back-end de Markdown; sin él okular no previsualiza .md"
314perfiles = ["escritorio-kde"]
315piden = ["okular"]
316
317[candidato."djvulibre"]
318veredicto = "opcional"
319sugerencia = "opcional?"
320porque = "okular la declara OPCIONAL dos veces: entra en la lista FORCE_NOT_REQUIRED_DEPENDENCIES (CMakeLists.txt:37) y su find_package va con set_okular_optional_package_properties. Es el back-end de DjVu, el formato de libros escaneados"
321perfiles = ["escritorio-kde"]
322piden = ["okular"]
323
324[candidato."dnsmasq"]
325veredicto = "opcional"
326sugerencia = "opcional?"
327porque = "⚠ no es una librería que se enlace: meson_options.txt:10 la declara `type: 'string'` — una RUTA a un binario que NM ejecuta. Sirve para el método `shared` (compartir la conexión) y para el plugin de DNS con caché. Capacidad ausente, no dep rota"
328perfiles = ["escritorio-kde"]
329piden = ["networkmanager"]
330
331[candidato."docbook5"]
332veredicto = "opcional"
333sugerencia = "opcional?"
334porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
335perfiles = ["escritorio-kde", "escritorio-mirada", "escritorio-sway"]
336piden = ["linux-pam"]
337
338[candidato."docutils"]
339veredicto = "opcional"
340sugerencia = "hueco?"
341porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
342perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
343piden = ["gdk-pixbuf", "glib", "gnome-shell", "gtk4", "json-glib", "libdrm", "mutter", "pango", "pipewire", "xdg-desktop-portal"]
344
345[candidato."double-conversion"]
346veredicto = "opcional"
347sugerencia = "opcional?"
348porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
349perfiles = ["escritorio-kde"]
350piden = ["qtbase"]
351
352[candidato."doxygen"]
353veredicto = "opcional"
354sugerencia = "hueco?"
355porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
356perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
357piden = ["exiv2", "libqalculate", "libxkbcommon", "pipewire", "wayland", "wireplumber"]
358
359[candidato."dri-pkgconfig-stub"]
360veredicto = "opcional"
361sugerencia = "opcional?"
362porque = "es el stub que publica dri.pc desde que mesa dejó de hacerlo. include/meson.build:9 lo pide como `dependency('dri', required: build_glx)` ⇒ sólo es OBLIGATORIO con glx encendido, y la receta va -Dglx=false porque ninguna cola publica gl.pc"
363perfiles = ["escritorio-kde"]
364piden = ["xwayland"]
365
366[candidato."duktape"]
367veredicto = "opcional"
368sugerencia = "opcional?"
369porque = "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"
370perfiles = ["escritorio-gnome", "escritorio-kde"]
371piden = ["polkit"]
372
373[candidato."ebook-tools"]
374veredicto = "opcional"
375porque = "módulo opcional de Qt/KDE: el escritorio construye sin él — revisá si lo querés para un Plasma completo"
376perfiles = ["escritorio-kde"]
377piden = ["kfilemetadata", "okular"]
378
379[candidato."ed"]
380veredicto = "opcional"
381sugerencia = "opcional?"
382porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
383perfiles = ["base", "cli", "escritorio-sway"]
384piden = ["lsof"]
385
386[candidato."editorconfig-core-c"]
387veredicto = "opcional"
388sugerencia = "opcional?"
389porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
390perfiles = ["escritorio-kde"]
391piden = ["ktexteditor"]
392
393[candidato."egl-wayland"]
394veredicto = "opcional"
395porque = "es la plataforma EGLStream de NVIDIA. mutter la pediría sólo con -Dwayland_eglstream, que su meson.options:84 define en false y la receta no pasa; y xwayland 24.1.13 YA NO LA SOPORTA: hw/xwayland/meson.build:171 escribe have_eglstream=false a pelo. Sin driver propietario de NVIDIA en la distro no hay a quién servir"
396perfiles = ["escritorio-gnome", "escritorio-kde"]
397piden = ["mutter", "xwayland"]
398
399[candidato."eigen"]
400veredicto = "opcional"
401sugerencia = "opcional?"
402porque = "la receta pasa -DWITH_EIGEN=OFF explícito"
403perfiles = ["escritorio-kde"]
404piden = ["opencv"]
405
406[candidato."fdk-aac"]
407veredicto = "opcional"
408porque = "lo piden 2 recetas"
409perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
410piden = ["obs-studio", "pipewire"]
411
412[candidato."ffado"]
413veredicto = "opcional"
414sugerencia = "opcional?"
415porque = "la receta pasa -Dlibffado=disabled (meson_options.txt:350). Es el soporte de interfaces de audio FireWire profesionales"
416perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
417piden = ["pipewire"]
418
419[candidato."ffmpeg-headless"]
420veredicto = "nix-ismo"
421porque = "lo piden 2 recetas"
422perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
423piden = ["opencv", "pipewire"]
424ausente = true  # ya no aparece en el último barrido de la frontera
425
426[candidato."fftw-single"]
427veredicto = "opcional"
428porque = "lo piden 3 recetas"
429perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
430piden = ["pipewire", "pulseaudio", "speexdsp"]
431
432[candidato."flac"]
433veredicto = "opcional"
434sugerencia = "opcional?"
435porque = "libsndfile va con --disable-external-libs, que es lo que hace que esta receta sea UNA y no CINCO (la receta lo explica): apaga FLAC, Ogg, Vorbis y Opus de una"
436perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
437piden = ["libsndfile"]
438
439[candidato."flatpak"]
440veredicto = "opcional"
441porque = "formatos/paquetería ajenos; hammer tiene los suyos (.swm, Etapa F)"
442perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde"]
443piden = ["cosmic-store", "plasma-workspace", "xdg-desktop-portal"]
444
445[candidato."flite"]
446veredicto = "opcional"
447sugerencia = "opcional?"
448porque = "stack de audio/multimedia: decisión de producto pendiente, no un hueco de build"
449perfiles = ["escritorio-kde"]
450piden = ["qtspeech"]
451
452[candidato."font-util"]
453veredicto = "opcional"
454sugerencia = "opcional?"
455porque = "en todo el árbol aparece UNA vez y es como valor por defecto de `fontrootdir` (meson_options.txt:12-13): la raíz de las fuentes de mapa de bits LEGACY de X11. Sin él meson cae a $datadir/fonts/X11 y la distro no publica esas fuentes"
456perfiles = ["escritorio-kde"]
457piden = ["xwayland"]
458
459[candidato."fuse"]
460veredicto = "opcional"
461porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
462perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-sway"]
463piden = ["e2fsprogs", "xdg-desktop-portal"]
464
465[candidato."gdbm"]
466veredicto = "opcional"
467sugerencia = "opcional?"
468porque = "conectores de base de datos: ninguna imagen los pide"
469perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
470piden = ["python3"]
471
472[candidato."gdm"]
473veredicto = "opcional"
474sugerencia = "opcional?"
475porque = "APARCADO POR DISEÑO y ya documentado en docs/state/targets.toml:263 («SIN gnome-session / gnome-settings-daemon / gdm»): la sesión la lanza arje, no un display manager. Mismo criterio con el que ya se cerró gnome-settings-daemon"
476perfiles = ["escritorio-gnome"]
477piden = ["gnome-shell"]
478
479[candidato."getopt"]
480veredicto = "opcional"
481sugerencia = "opcional?"
482porque = "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"
483perfiles = ["escritorio-gnome"]
484piden = ["libseccomp"]
485
486[candidato."gflags"]
487veredicto = "opcional"
488sugerencia = "opcional?"
489porque = "-DBUILD_LIST=core,imgproc: de todo OpenCV se construyen DOS módulos. gflags/glog son deps del módulo dnn, que no está en la lista"
490perfiles = ["escritorio-kde"]
491piden = ["opencv"]
492
493[candidato."gi-docgen"]
494veredicto = "opcional"
495sugerencia = "hueco?"
496porque = "lo piden 9 recetas de la imagen — difícil que sea accesorio"
497perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
498piden = ["gdk-pixbuf", "glib", "gnome-shell", "gtk4", "json-glib", "libadwaita", "libsecret", "mutter", "pango"]
499
500[candidato."git-minimal"]
501veredicto = "nix-ismo"
502sugerencia = "nix-ismo?"
503porque = "variante de empaquetado de nix; hammer ya tiene la receta `git`"
504perfiles = ["cli"]
505piden = ["starship"]
506ausente = true  # ya no aparece en el último barrido de la frontera
507
508[candidato."glad2"]
509veredicto = "provisto"
510sugerencia = "opcional?"
511provee = "glad"
512porque = "no falta: recipes/glad.toml pinea la 2.0.8, que ES glad2 — nixpkgs parte glad (v1) y glad2 (v2) en dos paquetes y acá hay uno solo. Ya figura en el [deps].build de libplacebo. Cuarta forma de alias: la VERSIÓN metida en el nombre"
513perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
514piden = ["libplacebo"]
515ausente = true  # ya no aparece en el último barrido de la frontera
516
517[candidato."glib-networking"]
518veredicto = "pendiente"
519sugerencia = "opcional?"
520porque = "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"
521perfiles = ["escritorio-gnome"]
522piden = ["evolution-data-server"]
523
524[candidato."glibc"]
525veredicto = "nix-ismo"
526sugerencia = "nix-ismo?"
527porque = "la libc de nixpkgs asomando por su stdenv; hammer es musl"
528perfiles = ["cli"]
529piden = ["go"]
530ausente = true  # ya no aparece en el último barrido de la frontera
531
532[candidato."glog"]
533veredicto = "opcional"
534sugerencia = "opcional?"
535porque = "-DBUILD_LIST=core,imgproc: gflags/glog son deps del módulo dnn, que no se construye"
536perfiles = ["escritorio-kde"]
537piden = ["opencv"]
538
539[candidato."glslang"]
540veredicto = "opcional"
541porque = "Vulkan / compilación de shaders / dispatch GL: no habilitado (mesa se construye sin ellos)"
542perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
543piden = ["mesa", "wlroots"]
544
545[candidato."glu"]
546veredicto = "opcional"
547porque = "CERO referencias a GLU en los dos fuentes (phonon 4.12.0 y xwayland 24.1.13, grep sobre el árbol entero): la arrastran las expresiones de nixpkgs, no el código. Y la distro no publica GL de escritorio, que es de lo único que GLU cuelga"
548perfiles = ["escritorio-kde"]
549piden = ["phonon", "xwayland"]
550
551[candidato."gmp-with-cxx"]
552veredicto = "provisto"
553sugerencia = "opcional?"
554provee = "gmp"
555porque = "nixpkgs lo separa en un paquete propio; acá lo da la receta `gmp` (verificado en el store)"
556perfiles = ["escritorio-kde"]
557piden = ["mpfr"]
558ausente = true  # ya no aparece en el último barrido de la frontera
559
560[candidato."gnome-autoar"]
561veredicto = "opcional"
562sugerencia = "opcional?"
563porque = "sólo la pide subprojects/extensions-tool (extensions-tool/meson.build:32, `dependency('gnome-autoar-0')`), que meson.build:279 construye `if get_option('extensions_tool')` — y la receta pasa -Dextensions_tool=false. Sirve para desempaquetar el .zip de una extensión, no para pintar el escritorio"
564perfiles = ["escritorio-gnome"]
565piden = ["gnome-shell"]
566
567[candidato."gnome-bluetooth"]
568veredicto = "opcional"
569sugerencia = "opcional?"
570porque = "cero referencias en los meson de gnome-shell 48.8. Y el hueco de fondo es el mismo que el de los codecs de pipewire: NO HAY receta de bluez en el catálogo ⇒ la distro no tiene Bluetooth. Un indicador para un stack que no existe no compra nada"
571perfiles = ["escritorio-gnome"]
572piden = ["gnome-shell"]
573
574[candidato."gnome-clocks"]
575veredicto = "opcional"
576sugerencia = "opcional?"
577porque = "cero referencias en los meson de gnome-shell 48.8: es una APP que el reloj del panel consulta en runtime para la sección de husos horarios. Sin ella el calendario funciona, sin relojes del mundo"
578perfiles = ["escritorio-gnome"]
579piden = ["gnome-shell"]
580
581[candidato."gnome-keyring"]
582veredicto = "pendiente"
583sugerencia = "opcional?"
584porque = "SIGUE PENDIENTE A PROPÓSITO: es el primer candidato del barrido que parece falta de verdad, y un 'hueco' nace como raíz en targets.toml y entra al drenaje ⇒ lo decide un humano. MEDIDO: (1) gnome-shell js/ui/components/keyring.js:221 hace own_name('org.gnome.keyring.SystemPrompter') ⇒ el shell PREGUNTA la contraseña, no guarda el secreto; (2) grep sobre el STORE ENTERO: NINGÚN artefacto declara org.freedesktop.secrets; (3) del lado KDE tampoco hay demonio — el artefacto de kwallet instala sólo libKF6Wallet.so y sus cabeceras, sin kwalletd6. O sea: los dos escritorios tienen el PROMPTER sellado (gnome-shell, y plasma-workspace publica org.kde.secretprompter.service) y NINGUNO tiene el almacén. Elegir gnome-keyring, kwalletd o los dos es decisión de diseño, no de triaje"
585perfiles = ["escritorio-gnome"]
586piden = ["gnome-shell"]
587
588[candidato."gnome-online-accounts"]
589veredicto = "opcional"
590sugerencia = "opcional?"
591porque = "evolution-data-server va con -DENABLE_GOA=OFF y la receta lo documenta. Sin cuentas en línea no hay qué sincronizar"
592perfiles = ["escritorio-gnome"]
593piden = ["evolution-data-server"]
594
595[candidato."gnome-settings-daemon"]
596veredicto = "opcional"
597porque = "lo piden 2 recetas"
598perfiles = ["escritorio-gnome"]
599piden = ["gnome-shell", "mutter"]
600
601[candidato."gnutls"]
602veredicto = "opcional"
603porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
604perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
605piden = ["ffmpeg", "gnupg", "networkmanager"]
606
607[candidato."gpgmepp"]
608veredicto = "opcional"
609sugerencia = "opcional?"
610porque = "módulo opcional de Qt/KDE: el escritorio construye sin él — revisá si lo querés para un Plasma completo"
611perfiles = ["escritorio-kde"]
612piden = ["kwallet"]
613
614[candidato."gpsd"]
615veredicto = "opcional"
616porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
617perfiles = ["escritorio-kde"]
618piden = ["plasma-workspace", "plasma5support"]
619
620[candidato."graphite2"]
621veredicto = "opcional"
622sugerencia = "opcional?"
623porque = "harfbuzz va con -Dgraphite=disabled explícito: es el motor de tipografías Graphite (escrituras complejas de SIL), no el moldeado normal"
624perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
625piden = ["harfbuzz"]
626
627[candidato."graphviz"]
628veredicto = "opcional"
629sugerencia = "hueco?"
630porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
631perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
632piden = ["exiv2", "pipewire", "wayland", "wireplumber"]
633
634[candidato."groff"]
635veredicto = "opcional"
636porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
637perfiles = ["base", "cli", "escritorio-kde", "escritorio-sway"]
638piden = ["libzip", "sudo"]
639
640[candidato."gst-libav"]
641veredicto = "opcional"
642sugerencia = "opcional?"
643porque = "stack de audio/multimedia: decisión de producto pendiente, no un hueco de build"
644perfiles = ["escritorio-kde"]
645piden = ["qtmultimedia"]
646
647[candidato."gst-plugins-bad"]
648veredicto = "opcional"
649porque = "stack de audio/multimedia: decisión de producto pendiente, no un hueco de build"
650perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
651piden = ["gtk4", "qtmultimedia"]
652
653[candidato."gst-plugins-base"]
654veredicto = "opcional"
655sugerencia = "hueco?"
656porque = "stack de audio/multimedia: decisión de producto pendiente, no un hueco de build"
657perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
658piden = ["gnome-shell", "gtk4", "libcanberra", "opencv", "pipewire", "qtmultimedia", "xdg-desktop-portal"]
659
660[candidato."gst-plugins-good"]
661veredicto = "opcional"
662sugerencia = "hueco?"
663porque = "stack de audio/multimedia: decisión de producto pendiente, no un hueco de build"
664perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde"]
665piden = ["gnome-shell", "opencv", "qtmultimedia", "xdg-desktop-portal"]
666
667[candidato."gstreamer"]
668veredicto = "opcional"
669sugerencia = "hueco?"
670porque = "stack de audio/multimedia: decisión de producto pendiente, no un hueco de build"
671perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
672piden = ["gnome-shell", "libcanberra", "opencv", "pipewire", "qtmultimedia", "xdg-desktop-portal", "xdg-desktop-portal-cosmic"]
673
674[candidato."gtest"]
675veredicto = "opcional"
676sugerencia = "opcional?"
677porque = "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"
678perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
679piden = ["nodejs"]
680
681[candidato."gtk+3"]
682veredicto = "opcional"
683sugerencia = "hueco?"
684porque = "X11 heredado: el escritorio es Wayland"
685perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
686piden = ["adwaita-icon-theme", "evolution-data-server", "firefox", "girara", "gjs", "gnome-desktop", "qtbase"]
687
688[candidato."gusb"]
689veredicto = "provisto"
690sugerencia = "opcional?"
691provee = "libgusb"
692porque = "no falta: es el mismo paquete con el prefijo `lib`. recipes/incoming-gnome/libgusb.toml (0.4.9) está sellada y ya figura en el [deps].build de colord. Tercera FORMA de alias del barrido: prefijo, después de puntuación y mayúsculas"
693perfiles = ["escritorio-gnome"]
694piden = ["colord"]
695ausente = true  # ya no aparece en el último barrido de la frontera
696
697[candidato."hdf5-cpp"]
698veredicto = "opcional"
699sugerencia = "opcional?"
700porque = "-DBUILD_LIST=core,imgproc: es la dep del módulo hdf, que no se construye. Y la receta ya recorta la E/S de imágenes entera (-DWITH_JPEG/PNG/TIFF/WEBP=OFF)"
701perfiles = ["escritorio-kde"]
702piden = ["opencv"]
703
704[candidato."hdrhistogram_c"]
705veredicto = "opcional"
706sugerencia = "opcional?"
707porque = "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"
708perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
709piden = ["nodejs"]
710
711[candidato."help2man"]
712veredicto = "opcional"
713sugerencia = "opcional?"
714porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
715perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
716piden = ["flex"]
717
718[candidato."hunspell"]
719veredicto = "opcional"
720sugerencia = "opcional?"
721porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
722perfiles = ["escritorio-kde"]
723piden = ["sonnet"]
724
725[candidato."inih"]
726veredicto = "opcional"
727sugerencia = "opcional?"
728porque = "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"
729perfiles = ["escritorio-kde"]
730piden = ["exiv2"]
731
732[candidato."iptables"]
733veredicto = "opcional"
734sugerencia = "opcional?"
735porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
736perfiles = ["base", "cli", "escritorio-sway"]
737piden = ["iproute2"]
738
739[candidato."jasper"]
740veredicto = "opcional"
741sugerencia = "opcional?"
742porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
743perfiles = ["escritorio-kde"]
744piden = ["qtsvg"]
745
746[candidato."jemalloc"]
747veredicto = "opcional"
748sugerencia = "opcional?"
749porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
750perfiles = ["cli", "escritorio-sway"]
751piden = ["fd"]
752
753[candidato."kaccounts-integration"]
754veredicto = "opcional"
755sugerencia = "opcional?"
756porque = "CMakeLists.txt:119-123 la declara TYPE OPTIONAL y su PURPOSE lo dice: «Required for building the OpenDesktop integration plugin». Sin cuentas en línea en la distro no hay qué integrar"
757perfiles = ["escritorio-kde"]
758piden = ["plasma-desktop"]
759
760[candidato."kdegraphics-mobipocket"]
761veredicto = "opcional"
762porque = "módulo opcional de Qt/KDE: el escritorio construye sin él — revisá si lo querés para un Plasma completo"
763perfiles = ["escritorio-kde"]
764piden = ["kfilemetadata", "okular"]
765
766[candidato."kdoctools"]
767veredicto = "opcional"
768sugerencia = "hueco?"
769porque = "módulo opcional de Qt/KDE: el escritorio construye sin él — revisá si lo querés para un Plasma completo"
770perfiles = ["escritorio-kde"]
771piden = ["dolphin", "filelight", "gwenview", "kate", "kcalc", "kcharselect", "kded", "kdf", "kfind", "kio", "kmenuedit", "konsole"]  # …y 7 más
772
773[candidato."kimageannotator"]
774veredicto = "opcional"
775sugerencia = "opcional?"
776porque = "CMakeLists.txt:169 la declara TYPE OPTIONAL —anotar capturas— y arrastraría además kColorPicker-Qt6, que su rama pide REQUIRED. ⚠ Es un `find` AUTOMÁTICO sin apagar, pero eso NO es una escotilla del catálogo: el sandbox de hammer monta SÓLO las deps declaradas (docs/02-build-lab.md §3.4, raíz tmpfs + bind read-only de las deps) y agregarla a [deps] movería el ArtifactHash, o sea que se vería. La vía silenciosa es otra: que aparezca en el LAB, que no entra en hash_inputs. "
777perfiles = ["escritorio-kde"]
778piden = ["gwenview"]
779
780[candidato."kimageformats"]
781veredicto = "opcional"
782sugerencia = "opcional?"
783porque = "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"
784perfiles = ["escritorio-kde"]
785piden = ["kscreen"]
786
787[candidato."kio-extras"]
788veredicto = "opcional"
789porque = "módulo opcional de Qt/KDE: el escritorio construye sin él — revisá si lo querés para un Plasma completo"
790perfiles = ["escritorio-kde"]
791piden = ["dolphin", "plasma-desktop", "plasma-workspace"]
792
793[candidato."kmod"]
794veredicto = "opcional"
795sugerencia = "opcional?"
796porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
797perfiles = ["base", "cli", "escritorio-sway"]
798piden = ["pciutils"]
799
800[candidato."krb5"]
801veredicto = "opcional"
802porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
803perfiles = ["base", "cli", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
804piden = ["curl", "evolution-data-server"]
805
806[candidato."kuserfeedback"]
807veredicto = "opcional"
808porque = "módulo opcional de Qt/KDE: el escritorio construye sin él — revisá si lo querés para un Plasma completo"
809perfiles = ["escritorio-kde"]
810piden = ["dolphin", "kate", "plasma-workspace"]
811
812[candidato."lame"]
813veredicto = "opcional"
814porque = "lo piden 2 recetas"
815perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
816piden = ["ffmpeg", "libsndfile"]
817
818[candidato."ldacbt"]
819veredicto = "opcional"
820sugerencia = "opcional?"
821porque = "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"
822perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
823piden = ["pipewire"]
824
825[candidato."lerc"]
826veredicto = "opcional"
827sugerencia = "opcional?"
828porque = "libtiff va con -Dlerc=OFF explícito"
829perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
830piden = ["libtiff"]
831
832[candidato."libaom"]
833veredicto = "opcional"
834sugerencia = "opcional?"
835porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-libaom. ⚠ Lo que se pierde es CODIFICAR AV1, no reproducirlo: el decoder nativo está en el artefacto sellado («AV1 decoder», medido con strings sobre libavcodec.so.61.19.100)"
836perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
837piden = ["ffmpeg"]
838
839[candidato."libapparmor"]
840veredicto = "opcional"
841sugerencia = "opcional?"
842porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
843perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
844piden = ["dbus"]
845
846[candidato."libappimage"]
847veredicto = "opcional"
848sugerencia = "opcional?"
849porque = "formatos/paquetería ajenos; hammer tiene los suyos (.swm, Etapa F)"
850perfiles = ["escritorio-kde"]
851piden = ["kfilemetadata"]
852
853[candidato."libasyncns"]
854veredicto = "opcional"
855sugerencia = "opcional?"
856porque = "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"
857perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
858piden = ["pulseaudio"]
859
860[candidato."libavif"]
861veredicto = "opcional"
862sugerencia = "opcional?"
863porque = "la receta pasa -Davif=disabled explícito"
864perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
865piden = ["swayimg"]
866
867[candidato."libb2"]
868veredicto = "opcional"
869sugerencia = "opcional?"
870porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
871perfiles = ["escritorio-kde"]
872piden = ["qtbase"]
873
874[candidato."libblake3"]
875veredicto = "opcional"
876sugerencia = "opcional?"
877porque = "⚠ DESFASE DE VERSIÓN: AppStream 1.0.5 no la nombra en ningún meson. Sale de una expresión de nixpkgs para una versión más nueva"
878perfiles = ["escritorio-gnome"]
879piden = ["appstream"]
880
881[candidato."libbluray"]
882veredicto = "opcional"
883sugerencia = "opcional?"
884porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-libbluray. ⚠ CAPACIDAD AUSENTE dicha en voz alta: la distro no navega discos Blu-ray (menús, títulos, BD-J). Los ficheros sueltos se leen igual"
885perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
886piden = ["ffmpeg"]
887
888[candidato."libbpf"]
889veredicto = "opcional"
890porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
891perfiles = ["base", "cli", "escritorio-kde", "escritorio-sway"]
892piden = ["iproute2", "networkmanager"]
893
894[candidato."libbsd"]
895veredicto = "opcional"
896sugerencia = "opcional?"
897porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
898perfiles = ["base", "cli", "escritorio-sway"]
899piden = ["shadow"]
900
901[candidato."libcamera"]
902veredicto = "opcional"
903sugerencia = "opcional?"
904porque = "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"
905perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
906piden = ["pipewire"]
907
908[candidato."libcap-ng"]
909veredicto = "opcional"
910porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
911perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
912piden = ["dbus", "util-linux"]
913
914[candidato."libclc"]
915veredicto = "opcional"
916sugerencia = "opcional?"
917porque = "Vulkan / compilación de shaders / dispatch GL: no habilitado (mesa se construye sin ellos)"
918perfiles = ["escritorio-kde"]
919piden = ["mesa"]
920ausente = true  # ya no aparece en el último barrido de la frontera
921
922[candidato."libdatachannel"]
923veredicto = "opcional"
924sugerencia = "opcional?"
925porque = "-DENABLE_WEBRTC=OFF; la receta lo dice: pide libdatachannel, que no está en ninguna cola"
926perfiles = ["escritorio-kde"]
927piden = ["obs-studio"]
928
929[candidato."libdatrie"]
930veredicto = "opcional"
931sugerencia = "opcional?"
932porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
933perfiles = ["escritorio-kde"]
934piden = ["qtbase"]
935
936[candidato."libdecor"]
937veredicto = "opcional"
938sugerencia = "opcional?"
939porque = "sólo decora la ventana cuando Xwayland corre ROOTFUL (meson_options.txt:81); acá lo lanza el compositor en rootless. meson.build:210 la pide `required: false` con la opción en 'auto'. ⚠ CORRECCIÓN de cómo lo dije al principio: no es una escotilla del catálogo — el sandbox monta sólo las deps declaradas y agregarla movería el ArtifactHash. La vía silenciosa sería el LAB, que no entra en hash_inputs"
940perfiles = ["escritorio-kde"]
941piden = ["xwayland"]
942
943[candidato."libdeflate"]
944veredicto = "opcional"
945sugerencia = "opcional?"
946porque = "libtiff va con -Dlibdeflate=OFF explícito"
947perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
948piden = ["libtiff"]
949
950[candidato."libdmtx"]
951veredicto = "opcional"
952sugerencia = "opcional?"
953porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
954perfiles = ["escritorio-kde"]
955piden = ["prison"]
956
957[candidato."libdovi"]
958veredicto = "opcional"
959sugerencia = "opcional?"
960porque = "libplacebo va con -Dlibdovi=disabled explícito (mantiene -Ddovi=enabled, que es el soporte propio de Dolby Vision sin la librería externa)"
961perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
962piden = ["libplacebo"]
963
964[candidato."libebur128"]
965veredicto = "opcional"
966sugerencia = "opcional?"
967porque = "⚠ 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"
968perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
969piden = ["pipewire"]
970
971[candidato."libei"]
972veredicto = "opcional"
973sugerencia = "opcional?"
974porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
975perfiles = ["escritorio-kde"]
976piden = ["kwin"]
977ausente = true  # ya no aparece en el último barrido de la frontera
978
979[candidato."libev"]
980veredicto = "opcional"
981sugerencia = "opcional?"
982porque = "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"
983perfiles = ["escritorio-gnome"]
984piden = ["nghttp2"]
985
986[candidato."libfreeaptx"]
987veredicto = "opcional"
988sugerencia = "opcional?"
989porque = "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)"
990perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
991piden = ["pipewire"]
992
993[candidato."libfyaml"]
994veredicto = "opcional"
995sugerencia = "opcional?"
996porque = "⚠ DESFASE DE VERSIÓN: AppStream 1.0.5 no la nombra en ningún meson. El YAML de esta versión lo hace libyaml, que ya está en [deps]"
997perfiles = ["escritorio-gnome"]
998piden = ["appstream"]
999
1000[candidato."libglvnd"]
1001veredicto = "opcional"
1002porque = "Vulkan / compilación de shaders / dispatch GL: no habilitado (mesa se construye sin ellos)"
1003perfiles = ["escritorio-kde"]
1004piden = ["libepoxy", "mesa", "qtbase"]
1005ausente = true  # ya no aparece en el último barrido de la frontera
1006
1007[candidato."libglycin"]
1008veredicto = "opcional"
1009sugerencia = "opcional?"
1010porque = "⚠ DESFASE DE VERSIÓN: mutter 48.8 —la que pinea la receta— no nombra glycin en NINGÚN fichero. El cargador de imágenes enjaulado entra en la serie 49 de GNOME; el candidato sale de una expresión de nixpkgs más nueva que nuestro pin"
1011perfiles = ["escritorio-gnome"]
1012piden = ["mutter"]
1013
1014[candidato."libheif"]
1015veredicto = "opcional"
1016sugerencia = "opcional?"
1017porque = "la receta pasa -Dheif=disabled explícito"
1018perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1019piden = ["swayimg"]
1020
1021[candidato."libidn2"]
1022veredicto = "opcional"
1023porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
1024perfiles = ["base", "cli", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1025piden = ["curl", "iputils", "libpsl"]
1026
1027[candidato."libimobiledevice"]
1028veredicto = "opcional"
1029sugerencia = "opcional?"
1030porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
1031perfiles = ["escritorio-kde"]
1032piden = ["solid"]
1033
1034[candidato."libjack2"]
1035veredicto = "opcional"
1036porque = "lo piden 2 recetas"
1037perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1038piden = ["obs-studio", "pipewire"]
1039
1040[candidato."libjxl"]
1041veredicto = "opcional"
1042porque = "lo piden 2 recetas"
1043perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1044piden = ["opencv", "swayimg"]
1045
1046[candidato."libkdcraw"]
1047veredicto = "opcional"
1048sugerencia = "opcional?"
1049porque = "CMakeLists.txt:148-156 la declara TYPE OPTIONAL: es el decodificador de fotos RAW. Mismo criterio que -Draw=disabled en swayimg. ⚠ Es un `find` AUTOMÁTICO sin apagar, pero eso NO es una escotilla del catálogo: el sandbox de hammer monta SÓLO las deps declaradas (docs/02-build-lab.md §3.4, raíz tmpfs + bind read-only de las deps) y agregarla a [deps] movería el ArtifactHash, o sea que se vería. La vía silenciosa es otra: que aparezca en el LAB, que no entra en hash_inputs. "
1050perfiles = ["escritorio-kde"]
1051piden = ["gwenview"]
1052
1053[candidato."libkexiv2"]
1054veredicto = "opcional"
1055porque = "módulo opcional de Qt/KDE: el escritorio construye sin él — revisá si lo querés para un Plasma completo"
1056perfiles = ["escritorio-kde"]
1057piden = ["okular", "plasma-workspace"]
1058
1059[candidato."liblc3"]
1060veredicto = "opcional"
1061sugerencia = "opcional?"
1062porque = "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)"
1063perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1064piden = ["pipewire"]
1065
1066[candidato."libliftoff"]
1067veredicto = "opcional"
1068sugerencia = "opcional?"
1069porque = "wlroots va con -Dlibliftoff=disabled explícito: descarga la composición en los planos de hardware del KMS. Optimización, no función"
1070perfiles = ["escritorio-sway"]
1071piden = ["wlroots"]
1072
1073[candidato."libmbim"]
1074veredicto = "opcional"
1075sugerencia = "opcional?"
1076porque = "modemmanager va con -Dmbim=false explícito"
1077perfiles = ["escritorio-kde"]
1078piden = ["modemmanager"]
1079
1080[candidato."libmng"]
1081veredicto = "opcional"
1082sugerencia = "opcional?"
1083porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
1084perfiles = ["escritorio-kde"]
1085piden = ["qtsvg"]
1086
1087[candidato."libmnl"]
1088veredicto = "opcional"
1089sugerencia = "opcional?"
1090porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
1091perfiles = ["base", "cli", "escritorio-sway"]
1092piden = ["iproute2"]
1093
1094[candidato."libmpc"]
1095veredicto = "provisto"
1096sugerencia = "opcional?"
1097provee = "mpc"
1098porque = "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"
1099perfiles = ["escritorio-kde"]
1100piden = ["kcalc"]
1101ausente = true  # ya no aparece en el último barrido de la frontera
1102
1103[candidato."libmpdclient"]
1104veredicto = "opcional"
1105porque = "yambar va con -Dplugin-mpd=disabled. ⚠ Y el otro que «la pide» NO es el cliente de MPD: recipes/mpc.toml es GNU MPC (aritmética compleja, --with-gmp --with-mpfr) — HOMÓNIMO, no el mismo paquete. Sin cliente de MPD en el catálogo no hay quién la enlace"
1106perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1107piden = ["mpc", "yambar"]
1108
1109[candidato."libmpg123"]
1110veredicto = "opcional"
1111sugerencia = "opcional?"
1112porque = "libsndfile va con --disable-mpeg, que apaga LAME y mpg123 juntos"
1113perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1114piden = ["libsndfile"]
1115
1116[candidato."libmysofa"]
1117veredicto = "opcional"
1118sugerencia = "opcional?"
1119porque = "la receta pasa -Dlibmysofa=disabled (meson_options.txt:229): son las funciones de transferencia HRTF para audio espacial en auriculares"
1120perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1121piden = ["pipewire"]
1122
1123[candidato."libnma"]
1124veredicto = "opcional"
1125sugerencia = "opcional?"
1126porque = "⚠ la etiqueta no es el hecho: gnome-shell 48.8 no nombra libnma en ningún sitio. Su camino de red es libnm + libsecret-1 (meson.build:106-108) y va apagado con -Dnetworkmanager=false. El candidato lo hereda el sembrador de la expresión de nixpkgs"
1127perfiles = ["escritorio-gnome"]
1128piden = ["gnome-shell"]
1129
1130[candidato."libopenmpt"]
1131veredicto = "opcional"
1132sugerencia = "opcional?"
1133porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-libopenmpt: música de módulos (MOD/XM/S3M/IT). Capacidad ausente sin consumidor en el catálogo"
1134perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1135piden = ["ffmpeg"]
1136
1137[candidato."libopus"]
1138veredicto = "opcional"
1139porque = "lo piden 3 recetas"
1140perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1141piden = ["ffmpeg", "libsndfile", "pipewire"]
1142
1143[candidato."libpciaccess"]
1144veredicto = "opcional"
1145sugerencia = "opcional?"
1146porque = "X11 heredado: el escritorio es Wayland"
1147perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
1148piden = ["libdrm"]
1149
1150[candidato."libphonenumber"]
1151veredicto = "opcional"
1152sugerencia = "opcional?"
1153porque = "evolution-data-server va con -DWITH_PHONENUMBER=OFF explícito (receta:121): es la normalización de números de teléfono de Google en la libreta"
1154perfiles = ["escritorio-gnome"]
1155piden = ["evolution-data-server"]
1156
1157[candidato."libpq"]
1158veredicto = "opcional"
1159sugerencia = "opcional?"
1160porque = "conectores de base de datos: ninguna imagen los pide"
1161perfiles = ["escritorio-kde"]
1162piden = ["qtbase"]
1163
1164[candidato."libproxy"]
1165veredicto = "opcional"
1166sugerencia = "opcional?"
1167porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
1168perfiles = ["escritorio-kde"]
1169piden = ["qtbase"]
1170
1171[candidato."libpsl"]
1172veredicto = "opcional"
1173sugerencia = "opcional?"
1174porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
1175perfiles = ["cli"]
1176piden = ["curl"]
1177ausente = true  # ya no aparece en el último barrido de la frontera
1178
1179[candidato."libpulseaudio"]
1180veredicto = "opcional"
1181sugerencia = "hueco?"
1182porque = "stack de audio/multimedia: decisión de producto pendiente, no un hueco de build"
1183perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1184piden = ["cosmic-settings-daemon", "ffmpeg", "gnome-shell", "libcanberra", "obs-studio", "phonon", "pipewire", "qtmultimedia", "wf-recorder"]
1185
1186[candidato."libqaccessibilityclient"]
1187veredicto = "opcional"
1188sugerencia = "opcional?"
1189porque = "módulo opcional de Qt/KDE: el escritorio construye sin él — revisá si lo querés para un Plasma completo"
1190perfiles = ["escritorio-kde"]
1191piden = ["kwin"]
1192
1193[candidato."libqmi"]
1194veredicto = "opcional"
1195sugerencia = "opcional?"
1196porque = "modemmanager va con -Dqmi=false explícito"
1197perfiles = ["escritorio-kde"]
1198piden = ["modemmanager"]
1199
1200[candidato."libraw"]
1201veredicto = "opcional"
1202sugerencia = "opcional?"
1203porque = "la receta pasa -Draw=disabled explícito (fotos RAW de cámara)"
1204perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1205piden = ["swayimg"]
1206
1207[candidato."librist"]
1208veredicto = "opcional"
1209porque = "lo piden 2 recetas"
1210perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1211piden = ["ffmpeg", "obs-studio"]
1212
1213[candidato."libsecret"]
1214veredicto = "opcional"
1215sugerencia = "opcional?"
1216porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
1217perfiles = ["escritorio-kde"]
1218piden = ["kwallet"]
1219ausente = true  # ya no aparece en el último barrido de la frontera
1220
1221[candidato."libselinux"]
1222veredicto = "opcional"
1223sugerencia = "hueco?"
1224porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
1225perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1226piden = ["glib", "networkmanager", "pipewire", "qtbase"]
1227
1228[candidato."libsepol"]
1229veredicto = "opcional"
1230sugerencia = "opcional?"
1231porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
1232perfiles = ["escritorio-kde"]
1233piden = ["qtbase"]
1234
1235[candidato."libsixel"]
1236veredicto = "opcional"
1237sugerencia = "opcional?"
1238porque = "la receta pasa -Dsixel=disabled explícito: es el back-end que pinta imágenes DENTRO de un terminal, no en el compositor"
1239perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1240piden = ["swayimg"]
1241
1242[candidato."libspectre"]
1243veredicto = "opcional"
1244sugerencia = "opcional?"
1245porque = "okular la declara OPCIONAL dos veces: entra en la lista FORCE_NOT_REQUIRED_DEPENDENCIES (CMakeLists.txt:37) y su find_package va con set_okular_optional_package_properties. Es el back-end de PostScript (.ps/.eps) ⇒ capacidad ausente dicha en voz alta: okular abre PDF, no PostScript"
1246perfiles = ["escritorio-kde"]
1247piden = ["okular"]
1248
1249[candidato."libssh"]
1250veredicto = "opcional"
1251porque = "ffmpeg va con --disable-autodetect y sin --enable-libssh (mismo criterio ya aplicado a srt/speex/soxr). Y konsole 25.04.3 no la nombra en ningún fichero: su plugin SSHManager —ON por defecto, y lo construimos— no enlaza libssh, administra ~/.ssh y lanza el binario ssh, que el corpus SÍ tiene (recipes/openssh.toml)"
1252perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1253piden = ["ffmpeg", "konsole"]
1254
1255[candidato."libstartup-notification"]
1256veredicto = "opcional"
1257sugerencia = "opcional?"
1258porque = "la receta pasa -Dstartup_notification=false contra un default true (meson.options:114). Es el protocolo X11 del cursor «ocupado» al lanzar una app; en Wayland lo reemplaza xdg-activation, que mutter implementa nativamente"
1259perfiles = ["escritorio-gnome"]
1260piden = ["mutter"]
1261
1262[candidato."libstemmer"]
1263veredicto = "opcional"
1264sugerencia = "opcional?"
1265porque = "la receta pasa -Dstemming=false explícito: es la raíz léxica para buscar «editor» y que encuentre «editores»"
1266perfiles = ["escritorio-gnome"]
1267piden = ["appstream"]
1268
1269[candidato."libsysprof-capture"]
1270veredicto = "opcional"
1271porque = "lo piden 3 recetas"
1272perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1273piden = ["gjs", "glib", "mutter"]
1274
1275[candidato."libsystemtap"]
1276veredicto = "opcional"
1277sugerencia = "opcional?"
1278porque = "lo mismo que systemtap: glib declara dtrace/systemtap como features 'auto' (meson.options:52 y :58) y ninguna está en [deps]"
1279perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1280piden = ["glib"]
1281
1282[candidato."libtasn1"]
1283veredicto = "opcional"
1284sugerencia = "opcional?"
1285porque = "p11-kit va con -Dtrust_module=disabled, que es el módulo que parsea certificados y lo único que pediría libtasn1"
1286perfiles = ["escritorio-gnome"]
1287piden = ["p11-kit"]
1288
1289[candidato."libthai"]
1290veredicto = "opcional"
1291porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
1292perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1293piden = ["pango", "qtbase"]
1294
1295[candidato."libtheora"]
1296veredicto = "opcional"
1297sugerencia = "opcional?"
1298porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-libtheora, o sea el ENCODER; el decoder de Theora es nativo y está en el artefacto sellado (medido). Formato de 2004 sin nadie que lo pida"
1299perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1300piden = ["ffmpeg"]
1301
1302[candidato."libtirpc"]
1303veredicto = "opcional"
1304sugerencia = "opcional?"
1305porque = "la receta pasa -Dsecure-rpc=false y lo documenta: es el único camino por el que os/meson.build pediría tirpc"
1306perfiles = ["escritorio-kde"]
1307piden = ["xwayland"]
1308
1309[candidato."libunistring"]
1310veredicto = "opcional"
1311sugerencia = "opcional?"
1312porque = "libpsl va con --enable-runtime=libicu: la IDNA la resuelve ICU —icu4c ya está en [deps]— y no libidn2, que es quien arrastraría libunistring"
1313perfiles = ["escritorio-gnome"]
1314piden = ["libpsl"]
1315
1316[candidato."libunwind"]
1317veredicto = "opcional"
1318sugerencia = "hueco?"
1319porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
1320perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
1321piden = ["libplacebo", "mesa", "opencv", "qtmultimedia", "strace", "xwayland"]
1322
1323[candidato."libva-minimal"]
1324veredicto = "opcional"
1325sugerencia = "nix-ismo?"
1326porque = "stack de audio/multimedia: decisión de producto pendiente, no un hueco de build"
1327perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
1328piden = ["mesa"]
1329
1330[candidato."libvdpau"]
1331veredicto = "opcional"
1332sugerencia = "opcional?"
1333porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-vdpau, la aceleración por hardware de NVIDIA. Sin driver propietario en la distro no hay a quién hablarle"
1334perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1335piden = ["ffmpeg"]
1336
1337[candidato."libvlc"]
1338veredicto = "opcional"
1339sugerencia = "opcional?"
1340porque = "-DENABLE_VLC=OFF; la fuente de vídeo por VLC pide vlc entero, que no está en el catálogo"
1341perfiles = ["escritorio-kde"]
1342piden = ["obs-studio"]
1343
1344[candidato."libvpl"]
1345veredicto = "opcional"
1346sugerencia = "opcional?"
1347porque = "-DENABLE_QSV11=OFF: es la codificación por hardware Quick Sync de Intel. La codificación H.264 de la distro va por obs-x264.so, que SÍ está en el artefacto sellado y enlaza libx264.so.165 (medido)"
1348perfiles = ["escritorio-kde"]
1349piden = ["obs-studio"]
1350
1351[candidato."libvpx"]
1352veredicto = "opcional"
1353sugerencia = "opcional?"
1354porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-libvpx. Igual que libaom: se pierde CODIFICAR VP8/VP9, no reproducirlos — los decoders nativos están (los bsf vp9_* aparecen en el artefacto sellado)"
1355perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1356piden = ["ffmpeg"]
1357
1358[candidato."libwacom"]
1359veredicto = "opcional"
1360porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
1361perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
1362piden = ["libinput", "mutter", "plasma-desktop"]
1363
1364[candidato."libxaw"]
1365veredicto = "opcional"
1366sugerencia = "opcional?"
1367porque = "no aparece en ningún meson del árbol: sólo en .appveyor.yml y en .gitlab-ci/debian-install.sh, que instalan las deps de TODOS los servidores del repo xserver (Xorg, Xnest, Xvfb). Xwayland no la enlaza"
1368perfiles = ["escritorio-kde"]
1369piden = ["xwayland"]
1370
1371[candidato."libxcb-cursor"]
1372veredicto = "provisto"
1373sugerencia = "opcional?"
1374provee = "xcb-util-cursor"
1375porque = "nixpkgs lo separa en un paquete propio; acá lo da la receta `xcb-util-cursor` (verificado en el store)"
1376perfiles = ["escritorio-kde"]
1377piden = ["qtbase"]
1378ausente = true  # ya no aparece en el último barrido de la frontera
1379
1380[candidato."libxcb-errors"]
1381veredicto = "opcional"
1382porque = "las dos la apagan a mano y las dos recetas lo dejan escrito: wlroots -Dxcb-errors=disabled, yambar -Dbackend-x11=disabled (su comentario la nombra entre las xcb-* que evita). Es una librería de diagnóstico de XCB, no de dibujo"
1383perfiles = ["escritorio-sway"]
1384piden = ["wlroots", "yambar"]
1385
1386[candidato."libxcb-image"]
1387veredicto = "provisto"
1388provee = "xcb-util-image"
1389porque = "nixpkgs lo separa en un paquete propio; acá lo da la receta `xcb-util-image` (verificado en el store)"
1390perfiles = ["escritorio-kde"]
1391piden = ["qtbase", "xcb-util-cursor"]
1392ausente = true  # ya no aparece en el último barrido de la frontera
1393
1394[candidato."libxcb-keysyms"]
1395veredicto = "provisto"
1396provee = "xcb-util-keysyms"
1397porque = "nixpkgs lo separa en un paquete propio; acá lo da la receta `xcb-util-keysyms` (verificado en el store)"
1398perfiles = ["escritorio-kde"]
1399piden = ["mesa", "qtbase"]
1400ausente = true  # ya no aparece en el último barrido de la frontera
1401
1402[candidato."libxcb-render-util"]
1403veredicto = "provisto"
1404provee = "xcb-util-renderutil"
1405porque = "nixpkgs lo separa en un paquete propio; acá lo da la receta `xcb-util-renderutil` (verificado en el store)"
1406perfiles = ["escritorio-kde"]
1407piden = ["qtbase", "xcb-util-cursor"]
1408ausente = true  # ya no aparece en el último barrido de la frontera
1409
1410[candidato."libxcb-util"]
1411veredicto = "provisto"
1412sugerencia = "opcional?"
1413provee = "xcb-util"
1414porque = "nixpkgs lo separa en un paquete propio; acá lo da la receta `xcb-util` (verificado en el store)"
1415perfiles = ["escritorio-kde"]
1416piden = ["qtbase"]
1417ausente = true  # ya no aparece en el último barrido de la frontera
1418
1419[candidato."libxcb-wm"]
1420veredicto = "provisto"
1421sugerencia = "opcional?"
1422provee = "xcb-util-wm"
1423porque = "nixpkgs lo separa en un paquete propio; acá lo da la receta `xcb-util-wm` (verificado en el store)"
1424perfiles = ["escritorio-kde"]
1425piden = ["qtbase"]
1426ausente = true  # ya no aparece en el último barrido de la frontera
1427
1428[candidato."libxcomposite"]
1429veredicto = "opcional"
1430porque = "X11 heredado: el escritorio es Wayland"
1431perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1432piden = ["gtk3", "mutter", "qtbase"]
1433
1434[candidato."libxcrypt"]
1435veredicto = "opcional"
1436sugerencia = "hueco?"
1437porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
1438perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
1439piden = ["linux-pam", "perl", "shadow", "util-linux"]
1440
1441[candidato."libxdamage"]
1442veredicto = "opcional"
1443porque = "lo piden 3 recetas"
1444perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1445piden = ["gtk3", "gtk4", "mutter"]
1446
1447[candidato."libxfont_2"]
1448veredicto = "provisto"
1449sugerencia = "opcional?"
1450provee = "libXfont2"
1451porque = "no falta: es el MISMO paquete con el nombre normalizado por el sembrador. recipes/incoming-kde/libXfont2.toml existe, se autoró en la misma tanda que xwayland y ya figura en su [deps].build. Alias de MAYÚSCULAS, primero de esa forma"
1452perfiles = ["escritorio-kde"]
1453piden = ["xwayland"]
1454ausente = true  # ya no aparece en el último barrido de la frontera
1455
1456[candidato."libxft"]
1457veredicto = "opcional"
1458porque = "X11 heredado: el escritorio es Wayland"
1459perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1460piden = ["pango", "plasma-desktop", "plasma-workspace"]
1461
1462[candidato."libxinerama"]
1463veredicto = "opcional"
1464sugerencia = "hueco?"
1465porque = "lo piden 4 recetas de la imagen — difícil que sea accesorio"
1466perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1467piden = ["dunst", "gtk3", "gtk4", "mutter"]
1468
1469[candidato."libxmu"]
1470veredicto = "opcional"
1471sugerencia = "opcional?"
1472porque = "mismo caso que libxaw: sólo en los ficheros de CI del repo xserver, cero referencias en los meson que construyen Xwayland"
1473perfiles = ["escritorio-kde"]
1474piden = ["xwayland"]
1475
1476[candidato."libxpm"]
1477veredicto = "opcional"
1478sugerencia = "opcional?"
1479porque = "mismo caso que libxaw: sólo en los ficheros de CI del repo xserver, cero referencias en los meson que construyen Xwayland"
1480perfiles = ["escritorio-kde"]
1481piden = ["xwayland"]
1482
1483[candidato."libxrandr"]
1484veredicto = "opcional"
1485sugerencia = "hueco?"
1486porque = "X11 heredado: el escritorio es Wayland"
1487perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
1488piden = ["dunst", "gtk3", "gtk4", "mesa", "mutter", "qtmultimedia", "vulkan-loader"]
1489
1490[candidato."libxres"]
1491veredicto = "opcional"
1492sugerencia = "opcional?"
1493porque = "⚠ la etiqueta no es el hecho: lo que xwayland usa es `resourceproto` (meson.build:90), las CABECERAS del protocolo XRes, y vienen en xorgproto, que ya está en [deps]. libXres es la librería CLIENTE — el servidor IMPLEMENTA la extensión, no la consume"
1494perfiles = ["escritorio-kde"]
1495piden = ["xwayland"]
1496
1497[candidato."libxscrnsaver"]
1498veredicto = "opcional"
1499porque = "X11 heredado: el escritorio es Wayland"
1500perfiles = ["escritorio-kde", "escritorio-sway"]
1501piden = ["dunst", "kidletime"]
1502
1503[candidato."libxshmfence"]
1504veredicto = "opcional"
1505sugerencia = "opcional?"
1506porque = "X11 heredado: el escritorio es Wayland"
1507perfiles = ["escritorio-kde", "escritorio-mirada"]
1508piden = ["mesa"]
1509ausente = true  # ya no aparece en el último barrido de la frontera
1510
1511[candidato."libxt"]
1512veredicto = "opcional"
1513sugerencia = "opcional?"
1514porque = "mismo caso que libxaw: sólo en los ficheros de CI del repo xserver. Es el toolkit intrínseco de las apps X11 clásicas, no del servidor"
1515perfiles = ["escritorio-kde"]
1516piden = ["xwayland"]
1517
1518[candidato."libxxf86vm"]
1519veredicto = "opcional"
1520sugerencia = "opcional?"
1521porque = "X11 heredado: el escritorio es Wayland"
1522perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
1523piden = ["mesa"]
1524
1525[candidato."lilv"]
1526veredicto = "opcional"
1527sugerencia = "opcional?"
1528porque = "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"
1529perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1530piden = ["pipewire"]
1531
1532[candidato."lksctp-tools"]
1533veredicto = "opcional"
1534sugerencia = "opcional?"
1535porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
1536perfiles = ["escritorio-kde"]
1537piden = ["qtbase"]
1538
1539[candidato."llhttp"]
1540veredicto = "opcional"
1541sugerencia = "opcional?"
1542porque = "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"
1543perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1544piden = ["nodejs"]
1545
1546[candidato."llvm"]
1547veredicto = "opcional"
1548sugerencia = "opcional?"
1549porque = "Vulkan / compilación de shaders / dispatch GL: no habilitado (mesa se construye sin ellos)"
1550perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
1551piden = ["mesa"]
1552
1553[candidato."lndir"]
1554veredicto = "nix-ismo"
1555sugerencia = "opcional?"
1556porque = "helper de nixpkgs para árboles de symlinks"
1557perfiles = ["escritorio-kde"]
1558piden = ["qtbase"]
1559ausente = true  # ya no aparece en el último barrido de la frontera
1560
1561[candidato."lttng-ust"]
1562veredicto = "opcional"
1563sugerencia = "opcional?"
1564porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
1565perfiles = ["escritorio-kde"]
1566piden = ["qtbase"]
1567
1568[candidato."lua"]
1569veredicto = "opcional"
1570sugerencia = "opcional?"
1571porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
1572perfiles = ["escritorio-kde"]
1573piden = ["libinput"]
1574ausente = true  # ya no aparece en el último barrido de la frontera
1575
1576[candidato."lvm2"]
1577veredicto = "opcional"
1578sugerencia = "opcional?"
1579porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
1580perfiles = ["base", "cli", "escritorio-sway"]
1581piden = ["parted"]
1582
1583[candidato."lzip"]
1584veredicto = "nix-ismo"
1585sugerencia = "opcional?"
1586porque = "es un COMPRESOR, andamiaje de empaquetado: nixpkgs lo usa para desempaquetar .tar.lz. El tarball que pinea la receta es .tar.gz"
1587perfiles = ["escritorio-gnome"]
1588piden = ["libpsl"]
1589ausente = true  # ya no aparece en el último barrido de la frontera
1590
1591[candidato."lzo"]
1592veredicto = "opcional"
1593porque = "libarchive pasa --without-lzo2 explícito. cairo NO la apaga: meson.options:19 la declara feature 'auto' y meson.build:203 la tomaría si apareciera. ⚠ CORRECCIÓN de cómo lo dije al principio: eso NO es una escotilla del catálogo. El sandbox monta SÓLO las deps declaradas (docs/02-build-lab.md §3.4: raíz tmpfs + bind read-only de las deps) y agregarla a [deps] movería el ArtifactHash, o sea que se vería. La vía silenciosa sería que apareciera en el LAB, que no entra en hash_inputs. Sólo la usa util/cairo-script"
1594perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1595piden = ["cairo", "libarchive"]
1596
1597[candidato."mariadb-connector-c"]
1598veredicto = "opcional"
1599sugerencia = "opcional?"
1600porque = "conectores de base de datos: ninguna imagen los pide"
1601perfiles = ["escritorio-kde"]
1602piden = ["qtbase"]
1603
1604[candidato."mariadb-connector-odbc"]
1605veredicto = "opcional"
1606sugerencia = "opcional?"
1607porque = "conectores de base de datos: ninguna imagen los pide"
1608perfiles = ["escritorio-kde"]
1609piden = ["qtbase"]
1610
1611[candidato."md4c"]
1612veredicto = "opcional"
1613sugerencia = "opcional?"
1614porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
1615perfiles = ["escritorio-kde"]
1616piden = ["qtbase"]
1617
1618[candidato."merve"]
1619veredicto = "opcional"
1620sugerencia = "opcional?"
1621porque = "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"
1622perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1623piden = ["nodejs"]
1624
1625[candidato."mesa-gl-headers"]
1626veredicto = "provisto"
1627provee = "mesa"
1628porque = "no falta: es el split de cabeceras que hace nixpkgs. El artefacto de mesa instala usr/include/{GL,GLES2,GLES3,KHR,EGL} —verificado en el store, no deducido— que es lo que incluyen mutter y xwayland. El único hueco es GLES1, apagado a propósito en la receta (-Dgles1=disabled)"
1629perfiles = ["escritorio-gnome", "escritorio-kde"]
1630piden = ["mutter", "xwayland"]
1631ausente = true  # ya no aparece en el último barrido de la frontera
1632
1633[candidato."mesa-libclc"]
1634veredicto = "opcional"
1635sugerencia = "opcional?"
1636porque = "libclc es para OpenCL (clover/rusticl) y nuestra mesa no lo compila: `-Dllvm=disabled -Dintel-clc=disabled -Dgallium-rusticl=false`. La propia cabecera de recipes/mesa.toml lo dice — «iris-only y sin Vulkan/rusticl, with_clc=FALSE ⇒ NO se pide libclc/LLVM». nixpkgs lo habilita, nosotros no."
1637perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
1638piden = ["mesa"]
1639
1640[candidato."mesa-libgbm"]
1641veredicto = "provisto"
1642provee = "mesa"
1643porque = "nixpkgs lo separa en un paquete propio; acá lo da la receta `mesa` (verificado en el store)"
1644perfiles = ["escritorio-kde"]
1645piden = ["kwin", "mesa", "qtbase"]
1646ausente = true  # ya no aparece en el último barrido de la frontera
1647
1648[candidato."milou"]
1649veredicto = "opcional"
1650porque = "módulo opcional de Qt/KDE: el escritorio construye sin él — revisá si lo querés para un Plasma completo"
1651perfiles = ["escritorio-kde"]
1652piden = ["kwin", "plasma-workspace"]
1653
1654[candidato."mobile-broadband-provider-info"]
1655veredicto = "opcional"
1656porque = "lo piden 2 recetas"
1657perfiles = ["escritorio-kde"]
1658piden = ["networkmanager", "plasma-nm"]
1659
1660[candidato."mpdecimal"]
1661veredicto = "opcional"
1662sugerencia = "opcional?"
1663porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
1664perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
1665piden = ["python3"]
1666
1667[candidato."mutest"]
1668veredicto = "opcional"
1669sugerencia = "opcional?"
1670porque = "es el marco de tests de graphene y la receta va con -Dtests=false -Dinstalled_tests=false"
1671perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-sway"]
1672piden = ["graphene"]
1673
1674[candidato."nanosvg"]
1675veredicto = "opcional"
1676sugerencia = "opcional?"
1677porque = "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"
1678perfiles = ["escritorio-gnome", "escritorio-sway"]
1679piden = ["fcft"]
1680
1681[candidato."nbytes"]
1682veredicto = "opcional"
1683sugerencia = "opcional?"
1684porque = "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"
1685perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1686piden = ["nodejs"]
1687
1688[candidato."newt"]
1689veredicto = "opcional"
1690sugerencia = "opcional?"
1691porque = "es la dep de nmtui y el propio meson lo dice en el assert de meson.build:806 — «You must have libnewt installed to build nmtui. Use -Dnmtui=false to disable it»— que es exactamente lo que pasa la receta. Ojo: nmtui viene en TRUE por defecto (meson_options.txt:43)"
1692perfiles = ["escritorio-kde"]
1693piden = ["networkmanager"]
1694
1695[candidato."nghttp2"]
1696veredicto = "opcional"
1697sugerencia = "opcional?"
1698porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
1699perfiles = ["cli"]
1700piden = ["curl"]
1701ausente = true  # ya no aparece en el último barrido de la frontera
1702
1703[candidato."nghttp3"]
1704veredicto = "opcional"
1705porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
1706perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1707piden = ["curl", "nodejs"]
1708
1709[candidato."ngtcp2"]
1710veredicto = "opcional"
1711porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
1712perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1713piden = ["curl", "nodejs"]
1714
1715[candidato."nlohmann_json"]
1716veredicto = "provisto"
1717sugerencia = "opcional?"
1718provee = "nlohmann-json"
1719porque = "no falta: es el MISMO paquete con el separador cambiado. recipes/nlohmann-json.toml está en el corpus y ya figura en [deps].build de obs-studio. Alias de puntuación, como libxcb-image→xcb-util-image"
1720perfiles = ["escritorio-kde"]
1721piden = ["obs-studio"]
1722ausente = true  # ya no aparece en el último barrido de la frontera
1723
1724[candidato."nv-codec-headers"]
1725veredicto = "opcional"
1726porque = "lo piden 2 recetas"
1727perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1728piden = ["ffmpeg", "obs-studio"]
1729
1730[candidato."ocl-icd"]
1731veredicto = "opcional"
1732sugerencia = "opcional?"
1733porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-opencl, y el hueco está una capa MÁS ABAJO: mesa se construye con -Dllvm=disabled -Dgallium-rusticl=false ⇒ la distro no publica NINGÚN runtime de OpenCL. Un ICD loader sin ICD no filtra nada"
1734perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1735piden = ["ffmpeg"]
1736
1737[candidato."openapv"]
1738veredicto = "opcional"
1739sugerencia = "opcional?"
1740porque = "⚠ NO es una perilla que no encendimos: es DESFASE DE VERSIÓN. El candidato sale de la expresión de nixpkgs para ffmpeg 8.x; nuestra receta pinea 7.1 y su `configure` no nombra apv/openapv en ningún sitio (verificado en el tarball sellado). Vuelve a ser pregunta legítima el día que ffmpeg suba de major"
1741perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1742piden = ["ffmpeg"]
1743
1744[candidato."openblas"]
1745veredicto = "opcional"
1746sugerencia = "opcional?"
1747porque = "la receta pasa -DWITH_LAPACK=OFF explícito, que es por donde OpenCV toma un BLAS/LAPACK externo"
1748perfiles = ["escritorio-kde"]
1749piden = ["opencv"]
1750
1751[candidato."opencl-headers"]
1752veredicto = "opcional"
1753sugerencia = "opcional?"
1754porque = "mismo caso que ocl-icd: son las cabeceras de OpenCL y la distro no publica runtime (mesa va -Dllvm=disabled -Dgallium-rusticl=false), además de que ffmpeg iría con --disable-autodetect"
1755perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1756piden = ["ffmpeg"]
1757
1758[candidato."openconnect"]
1759veredicto = "opcional"
1760sugerencia = "opcional?"
1761porque = "plasma-nm va con -DBUILD_OPENCONNECT=OFF explícito, contra un default ON (CMakeLists.txt:20). Capacidad ausente: no hay cliente VPN de Cisco/AnyConnect"
1762perfiles = ["escritorio-kde"]
1763piden = ["plasma-nm"]
1764
1765[candidato."openexr"]
1766veredicto = "opcional"
1767porque = "lo piden 2 recetas"
1768perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1769piden = ["opencv", "swayimg"]
1770
1771[candidato."openjpeg"]
1772veredicto = "opcional"
1773sugerencia = "hueco?"
1774porque = "lo piden 5 recetas de la imagen — difícil que sea accesorio"
1775perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
1776piden = ["ffmpeg", "leptonica", "opencv", "poppler", "swayimg"]
1777
1778[candidato."openldap"]
1779veredicto = "opcional"
1780porque = "conectores de base de datos: ninguna imagen los pide"
1781perfiles = ["base", "cli", "escritorio-gnome", "escritorio-sway"]
1782piden = ["evolution-data-server", "gnupg"]
1783
1784[candidato."orc"]
1785veredicto = "opcional"
1786porque = "stack de audio/multimedia: decisión de producto pendiente, no un hueco de build"
1787perfiles = ["escritorio-kde"]
1788piden = ["opencv", "qtmultimedia"]
1789
1790[candidato."oxygen-icons"]
1791veredicto = "opcional"
1792sugerencia = "opcional?"
1793porque = "módulo opcional de Qt/KDE: el escritorio construye sin él — revisá si lo querés para un Plasma completo"
1794perfiles = ["escritorio-kde"]
1795piden = ["frameworkintegration"]
1796
1797[candidato."packagekit-qt"]
1798veredicto = "opcional"
1799sugerencia = "hueco?"
1800porque = "formatos/paquetería ajenos; hammer tiene los suyos (.swm, Etapa F)"
1801perfiles = ["escritorio-kde"]
1802piden = ["dolphin", "frameworkintegration", "plasma-desktop", "plasma-workspace"]
1803
1804[candidato."pandoc-cli"]
1805veredicto = "opcional"
1806sugerencia = "opcional?"
1807porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
1808perfiles = ["cli", "escritorio-sway"]
1809piden = ["eza"]
1810
1811[candidato."plasma-nano"]
1812veredicto = "opcional"
1813sugerencia = "opcional?"
1814porque = "módulo opcional de Qt/KDE: el escritorio construye sin él — revisá si lo querés para un Plasma completo"
1815perfiles = ["escritorio-kde"]
1816piden = ["plasma-workspace"]
1817
1818[candidato."plasma-sdk"]
1819veredicto = "opcional"
1820sugerencia = "opcional?"
1821porque = "cero referencias en el CMakeLists de plasma-desktop: son las herramientas de DESARROLLO de plasmoides (plasmoidviewer y compañía), un paquete aparte que el sembrador hereda de la expresión de nixpkgs"
1822perfiles = ["escritorio-kde"]
1823piden = ["plasma-desktop"]
1824
1825[candidato."plasma-systemmonitor"]
1826veredicto = "opcional"
1827sugerencia = "opcional?"
1828porque = "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"
1829perfiles = ["escritorio-kde"]
1830piden = ["kinfocenter"]
1831
1832[candidato."ply"]
1833veredicto = "opcional"
1834sugerencia = "opcional?"
1835porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
1836perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
1837piden = ["mesa"]
1838
1839[candidato."po4a"]
1840veredicto = "opcional"
1841sugerencia = "opcional?"
1842porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
1843perfiles = ["base", "cli", "escritorio-kde", "escritorio-sway"]
1844piden = ["util-linux"]
1845
1846[candidato."polkit-qt-1"]
1847veredicto = "provisto"
1848provee = "polkit-qt-1"
1849porque = "sin él Plasma no puede pedir autorización: montar discos, cambiar ajustes del sistema"
1850perfiles = ["escritorio-kde"]
1851piden = ["kauth", "plasma-workspace"]
1852ausente = true  # ya no aparece en el último barrido de la frontera
1853
1854[candidato."pop-icon-theme"]
1855veredicto = "opcional"
1856sugerencia = "opcional?"
1857porque = "es un tema de ICONOS: datos, no código, y cosmic-icons ya provee el suyo. Nada lo enlaza ni lo exige para construir"
1858perfiles = ["escritorio-cosmic"]
1859piden = ["cosmic-icons"]
1860
1861[candidato."poppler-data"]
1862veredicto = "opcional"
1863sugerencia = "opcional?"
1864porque = "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"
1865perfiles = ["escritorio-kde"]
1866piden = ["poppler"]
1867
1868[candidato."poppler-qt6"]
1869veredicto = "provisto"
1870sugerencia = "opcional?"
1871provee = "poppler"
1872porque = "nixpkgs lo separa en un paquete propio; acá lo da la receta `poppler` (verificado en el store)"
1873perfiles = ["escritorio-kde"]
1874piden = ["kfilemetadata"]
1875ausente = true  # ya no aparece en el último barrido de la frontera
1876
1877[candidato."popt"]
1878veredicto = "opcional"
1879sugerencia = "opcional?"
1880porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
1881perfiles = ["base", "cli", "escritorio-sway"]
1882piden = ["rsync"]
1883
1884[candidato."ppp"]
1885veredicto = "opcional"
1886porque = "lo piden 2 recetas"
1887perfiles = ["escritorio-kde"]
1888piden = ["modemmanager", "networkmanager"]
1889
1890[candidato."protobuf"]
1891veredicto = "opcional"
1892porque = "lo piden 3 recetas"
1893perfiles = ["escritorio-gnome", "escritorio-kde"]
1894piden = ["evolution-data-server", "libei", "opencv"]
1895
1896[candidato."protobuf-c"]
1897veredicto = "opcional"
1898sugerencia = "opcional?"
1899porque = "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]"
1900perfiles = ["escritorio-gnome"]
1901piden = ["libei"]
1902
1903[candidato."psqlodbc"]
1904veredicto = "opcional"
1905sugerencia = "opcional?"
1906porque = "conectores de base de datos: ninguna imagen los pide"
1907perfiles = ["escritorio-kde"]
1908piden = ["qtbase"]
1909
1910[candidato."publicsuffix-list"]
1911veredicto = "opcional"
1912sugerencia = "opcional?"
1913porque = "no falta: la lista VIENE en el tarball de libpsl y la receta la hornea en el .so con --enable-builtin=libicu, cosa que además la fija al ArtifactHash. Traerla por separado sería meter un dato mutable en un store direccionable por contenido"
1914perfiles = ["escritorio-gnome"]
1915piden = ["libpsl"]
1916
1917[candidato."purpose"]
1918veredicto = "provisto"
1919provee = "purpose"
1920porque = "lo piden 3 recetas"
1921perfiles = ["escritorio-kde"]
1922piden = ["gwenview", "okular", "spectacle"]
1923ausente = true  # ya no aparece en el último barrido de la frontera
1924
1925[candidato."pycparser"]
1926veredicto = "opcional"
1927sugerencia = "opcional?"
1928porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
1929perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
1930piden = ["mesa"]
1931
1932[candidato."pygobject"]
1933veredicto = "provisto"
1934provee = "py3-gobject"
1935porque = "⚠ CORRECCIÓN de mi propio veredicto del 2026-09-09: lo había marcado `opcional` diciendo que sólo la usan los tests de libsecret y modemmanager. Eso SIGUE SIENDO CIERTO para esas dos, pero el veredicto estaba mal de categoría: no es que no la queramos, es que YA LA TENEMOS. recipes/incoming-gnome/py3-gobject.toml es PyGObject 3.50.0 —la escribió el frente GNOME para el build de libgweather— y publica `pygobject-3.0.pc` (verificado en su artefacto). Lo destapó empaquetar gnome-tweaks, que la pide por ese nombre en su meson y resolvió sin receta nueva. OCTAVO alias del barrido y una forma más de fallar el cruce: el prefijo `py3-` de nuestro catálogo contra el nombre upstream"
1936perfiles = ["escritorio-gnome", "escritorio-kde"]
1937piden = ["libsecret", "modemmanager"]
1938
1939[candidato."pyside6"]
1940veredicto = "opcional"
1941sugerencia = "hueco?"
1942porque = "bindings Python de Qt: ninguna imagen los pide"
1943perfiles = ["escritorio-kde"]
1944piden = ["kcoreaddons", "kguiaddons", "kjobwidgets", "knotifications", "kstatusnotifieritem", "kunitconversion", "kwidgetsaddons", "kxmlgui"]
1945
1946[candidato."python3-3.14.6-env"]
1947veredicto = "nix-ismo"
1948sugerencia = "nix-ismo?"
1949porque = "wrapper de entorno de nix, no un paquete"
1950perfiles = ["escritorio-kde"]
1951piden = ["kcoreaddons", "kguiaddons", "knotifications", "kstatusnotifieritem", "kwidgetsaddons", "kxmlgui", "libinput"]
1952ausente = true  # ya no aparece en el último barrido de la frontera
1953
1954[candidato."python3-3.14.7-env"]
1955veredicto = "nix-ismo"
1956sugerencia = "nix-ismo?"
1957porque = "envoltorio de entorno de nixpkgs (python + paquetes en una derivación); hammer ya tiene la receta `python3` (3.12.10) y la libinput que lo pide YA la declara en sus deps de build. Mismo criterio que `git-minimal` unas líneas más arriba."
1958perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
1959piden = ["breeze-icons", "gnome-shell", "gobject-introspection", "kcoreaddons", "kguiaddons", "kjobwidgets", "knotifications", "kstatusnotifieritem", "kunitconversion", "kwidgetsaddons", "kxmlgui", "libei"]
1960ausente = true  # ya no aparece en el último barrido de la frontera
1961
1962[candidato."pyyaml"]
1963veredicto = "opcional"
1964sugerencia = "opcional?"
1965porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
1966perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
1967piden = ["mesa"]
1968
1969[candidato."qca"]
1970veredicto = "opcional"
1971sugerencia = "opcional?"
1972porque = "módulo opcional de Qt/KDE: el escritorio construye sin él — revisá si lo querés para un Plasma completo"
1973perfiles = ["escritorio-kde"]
1974piden = ["kwallet"]
1975
1976[candidato."qqc2-breeze-style"]
1977veredicto = "provisto"
1978provee = "qqc2-breeze-style"
1979porque = "el estilo QML que Plasma usa de verdad; sin él los controles caen a un estilo genérico"
1980perfiles = ["escritorio-kde"]
1981piden = ["kscreenlocker", "plasma-workspace"]
1982ausente = true  # ya no aparece en el último barrido de la frontera
1983
1984[candidato."qrcodegencpp"]
1985veredicto = "opcional"
1986sugerencia = "opcional?"
1987porque = "dep del plugin obs-websocket, que NO se construye: la receta lo neutraliza con `touch plugins/obs-websocket/CMakeLists.txt` y el artefacto sellado lo confirma — usr/lib/obs-plugins no tiene obs-websocket.so. qrcodegencpp sólo dibuja el QR con el que la app móvil se empareja"
1988perfiles = ["escritorio-kde"]
1989piden = ["obs-studio"]
1990
1991[candidato."qtimageformats"]
1992veredicto = "opcional"
1993sugerencia = "opcional?"
1994porque = "no aparece en ningún CMakeLists de gwenview: es un paquete de PLUGINS de Qt que se cargan en runtime para formatos extra. Sin él gwenview abre los formatos que trae qtbase; no falla nada al construir"
1995perfiles = ["escritorio-kde"]
1996piden = ["gwenview"]
1997
1998[candidato."qtquick3d"]
1999veredicto = "opcional"
2000porque = "módulo opcional de Qt/KDE: el escritorio construye sin él — revisá si lo querés para un Plasma completo"
2001perfiles = ["escritorio-kde"]
2002piden = ["kwin", "qtmultimedia"]
2003
2004[candidato."qtsensors"]
2005veredicto = "opcional"
2006porque = "módulo opcional de Qt/KDE: el escritorio construye sin él — revisá si lo querés para un Plasma completo"
2007perfiles = ["escritorio-kde"]
2008piden = ["kscreen", "kwin"]
2009
2010[candidato."qtserialport"]
2011veredicto = "opcional"
2012sugerencia = "opcional?"
2013porque = "módulo opcional de Qt/KDE: el escritorio construye sin él — revisá si lo querés para un Plasma completo"
2014perfiles = ["escritorio-kde"]
2015piden = ["qtpositioning"]
2016
2017[candidato."qtvirtualkeyboard"]
2018veredicto = "opcional"
2019porque = "módulo opcional de Qt/KDE: el escritorio construye sin él — revisá si lo querés para un Plasma completo"
2020perfiles = ["escritorio-kde"]
2021piden = ["kwin", "plasma-workspace"]
2022
2023[candidato."qtwebengine"]
2024veredicto = "opcional"
2025sugerencia = "opcional?"
2026porque = "⚠ hallazgo que abarata mucho: en plasma-nm, Qt6WebEngineWidgets se pide REQUIRED pero SÓLO dentro de `if(BUILD_OPENCONNECT)` (CMakeLists.txt:54-56), y la receta pasa -DBUILD_OPENCONNECT=OFF. O sea que un Chromium entero colgaba de la vista web de SSO de una VPN, y apagar la VPN lo saca del grafo"
2027perfiles = ["escritorio-kde"]
2028piden = ["plasma-nm"]
2029
2030[candidato."qtwebsockets"]
2031veredicto = "opcional"
2032sugerencia = "opcional?"
2033porque = "módulo opcional de Qt/KDE: el escritorio construye sin él — revisá si lo querés para un Plasma completo"
2034perfiles = ["escritorio-kde"]
2035piden = ["qcoro"]
2036
2037[candidato."rdma-core"]
2038veredicto = "opcional"
2039sugerencia = "opcional?"
2040porque = "libpcap va con --disable-rdma explícito: es la captura sobre InfiniBand/RoCE"
2041perfiles = ["escritorio-kde"]
2042piden = ["libpcap"]
2043
2044[candidato."remove-references-to"]
2045veredicto = "nix-ismo"
2046sugerencia = "opcional?"
2047porque = "helper del stdenv de nixpkgs"
2048perfiles = ["cli"]
2049piden = ["jq"]
2050ausente = true  # ya no aparece en el último barrido de la frontera
2051
2052[candidato."resvg"]
2053veredicto = "opcional"
2054sugerencia = "opcional?"
2055porque = "fuzzel va con -Dsvg-backend=nanosvg, que es su default y viene vendorizado ⇒ no entra NINGUNA librería SVG externa, ni librsvg ni resvg"
2056perfiles = ["escritorio-sway"]
2057piden = ["fuzzel"]
2058
2059[candidato."rhash"]
2060veredicto = "opcional"
2061sugerencia = "opcional?"
2062porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
2063perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2064piden = ["cmake"]
2065
2066[candidato."roc-toolkit"]
2067veredicto = "opcional"
2068sugerencia = "opcional?"
2069porque = "la receta pasa -Droc=disabled (meson_options.txt:237): es el transporte de audio en tiempo real por red"
2070perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2071piden = ["pipewire"]
2072
2073[candidato."rust-bindgen"]
2074veredicto = "opcional"
2075sugerencia = "opcional?"
2076porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
2077perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
2078piden = ["mesa"]
2079
2080[candidato."rust-cbindgen"]
2081veredicto = "opcional"
2082sugerencia = "opcional?"
2083porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
2084perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
2085piden = ["mesa"]
2086
2087[candidato."sane-backends"]
2088veredicto = "opcional"
2089sugerencia = "opcional?"
2090porque = "colord va con -Dsane=false explícito. ⚠ Capacidad ausente de fondo: la distro no tiene stack de escáner, así que no hay perfil de color de escáner que hacer"
2091perfiles = ["escritorio-gnome"]
2092piden = ["colord"]
2093
2094[candidato."sbc"]
2095veredicto = "opcional"
2096porque = "lo piden 2 recetas"
2097perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2098piden = ["pipewire", "pulseaudio"]
2099
2100[candidato."sdl2-compat"]
2101veredicto = "opcional"
2102porque = "lo piden 2 recetas"
2103perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2104piden = ["ffmpeg", "plasma-desktop"]
2105
2106[candidato."setxkbmap"]
2107veredicto = "opcional"
2108sugerencia = "opcional?"
2109porque = "X11 heredado: el escritorio es Wayland"
2110perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
2111piden = ["libxkbcommon"]
2112
2113[candidato."shaderc"]
2114veredicto = "opcional"
2115porque = "lo piden 2 recetas"
2116perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2117piden = ["gtk4", "libplacebo"]
2118
2119[candidato."shared-mime-info"]
2120veredicto = "provisto"
2121sugerencia = "opcional?"
2122provee = "shared-mime-info"
2123porque = "base de datos MIME: sin ella el escritorio no determina tipos de fichero (asociaciones, iconos, abrir-con). Gap de RUNTIME, no de build"
2124perfiles = ["escritorio-kde"]
2125piden = ["kcoreaddons"]
2126ausente = true  # ya no aparece en el último barrido de la frontera
2127
2128[candidato."shiboken6"]
2129veredicto = "opcional"
2130sugerencia = "hueco?"
2131porque = "bindings Python de Qt: ninguna imagen los pide"
2132perfiles = ["escritorio-kde"]
2133piden = ["kcoreaddons", "kguiaddons", "kjobwidgets", "knotifications", "kstatusnotifieritem", "kunitconversion", "kwidgetsaddons", "kxmlgui"]
2134
2135[candidato."shiboken6-generator"]
2136veredicto = "opcional"
2137sugerencia = "hueco?"
2138porque = "lo piden 8 recetas de la imagen — difícil que sea accesorio"
2139perfiles = ["escritorio-kde"]
2140piden = ["kcoreaddons", "kguiaddons", "kjobwidgets", "knotifications", "kstatusnotifieritem", "kunitconversion", "kwidgetsaddons", "kxmlgui"]
2141
2142[candidato."simdjson"]
2143veredicto = "opcional"
2144sugerencia = "opcional?"
2145porque = "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)"
2146perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2147piden = ["nodejs"]
2148
2149[candidato."simdutf"]
2150veredicto = "opcional"
2151sugerencia = "opcional?"
2152porque = "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"
2153perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2154piden = ["nodejs"]
2155
2156[candidato."slang"]
2157veredicto = "opcional"
2158sugerencia = "opcional?"
2159porque = "es el back-end de pantalla de newt ⇒ cae con él: la receta pasa -Dnmtui=false"
2160perfiles = ["escritorio-kde"]
2161piden = ["networkmanager"]
2162
2163[candidato."soxr"]
2164veredicto = "opcional"
2165porque = "lo piden 2 recetas"
2166perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2167piden = ["ffmpeg", "pulseaudio"]
2168
2169[candidato."spandsp"]
2170veredicto = "opcional"
2171sugerencia = "opcional?"
2172porque = "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"
2173perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2174piden = ["pipewire"]
2175
2176[candidato."speech-dispatcher"]
2177veredicto = "opcional"
2178sugerencia = "opcional?"
2179porque = "stack de audio/multimedia: decisión de producto pendiente, no un hueco de build"
2180perfiles = ["escritorio-kde"]
2181piden = ["qtspeech"]
2182
2183[candidato."speex"]
2184veredicto = "opcional"
2185porque = "lo piden 2 recetas"
2186perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2187piden = ["ffmpeg", "obs-studio"]
2188
2189[candidato."sphinx"]
2190veredicto = "opcional"
2191porque = "lo piden 2 recetas"
2192perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2193piden = ["libtiff", "mpc"]
2194
2195[candidato."spirv-tools"]
2196veredicto = "opcional"
2197porque = "Vulkan / compilación de shaders / dispatch GL: no habilitado (mesa se construye sin ellos)"
2198perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
2199piden = ["kdeclarative", "mesa", "plasma-workspace"]
2200
2201[candidato."sqlite-connector-odbc"]
2202veredicto = "opcional"
2203sugerencia = "opcional?"
2204porque = "conectores de base de datos: ninguna imagen los pide"
2205perfiles = ["escritorio-kde"]
2206piden = ["qtbase"]
2207
2208[candidato."srt"]
2209veredicto = "opcional"
2210porque = "lo piden 2 recetas"
2211perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2212piden = ["ffmpeg", "obs-studio"]
2213
2214[candidato."stb"]
2215veredicto = "opcional"
2216sugerencia = "opcional?"
2217porque = "sólo la usa example/CMakeLists.txt de zxing-cpp para leer PNG/JPEG en los programas de ejemplo, y la receta pasa -DZXING_EXAMPLES=OFF"
2218perfiles = ["escritorio-kde"]
2219piden = ["zxing-cpp"]
2220
2221[candidato."svt-av1"]
2222veredicto = "opcional"
2223sugerencia = "opcional?"
2224porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-libsvtav1: el tercer encoder de AV1 que no tenemos. Reproducir AV1 no lo necesita (decoder nativo, medido en el artefacto)"
2225perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2226piden = ["ffmpeg"]
2227
2228[candidato."swig"]
2229veredicto = "opcional"
2230sugerencia = "opcional?"
2231porque = "-DENABLE_SCRIPTING=OFF, y la receta lo deja escrito: luajit está en el corpus pero swig no, así que el scripting quedó apagado en la primera vuelta"
2232perfiles = ["escritorio-kde"]
2233piden = ["obs-studio"]
2234
2235[candidato."syndication"]
2236veredicto = "opcional"
2237sugerencia = "opcional?"
2238porque = "módulo opcional de Qt/KDE: el escritorio construye sin él — revisá si lo querés para un Plasma completo"
2239perfiles = ["escritorio-kde"]
2240piden = ["knewstuff"]
2241
2242[candidato."sysprof"]
2243veredicto = "opcional"
2244sugerencia = "opcional?"
2245porque = "meson.build:453 lo pide `if have_profiler` y la receta pasa -Dprofiler=false, cosa que ya estaba escrita en sus comentarios. Es instrumentación de rendimiento del compositor, no funcionalidad de escritorio"
2246perfiles = ["escritorio-gnome"]
2247piden = ["mutter"]
2248
2249[candidato."systemd"]
2250veredicto = "opcional"
2251sugerencia = "hueco?"
2252porque = "hammer usa arje-zero como PID1; ninguna imagen quiere systemd"
2253perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2254piden = ["colord", "cosmic-comp", "dunst", "gnome-shell", "modemmanager", "networkmanager", "pulseaudio", "qtbase", "xwayland"]
2255
2256[candidato."systemd-minimal"]
2257veredicto = "opcional"
2258sugerencia = "nix-ismo?"
2259porque = "hammer usa arje-zero como PID1; ninguna imagen quiere systemd"
2260perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
2261piden = ["dbus", "mako", "xdg-desktop-portal"]
2262
2263[candidato."systemd-minimal-libs"]
2264veredicto = "opcional"
2265sugerencia = "nix-ismo?"
2266porque = "hammer usa arje-zero como PID1; ninguna imagen quiere systemd"
2267perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
2268piden = ["appstream", "at-spi2-core", "atk", "colord", "cosmic-applets", "cosmic-comp", "cosmic-osd", "cosmic-settings", "cosmic-settings-daemon", "cosmic-workspaces-epoch", "dhcpcd", "gnome-desktop"]  # …y 16 más
2269
2270[candidato."systemtap"]
2271veredicto = "opcional"
2272sugerencia = "opcional?"
2273porque = "glib 2.88.1 declara `systemtap` como feature 'auto' (meson.options:58) y no está en el sandbox, que monta sólo las deps declaradas. Son sondas de trazado del runtime, no funcionalidad"
2274perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2275piden = ["glib"]
2276
2277[candidato."taglib"]
2278veredicto = "opcional"
2279sugerencia = "opcional?"
2280porque = "stack de audio/multimedia: decisión de producto pendiente, no un hueco de build"
2281perfiles = ["escritorio-kde"]
2282piden = ["kfilemetadata"]
2283
2284[candidato."tcb"]
2285veredicto = "opcional"
2286sugerencia = "opcional?"
2287porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
2288perfiles = ["base", "cli", "escritorio-sway"]
2289piden = ["shadow"]
2290
2291[candidato."tcl"]
2292veredicto = "opcional"
2293sugerencia = "opcional?"
2294porque = "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"
2295perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-sway"]
2296piden = ["sqlite"]
2297
2298[candidato."texinfo"]
2299veredicto = "opcional"
2300sugerencia = "hueco?"
2301porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
2302perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2303piden = ["e2fsprogs", "ffmpeg", "git", "gnupg"]
2304
2305[candidato."tinysparql"]
2306veredicto = "opcional"
2307porque = "lo piden 2 recetas"
2308perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2309piden = ["gtk3", "gtk4"]
2310
2311[candidato."tinyxxd"]
2312veredicto = "opcional"
2313sugerencia = "opcional?"
2314porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
2315perfiles = ["base", "cli", "escritorio-sway"]
2316piden = ["dosfstools"]
2317
2318[candidato."tpm2-tss"]
2319veredicto = "opcional"
2320sugerencia = "opcional?"
2321porque = "red/seguridad opcional: nixpkgs la habilita por defecto, hammer construye sin ella"
2322perfiles = ["base", "cli", "escritorio-sway"]
2323piden = ["gnupg"]
2324
2325[candidato."umockdev"]
2326veredicto = "opcional"
2327porque = "lo piden 2 recetas"
2328perfiles = ["escritorio-cosmic", "escritorio-gnome"]
2329piden = ["libgudev", "xdg-desktop-portal"]
2330
2331[candidato."uname"]
2332veredicto = "provisto"
2333sugerencia = "opcional?"
2334provee = "coreutils"
2335porque = "nixpkgs lo separa en un paquete propio; acá lo da la receta `coreutils` (verificado en el store)"
2336perfiles = ["cli"]
2337piden = ["git"]
2338ausente = true  # ya no aparece en el último barrido de la frontera
2339
2340[candidato."unixodbc"]
2341veredicto = "opcional"
2342sugerencia = "opcional?"
2343porque = "conectores de base de datos: ninguna imagen los pide"
2344perfiles = ["escritorio-kde"]
2345piden = ["qtbase"]
2346
2347[candidato."unzip"]
2348veredicto = "opcional"
2349porque = "lo piden 2 recetas"
2350perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2351piden = ["opencv", "sqlite"]
2352
2353[candidato."uvwasi"]
2354veredicto = "opcional"
2355sugerencia = "opcional?"
2356porque = "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"
2357perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2358piden = ["nodejs"]
2359
2360[candidato."v4l-utils"]
2361veredicto = "opcional"
2362porque = "stack de audio/multimedia: decisión de producto pendiente, no un hueco de build"
2363perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2364piden = ["ffmpeg", "libdisplay-info", "obs-studio"]
2365
2366[candidato."vala"]
2367veredicto = "opcional"
2368sugerencia = "hueco?"
2369porque = "lo piden 9 recetas de la imagen — difícil que sea accesorio"
2370perfiles = ["escritorio-gnome", "escritorio-kde"]
2371piden = ["appstream", "colord", "evolution-data-server", "libadwaita", "libgudev", "libical", "libsecret", "modemmanager", "networkmanager"]
2372
2373[candidato."valgrind"]
2374veredicto = "opcional"
2375porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
2376perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
2377piden = ["libdrm", "mesa", "pipewire"]
2378
2379[candidato."validate-pkg-config"]
2380veredicto = "nix-ismo"
2381sugerencia = "opcional?"
2382porque = "no es una librería: es un SETUP HOOK de nixpkgs (validatePkgConfig) que revisa los .pc al final del build. Andamiaje del otro sistema"
2383perfiles = ["escritorio-kde"]
2384piden = ["jansson"]
2385ausente = true  # ya no aparece en el último barrido de la frontera
2386
2387[candidato."vid.stab"]
2388veredicto = "opcional"
2389sugerencia = "opcional?"
2390porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-libvidstab (configure:291), que sólo habilita dos filtros de estabilización de vídeo: vidstabdetect y vidstabtransform"
2391perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2392piden = ["ffmpeg"]
2393
2394[candidato."w3m"]
2395veredicto = "opcional"
2396sugerencia = "opcional?"
2397porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
2398perfiles = ["escritorio-kde", "escritorio-mirada", "escritorio-sway"]
2399piden = ["linux-pam"]
2400
2401[candidato."wayland-scanner"]
2402veredicto = "provisto"
2403sugerencia = "hueco?"
2404provee = "wayland"
2405porque = "nixpkgs lo separa en un paquete propio; acá lo da la receta `wayland` (verificado en el store)"
2406perfiles = ["escritorio-kde"]
2407piden = ["kscreenlocker", "libxkbcommon", "mako", "mesa", "qtbase", "wayland", "wayland-protocols"]
2408ausente = true  # ya no aparece en el último barrido de la frontera
2409
2410[candidato."webkitgtk"]
2411veredicto = "opcional"
2412porque = "lo piden 2 recetas"
2413perfiles = ["escritorio-gnome"]
2414piden = ["evolution-data-server", "gnome-shell"]
2415
2416[candidato."webrtc-audio-processing"]
2417veredicto = "opcional"
2418porque = "lo piden 2 recetas"
2419perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2420piden = ["pipewire", "pulseaudio"]
2421
2422[candidato."websocket++"]
2423veredicto = "opcional"
2424sugerencia = "opcional?"
2425porque = "dep del plugin obs-websocket, que NO se construye: la receta lo neutraliza con `touch plugins/obs-websocket/CMakeLists.txt` y el artefacto sellado lo confirma — usr/lib/obs-plugins no tiene obs-websocket.so. websocket++ es su implementación del protocolo"
2426perfiles = ["escritorio-kde"]
2427piden = ["obs-studio"]
2428
2429[candidato."x265"]
2430veredicto = "opcional"
2431sugerencia = "opcional?"
2432porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-libx265. ⚠ Se pierde CODIFICAR HEVC; el decoder nativo está en el artefacto sellado. Y la codificación H.264 del escritorio no pasa por acá: obs-studio enlaza x264 —que SÍ está en el catálogo— por su propio plugin obs-x264"
2433perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2434piden = ["ffmpeg"]
2435
2436[candidato."xapian"]
2437veredicto = "opcional"
2438sugerencia = "opcional?"
2439porque = "⚠ DESFASE DE VERSIÓN: AppStream 1.0.5 —la que pinea la receta— no la nombra en ningún meson (grep sobre el árbol entero). Sale de una expresión de nixpkgs más nueva"
2440perfiles = ["escritorio-gnome"]
2441piden = ["appstream"]
2442
2443[candidato."xclip"]
2444veredicto = "opcional"
2445sugerencia = "opcional?"
2446porque = "X11 heredado: el escritorio es Wayland"
2447perfiles = ["cli", "escritorio-sway"]
2448piden = ["gitui"]
2449
2450[candidato."xdg-desktop-portal-kde"]
2451veredicto = "pendiente"
2452sugerencia = "opcional?"
2453porque = "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"
2454perfiles = ["escritorio-kde"]
2455piden = ["kinfocenter"]
2456
2457[candidato."xf86-input-evdev"]
2458veredicto = "opcional"
2459sugerencia = "opcional?"
2460porque = "el otro driver de entrada de Xorg, misma familia que xf86-input-libinput: son drivers del SERVIDOR X, y la distro no corre uno (Xwayland no carga drivers xf86-input)"
2461perfiles = ["escritorio-kde"]
2462piden = ["plasma-desktop"]
2463
2464[candidato."xf86-input-libinput"]
2465veredicto = "opcional"
2466sugerencia = "opcional?"
2467porque = "CMakeLists.txt:242 la busca por pkg-config (`xorg-libinput`) para encender HAVE_XORGLIBINPUT, que es el KCM de ratón/touchpad de X11. La distro es Wayland-only y plasma-desktop va con X11=OFF: la entrada la maneja kwin por libinput"
2468perfiles = ["escritorio-kde"]
2469piden = ["plasma-desktop"]
2470
2471[candidato."xkbcomp"]
2472veredicto = "opcional"
2473sugerencia = "opcional?"
2474porque = "X11 heredado: el escritorio es Wayland"
2475perfiles = ["escritorio-kde", "escritorio-mirada"]
2476piden = ["libxkbcommon"]
2477ausente = true  # ya no aparece en el último barrido de la frontera
2478
2479[candidato."xmlto"]
2480veredicto = "opcional"
2481porque = "tooling de docs/tests/build que nixpkgs usa y nuestras recetas no"
2482perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
2483piden = ["appstream", "git", "wayland"]
2484
2485[candidato."xorg-server"]
2486veredicto = "opcional"
2487porque = "lo piden 2 recetas"
2488perfiles = ["escritorio-gnome", "escritorio-kde"]
2489piden = ["mutter", "plasma-desktop"]
2490
2491[candidato."xvfb"]
2492veredicto = "opcional"
2493sugerencia = "opcional?"
2494porque = "X11 heredado: el escritorio es Wayland"
2495perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", "escritorio-sway"]
2496piden = ["libxkbcommon"]
2497
2498[candidato."xvfb-run"]
2499veredicto = "opcional"
2500sugerencia = "hueco?"
2501porque = "lo piden 4 recetas de la imagen — difícil que sea accesorio"
2502perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-sway"]
2503piden = ["girara", "gjs", "libadwaita", "mutter"]
2504
2505[candidato."xvidcore"]
2506veredicto = "opcional"
2507sugerencia = "opcional?"
2508porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-libxvid, un encoder MPEG-4 ASP que además es REDUNDANTE: el artefacto sellado ya trae «MPEG4 encoder» nativo (medido)"
2509perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2510piden = ["ffmpeg"]
2511
2512[candidato."xwayland"]
2513veredicto = "opcional"
2514porque = "X11 está FUERA DE ALCANCE para toda la distro y la decisión ya estaba escrita dos veces el 2026-09-03 (commit f64859ba): targets.toml y qorpa-ajenos.toml dicen «la receta no se escribe» — el Xwayland vive DENTRO de la imagen ajena enjaulada (Arch ya lo trae) y se cuelga de kwin por el socket. Se escribió igual el 2026-09-08 y se RETIRA el 2026-09-09 por decisión del usuario. Medido antes de sacarla: sólo kwin podía lanzarlo (mutter va -Dxwayland=false y wlroots -Dxwayland=disabled) y NINGUNA app del catálogo necesita servidor X — todo lo gráfico es Wayland nativo. Sigue como raíz en targets.toml a propósito, contado en clase `ajeno`"
2515perfiles = ["escritorio-kde"]
2516piden = ["kwin"]
2517ausente = true  # ya no aparece en el último barrido de la frontera
2518
2519[candidato."xxhash"]
2520veredicto = "opcional"
2521sugerencia = "opcional?"
2522porque = "nixpkgs la habilita; ninguna receta de hammer la necesitó para construir (todas las que la piden ya están selladas)"
2523perfiles = ["cli"]
2524piden = ["rsync"]
2525ausente = true  # ya no aparece en el último barrido de la frontera
2526
2527[candidato."yasm"]
2528veredicto = "opcional"
2529sugerencia = "opcional?"
2530porque = "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"
2531perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2532piden = ["libass"]
2533
2534[candidato."zimg"]
2535veredicto = "opcional"
2536sugerencia = "opcional?"
2537porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-libzimg, que sólo agrega el filtro `zscale`. El escalado de la distro lo hace libswscale, que va compilada"
2538perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2539piden = ["ffmpeg"]
2540
2541[candidato."zint"]
2542veredicto = "opcional"
2543sugerencia = "opcional?"
2544porque = "zxing-cpp la BUNDLEA: CMakeLists.txt:7 declara ZXING_USE_BUNDLED_ZINT en ON por defecto y core/CMakeLists.txt:532 compila core/src/libzint. La externa sólo entraría apagando esa opción, cosa que la receta no hace"
2545perfiles = ["escritorio-kde"]
2546piden = ["zxing-cpp"]
2547
2548[candidato."zvbi"]
2549veredicto = "opcional"
2550sugerencia = "opcional?"
2551porque = "lo pide una sola receta (ffmpeg); mirá si es una feature opcional"
2552perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
2553piden = ["ffmpeg"]