ADR 0020: el corpus ya se defiende solo en 53 de las 142 — el radio de explosión son 89, no 142

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.
This commit is contained in:
Sergio
2026-09-18 17:40:05 +00:00
parent cd8469e09e
commit 08b475ec17
+12 -3
View File
@@ -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 <muestra>; 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