From 01e721db843607b4b1c37cadc643760758527919 Mon Sep 17 00:00:00 2001 From: Sergio Date: Sat, 12 Sep 2026 11:21:34 +0000 Subject: [PATCH] =?UTF-8?q?verificar-repro:=20decir=20que=20adem=C3=A1s=20?= =?UTF-8?q?es=20el=20CENSO=20de=20la=20deuda=20invisible,=20con=20el=20n?= =?UTF-8?q?=C3=BAmero=20medido?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `no construyó` no es ruido del verificador: es EL hallazgo. Un `sealed` en el grafo dice que alguien construyó eso alguna vez con algún lab, no que se construya hoy — y el lab rueda desde Alpine edge. Este script es lo único que convierte esa sospecha en un número SIN RIESGO, porque aparta en vez de borrar y restaura si el build falla. Barriendo las 15 recetas CMake baratas del corpus: REPRODUCEN 9 · DERIVA 1 · no construyeron 5. Cinco selladas y rotas a la vez, todas por el mismo crash del lld de zig con `--dependency-file`. Y la nota de método que hace legible el censo: barrer por FAMILIA de sistema de build. Si el fallo es del toolchain se concentra en una familia y el patrón salta; barrer al azar lo diluye. --- scripts/verificar-repro.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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.