tawasuyu

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1572Shell 203Rust 109Markdown 993728 Definiciones

repro: «no pude comparar» tampoco es no-determinismo — segundo sitio, misma lección

Una tanda volvió a llenar el libro de veredictos falsos: 47 recetas sanas anotadas como
NO-DETERMINISMO. Esta vez la cadena empezó antes de donde yo había mirado.

El `mv` que APARTA el artefacto falló (el directorio de apartado no estaba) y yo nunca comprobaba que
hubiera funcionado. A partir de ahí todo lo que sigue es basura: el artefacto se queda en su sitio,
`hammer why-differs` compara contra una ruta que no existe y devuelve `Error: store: no existe…`, y
mi código leía cualquier salida no-cero como «difieren». Un error de comparación disfrazado de
veredicto, 47 veces.

Es la MISMA lección que arreglé hace un rato para el build, en un segundo sitio que no miré:
**no poder medir no es un resultado negativo**. Dos guardas nuevas:

  · el apartado se comprueba (`mv || SIN VEREDICTO`) y la receta se salta ruidosamente;
  · `why-differs` se lee, no sólo su exit code: si dice `Error:`/`no existe`, es SIN VEREDICTO, se
    restaura el artefacto y NO se anota nada.

Probadas las dos: con el apartadero sin permiso de escritura sale «no pude apartar el artefacto ⇒
SIN VEREDICTO», el artefacto queda intacto y el libro no crece.

Comprobado además que la tanda mala no perdió NADA: como el `mv` fallaba, los 47 artefactos nunca
salieron del store (`faltan: 0`). El daño fue sólo el registro, y está purgado — el libro queda con
51 verificaciones buenas.

La regla, ya por triplicado hoy: cuando un guardián no puede establecer algo, el estado es *sin
veredicto*, y eso no se escribe. Un libro que anota lo que no midió se cree igual que uno que sí.

8a2c6fad394561cde538a0cb666f73fe36e14d6b · por Sergio · (hace 1 mes) · padre 6c1f80204 · ver el árbol en este commit

Delta semántico

Ninguna definición cambió: el cambio es de texto, documentación o datos.

2 archivos · +23 −49

diff --git a/docs/state/repro-verificado.tsv b/docs/state/repro-verificado.tsv
index 22347901..78d48e32 100644
--- a/docs/state/repro-verificado.tsv
+++ b/docs/state/repro-verificado.tsv
@@ -37,53 +37,6 @@ npth	e5682fca87a9f591d533855b0056a07b5724304fb53402c940524d885908d980	2026-09-05
 musl-fts	b9681a5205197d51bb777efde1a271e9b189bf35d74091834c5f1aa43d82f16e	2026-09-05	reproduce
 musl-obstack	4a5b3327efb9cd5ec015d3f62e9ec85451deb08560d4963b2567d1e2a124acbb	2026-09-05	reproduce
 hicolor-icon-theme	98ad44a5c02059b4cac576bbbf24195a229cda1c807f1eb6c7e80424ceab1e16	2026-09-05	reproduce
-angle-grinder	0c48ecd61f38dc8fdf5a8068bb5772390586587efb8649f58e42c17e623c21b1	2026-09-05	NO-DETERMINISMO
-apko	98192c79fe925d9606f075e3195d08c70d6ee348d4788c91f8c8f698c3142596	2026-09-05	NO-DETERMINISMO
-appstream	8cdbe4f4772f20c105c6867a95765880febdceec99f7f409dc4313f8da1a282a	2026-09-05	NO-DETERMINISMO
-argo-rollouts	faf20cb25dc3bfafd94349a95346819cdc428d5141204f4643fccc81e2374f2c	2026-09-05	NO-DETERMINISMO
-argocd	36bf1c3d732870bb7b315dfcdb553fc9a6ffc4c0b746cef4a7fcf980c15c00e1	2026-09-05	NO-DETERMINISMO
-argp-standalone	5268738b1800a814d5fced165d15bd0d2f69c471e1031d6778fdefabd1a6c64d	2026-09-05	NO-DETERMINISMO
-arje-absorb	833838730d0dd1169dc59af9b70ef6f781c839a8c72dd2a91cceb82c8f1fa6c7	2026-09-05	NO-DETERMINISMO
-arje-getty-stub	cdb160891853451cbe55909c508751e301a822b11f54e61e8859dc7d6fc4ba37	2026-09-05	NO-DETERMINISMO
-arje-installer	fdc941af2530d8b6bf4347084aa6c5d50aee191431ce98a9ea52f2cfebb797c9	2026-09-05	NO-DETERMINISMO
-arje-logind-compat	f4af586233e7f4644dbdb1874efb290e5b5b761ca95d3cb5ce5f53392f979eaf	2026-09-05	NO-DETERMINISMO
-arje-net-bring-up	3be9d05dd4959642b3495b54757cb177fa3f2da5bb8ed65c03c51834b3bfac16	2026-09-05	NO-DETERMINISMO
-arje-packager	9bc5e2ba96710698f3e99b06893df99ca8d3c59306ce3d2863534f834f095758	2026-09-05	NO-DETERMINISMO
-arje-polkit-compat	5e521b8821805b93fbc05d67708fd6b47371298f5d10cca660df7b3e69c798f7	2026-09-05	NO-DETERMINISMO
-arje-zero-attest	06e6b7c50e62c1a1a97efcc0079ec89175776e0323d55189af45e7a1a2e27759	2026-09-05	NO-DETERMINISMO
-arje-zero	b34c571bb80e52815f6eefe8f7f55cbbbc7910cd9c1c7bc86cf434c3d4a6a141	2026-09-05	NO-DETERMINISMO
-asnmap	bc5e20054ba468d588704274d837636965510185d04d924e7050f4198bff1ced	2026-09-05	NO-DETERMINISMO
-ast-grep	587f7e0033af1180bb75f9fce453e04208a8ef468207882e6536e751de624164	2026-09-05	NO-DETERMINISMO
-atac	bd14ad1fdf1146eb1880a5e8f042f908c463c8f96401157425fbd0e95f898bba	2026-09-05	NO-DETERMINISMO
-atk	cb82aab7de76e97a004b9d972f63938bc78df34a00458fe6c28b33abee9b9887	2026-09-05	NO-DETERMINISMO
-atlantis	458b6df0fb3ce30036787f617b163d9e9ec0db3f934137edfe505f11f4f4b202	2026-09-05	NO-DETERMINISMO
-atlas	ea84f9b33bf7852f9a0e4c5826c75c4996ffe8362a95e7c199e0e2554e61e301	2026-09-05	NO-DETERMINISMO
-atmos	93af81aa27d3507545731c55ece0d6bdefd221b7f611ec6456e788beb5ccbe56	2026-09-05	NO-DETERMINISMO
-atuin	44b6ca9302e6d42b20c0a8b8ab94cb89beb218f6c2f1136c7563f480f538c07a	2026-09-05	NO-DETERMINISMO
-bacon	dd96ac604007d8f45101e8ea84695ef45c0344ee44ed8f74e0e05131b90d7cdc	2026-09-05	NO-DETERMINISMO
-bandwhich	2af041e8b67c57c9f99805c703beffd0a7b4eece6123ce4911afcb0d648fbfae	2026-09-05	NO-DETERMINISMO
-bash	87bf1a59ae03bc0b7a8604da0e4f0ada3eac8850ea231ce97ddc264f33a2a224	2026-09-05	NO-DETERMINISMO
-bat	53e5935e6eff3699b8f728165978e7f95ca29859cb9d602f895065023f941c9a	2026-09-05	NO-DETERMINISMO
-bazelisk	9d86884f9bb8650419da3fe952e39819d729724cfaf37fc1c8d23b93e9dd5119	2026-09-05	NO-DETERMINISMO
-benthos	9ed9fec63a3e0e3d7844420734b3a7894fea87217d88b5d6147d76887548c642	2026-09-05	NO-DETERMINISMO
-bingrep	0fc25b71d26b8e6a20aebbd324cc6489e7ff9b484c5ecfec01112ed4c4541e0b	2026-09-05	NO-DETERMINISMO
-binutils	4b5fbf3b38baf6f9579d56353925cd8b7f4b4e5acce9be80534e1c896a160104	2026-09-05	NO-DETERMINISMO
-biome	dfa881ee7de575c85cfb6b0034fb705a08e684979607d98481265892fe2014d4	2026-09-05	NO-DETERMINISMO
-bison	8cd3ec35022757fcd099e1a72d9fb30a3d05a54197f81b0fef6af87a6e7a0686	2026-09-05	NO-DETERMINISMO
-blackbox_exporter	bd91fe9a82b539e4c68ab5f1ee41aa1b8c76095d2663b4df236c290b3e502eae	2026-09-05	NO-DETERMINISMO
-blocky	b1a70bd8141806252e260ade5c49d7240ad860ad1cd130b90043f59bb3902234	2026-09-05	NO-DETERMINISMO
-bob	88f600fa8d677baf8423e38e9b04fc236dd6a1e526bc3fb1c6178cab3c1893ff	2026-09-05	NO-DETERMINISMO
-bom	e853d5bed4a780d2838d09c18b468666a8610d31569d27215e9106f8a1711b20	2026-09-05	NO-DETERMINISMO
-bombardier	2b68c8608af297d69cda4e993a3d80094dd5b21e6fe03723ee84c5fef47afbcd	2026-09-05	NO-DETERMINISMO
-bottom	4c9e025742f6614419e7caa6d6d6f45f62e38bf8a26c752cfe9bdf355a14c574	2026-09-05	NO-DETERMINISMO
-boxxy	33c54a91568f58ec9c00677e2971002ffe6741ec97c2d9ddf3e4cd455120e818	2026-09-05	NO-DETERMINISMO
-broot	94a5e760ab71cdfb9b8ba281226b8009d7919bab02b7e95f39e921e63b4ae793	2026-09-05	NO-DETERMINISMO
-brotli	48d0a0c848a0e8f19941fd8b9f5505fcf6120c72d165875854fb6b0b9d598479	2026-09-05	NO-DETERMINISMO
-brush	715237c78edd5d5073c3b5af000c1d39974f1f17ba218ae2d4f7697f29e599f1	2026-09-05	NO-DETERMINISMO
-buf	4650e711bdbfaa29677614d5c0d4227b92f6492c1405f52b51d245f4dfda466b	2026-09-05	NO-DETERMINISMO
-buildkite-agent	823b72eb964c39f2d4c33d4eb0fc3ad72294971500451133015a1093f96e4c61	2026-09-05	NO-DETERMINISMO
-busybox	2a2b1280c57affe906ce43ba20fd3867dda18b9ed4476ef64285baf018c4a5fd	2026-09-05	NO-DETERMINISMO
-bwrap	2c82bfcc5850c80e19835fdbabe7d0af0155419210cbb751f3021047c8a2632d	2026-09-05	NO-DETERMINISMO
 iputils	bf367f33fc000c41287c3b92e5caadee16ca1488ed433ec27ba3817d5b795350	2026-09-05	reproduce
 wlr-randr	10359a8a229afa8804ced117d2c0568075d3b410032ff1396ba34762b2b23f0e	2026-09-05	reproduce
 dhcpcd	c2cd34287983f133c1925697c46b727fab5cc99874aa65751b1a305df6fffac5	2026-09-05	reproduce
@@ -102,3 +55,5 @@ dbus	02833d5b5d3c6a577c0f10454591e73f5a7714df24ab66d5db97f7dadecd65a0	2026-09-05
 procps-ng	6a8ebd6a53beafbc54792128466919d14ee7e8cab58507c2372be0f7f3e028ff	2026-09-05	reproduce
 vim	b4c0d477428af4bf75e9b55d6ff2b2508b7f7e55f4ace9207a6f25c4d3080bd8	2026-09-05	reproduce
 kbd	be9969f808c8499972e213f474a52d5f7477bf7faff78b6e0ec580aede507231	2026-09-05	reproduce
+npth	e5682fca87a9f591d533855b0056a07b5724304fb53402c940524d885908d980	2026-09-05	reproduce
+musl-fts	b9681a5205197d51bb777efde1a271e9b189bf35d74091834c5f1aa43d82f16e	2026-09-05	reproduce
diff --git a/scripts/verificar-repro.sh b/scripts/verificar-repro.sh
index e85f0df0..3bea545a 100755
--- a/scripts/verificar-repro.sh
+++ b/scripts/verificar-repro.sh
@@ -227,9 +227,28 @@ for f in $RECETAS; do
   D="$H-$n"
   [ -d "$STORE/$D" ] || { saltada=$((saltada+1)); continue; }
 
-  mv "$STORE/$D" "$GUARDA/$D"; PENDIENTE="$PENDIENTE $D"
+  # ⚠ Si el apartado FALLA, todo lo que sigue es basura: el `why-differs` de después compara contra
+  # algo que no existe, devuelve error, y un error leído como «difieren» inventa un no-determinismo.
+  # Pasó el 2026-09-05 con 47 recetas sanas de una sola tanda. Falla ruidoso y se salta la receta.
+  mkdir -p "$GUARDA"
+  if ! mv "$STORE/$D" "$GUARDA/$D" 2>/dev/null; then
+    printf "  ⚠ %-26s no pude apartar el artefacto ⇒ SIN VEREDICTO\n" "$n"
+    fallo=$((fallo+1)); continue
+  fi
+  PENDIENTE="$PENDIENTE $D"
   if "$HAMMER" --store "$STORE" build "$f" >/dev/null 2>&1 && [ -d "$STORE/$D" ]; then
-    if "$HAMMER" why-differs "$GUARDA/$D" "$STORE/$D" >/dev/null 2>&1; then
+    # `why-differs` devuelve no-cero tanto si DIFIEREN como si NO PUDO comparar (una ruta que no
+    # existe, por ejemplo). Tratar las dos igual es inventar un veredicto: se mira su salida.
+    cmp_out=$("$HAMMER" why-differs "$GUARDA/$D" "$STORE/$D" 2>&1); cmp_rc=$?
+    if [ "$cmp_rc" -ne 0 ] && printf '%s' "$cmp_out" | grep -qiE '^Error:|no existe'; then
+      printf "  ⚠ %-26s no pude comparar (%s) ⇒ SIN VEREDICTO\n" "$n" \
+        "$(printf '%s' "$cmp_out" | head -1 | cut -c1-60)"
+      fallo=$((fallo+1))
+      rm -rf "$STORE/$D"; mv "$GUARDA/$D" "$STORE/$D"
+      PENDIENTE=$(echo "$PENDIENTE" | sed "s| $D||")
+      continue
+    fi
+    if [ "$cmp_rc" -eq 0 ]; then
       printf "  ✓ %-26s REPRODUCE\n" "$n"; ok=$((ok+1))
       anotar "$n" "$H" "reproduce"
       rm -rf "$GUARDA/$D"; podar_fuentes "$n"