diff --git a/scripts/farm/cosecha-cron.sh b/scripts/farm/cosecha-cron.sh index b1d22253..85a24041 100755 --- a/scripts/farm/cosecha-cron.sh +++ b/scripts/farm/cosecha-cron.sh @@ -452,7 +452,17 @@ if [ "${NO_COMMIT:-}" != "1" ]; then # y acá pesa más que en ningún lado: esto corre desatendido cada 30 min mientras se trabaja. git commit -q -m "estado: cosecha granja $(ts) — avance del árbol KDE" -- docs/state/subcomandos.txt docs/state/raices.txt docs/state/sonames.txt docs/state/servicios.txt docs/state/build-state.json docs/state/build-state-kde.json docs/state/build-state-gnome.json docs/state/build-state-cosmic.json docs/state/build-state-wlr.json docs/state/drenaje.json docs/state/fuentes-vigia.json docs/state/kernel-contract.txt docs/state/static-audit.txt docs/state/keystones.json docs/state/duplicados.json 2>/dev/null \ && { git push -q origin main 2>/dev/null && echo "==> estado commiteado+pusheado" \ - || echo "==> estado commiteado (push falló, reintenta próximo ciclo)"; } + || { # ⚠ «reintenta próximo ciclo» NO era cierto y costó descubrirlo (2026-09-17): si el + # push se rechaza porque otro empujó, el ciclo siguiente se rechaza IGUAL —nadie + # rebasa nunca— y el commit del cron se queda local para siempre. Se encontró así en + # la caja: una rama divergente con un `estado: cosecha granja` atascado, y la cosecha + # diciendo «reintenta» cada media hora sin que nada cambiara. + echo "==> el push fue rechazado (otro empujó primero) — sincronizo" + if "$ROOT/scripts/git-sincronizar.sh" >/dev/null 2>&1; then + echo "==> estado rebasado y pusheado" + else + echo "==> NO pude publicar el estado — queda local. Verlo con: git log origin/main..HEAD" + fi; }; } else echo "==> sin cambios de estado este ciclo" fi