feat(granja): el censo de lo que FALTA entra al latido — el número que tiene que bajar
`censo-distro.py` nació hoy y sólo existía cuando yo lo corría, que es exactamente la forma de
morir que ya le vi al censo de applets: un instrumento correcto que nadie dispara. Ahora sale una
línea por ciclo.
Las otras métricas del latido contestan «¿está completo lo que ya nombramos?» — y las tres pueden
estar en verde (1158/1158 selladas, deuda 0, clausura 10 de 10) con la distro mostrando cuadraditos
en chino. Ésta contesta la otra, y **su número tiene que BAJAR**: el `git diff` de
`docs/state/distro-huecos.json` ES el avance del frente de producto, igual que el de `cierres.json`
es el de las imágenes.
distro-huecos.json ✓ {"tiene-y-viaja": 18, "tiene-sin-viajar": 3, "falta": 149}
unzip lo hace libarchive
zip lo hace libarchive
ninja lo hace samurai
kitty sin-opengl-de-escritorio
Debajo del total van las dos listas cortas que **cambian el presupuesto** de un hueco, y por eso
valen más que el número: lo ya cubierto con otro nombre (falta el alias, no el camino) y los muros
medidos (no falta la receta: la distro no publica eso).
Sin puerta diaria: cuesta ~2 s y su valor es ir al ritmo del catálogo, así que el día que alguien
declare un paquete la línea lo refleja en el ciclo siguiente. Y sale SIEMPRE, incluso sin cambios —
un contador que sólo aparece cuando se mueve no se usa para decidir.
Probado en los dos caminos: verde con el store real, y rojo con un destino no escribible, donde
dice que falló y **NO pisa el informe anterior** (fichero temporal + `mv`, como `cierres.json`).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Delta semántico
Ninguna definición cambió: el cambio es de texto, documentación o datos.
1 archivos · +23 −0
- scripts/farm/cosecha-cron.sh +23 −0
diff --git a/scripts/farm/cosecha-cron.sh b/scripts/farm/cosecha-cron.sh
index ad20d190..c82c258f 100755
--- a/scripts/farm/cosecha-cron.sh
+++ b/scripts/farm/cosecha-cron.sh
@@ -494,6 +494,29 @@ if [ -x "$HAMMER" ]; then
fi
rm -f work/.applets.salida
+ # ── EL CENSO DE LO QUE FALTA PARA USARLA (2026-10-19) ────────────────────────────────────────
+ # Las otras métricas contestan «¿está completo lo que ya nombramos?» — y las tres pueden estar en
+ # verde (1158/1158, deuda 0, clausura 10 de 10) con la distro mostrando cuadraditos en chino.
+ # Ésta contesta la otra pregunta, y su número tiene que BAJAR: el `git diff` de
+ # `docs/state/distro-huecos.json` ES el avance del frente de producto.
+ #
+ # Va sin puerta diaria porque cuesta ~2 s y su valor es ir al ritmo del catálogo: el día que
+ # alguien declare un paquete, la línea lo refleja en el ciclo siguiente. Y sale SIEMPRE, incluso
+ # sin cambios, porque un contador que sólo aparece cuando se mueve no se usa para decidir.
+ if python3 scripts/censo-distro.py --json work/.distro.tmp > work/.distro.salida 2>&1 \
+ && [ -s work/.distro.tmp ]; then
+ mv work/.distro.tmp docs/state/distro-huecos.json
+ echo " distro-huecos.json ✓ $(grep -m1 'resumen:' work/.distro.salida | sed 's/^ *resumen: //')"
+ # Lo que YA está cubierto por otro nombre y lo que tiene muro medido: dos listas cortas que
+ # cambian el presupuesto de un hueco, y por eso valen más que el total.
+ sed -n '/CAPACIDAD YA CUBIERTA/,/^ —/p;/MUROS MEDIDOS/,$p' work/.distro.salida \
+ | grep -E '^ ' | head -6 | sed 's/^ / /'
+ else
+ echo " ⚠ censo-distro falló — NO piso el informe anterior"
+ tail -2 work/.distro.salida 2>/dev/null | sed 's/^/ /'
+ fi
+ rm -f work/.distro.tmp work/.distro.salida
+
{ echo "raíces sucias y symlinks al lab · medido $(date -u +%FT%TZ)"
python3 scripts/hydrate-profile.py --auditar-raices 2>&1; } > work/.raices.tmp
mv work/.raices.tmp docs/state/raices.txt