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 1389Shell 137Markdown 80Rust 802602 Definitions

estado-granja: comprobar el LATIDO por sus commits, no el crontab por su presencia

El bloque decía «⚠ NO instalado en el crontab» y era cierto y ruidoso a la vez: desde que el latido
lo sostiene el cron de root del ANFITRIÓN, un agente enjaulado no ve ese crontab ni lo verá nunca,
así que el aviso saltaba en TODAS las corridas desde la jaula. Un aviso que salta siempre es un
aviso que nadie lee, y tapaba el caso real —que el latido se pare— con ruido permanente.

Ahora se comprueba el efecto: el último commit de cosecha y su edad. Dispara en :00 y :30, así que
más de 40 minutos sin commitear es un latido perdido y se avisa; si no, dice «✓ al día» con la edad
exacta. El crontab se sigue mirando, pero sólo para SUMAR información cuando está, nunca para
avisar cuando falta.

Medido desde la jaula: «último ciclo: hace 18m 54s — estado: cosecha granja 2026-09-18T17:31:27Z».

944eb1befeaaca1d1028fd17a6191e07dd874c9e · by Sergio · (1 month ago) · parent 88f3977e2 · browse the tree at this commit

Semantic delta

No definition changed: this change is text, documentation or data.

1 files · +22 −5

diff --git a/scripts/farm/estado-granja.sh b/scripts/farm/estado-granja.sh
index 84f16509..2ec57b06 100755
--- a/scripts/farm/estado-granja.sh
+++ b/scripts/farm/estado-granja.sh
@@ -48,12 +48,29 @@ else
   echo "   (sin grafo — corré scripts/build-state.py --kde)"
 fi
 
-echo; echo "══ CRON DE COSECHA ══"
-line=$(crontab -l 2>/dev/null | grep cosecha-cron | grep -v '^#')
-[ -n "$line" ] && echo "   instalado: $line" || echo "   ⚠ NO instalado en el crontab"
+echo; echo "══ LATIDO DE COSECHA ══"
+# Se comprueba el EFECTO, no el mecanismo. Antes esto miraba `crontab -l` y decía «⚠ NO instalado»
+# — cierto y RUIDOSO a la vez: desde el 2026-09-18 el latido lo sostiene el cron de root del
+# ANFITRIÓN, y un agente enjaulado no ve ese crontab ni lo verá nunca. Un aviso que salta siempre es
+# un aviso que nadie lee. Lo que sí prueba que el latido vive son sus commits, que están acá.
+ult=$(git log -1 --format=%ct --grep="cosecha granja" 2>/dev/null)
+if [ -n "$ult" ]; then
+  edad=$(( $(date +%s) - ult ))
+  printf '   último ciclo: hace %dm %ds — %s\n' $((edad/60)) $((edad%60)) \
+    "$(git log -1 --format=%s --grep='cosecha granja' 2>/dev/null)"
+  # dispara en :00 y :30 ⇒ más de 40 min sin commit es un latido perdido, no una pausa
+  if [ "$edad" -gt 2400 ]; then
+    echo "   ⚠ hace más de 40m que no commitea — el latido dispara en :00 y :30"
+  else
+    echo "   ✓ al día"
+  fi
+else
+  echo "   ⚠ no hay ningún commit de cosecha en el historial"
+fi
+if crontab -l 2>/dev/null | grep -q '[c]osecha-cron'; then
+  echo "   (y además está en el crontab de este usuario)"
+fi
 if [ -f work/cosecha-cron.log ]; then
   echo "   último ciclo (tail):"
   grep -E 'cosecha-cron (arranca|fin)|siembra|cosecha ✓|estado commit' work/cosecha-cron.log | tail -6 | sed 's/^/     /'
-else
-  echo "   (aún no corrió — no hay work/cosecha-cron.log; el cron dispara en :00 y :30)"
 fi