# Granja harkaq con volumen persistente + auto-shutdown

La arquitectura que la 1ª campaña pidió (quedó idle ~4h cobrando). El worker no depende de que yo
esté viva y no se queda idle. **Validado end-to-end 2026-07-16** (worker se auto-eliminó, volumen
sobrevivió con las cosechas, helper efímero las recogió).

## Ciclo

```sh
scripts/farm/harkaq-vol.sh up 2      # 2 workers midiendo → volumen; se auto-eliminan al agotar cola
# ... (muelen la noche, se destruyen solos) ...
scripts/farm/harkaq-vol.sh collect   # (cuando esté viva) helper efímero baja las cosechas al hub
scripts/farm/harkaq-vol.sh close     # clausura el volumen (deja de cobrar)
scripts/farm/harkaq-vol.sh status
```

## Cómo funciona (y por qué así)

- **Volumen `harkaq-cosecha`**: los workers escriben verdicts a `/mnt/cosecha`, que **sobrevive a
  su destrucción**. No dependo de estar viva para no perder el trabajo.
- **Auto-shutdown**: tras `IDLE_CICLOS` ciclos con 0 mediciones nuevas, el worker **se auto-elimina
  vía API REST** (`curl` + metadata service; NO hcloud CLI, que la golden no trae). En Hetzner un
  server apagado **sigue cobrando** ⇒ apagar de verdad es `delete`.
- **collect**: monta el volumen en un helper efímero barato (o un worker vivo), rsync al hub, lo
  destruye. Clasificar los verdicts es un paso aparte (el worker MIDE, el hub CLASIFICA con el
  store completo).

## Rastrillos que ya se pagaron (todos verificados en vivo)

- **`--exclude /work` es crítico**: `work/` son 69GB; sin excluirlo el rsync del `up` cuelga horas.
- **Tipo de server**: en hel1 los AMD `cpx*` dan "unsupported/stock"; `ccx13`/`ccx23` sí van.
- **El token va al worker** (para auto-delete): riesgo acotado — efímero, sin servicios entrantes.
- **`${1:?...}` sin llaves** en el mensaje: una `}` interna cierra la expansión.
- El bucle **borra el artefacto `-hkm` tras medir** (envenenaba la caché en la 1ª campaña) y gatea
  por ABI≥7 + binario-con-jaula (no medir ciego).

## Parar de emergencia
```sh
hcloud server list | grep hkw       # ver workers
hcloud server delete hkw-N          # matar uno
scripts/farm/harkaq-vol.sh close    # y el volumen
```
