From 08b475ec175a310cfafa4129ee3dc33359d56a66 Mon Sep 17 00:00:00 2001 From: Sergio Date: Fri, 18 Sep 2026 17:40:05 +0000 Subject: [PATCH] =?UTF-8?q?ADR=200020:=20el=20corpus=20ya=20se=20defiende?= =?UTF-8?q?=20solo=20en=2053=20de=20las=20142=20=E2=80=94=20el=20radio=20d?= =?UTF-8?q?e=20explosi=C3=B3n=20son=2089,=20no=20142?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Medido al construir `wtype` en la caja: su fase de install empieza con `set -e` puesto a mano por el autor. No es la única — 53 de las 142 recetas con fase multi-comando hacen lo mismo. Son dos datos. Uno: nadie escribe `set -e` en 53 recetas por gusto, se escribe después de que algo selle mal, así que el default ya estaba pagándose de a una. Dos: esas 53 ya corren bajo `set -e` y no romperían con `-ec`, o sea que la migración es sobre las 89 restantes y la muestra del experimento sale de ahí, no de las 142. --- docs/adr/0020-fases-de-build-sin-set-e.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/docs/adr/0020-fases-de-build-sin-set-e.md b/docs/adr/0020-fases-de-build-sin-set-e.md index 83e91439..6b42b66d 100644 --- a/docs/adr/0020-fases-de-build-sin-set-e.md +++ b/docs/adr/0020-fases-de-build-sin-set-e.md @@ -60,6 +60,14 @@ finales**. - Las ~800 restantes **no están expuestas**: usan las fases que genera `resolve_phases`, que encadena con `&&` (`autoreconf -fi && ./configure …`), y `&&` sí propaga el fallo. +**Y el corpus YA resolvió esto a mano, en un tercio de los casos.** 53 de esas 142 recetas abren +alguna fase con un `set -e` propio — `wtype` es una de ellas. Eso son dos datos, no uno: + +1. **El default está mal y los autores ya lo sabían.** Nadie escribe `set -e` en 53 recetas por gusto; + se escribe después de que algo selle mal. Es la misma lección que este ADR, pagada de a una. +2. **Achica el radio de explosión.** Esas 53 ya corren bajo `set -e` y no romperían con `-ec`: la + migración no son 142 recetas, son **89** — las expuestas que todavía no se defienden solas. + ## Lo que hoy tapa el agujero, y por qué no alcanza En `zsh` el artefacto se salvó de verdad — pero no por el estado de salida, sino por **dos guardianes @@ -96,11 +104,12 @@ Lo que hay hoy es un **cribado sobre logs**, no una medición del radio de explo falta es: *¿cuántas de las 142 recetas expuestas dejan de sellar bajo `-ec`?* Y no se puede sacar leyendo: hay que reconstruirlas. - # sobre una muestra de las 142, con el lock tomado una sola vez (CLAUDE.md regla 1) + # sobre una muestra de las 89, con el lock tomado una sola vez (CLAUDE.md regla 1) flock -o work/.farm-build.lock bash -c 'for r in ; do takana --store ./store build "$r"; done' -Con `-ec` puesto y contando los que caen. Una muestra de 20 alcanza para decidir; el corpus entero es -la validación. **Hasta que ese número exista, este ADR no se adopta.** +Con `-ec` puesto y contando los que caen. La muestra sale de las **89 sin `set -e` propio**, no de las +142: las otras 53 ya corren así y no aportan información. Una muestra de 20 alcanza para decidir; el +corpus entero es la validación. **Hasta que ese número exista, este ADR no se adopta.** ## Consecuencias que se caen solas