atuq: re-pin del daemon con el arreglo del inmortal, y la lección en el SDD

El §6.9 apunta ahora a tawasuyu `3bd1440d` (`b3:27c7b73a`), que arregla un daemon que
quedaba VIVO PARA SIEMPRE cuando su sesión de torrent no arrancaba: el bucle hacía
`let Ok(g) = gestor() else { continue }` y el `continue` saltaba la evaluación de
«¿sobro?».

Y lo que queda escrito en el §6.9 es CÓMO se encontró, porque es lo reutilizable: no lo
encontró ningún test sino mirar `ps` después de las pruebas —un daemon con 23 minutos y
`idle_seconds = 300`—. Los tests cubrían la decisión como función PURA, y esa función
estaba bien: el que no llegaba a llamarla era el bucle. **Una decisión correcta que
nadie toma se ve igual que una que no existe.**

Los dos guardianes vuelven a pasar sobre los artefactos vigentes (`atuq b3:d1a444ad`,
`puriy-costura b3:cad5c855`, `puriy-costura-torrent b3:27c7b73a`): el positivo con
`TOMADO prueba-atuq.bin` y el socket que nadie arrancó, y el control negativo nombrando
lo que falta.
This commit is contained in:
Sergio
2026-09-10 21:07:30 +00:00
parent 3ff7585aa2
commit 78f1c6a771
2 changed files with 10 additions and 1 deletions
+9
View File
@@ -892,6 +892,15 @@ raíces se separan: es lo que hace que un torrent y una descarga del mismo conte
Y el control negativo prueba lo que importa: **sin el cliente del daemon, el host falla diciéndolo y
nombrando lo que falta** — no finge haberlo tomado.
**Y el bug que encontró MIRAR LA MÁQUINA, no un test.** Después de las pruebas, `ps` mostraba un
daemon con **23 minutos de vida** y `idle_seconds = 300`. El bucle hacía
`let Ok(g) = gestor() else { continue }`: si la sesión de torrent no se podía crear, el `continue`
saltaba la evaluación de «¿sobro?» y el daemon quedaba **vivo para siempre** — lo contrario de
perezoso, que es su única promesa. Los tests cubrían la decisión como función PURA, y esa función
estaba bien: **el que no llegaba a llamarla era el bucle**. Una decisión correcta que nadie toma se ve
igual que una que no existe. Arreglado (sin sesión = nada activo) y fijado con dos tests que corren el
PROCESO y el reloj de verdad, el segundo comprobado volviendo a poner el `continue`.
**Lo que sigue sin estar en ningún test automático: un transfer real entre peers.** Haría falta un
sembrador y una espera que volverían la suite una que nadie corre. Está dicho también en el test del
daemon, al pie, para que nadie lo lea como «probado de punta a punta».
+1 -1
View File
@@ -29,7 +29,7 @@ license = "MIT OR Apache-2.0"
[source]
repo = "gitea@git.tawasuyu.net:tawasuyu/tawasuyu.git"
commit = "ca9947b92f89d00ca549d7bbaa3293ec909db7d8"
commit = "3bd1440dcb96cfac085cdc669f1cd9c65b5142e5"
# Obligatorio para cualquier receta desde este monorepo: tawasuyu commitea su propio `vendor/` con
# un `smithay` parcheado por RUTA, y el `cargo vendor` de takana convertiría ese directorio en uno
# de reemplazo de fuente, donde cada crate tiene que traer `.cargo-checksum.json` — que ese patch