diff --git a/docs/state/build-state.json b/docs/state/build-state.json index 413fa664..72afe71d 100644 --- a/docs/state/build-state.json +++ b/docs/state/build-state.json @@ -28,14 +28,14 @@ }, "by_profile": { "base": { - "raices": 31, - "clausura": 65, - "sealed": 65 + "raices": 32, + "clausura": 66, + "sealed": 66 }, "cli": { - "raices": 83, - "clausura": 131, - "sealed": 131 + "raices": 84, + "clausura": 132, + "sealed": 132 }, "escritorio-mirada": { "raices": 17, @@ -43,9 +43,9 @@ "sealed": 41 }, "servidor": { - "raices": 95, - "clausura": 147, - "sealed": 147 + "raices": 96, + "clausura": 148, + "sealed": 148 } }, "sin_perfil": 620, @@ -9894,11 +9894,14 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ + "base", + "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-mirada", - "escritorio-sway" + "escritorio-sway", + "servidor" ], "dependientes_total": 10 }, diff --git a/docs/state/targets.toml b/docs/state/targets.toml index f351a2d0..af33cc81 100644 --- a/docs/state/targets.toml +++ b/docs/state/targets.toml @@ -46,6 +46,20 @@ paquetes = [ # `--disable-shared` y ningún artefacto publicaba ese soname — otra vez el rootfs del lab tapando # el agujero. La variante ya existía en el corpus; sólo faltaba declararla. "zlib-shared", + # `libffi-shared` (2026-09-13): el TERCER hueco de la misma familia, y lo encontró ampliar el + # alcance de un vigía, no una imagen rota. `vigia-sonames.py` corría por defecto SÓLO sobre los + # cinco perfiles de escritorio (`p.startswith("escritorio")`), así que `base`, `cli` y `servidor` + # —el objetivo de la mudanza— nunca se miraron. Apuntándolo a ellos: + # + # == servidor 147 nodos · 183 sonames provistos · 1 sin proveedor + # FALTA libffi.so.8 ← lo piden: python3 + # + # O sea que `python3` volvía a ser INERTE en las tres imágenes, por el mismo mecanismo exacto que + # `musl-shared` y `zlib-shared` arreglaron dos días antes: la receta canónica de libffi es + # `--disable-shared`, ningún artefacto del cierre publica ese soname, y en el lab el agujero lo + # tapa el rootfs de Alpine. La variante `libffi-shared` YA existía y ya estaba declarada en + # `escritorio-mirada` y en otro perfil — sólo faltaba acá. + "libffi-shared", # `zstd-cli` (2026-09-11): la distro comprime TODO con zstd —la imagen del lab # (`lab-image.tar.zst`), el respaldo al Storage Box, el `dd` remoto de una instalación— y la imagen # no traía con qué descomprimirlo: **un takana recién instalado no puede desempacar su propio diff --git a/scripts/vigia-sonames.py b/scripts/vigia-sonames.py index 35db14ba..9145ccbf 100755 --- a/scripts/vigia-sonames.py +++ b/scripts/vigia-sonames.py @@ -133,7 +133,15 @@ def main(): colas = yupana.cargar_colas() perfiles = targets_mod.load() memb = yupana.membresia(colas, perfiles) - quiero = args or [p for p in perfiles if p.startswith("escritorio")] + # ⚠ **POR DEFECTO, TODOS LOS PERFILES.** Antes era `p.startswith("escritorio")`, y ese filtro + # dejaba fuera a `base`, `cli` y `servidor` — o sea al objetivo de la mudanza. El coste se midió + # el 2026-09-13 apuntándolo a mano: los tres tenían `FALTA libffi.so.8 ← lo piden: python3`, con + # `python3` INERTE en las tres imágenes por el mismo mecanismo que `musl-shared` y `zlib-shared` + # habían arreglado dos días antes. El vigía existía, el hueco estaba, y nadie lo miraba. + # Es la tercera vez en dos días que un guardián de este repo mide menos de lo que su resumen + # afirma (antes: `static-audit.sh` sin las colas, y el bloque de raíces sucias sólo sobre + # perfiles). Un «0 huecos» sobre la mitad del sistema se imprime igual que uno sobre todo él. + quiero = args or sorted(perfiles) huecos = 0 for perfil in quiero: nodos = {n for n, ps in memb.items() if perfil in ps and n[0] != "wanted"}