diff --git a/scripts/verificar-repro.sh b/scripts/verificar-repro.sh index ea629f3a..e85f0df0 100755 --- a/scripts/verificar-repro.sh +++ b/scripts/verificar-repro.sh @@ -117,6 +117,23 @@ LIBRO="${LIBRO:-docs/state/repro-verificado.tsv}" '#' \ '# recetahashfechaveredicto' > "$LIBRO" +# ── PODAR EL ÁRBOL DE FUENTES TRAS CADA VEREDICTO SANO ───────────────────────────────────────── +# Un barrido deja un árbol extraído por receta en `work/sources` y no limpia hasta el final: en el +# hub eso llevó el disco del 95% al 98% dos veces el 2026-09-05, y un disco lleno se lee como receta +# rota ([[disco-lleno-se-lee-como-receta-rota]]). Guardarlos no vale nada para el barrido, porque +# `fetch.rs` borra y re-extrae el árbol en CADA build por diseño. +# +# Pero sólo se poda cuando el veredicto es SANO. Si algo falló o divergió, el árbol es justamente lo +# que hace falta para mirarlo: un verificador que limpia la escena del problema que acaba de +# encontrar sirve para poco. +# +# ⚠ Sólo el árbol de ESTA receta. Las deps que se hayan extraído se quedan: son compartidas, y +# borrarlas mientras otra cosa las usa es el ADR 0012. +podar_fuentes() { + [ -n "${1:-}" ] || return 0 + rm -rf "$ROOT/work/sources/$1"-* 2>/dev/null || true +} + ya_verificado() { grep -qF "$(printf '%s\t%s\t' "$1" "$2")" "$LIBRO" 2>/dev/null; } anotar() { printf '%s\t%s\t%s\t%s\n' "$1" "$2" "$(date -u +%F)" "$3" >> "$LIBRO"; } @@ -215,7 +232,7 @@ for f in $RECETAS; do if "$HAMMER" why-differs "$GUARDA/$D" "$STORE/$D" >/dev/null 2>&1; then printf " ✓ %-26s REPRODUCE\n" "$n"; ok=$((ok+1)) anotar "$n" "$H" "reproduce" - rm -rf "$GUARDA/$D" + rm -rf "$GUARDA/$D"; podar_fuentes "$n" else # ── DERIVA vs NO-DETERMINISMO: SE DECIDE ACÁ, NO EN LA CABEZA DE QUIEN LEE ────────────── # Que el guardado difiera de una reconstrucción de hoy puede ser dos cosas MUY distintas: @@ -247,6 +264,7 @@ for f in $RECETAS; do # Se anota igual: las dos reconstrucciones coincidieron entre sí, que es justo lo que # significa «reproduce». Lo viejo era el ejemplar guardado, no el determinismo. anotar "$n" "$H" "reproduce (tras poner al día un artefacto derivado)" + podar_fuentes "$n" rm -rf "$GUARDA/$D" "$GUARDA/$D.r1" else printf " ✗ %-26s NO-DETERMINISMO (dos reconstrucciones difieren entre sí)\n" "$n"