From 2271cc3c107fcb8c1212834c124657f0e79b57be Mon Sep 17 00:00:00 2001 From: Sergio Date: Thu, 17 Sep 2026 14:52:00 +0000 Subject: [PATCH] =?UTF-8?q?el=20latido=20se=20pone=20al=20d=C3=ADa=20antes?= =?UTF-8?q?=20de=20commitear=20=E2=80=94=20si=20no,=20late=20y=20no=20publ?= =?UTF-8?q?ica,=20para=20siempre?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `cosecha-cron.sh` commitea el estado y lo empuja, pero nunca hacía `pull`. En el hub no se notaba: el árbol lo mantiene al día el agente que trabaja ahí. Al mover el latido a una caja donde NO hay nadie trabajando —que es justo lo que pide la puerta 4— el repo se queda atrás en el primer push ajeno y a partir de ahí TODOS los ciclos fallan el push, cada uno anotando «reintenta próximo ciclo». Un latido que late y no publica. `git pull --ff-only`, y nunca `--rebase`: este script corre en un árbol COMPARTIDO con otros agentes y ahí un `pull --rebase` ya se llevó un commit por delante (regla 2 ter). Fast-forward no reescribe nada: o adelanta limpio, o falla sin tocar el árbol y se anota en el log. Co-Authored-By: Claude Opus 5 (1M context) --- scripts/farm/cosecha-cron.sh | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/scripts/farm/cosecha-cron.sh b/scripts/farm/cosecha-cron.sh index d95ae806..b1d22253 100755 --- a/scripts/farm/cosecha-cron.sh +++ b/scripts/farm/cosecha-cron.sh @@ -429,6 +429,21 @@ fi # 4. Commitear SÓLO el estado firme (el avance que el humano sigue). Recetas nuevas que YO autoré se # commitean aparte, a mano, para no meter autoría a medias en un commit de cron. if [ "${NO_COMMIT:-}" != "1" ]; then + # ── PONERSE AL DÍA ANTES DE COMMITEAR (2026-09-17) ──────────────────────────────────────────── + # El latido commitea y empuja, pero nunca se ponía al día: en el hub eso no se notaba porque el + # árbol lo mantiene al día el agente que trabaja ahí. Al mover el latido a una caja donde NO hay + # nadie trabajando, el repo se queda atrás en el primer push ajeno y a partir de ahí **todos los + # ciclos fallan el push**, cada uno anotando «reintenta próximo ciclo» — un latido que late y no + # publica, para siempre. + # + # `--ff-only` a propósito, y nunca `--rebase`: este script corre en un árbol COMPARTIDO con otros + # agentes (regla 2 ter de CLAUDE.md, donde un `pull --rebase` se llevó un commit por delante). + # Fast-forward no reescribe nada: o adelanta limpio, o falla sin tocar el árbol y se anota. + if git pull --ff-only -q origin main 2>/dev/null; then + echo "==> repo al día (ff)" + else + echo "==> no se pudo adelantar por ff (árbol con cambios o historia divergente) — sigo igual" + fi git add 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 || true if ! git diff --cached --quiet 2>/dev/null; then # ⚠ ACOTADO POR PATHSPEC (`-- `), no sólo por el `git add` de arriba: el índice es