From 78f1c6a77153a4915281622f6ead2fa2d706aea0 Mon Sep 17 00:00:00 2001 From: Sergio Date: Thu, 10 Sep 2026 21:07:30 +0000 Subject: [PATCH] =?UTF-8?q?atuq:=20re-pin=20del=20daemon=20con=20el=20arre?= =?UTF-8?q?glo=20del=20inmortal,=20y=20la=20lecci=C3=B3n=20en=20el=20SDD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- docs/26-atuq-envoltorio-gecko.md | 9 +++++++++ recipes/puriy-costura-torrent.toml | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/26-atuq-envoltorio-gecko.md b/docs/26-atuq-envoltorio-gecko.md index 95275c6c..3221fcf0 100644 --- a/docs/26-atuq-envoltorio-gecko.md +++ b/docs/26-atuq-envoltorio-gecko.md @@ -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». diff --git a/recipes/puriy-costura-torrent.toml b/recipes/puriy-costura-torrent.toml index 65634b11..73cb51df 100644 --- a/recipes/puriy-costura-torrent.toml +++ b/recipes/puriy-costura-torrent.toml @@ -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