> 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…
arnés de la imagen: el piso del sello se COMPRUEBA — un piso que falla callado no existe
Los 180 s de `PISO_SELLO` son de esta máquina (TCG sin KVM y con la carga que tenga el anfitrión,
igual que los +97/+120/+137 de la pintura). Con el anfitrión cargado el mismo arranque puede no
llegar al gancho que sella el éxito, y entonces la corrida suma al contador de caídas y envenena la
siguiente EN SILENCIO — que es exactamente como empezó todo esto.
Ahora que `toolkit.startup.last_success` se lee antes y después, eso se puede decir, así que se dice:
✓ el arranque SELLÓ el éxito (last_success X → Y): esta corrida no envenena la siguiente
⚠⚠ el sello NO se movió: este arranque no terminó ⇒ la corrida SUMA al contador. Subí PISO_SELLO
Es la diferencia entre un piso confiado y un piso comprobado, y cuesta cuatro líneas porque el dato
ya estaba medido y guardado.
diff --git a/scripts/cosmic/atuq-en-imagen.py b/scripts/cosmic/atuq-en-imagen.py
index d2281439..436b954a 100755
--- a/scripts/cosmic/atuq-en-imagen.py
+++ b/scripts/cosmic/atuq-en-imagen.py
@@ -649,6 +649,20 @@ def main():
% perfil_d, 60)
estado["recent_crashes_despues"] = leer_contador_de_caidas(volcado)
estado["last_success_despues"] = leer_sello_de_exito(volcado)
+ # ⚠ EL PISO SE COMPRUEBA, NO SE CONFÍA. `PISO_SELLO` son 180 s medidos EN ESTA
+ # máquina (TCG sin KVM, con la carga que tenga el anfitrión): con el anfitrión
+ # cargado el mismo arranque puede no llegar al gancho, y entonces esta corrida
+ # SUMA al contador y envenena la siguiente — en silencio, que es como pasó la
+ # primera vez. Con el sello leído antes y después, eso se puede DECIR.
+ if estado["last_success_despues"] is not None and \
+ estado["last_success_despues"] == estado.get("last_success_antes"):
+ print(" ⚠⚠ el sello NO se movió (%s): este arranque no terminó ⇒ la corrida "
+ "SUMA al contador de caídas. Si usaste --until-paint, subí PISO_SELLO"
+ % estado["last_success_despues"])
+ elif estado["last_success_despues"] is not None:
+ print(" ✓ el arranque SELLÓ el éxito (last_success %s → %s): esta corrida "
+ "no envenena la siguiente"
+ % (estado.get("last_success_antes"), estado["last_success_despues"]))
print("---- el contador de caídas, DESPUÉS ----")
print(volcado.strip())
# ⚠ SÓLO LA FASE BASE SE ANOTA. La serie de `primera-pintura.json` es una TASA del