diff --git a/scripts/reconstruir-corpus.sh b/scripts/reconstruir-corpus.sh index 1b6ac12b..55c5fc5c 100755 --- a/scripts/reconstruir-corpus.sh +++ b/scripts/reconstruir-corpus.sh @@ -49,14 +49,24 @@ SECO=0; [ "${1:-}" = "--seco" ] && SECO=1 # era 138 G libres en el repo y 19 G en `/`, o sea que el vigía habría dado luz verde mientras el que # se llenaba de verdad era el otro — y llenar `/` no rompe una tanda, rompe la máquina. Se toma el # MÍNIMO de los dos. Si comparten FS, `df` devuelve lo mismo dos veces y esto es inocuo. +# +# ── 2026-08-27: MIRA DÓNDE SE GASTA, NO DÓNDE ESTÁ EL REPO ────────────────────────────────────── +# Medir `$ROOT` dejó de ser correcto al mudar el store al volumen `harkaq-cosecha`. `$ROOT` es +# /mnt/vvv, que hammer COMPARTE con tawasuyu, y tawasuyu repuebla su target a ~62 G/h: el 27/08 se +# comió los 92 G que se le habían liberado en 70 minutos y el vigía abortó la tanda por un disco +# que hammer ya ni usaba. Un vigía que mide el disco de OTRO no protege la tanda, la mata. +# Ahora se miden los tres sitios donde hammer SÍ crece —store, árboles de fuentes y CARGO_HOME— +# y se toma el mínimo. Si comparten FS, `df` repite el número y esto es inocuo. CARGO_H="${CARGO_HOME:-$HOME/.cargo}" avail_gb() { df -BG --output=avail "$1" 2>/dev/null | tail -1 | tr -dc 0-9; } libre_gb() { - local a b - a=$(avail_gb "$ROOT"); b=$(avail_gb "$CARGO_H") - [ -z "${a:-}" ] && a=999999 - [ -z "${b:-}" ] && b=999999 - [ "$a" -le "$b" ] && echo "$a" || echo "$b" + local m=999999 v d + for d in "$STORE" "$ROOT/work/sources" "$CARGO_H"; do + [ -e "$d" ] || continue + v=$(avail_gb "$d"); [ -z "${v:-}" ] && continue + [ "$v" -lt "$m" ] && m=$v + done + echo "$m" } ts() { date -u +%Y-%m-%dT%H:%M:%SZ; }