Commit Graph
1583 Commits
Author SHA1 Message Date
Sergio 8f507c4a67 estado: cosecha granja 2026-09-13T16:02:35Z — avance del árbol KDE 2026-09-13 16:02:35 +00:00
Sergio 7766c063ea estado: cosecha granja 2026-09-13T15:32:23Z — avance del árbol KDE 2026-09-13 15:32:23 +00:00
Sergio e56efe6c3b estado: cosecha granja 2026-09-13T15:02:37Z — avance del árbol KDE 2026-09-13 15:02:37 +00:00
Sergio 7547beb00a estado: cosecha granja 2026-09-13T14:32:15Z — avance del árbol KDE 2026-09-13 14:32:15 +00:00
Sergio 16ec87fe25 estado: cosecha granja 2026-09-13T14:02:34Z — avance del árbol KDE 2026-09-13 14:02:34 +00:00
Sergio 3851b2fd40 estado: cosecha granja 2026-09-13T13:32:16Z — avance del árbol KDE 2026-09-13 13:32:16 +00:00
Sergio f299f061b0 estado: cosecha granja 2026-09-13T13:02:35Z — avance del árbol KDE 2026-09-13 13:02:35 +00:00
Sergio 0687a4fdf6 estado: cosecha granja 2026-09-13T12:32:19Z — avance del árbol KDE 2026-09-13 12:32:19 +00:00
Sergio f35a30cf8b estado: cosecha granja 2026-09-13T12:02:59Z — avance del árbol KDE 2026-09-13 12:03:00 +00:00
Sergio 13bc744b94 estado: cosecha granja 2026-09-13T11:32:31Z — avance del árbol KDE 2026-09-13 11:32:31 +00:00
Sergio 2208e4fe09 estado: cosecha granja 2026-09-13T11:02:11Z — avance del árbol KDE 2026-09-13 11:02:11 +00:00
Sergio f54adf119b estado: cosecha granja 2026-09-13T10:32:24Z — avance del árbol KDE 2026-09-13 10:32:24 +00:00
Sergio 2074d359c5 estado: cosecha granja 2026-09-13T10:02:33Z — avance del árbol KDE 2026-09-13 10:02:33 +00:00
Sergio 184be3529e estado: cosecha granja 2026-09-13T09:32:01Z — avance del árbol KDE 2026-09-13 09:32:01 +00:00
Sergio ce875b141a estado: cosecha granja 2026-09-13T09:02:41Z — avance del árbol KDE 2026-09-13 09:02:41 +00:00
Sergio ff84f791f1 estado: cosecha granja 2026-09-13T08:31:55Z — avance del árbol KDE 2026-09-13 08:31:55 +00:00
Sergio 5832a0090a estado: cosecha granja 2026-09-13T08:02:39Z — avance del árbol KDE 2026-09-13 08:02:39 +00:00
Sergio b59edab197 estado: cosecha granja 2026-09-13T07:32:17Z — avance del árbol KDE 2026-09-13 07:32:17 +00:00
Sergio 6734d3eda5 estado: cosecha granja 2026-09-13T07:02:22Z — avance del árbol KDE 2026-09-13 07:02:22 +00:00
Sergio f1402036aa estado: cosecha granja 2026-09-13T06:31:56Z — avance del árbol KDE 2026-09-13 06:31:56 +00:00
Sergio df5976baad estado: cosecha granja 2026-09-13T06:02:02Z — avance del árbol KDE 2026-09-13 06:02:02 +00:00
Sergio 00c9d5afaf estado: cosecha granja 2026-09-13T05:31:54Z — avance del árbol KDE 2026-09-13 05:31:54 +00:00
Sergio 948fa6a284 estado: cosecha granja 2026-09-13T05:02:08Z — avance del árbol KDE 2026-09-13 05:02:08 +00:00
Sergio 460c68e100 estado: cosecha granja 2026-09-13T04:32:22Z — avance del árbol KDE 2026-09-13 04:32:22 +00:00
Sergio 2b86b8d0c3 estado: cosecha granja 2026-09-13T04:02:26Z — avance del árbol KDE 2026-09-13 04:02:27 +00:00
Sergio e28140c5b0 estado: cosecha granja 2026-09-13T03:32:09Z — avance del árbol KDE 2026-09-13 03:32:09 +00:00
Sergio eab169976e estado: cosecha granja 2026-09-13T03:02:27Z — avance del árbol KDE 2026-09-13 03:02:27 +00:00
Sergio 7ecf9d1d58 estado: cosecha granja 2026-09-13T02:31:54Z — avance del árbol KDE 2026-09-13 02:31:54 +00:00
Sergio f39a2eafc3 estado: cosecha granja 2026-09-13T02:02:41Z — avance del árbol KDE 2026-09-13 02:02:41 +00:00
Sergio 4b38af8f3f networkmanager al corpus CON WiFi y con nmcli — y los perfiles que no tenían gestor de red
networkmanager  b3:c36414ece23e322ef007d0acc7ce6f65b8b822ae55c38b38c9afa4b3eb340adb  (52 MB)

Arreglo del segundo hueco del barrido: `networkmanager` figuraba SÓLO en escritorio-kde, y desde
GNOME, COSMIC o sway no se alcanza (cola hermana). Pero promover la receta de KDE tal cual habría
sido peor que no hacerlo, y sólo se vio mirando el ARTEFACTO:

  · `-Dwifi=false`  ⇒ un gestor de red que no maneja interfaces inalámbricas. Allá es correcto
    (esa receta existe para dar libnm.so a plasma-nm y nada más); acá habría puesto en tres
    imágenes un demonio que arranca, dibuja el applet y no lista una sola red.
  · sin `nmcli`     ⇒ ni una herramienta con la que manejarlo. En sway eso es la diferencia entre
    tener red y no tenerla.

La variante del corpus cambia tres cosas, y la tercera hizo falta MEDIRLA:
  1. `-Dwifi=true`. Habla nl80211 por libnl (ya era dep) y delega el handshake WPA2 en
     `wpa_supplicant`, que desde hoy está en perfil.base ⇒ va también en [deps] runtime.
  2. `readline` en [deps] build.
  3. `-Dnmcli=true -Dreadline=libreadline`. Con sólo la dep, nmcli NO se construyó: `-Dnmcli` vale
     true de fábrica pero `-Dreadline` es un COMBO que por defecto va en `auto`, y sin decirle
     dónde mirar resolvió a «none» ⇒ meson apagó el CLI EN SILENCIO. Comprobado sobre el store.

Y `readline-shared` en runtime, cazado con provee.py sobre las NEEDED del binario: nmcli sale con
`NEEDED libreadline.so.8` y la readline canónica del corpus es sólo .a. La dep de BUILD y la de
RUNTIME son artefactos distintos — tercer caso del día tras cmus y bluez. No mueve el hash.

⚠ Se queda `-Dcrypto=null`, y es una limitación real escrita en la receta: sin cripto no valida
802.1X / WPA-Enterprise (el WiFi de una oficina). WPA2-PSK funciona porque ése lo hace el
supplicant. Encender nss o gnutls arrastra dos cadenas enormes: unidad de trabajo aparte.

── targets.toml ────────────────────────────────────────────────────────────────────────────────
  escritorio-gnome, escritorio-cosmic, escritorio-sway  += networkmanager  (+ servicio)
  escritorio-kde, escritorio-sway                       += wireplumber     (+ servicio)

⚠ networkmanager NO se declara en escritorio-kde: allá plasma-nm ya arrastra la variante de la
cola, y dos NetworkManager distintos en la misma ruta es la enfermedad de las dos glib. Que la de
KDE vaya sin WiFi es deuda del frente KDE, y queda escrita donde toca.
2026-09-13 01:38:50 +00:00
Sergio 47ec0d9559 estado: cosecha granja 2026-09-13T01:33:30Z — avance del árbol KDE 2026-09-13 01:33:30 +00:00
Sergio 584cc128a8 docs: adenda al plan de apps — el censo, el muro de GL revisado y la respuesta a «¿Electron?»
Tres preguntas del usuario, contestadas midiendo, y dos de las mediciones CORRIGEN cosas que este
mismo fichero afirmaba.

1. CENSO: de ~50 apps muy usadas el catálogo tiene 9, y CINCO de las nueve son de KDE (o sea que
   llegan a una de las cuatro imágenes).

2. ⚠ CORRECCIÓN al «tercer defecto del método». Este documento dice, con fecha 2026-09-03, que
   ninguna cola publica libGL.so ni gl.pc. Dejó de ser cierto AL DÍA SIGUIENTE: recipes/libglvnd.toml
   es del 2026-09-04 y `provee.py --desde corpus opengl` da ✓ (libOpenGL.so.0 + opengl.pc). Y la
   corrección trae su propia corrección: la campaña quedó A MEDIAS. Las tres mesa siguen con
   -Dglvnd=false, no hay libEGL_mesa.so.0 ni egl_vendor.d, y en el rootfs KDE hidratado conviven DOS
   libEGL.so.1 distintos (mesa 1.440.624 B gana el symlink; el de glvnd, 323.144 B, queda huérfano).
   OBS —la razón de escribir libglvnd— NO la usa en runtime: libobs-opengl.so sale con NEEDED
   libEGL.so.1 y ni un gl[A-Z] indefinido, o sea que su glad resuelve por eglGetProcAddress.
   ⇒ el `opengl ✓` es verdad DE ENLACE. El muro pasó de «no enlaza» a «enlaza y no corre».

   Corolario: darktable estaba MAL clasificada como caso de GL. Su UI es GTK3+cairo; su muro es la
   cola de deps (lensfun, libgphoto2, openexr, imath, libraw, osm-gps-map, portmidi + cuatro que
   sólo viven en colas). Blender sí es el caso de GL.

3. ELECTRON: `grep -rni electron docs/ recipes/` da CERO. Nunca estuvo planeado. Y no existe un
   «Electron con base Firefox» porque Gecko no tiene API de embebido desde XULRunner (SDD 26 §1) —
   pero eso es exactamente lo que es atuq, y ya está: artefacto derivado + chrome propio +
   extensiones + host de native messaging en Rust. Falta un modo SSB, que es más barato que UN port.

   GenOffice concretamente: Apache-2.0 (salvo ee/), acepta endpoints OpenAI-compatible locales ⇒ la
   mitad de IA es una línea de config contra el llama-cpp que YA viaja en los cuatro escritorios. La
   mitad de runtime es qorpa. ⚠ Y el muro real es el MODELO: Qwen2.5-1.5B no sostiene IA agéntica
   sobre un .xlsx.

4. QUÉ REHACER, con criterio escrito: sólo cuando el bloqueo es estructural Y el valor vive en un
   protocolo o formato abierto. Pasan tres: el shell de apps sobre atuq, una bóveda de contraseñas
   (la mitad cara —la integración con el navegador— ya está construida), y un cliente Matrix si
   fractal no construye. Thunderbird es el más desaprovechado de la lista de EMPAQUETAR: es Gecko.
2026-09-13 01:10:00 +00:00
Sergio cbecd0ba12 docs: el barrido de perfiles y servicios, con su método y la política que faltaba escribir
Deja escrito lo que el barrido midió y, sobre todo, CÓMO se midió, para que el recuento se pueda
repetir en vez de re-derivar.

Lo que aporta que no estaba en ningún lado:

1. **La política «catálogo ≠ imagen».** El repo ya la aplicaba de hecho y no la había escrito, y sin
   ella «620 hojas sin perfil» se lee como deuda. No lo es: 529 son volcado crudo del importador y
   355 son herramientas Go de nube. Una receta sellada y no declarada es CATÁLOGO — se instala por
   nombre. Se vuelve deuda sólo cuando lo que falta es una CAPACIDAD.

2. **El método en tres preguntas encadenadas**, y por qué el orden importa: ¿está en algún perfil?
   → ¿podría llegar por clausura ajena (`dependientes_total>0`)? → ¿fue curada alguna vez (la
   cabecera «PUNTO DE PARTIDA» del importador)? Las hojas son el hueco; las librerías no.

3. **El triaje completo de las 91 hojas trabajadas a mano**, en seis clases que suman 91 exactas.
   Incluye las que NO se declaran de oficio y por qué: `openrc` compite con arje-zero, `uutils` y
   coreutils/grep/findutils compiten con los applets de busybox, `waterfox` es un segundo Gecko,
   y valkey/opensmtpd/step-ca/qdrant definen QUÉ CLASE de servidor es el perfil `servidor`.

4. **Dos hallazgos que no eran el objetivo del barrido:**
   - `networkmanager` existe SÓLO en incoming-kde ⇒ GNOME, COSMIC y sway no lo alcanzan. Con
     wpa_supplicant la WiFi se destraba, pero se configura a mano y el indicador de red del
     escritorio no tiene con qué hablar.
   - `ia-modelo-embeddings` no está en ningún perfil: hay motor (llama-cpp) y hay chat
     (ia-modelo-chat) en los cuatro escritorios, y NO hay búsqueda por significado. La mitad
     semántica del §6.3 de atuq no viaja.

5. **Una trampa del instrumento**, que casi hace escribir mal las listas de servicios:
   `scripts/targets.py <perfil>` imprime las RAÍCES, no la clausura. Cruzar los [[service]] contra
   esa salida dejaba fuera a pipewire y colord en GNOME, que sí están en la imagen. La clausura la
   da el campo `perfiles` de los build-state*.json.
2026-09-13 01:08:17 +00:00
Sergio 9ac4e1727f targets: barrido de perfiles y servicios — la WiFi faltaba, y tres escritorios no arrancaban nada
── BARRIDO 1: las hojas selladas sin perfil ────────────────────────────────────────────────────
Método, para que se pueda repetir: cruzar el campo `perfiles` de los cinco build-state*.json con
`dependientes_total`. De 905 nodos, 631 sin perfil; de ésos, **620 son HOJAS** (nadie depende de
ellas, o sea que ninguna clausura las puede alcanzar) y 11 llegan por la clausura de otra.

Las 620 se parten en dos por una marca objetiva, la cabecera del importador:
  · **529** dicen «PUNTO DE PARTIDA, no final» — volcado crudo de import-nix/import-alpine
    (328 Go + 195 Rust + 6 C). Nadie las curó nunca para una imagen.
  · **91** están trabajadas a mano. Ésas son las que se triaron una por una.

Lo que salió de ese triaje, y lo que se declara:

**`base` += `wpa_supplicant` — la imagen NO PODÍA ASOCIARSE A UN WiFi.** dhcpcd resuelve la IP de
un cable; el handshake WPA2 de 4 vías lo hace un supplicant en userspace y busybox no lo trae. La
receta existía desde el frente de metal —su cabecera dice «para asociar el WiFi del medio live al
AP»— y estaba en CERO perfiles. Es la figura de `foot` y esta vez el precio era quedarse sin red.

**`cli` += nano, tig, patch, socat, pigz, miller, dwarves.** El criterio va escrito en el fichero
porque meter las 620 habría sido peor que no mirar: entra lo que un usuario de esta capa ESPERA
encontrar y hoy no está. El resto queda en el catálogo, que NO es lo mismo que la imagen.

**`escritorio-sway` += wlr-randr**: no había con qué cambiar la resolución ni rotar una pantalla.

── BARRIDO 2: el «enable» ──────────────────────────────────────────────────────────────────────
De los cuatro escritorios **sólo GNOME tenía lista `servicios`**. Los otros tres salían con sus
demonios instalados y NINGUNO arrancado, y la métrica de clausura daba N/N igual — `paquetes` dice
qué se instala, `servicios` dice qué se levanta, y sin la segunda la imagen está a medias sin que
nada falle.

Escritas las tres que faltaban, computando la lista (no a ojo): se cruzaron los `[[service]]` de
las 11 recetas que los declaran contra el campo `perfiles` de los cinco grafos — la CLAUSURA, no
las raíces, porque la mitad de los demonios llegan como dep. Y GNOME sumó `cupsd`+`bluetoothd`,
que nacieron ayer.

⚠ El cruce destapó tres ausencias que NO se arreglan acá y quedan escritas en el fichero:
  · KDE y sway tienen `pipewire` y **no tienen `wireplumber`**: sin gestor de sesión los nodos
    existen y nadie los conecta.
  · COSMIC **no tiene `upowerd`** y dibuja un indicador de batería.
  · KDE y sway no tienen `logind-compat`.

Comprobado: tomllib parsea, y los ocho perfiles resuelven con scripts/targets.py.
2026-09-13 01:06:01 +00:00
Sergio a9991194bc estado: cosecha granja 2026-09-13T01:02:20Z — avance del árbol KDE 2026-09-13 01:02:20 +00:00
Sergio dadd231b03 estado: cosecha granja 2026-09-13T00:32:07Z — avance del árbol KDE 2026-09-13 00:32:07 +00:00
Sergio 10213c2d0a estado: cosecha granja 2026-09-13T00:02:31Z — avance del árbol KDE 2026-09-13 00:02:31 +00:00
Sergio 535778b28f estado: cosecha granja 2026-09-12T23:31:56Z — avance del árbol KDE 2026-09-12 23:31:57 +00:00
Sergio 460aa6860a estado: cosecha granja 2026-09-12T23:01:57Z — avance del árbol KDE 2026-09-12 23:01:57 +00:00
Sergio d38b1bbe41 estado: cosecha granja 2026-09-12T22:31:56Z — avance del árbol KDE 2026-09-12 22:31:56 +00:00
Sergio 10cb6ef140 estado: cosecha granja 2026-09-12T22:01:59Z — avance del árbol KDE 2026-09-12 22:01:59 +00:00
Sergio 5881260aee estado: cosecha granja 2026-09-12T21:32:04Z — avance del árbol KDE 2026-09-12 21:32:04 +00:00
Sergio 3043abd295 estado: cosecha granja 2026-09-12T21:04:26Z — avance del árbol KDE 2026-09-12 21:04:26 +00:00
Sergio 4e807444d1 targets: mold, sccache y cliphist — las tres que habrían repetido el error del commit anterior
El grafo regenerado por el cron delató lo que faltaba: `mold` y `cliphist` salían con
`perfiles: []`. O sea que en el mismo día en que se midió que 649 recetas selladas no están en
ninguna imagen, dos de las recetas nuevas se iban a sumar a la lista. La métrica lo vio porque
existe; la intención no alcanza.

- `cli` += `mold` y `sccache`. Las dos son herramientas de quien CONSTRUYE con la distro, no de
  quien la usa. `sccache` estaba sellada hace meses y sin perfil; `mold` es de hoy.
- `escritorio-sway` y `escritorio-cosmic` += `cliphist`. SÓLO ahí: habla `wlr-data-control`, que
  KWin y mutter no implementan — mismo muro que `wf-recorder`. Declararlo en KDE o GNOME daría un
  binario que arranca y no hace nada, que es peor que no tenerlo.

Comprobado con scripts/targets.py: cli resuelve mold+sccache, y sway/cosmic los tres.
2026-09-12 21:02:31 +00:00
Sergio e1fb4b71a7 estado: cosecha granja 2026-09-12T20:33:54Z — avance del árbol KDE 2026-09-12 20:33:54 +00:00
Sergio 66db4e4054 targets: declarar lo que ya estaba sellado y en ninguna imagen — y las dos capacidades del punto 8
MEDIDO al ir a declarar las recetas nuevas, y es más grande que ellas: de las 892 recetas selladas
del corpus, **649 no están en NINGÚN perfil**. El 73% del catálogo está compilado y no viaja en
ninguna imagen. No es deuda de build (drenaje.json dice 0) y la métrica de perfil NO lo puede ver:
mide la clausura de lo DECLARADO. Es la lección de foot a escala de catálogo.

Concreto: yazi, atuin, zellij, jujutsu, just, direnv, watchexec, mise, xh, age, rclone, restic,
lazygit, difftastic, bottom y duf estaban selladas hace meses y en cero imágenes; y `helix` estaba
declarada sólo en escritorio-gnome, que es donde menos sentido tiene.

perfil.cli += esas 16 + las nuevas de hoy (btop, ncdu, nushell, aerc, cmus, syncthing).
Cero recetas nuevas y cero builds: sólo dejan de ser invisibles. Como los CUATRO escritorios y
`servidor` heredan `cli`, una sola edición los alcanza a todos.

perfil.servidor += wireguard-tools: el kernel ya trae WireGuard (SDD 22) y no había con qué
configurarlo — misma figura que el cortafuegos y el reloj que este perfil ya declaraba.

Los cuatro escritorios += cups, bluez (punto 8 de PUBLICABLE, docs/20). Viven en el CORPUS y no en
las colas por lo mismo que mpv y atuq: se alcanzan sibling-first→padre, una copia para los cuatro.

⚠ DEUDA DECLARADA, NO OLVIDO: las dos recetas traen su [[service]] y los perfiles NO los arrancan
— de los cuatro escritorios sólo escritorio-gnome tiene lista `servicios`. Los otros tres no
arrancan NADA, y eso es más grande que cups y bluez. Va escrito en el fichero para que se vea.

El barrido de las 649 queda pendiente y es su propia unidad de trabajo: 363 son recetas Go
importadas en tanda (herramientas de desarrollo) y NO todas deben entrar en una imagen.

Comprobado con scripts/targets.py: los ocho perfiles resuelven, sin nombres desconocidos.
2026-09-12 20:31:35 +00:00
Sergio b8738c6c3f estado: cosecha granja 2026-09-12T20:03:45Z — avance del árbol KDE 2026-09-12 20:03:45 +00:00
Sergio 7c4bd40c23 estado: cosecha granja 2026-09-12T19:34:20Z — avance del árbol KDE 2026-09-12 19:34:21 +00:00
Sergio 0949c0895d estado: cosecha granja 2026-09-12T19:01:53Z — avance del árbol KDE 2026-09-12 19:01:53 +00:00
Sergio 4744951980 estado: cosecha granja 2026-09-12T18:32:19Z — avance del árbol KDE 2026-09-12 18:32:19 +00:00