gioser

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 1572Shell 203Rust 109Markdown 993728 Sutichaykuna

⎇ d45c0688e77d19131eb4fc27f7fc8611ac584df9 .claude/skills/granja/SKILL.md Markdown · 47 siq'ikuna · 2.6 KB Ñawpa willay ch'uya

granja: el worker es el LXC PRESTADO (€0) — que no se vuelva a perder d45c0688e · Sergio ·

1---
2name: granja
3description: Cómo se compila en este proyecto — dónde está el worker, cómo se enchufa, y por qué NO se levantan cajas de pago. Usar al empezar cualquier trabajo de build, cosecha o estado de la granja.
4---
5
6# La granja de hammer
7
8## Lo primero, porque cuesta dinero equivocarse
9
10**Se compila en `dev.gioser.net` — un LXC PRESTADO, coste €0.** 6 cores, 16 G RAM + 8 G swap, 196 G.
11Se usa exactamente **para no gastar Hetzner**.
12
13**NO levantar cajas hcloud** (`farm-up.sh`, `farm-run.sh`) salvo petición explícita del usuario. El
14modelo efímero de pago existe, funciona y está documentado, pero está SUPERADO como sitio de trabajo
15desde el 2026-09-05. Un `farm-up` por reflejo gasta euros que no hacen falta.
16
17```sh
18ssh -i ~/.ssh/github5 root@dev.gioser.net    # github5 está en su authorized_keys
19ssh -i ~/.ssh/sergio  root@dev.gioser.net    # la otra válida; NO hay entrada en ~/.ssh/config,
20                                             # por eso un `ssh` a secas da "Permission denied" y
21                                             # parece que la caja rechaza — no ofrece clave, nada más
22```
23
24## Antes de decir «no hay worker»
25
26`scripts/farm/.fleet` (`<nombre> <ip>` por línea) es lo que conecta hub y worker, y **está en
27`.gitignore`**. Un hub recién clonado nace con la flota vacía: la cosecha dice «flota vacía» cada
2830 minutos, los artefactos del worker no vuelven, y **nada falla**. `estado-granja.sh` dirá «no hay
29worker vivo» aunque el worker esté compilando. Comprobar el fichero antes de creerle al informe:
30
31    cat scripts/farm/.fleet || echo "dev.gioser.net 154.197.1.13" > scripts/farm/.fleet
32
33## Reglas que no son estilo
34
351. **Todo `hammer build` bajo `flock -o work/.farm-build.lock`.** El `-o` no es opcional: sin él un
36   proceso fugado hereda el fd y deja la granja sin compilar, en silencio. Ver regla 1 de CLAUDE.md.
372. **Un lock tomado sin build a la vista se diagnostica con `fuser -v work/.farm-build.lock`**, que
38   nombra al fugado. Pasó dos veces el mismo día.
393. **Antes de contar nada del corpus, mirar `docs/state/build-state*.json`** — hay uno por cola
40   (corpus, kde, gnome, cosmic, wlr) y el cron los regenera los cinco cada 30 min. No recontar a mano.
414. **Nada se borra por nombre.** `gioser` es el hub del usuario, fijo y sin backup.
42
43## Qué hace el latido
44
45`cosecha-cron.sh` cada 30 min: siembra código hub→worker (rsync `--delete`, excluye
46`work/store/target/.git`), baja el **manifiesto** de sellados del worker (no el store — bajarlo
47deshacía la poda cada media hora), regenera los cinco grafos, y commitea+pushea el estado.

SKILL.md


name: granja description: Cómo se compila en este proyecto — dónde está el worker, cómo se enchufa, y por qué NO se levantan cajas de pago. Usar al empezar cualquier trabajo de build, cosecha o estado de la granja.

La granja de hammer

Lo primero, porque cuesta dinero equivocarse

Se compila en dev.gioser.net — un LXC PRESTADO, coste €0. 6 cores, 16 G RAM + 8 G swap, 196 G. Se usa exactamente para no gastar Hetzner.

NO levantar cajas hcloud (farm-up.sh, farm-run.sh) salvo petición explícita del usuario. El modelo efímero de pago existe, funciona y está documentado, pero está SUPERADO como sitio de trabajo desde el 2026-09-05. Un farm-up por reflejo gasta euros que no hacen falta.

ssh -i ~/.ssh/github5 root@dev.gioser.net    # github5 está en su authorized_keys
ssh -i ~/.ssh/sergio  root@dev.gioser.net    # la otra válida; NO hay entrada en ~/.ssh/config,
                                             # por eso un `ssh` a secas da "Permission denied" y
                                             # parece que la caja rechaza — no ofrece clave, nada más

Antes de decir «no hay worker»

scripts/farm/.fleet (<nombre> <ip> por línea) es lo que conecta hub y worker, y está en .gitignore. Un hub recién clonado nace con la flota vacía: la cosecha dice «flota vacía» cada 30 minutos, los artefactos del worker no vuelven, y nada falla. estado-granja.sh dirá «no hay worker vivo» aunque el worker esté compilando. Comprobar el fichero antes de creerle al informe:

cat scripts/farm/.fleet || echo "dev.gioser.net 154.197.1.13" > scripts/farm/.fleet

Reglas que no son estilo

  1. Todo hammer build bajo flock -o work/.farm-build.lock. El -o no es opcional: sin él un proceso fugado hereda el fd y deja la granja sin compilar, en silencio. Ver regla 1 de CLAUDE.md.
  2. Un lock tomado sin build a la vista se diagnostica con fuser -v work/.farm-build.lock, que nombra al fugado. Pasó dos veces el mismo día.
  3. Antes de contar nada del corpus, mirar docs/state/build-state*.json — hay uno por cola (corpus, kde, gnome, cosmic, wlr) y el cron los regenera los cinco cada 30 min. No recontar a mano.
  4. Nada se borra por nombre. gioser es el hub del usuario, fijo y sin backup.

Qué hace el latido

cosecha-cron.sh cada 30 min: siembra código hub→worker (rsync --delete, excluye work/store/target/.git), baja el manifiesto de sellados del worker (no el store — bajarlo deshacía la poda cada media hora), regenera los cinco grafos, y commitea+pushea el estado.