Commit Graph
799 Commits
Author SHA1 Message Date
Sergio 02facebe28 deps.runtime: que ALGUIEN las lea — de 29 huecos de soname a 6
Tres arreglos que son el mismo: un campo que nadie lee es un campo que miente.

1. yupana._deps() leía SÓLO `deps.build`. Como yupana es la base de todas las
   herramientas de grafo, una dep de EJECUCIÓN no existía para ninguna: ni el
   vigía de sonames, ni la membresía de perfiles, ni el rootfs hidratado.
   Medido: firefox declaraba `runtime = ["gcc-libs"]` y el cierre de las cuatro
   imágenes seguía sin libstdc++.so.6, así que el navegador no arrancaba y el
   vigía lo seguía reportando como hueco DESPUÉS de haberlo arreglado.
   `deps.runtime` está en el esquema de hammer desde siempre. La unión es la
   definición de cierre: para CORRER hacen falta las dos.

2. build-state.py, lo mismo y por lo mismo.

3. El vigía entra en el LATIDO y deja docs/state/sonames.txt. Existía desde
   antes y contesta la pregunta que el grafo no contesta —no «¿está sellado?»
   sino «¿arranca?»— pero NADIE LO CORRÍA: no estaba en cosecha-cron y no dejaba
   fichero de estado. Por eso libstdc++.so.6, que rompía el navegador en los
   CUATRO perfiles, estuvo en su salida sin que nadie lo leyera, y se
   redescubrió arrancando atuq a mano. Un vigía que hay que acordarse de invocar
   no se distingue de no tenerlo.

Y se BORRA scripts/audit-needed.sh, que escribí ayer sin ver que vigia-sonames.py
ya hacía exactamente esto, con la misma frase en la cabecera. Dos herramientas
que miden lo mismo divergen y la que nadie mira es la que miente; la que se
queda es la que ya existía, que además reporta POR PERFIL y encontró más cosas.

python3 declara sus cuatro deps de ejecución (readline/sqlite/lzma/bz2): son
módulos de la stdlib que se cargan por dlopen, así que no rompen el arranque
sino un `import` — un fallo que aparece lejos y no menciona a python.

Resultado, con todo aplicado: 29 huecos -> 6, y los que quedan son otra clase.
`libperl.so` es empaquetado de la receta perl; `libc.so.6` lo pide el `go`
prebuilt y es un soname de GLIBC en una distro musl, que es un síntoma distinto.
Los dos quedan anotados en docs/state/sonames.txt, que ahora se regenera solo.
2026-09-06 22:28:17 +00:00
Sergio 54729e01e8 estado: cosecha granja 2026-09-06T22:02:09Z — avance del árbol KDE 2026-09-06 22:02:09 +00:00
Sergio 15639dd9a6 estado: cosecha granja 2026-09-06T21:31:39Z — avance del árbol KDE 2026-09-06 21:31:39 +00:00
Sergio 1ac1ed81bd estado: cosecha granja 2026-09-06T21:02:07Z — avance del árbol KDE 2026-09-06 21:02:08 +00:00
Sergio 387f4e9256 estado: cosecha granja 2026-09-06T20:33:04Z — avance del árbol KDE 2026-09-06 20:33:04 +00:00
Sergio c5df480b36 estado: cosecha granja 2026-09-06T20:03:27Z — avance del árbol KDE 2026-09-06 20:03:27 +00:00
Sergio 4219d412ee estado: cosecha granja 2026-09-06T19:32:17Z — avance del árbol KDE 2026-09-06 19:32:17 +00:00
Sergio 04a5ff4be9 estado: cosecha granja 2026-09-06T19:03:28Z — avance del árbol KDE 2026-09-06 19:03:29 +00:00
Sergio c13410428e estado: cosecha granja 2026-09-06T18:32:26Z — avance del árbol KDE 2026-09-06 18:32:26 +00:00
Sergio 98d0ad49cc estado: cosecha granja 2026-09-06T18:02:12Z — avance del árbol KDE 2026-09-06 18:02:12 +00:00
Sergio 0aa0ab6e48 estado: cosecha granja 2026-09-06T17:02:08Z — avance del árbol KDE 2026-09-06 17:02:08 +00:00
Sergio b2df1fbac2 estado: cosecha granja 2026-09-06T16:32:26Z — avance del árbol KDE 2026-09-06 16:32:26 +00:00
Sergio ff9dffaff6 estado: cosecha granja 2026-09-06T16:02:19Z — avance del árbol KDE 2026-09-06 16:02:19 +00:00
Sergio 100ecc9211 estado: cosecha granja 2026-09-06T15:02:24Z — avance del árbol KDE 2026-09-06 15:02:24 +00:00
Sergio 96c71de490 estado: cosecha granja 2026-09-06T14:32:06Z — avance del árbol KDE 2026-09-06 14:32:06 +00:00
Sergio 00d305de2f estado: cosecha granja 2026-09-06T14:02:14Z — avance del árbol KDE 2026-09-06 14:02:14 +00:00
Sergio f0b8d9025e estado: cosecha granja 2026-09-06T13:32:11Z — avance del árbol KDE 2026-09-06 13:32:11 +00:00
Sergio 757f4fb26d estado: cosecha granja 2026-09-06T13:02:08Z — avance del árbol KDE 2026-09-06 13:02:08 +00:00
Sergio 8dc8bb3a3e estado: cosecha granja 2026-09-06T12:32:22Z — avance del árbol KDE 2026-09-06 12:32:22 +00:00
Sergio b086382c44 estado: cosecha granja 2026-09-06T11:31:54Z — avance del árbol KDE 2026-09-06 11:31:54 +00:00
Sergio 384d9fe793 estado: cosecha granja 2026-09-06T11:02:18Z — avance del árbol KDE 2026-09-06 11:02:18 +00:00
Sergio 624745ed5f estado: cosecha granja 2026-09-06T10:31:54Z — avance del árbol KDE 2026-09-06 10:31:54 +00:00
Sergio 5755c6c401 estado: cosecha granja 2026-09-06T10:02:22Z — avance del árbol KDE 2026-09-06 10:02:22 +00:00
Sergio 70ca353653 estado: cosecha granja 2026-09-06T09:02:08Z — avance del árbol KDE 2026-09-06 09:02:08 +00:00
Sergio 8149036e2a estado: cosecha granja 2026-09-06T08:31:56Z — avance del árbol KDE 2026-09-06 08:31:56 +00:00
Sergio 00bee2645c estado: cosecha granja 2026-09-06T08:01:54Z — avance del árbol KDE 2026-09-06 08:01:54 +00:00
Sergio 7e9c43975e estado: cosecha granja 2026-09-06T07:31:52Z — avance del árbol KDE 2026-09-06 07:31:52 +00:00
Sergio 87a86c1e45 estado: cosecha granja 2026-09-06T06:32:04Z — avance del árbol KDE 2026-09-06 06:32:04 +00:00
Sergio c6e5a0b803 estado: cosecha granja 2026-09-06T06:02:13Z — avance del árbol KDE 2026-09-06 06:02:13 +00:00
Sergio 800c80a8f7 estado: cosecha granja 2026-09-06T05:32:13Z — avance del árbol KDE 2026-09-06 05:32:14 +00:00
Sergio 96bfa8fe5d estado: cosecha granja 2026-09-06T05:02:07Z — avance del árbol KDE 2026-09-06 05:02:07 +00:00
Sergio 409eab1ffe estado: cosecha granja 2026-09-06T04:33:26Z — avance del árbol KDE 2026-09-06 04:33:26 +00:00
Sergio 1578eb16f5 estado: cosecha granja 2026-09-06T04:02:18Z — avance del árbol KDE 2026-09-06 04:02:19 +00:00
Sergio 7acdc5489b estado: cosecha granja 2026-09-06T03:32:07Z — avance del árbol KDE 2026-09-06 03:32:07 +00:00
Sergio dbd8c65282 estado: cosecha granja 2026-09-06T03:02:22Z — avance del árbol KDE 2026-09-06 03:02:22 +00:00
Sergio 1f4d2dfc05 estado: cosecha granja 2026-09-06T02:36:18Z — avance del árbol KDE 2026-09-06 02:36:18 +00:00
Sergio 292df59095 estado: cosecha granja 2026-09-06T02:02:22Z — avance del árbol KDE 2026-09-06 02:02:22 +00:00
Sergio 1e11fd330b estado: cosecha granja 2026-09-06T01:32:12Z — avance del árbol KDE 2026-09-06 01:32:12 +00:00
Sergio 78a7f87836 estado: cosecha granja 2026-09-06T01:02:16Z — avance del árbol KDE 2026-09-06 01:02:16 +00:00
Sergio 3f3653b171 estado: cosecha granja 2026-09-06T00:31:52Z — avance del árbol KDE 2026-09-06 00:31:52 +00:00
Sergio c0f94c93ac estado: cosecha granja 2026-09-06T00:02:19Z — avance del árbol KDE 2026-09-06 00:02:19 +00:00
Sergio 25cc429c9e estado: cosecha granja 2026-09-05T23:32:18Z — avance del árbol KDE 2026-09-05 23:32:18 +00:00
Sergio 0c552057e1 estado: cosecha granja 2026-09-05T23:02:27Z — avance del árbol KDE 2026-09-05 23:02:27 +00:00
Sergio 98ded1dd92 estado: cosecha granja 2026-09-05T22:31:57Z — avance del árbol KDE 2026-09-05 22:31:57 +00:00
Sergio d4e2b8f1a7 estado: cosecha granja 2026-09-05T22:02:17Z — avance del árbol KDE 2026-09-05 22:02:17 +00:00
Sergio 8a2c6fad39 repro: «no pude comparar» tampoco es no-determinismo — segundo sitio, misma lección
Una tanda volvió a llenar el libro de veredictos falsos: 47 recetas sanas anotadas como
NO-DETERMINISMO. Esta vez la cadena empezó antes de donde yo había mirado.

El `mv` que APARTA el artefacto falló (el directorio de apartado no estaba) y yo nunca comprobaba que
hubiera funcionado. A partir de ahí todo lo que sigue es basura: el artefacto se queda en su sitio,
`hammer why-differs` compara contra una ruta que no existe y devuelve `Error: store: no existe…`, y
mi código leía cualquier salida no-cero como «difieren». Un error de comparación disfrazado de
veredicto, 47 veces.

Es la MISMA lección que arreglé hace un rato para el build, en un segundo sitio que no miré:
**no poder medir no es un resultado negativo**. Dos guardas nuevas:

  · el apartado se comprueba (`mv || SIN VEREDICTO`) y la receta se salta ruidosamente;
  · `why-differs` se lee, no sólo su exit code: si dice `Error:`/`no existe`, es SIN VEREDICTO, se
    restaura el artefacto y NO se anota nada.

Probadas las dos: con el apartadero sin permiso de escritura sale «no pude apartar el artefacto ⇒
SIN VEREDICTO», el artefacto queda intacto y el libro no crece.

Comprobado además que la tanda mala no perdió NADA: como el `mv` fallaba, los 47 artefactos nunca
salieron del store (`faltan: 0`). El daño fue sólo el registro, y está purgado — el libro queda con
51 verificaciones buenas.

La regla, ya por triplicado hoy: cuando un guardián no puede establecer algo, el estado es *sin
veredicto*, y eso no se escribe. Un libro que anota lo que no midió se cree igual que uno que sí.
2026-09-05 21:44:50 +00:00
Sergio 6c1f80204a repro: cobertura 92 de 1156 — la tanda sólo-C es la sostenible
18 recetas C verificadas de una, en unos nueve minutos, 15 REPRODUCEN y 3 eran DERIVA (ya al día).
Cero no-determinismos. Y `work/sources` se quedó en 4 KB toda la tanda gracias a la poda por
veredicto: antes una tanda así llevaba el disco del 95% al 98%.

Lo que hace sostenible a esta y no a la anterior es la SELECCIÓN. El filtro `MAX_SECONDS` sobre los
tiempos del worker no transfiere a Rust —`zola` se comió 40 minutos y no dio un solo veredicto— pero
en C sí: sin caché de cargo de por medio, un build de 40 s allá son 40 s acá. Lista explícita de
clase `c`, no muestreo ciego.
2026-09-05 21:41:41 +00:00
Sergio 2277d17b13 estado: cosecha granja 2026-09-05T21:32:15Z — avance del árbol KDE 2026-09-05 21:32:15 +00:00
Sergio 8b43b44c11 estado: cosecha granja 2026-09-05T21:02:03Z — avance del árbol KDE 2026-09-05 21:02:03 +00:00
Sergio a2e5ebd6d7 estado: cosecha granja 2026-09-05T20:32:01Z — avance del árbol KDE 2026-09-05 20:32:01 +00:00