Dos cosas que el ensayo del guion destapó, las dos medidas:
1. `repo-perfil.sh` NO acotaba el build. `pack --build` es instantáneo con cache-hit y una
compilación entera si el artefacto no está sellado, así que «publicá el repo» se convertía en
silencio en «ponete a compilar el perfil»: la corrida se puso a moler `libnftnl` en una caja de
4 cores que ya estaba a load 46, y después venía `rust`. `build-repo.sh` llevaba `timeout` desde
siempre; el que se corre en producción, no. Ahora BUILD_TIMEOUT (120 s) y SKIP_UNSEALED=1, con
el vencimiento tratado como «no estaba sellado» y no como error. Resultado del perfil entero:
173 anclados, 0 sin ancla, 2 saltados (os-release, rust), sin compilar nada.
2. `--install-vhost` pone el bloque de Caddy sin que haya que editar a mano, pero el orden es lo
único que lo vuelve seguro: copia → añade → `caddy validate` → SÓLO ENTONCES `reload`. Si
validate o reload fallan, restaura la copia y recarga con ella. Un reload con la config rota no
tira el sitio nuevo: tira los 19 de la caja.
Probado en los dos caminos contra un Caddy de juguete (el de la caja no tiene el admin abierto):
con reload bueno, el admin muestra el server nuevo sirviendo el repo y el sitio previo intacto; con
reload fallido, el Caddyfile vuelve byte a byte y no queda rastro del bloque.
Y `repo-perfil.sh` pasa a respetar TAKANA del entorno: la guarda de publicar-repo.sh comprobaba un
binario y se publicaba con otro, que es peor que no tener guarda.