diff --git a/docs/runbooks/harkaq-campana-desatendida.md b/docs/runbooks/harkaq-campana-desatendida.md new file mode 100644 index 00000000..6f8a5f29 --- /dev/null +++ b/docs/runbooks/harkaq-campana-desatendida.md @@ -0,0 +1,52 @@ +# Runbook — campaña harkaq desatendida (medir → declarar → verificar) + +**Arrancada:** 2026-07-15 · **Worker:** `hk-campana` (`root@37.27.199.213`) · **Cola:** 98 recetas + +## Qué está corriendo + +| Dónde | Qué | Cómo | +|---|---|---| +| worker | mide: construye cada receta bajo la jaula, guarda veredictos | `systemctl status harkaq-campana` · log: `/var/log/harkaq-campana.log` | +| hub (laptop) | cosecha: clasifica y declara las deps medidas | `crontab -l` (cada 30min) · log: `work/harvest-harkaq.log` | + +**Diseñado para la noche: nunca bloquea esperando una decisión.** Una pregunta a las 3am son 8 +horas de idle — ése es el fallo que esto existe para no tener. Build que falla ⇒ se salta y sigue. +Deuda irreducible ⇒ `tandas/needs-review-harkaq/`, no se toca la receta. + +## Revisar por la mañana + +```sh +tail -30 work/harvest-harkaq.log # qué declaró +git log --oneline --grep='cosecha automática' +ls tandas/needs-review-harkaq/ # lo que NO se pudo declarar solo +ssh -i ~/.ssh/github5 root@37.27.199.213 'tail -20 /var/log/harkaq-campana.log' +``` + +## Parar + +```sh +crontab -l | grep -v harvest-harkaq | crontab - # deja de cosechar +hcloud server delete hk-campana # deja de moler (y de cobrar) +``` + +## Lo que NO hace, a propósito + +- **No declara deuda irreducible.** Declarar algo que el store no provee rompe el build en vez de + arreglarlo. Va a needs-review con el motivo. +- **No compila en el hub.** La cadena GUI se rompe en el laptop (zig-skew/cairo); el hub sólo + cosecha. +- **No usa un regex para decidir.** La lista de "a quién le falta declarar make" salió mal dos + veces (69→45→99 según el retoque): `\bmake\b` colaba `cargo-make`, y la versión estrecha + perdía las cinco recetas donde harkaq había medido la deuda de verdad. **La fuente de verdad es + la medición.** El regex sólo ordena la cola. +- **No firma ni promueve.** Eso queda para una decisión humana con el índice de 748 delante. + +## Rastrillos que ya se pagaron + +- El cron corre con `cwd=$HOME`: la línea **necesita** `cd /home/sergio/hammer &&`. Sin eso falla + en silencio y la noche se pierde. Se escribió mal 4 veces seguidas ⇒ el instalador lleva un + `assert` que se niega a poner una línea sin el `cd`. +- `git pull --rebase` del harvest falla con cualquier cambio sin committear ⇒ la cosecha nunca + sincroniza. Mantener el árbol limpio. +- El worker tiene cargo en `~/.cargo/bin` (fuera del PATH no-interactivo) y `/opt/hammer` **no es + un git repo**: se le rsyncea el código y se compila allá.