tawasuyu

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1574Shell 204Rust 111Markdown 993763 Definiciones

harkaq: runbook de la campaña desatendida (worker + cron, para retomar sin mí)

Estado escrito en el repo y no en mi cabeza: la campaña tiene que sobrevivir a
que yo desaparezca al final del turno. Qué corre, dónde, cómo revisarlo por la
mañana, cómo pararlo, y los rastrillos que ya se pagaron (el cd del cron, el
pull sucio, cargo fuera del PATH).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

32e8ac557d730f60491c88a89f0cf9f429e435e6 · por sergio · (hace 3 meses) · padre 052f4f765 · ver el árbol en este commit

Delta semántico

Ninguna definición cambió: el cambio es de texto, documentación o datos.

1 archivos · +52 −0

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á.