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».
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user