Files
takana/scripts/farm/flota-permanente
T
SergioandClaude Opus 5 4db7d1e7ce granja: versionar la flota permanente, y acotar el commit del cron
'.fleet' está gitignored con razón —los workers efímeros entran y salen, y el reaper lo
reescribe en cada ciclo— pero eso tenía un coste que nadie había pagado: un hub recién
clonado nacía con la flota VACÍA y la granja quedaba desconectada EN SILENCIO. La cosecha
decía 'flota vacía' cada 30 min, los artefactos del worker no volvían, estado-granja.sh
reportaba 'no hay worker vivo' con el worker compilando, y nada fallaba. Así se descubrió
esto hoy, por casualidad.

Se separa lo que debe sobrevivir a un clon (scripts/farm/flota-permanente, versionado) de lo
que es estado de ejecución (.fleet). cosecha-cron siembra .fleet desde el fichero fijo al
empezar cada ciclo, uniendo por nombre. Probado con la siembra extraída del script real:

  hub recién clonado (.fleet ausente)  → queda dev.gioser.net          ← el caso que rompía
  con un hworker-3 efímero ya dentro   → conviven los dos, sin duplicar
  ejecutada dos veces más              → idempotente, sigue 1 línea por worker
  comentarios del fichero versionado   → 0 se cuelan

Y de paso el commit del propio cron pasa a ir acotado por pathspec. Hacía 'git add <rutas>' +
'git commit' a secas, que es justo lo que la regla 2 de CLAUDE.md declara insuficiente: el
índice es compartido y el commit se lleva el índice entero. Pesa más acá que en ningún sitio
porque corre desatendido cada 30 min mientras hay agentes trabajando.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014QPJteswQvP1L7zSBrQQe2
2026-09-08 18:45:54 +00:00

16 lines
1015 B
Plaintext

# flota-permanente — los workers FIJOS de la granja, versionados.
#
# POR QUÉ EXISTE (2026-09-08). `scripts/farm/.fleet` está en `.gitignore` y con razón: los workers
# efímeros de hcloud entran y salen, y el reaper lo REESCRIBE en cada ciclo. Pero eso tenía un coste
# que nadie había pagado todavía: **un hub recién clonado nacía con la flota VACÍA y la granja
# quedaba desconectada EN SILENCIO** — `cosecha-cron` decía «flota vacía» cada 30 min, los
# artefactos del worker no volvían nunca, `estado-granja.sh` reportaba «no hay worker vivo» con el
# worker compilando, y NADA fallaba. Así se descubrió, por casualidad.
#
# Este fichero es la parte que SÍ debe sobrevivir a un clon: los workers permanentes. `cosecha-cron`
# siembra `.fleet` desde acá al empezar cada ciclo (unión sin duplicar por nombre), así que lo
# efímero sigue viviendo sólo en `.fleet` y lo fijo se repone solo.
#
# Formato: <nombre> <ip> · líneas en blanco y `#` se ignoran.
dev.gioser.net 154.197.1.13