diff --git a/scripts/verificar-repro.sh b/scripts/verificar-repro.sh index 32e8ef9d..77e2cfd9 100755 --- a/scripts/verificar-repro.sh +++ b/scripts/verificar-repro.sh @@ -29,6 +29,24 @@ # es sólo el paquete en cuestión, no su cadena — que es lo que hace viable verificar decenas. Después # `takana why-differs` compara los dos árboles y nombra la causa si divergen. # +# ── ADEMÁS DE MEDIR REPRODUCIBILIDAD, ESTE SCRIPT ES EL CENSO DE LA DEUDA INVISIBLE ──────────── +# «no construyó» no es ruido del verificador: es EL hallazgo. Un artefacto sellado dice que ALGUIEN +# lo construyó alguna vez con ALGÚN lab, no que se construya HOY — y el lab rueda (Alpine edge). La +# única forma de convertir «N recetas podrían estar rotas» en un número es reconstruirlas, y este +# script es lo único que lo hace SIN RIESGO, porque aparta en vez de borrar y restaura si el build +# falla (ver la red de seguridad, abajo). +# +# Medido el 2026-09-12 barriendo las 15 recetas CMake baratas del corpus: +# +# REPRODUCEN: 9 · DERIVA: 1 · NO-DETERMINISMO: 0 · no construyeron: 5 +# +# Cinco selladas y rotas a la vez (`brotli`, `json-c`, `libjpeg-turbo`, `libjpeg-turbo-shared`, +# `libtiff-shared`), todas por el mismo crash del `lld` de zig con el `--dependency-file` que CMake +# ≥3.27 emite. Ninguna métrica del repo podía verlo: el grafo las contaba `sealed`. +# +# ⇒ **Barrer por FAMILIA de sistema de build es lo que hace el censo legible**: si el fallo es del +# toolchain, se concentra en una familia y el patrón salta a la vista. Barrer al azar lo diluye. +# # ── LA RED DE SEGURIDAD ──────────────────────────────────────────────────────────────────────── # Si el rebuild FALLA (y fallará en alguna: hay recetas que sólo construyen en ciertas máquinas), el # artefacto original se RESTAURA. Un verificador que destruye lo que verifica es peor que no tenerlo.