gioser

sergio/takana

> 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…

TOML 188Rust 55Shell 30Markdown 281211 Definiciones

estado: sealed_remoto sale del JSON — dependía de la máquina, y ahora hay dos

Montando gioser como segundo hub salió el defecto: `sealed_remoto` cuenta
cuántos sellados NO están en el disco de QUIEN calcula. El laptop tiene 219
artefactos y gioser 19, así que el mismo corpus da 700 y 751. Metido en un
fichero commiteado, las dos máquinas se lo pisarían en cada regeneración,
para siempre.

El estado del corpus es compartido; cuánto de él tiene esta máquina en el
disco, no. Se sigue diciendo en el resumen, donde es útil y no genera churn.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

36b8dd70e061be9f82caedfb5cf6df317787d035 · por sergio · (hace 2 meses) · padre a18bb4811 · ver el árbol en este commit

Delta semántico · 1

scripts/build-state.py

  • cambió por dentro fn main

1 archivos · +13 −5

diff --git a/scripts/build-state.py b/scripts/build-state.py
index 962b7525..f1f8084b 100755
--- a/scripts/build-state.py
+++ b/scripts/build-state.py
@@ -323,11 +323,13 @@ def main():
         schema="hammer-build-state/1",
         # `recipes` sigue contando SÓLO las que tienen fichero (los consumidores lo leen como el
         # tamaño del corpus); `nodes` incluye la frontera `wanted`.
-        # `sealed_remoto`: de los `sealed`, cuántos NO están en el disco local y se dan por buenos
-        # por el manifiesto de la granja. Va explícito para que «el store se mudó» no se lea nunca
-        # como «el corpus creció»; si algún día sube sin que nadie haya sembrado, es la señal.
-        totals=dict(recipes=n_recetas, nodes=len(recs), **by_state,
-                    sealed_remoto=len(REMOTO_ONLY)),
+        # ⚠ `sealed_remoto` NO va acá, y la razón se descubrió al montar un segundo hub (2026-08-09):
+        # es un número que depende de QUÉ MÁQUINA lo calcula — el laptop tiene 219 artefactos en
+        # disco y gioser 19, así que el mismo corpus da 700 y 751. Metido en un fichero que se
+        # commitea, las dos máquinas se lo pisarían mutuamente en cada regeneración, para siempre.
+        # El estado del corpus es compartido; cuánto de él tiene ESTA máquina en el disco, no.
+        # Se sigue diciendo —abajo, en el resumen— donde sí es útil y no genera churn.
+        totals=dict(recipes=n_recetas, nodes=len(recs), **by_state),
         by_class={k: by_cls[k] for k in sorted(by_cls)},
         debt_by_class={k: debt_by_cls[k] for k in sorted(debt_by_cls)},
         by_queue={q: dict(c) for q, c in sorted(by_queue.items())},
@@ -346,6 +348,12 @@ def main():
     for s in ("sealed", "debt", "never", "unhashable", "wanted"):
         if by_state.get(s):
             print(f"   {s:11} {by_state[s]}")
+    if REMOTO_ONLY:
+        # Propio de ESTA máquina, por eso se imprime y no se escribe: de los `sealed`, cuántos no
+        # están en su disco y se dan por buenos por los manifiestos. Si sube sin que nadie haya
+        # sembrado, es la señal de que un manifiesto afirma algo que ya no existe en ningún lado.
+        print(f"   de los sellados, {len(REMOTO_ONLY)} NO están en el disco de esta máquina "
+              f"(los avalan los manifiestos)")
     if debt_by_cls:
         print("   deuda por clase:", "  ".join(f"{k}={v}" for k, v in sorted(debt_by_cls.items())))
     if len(by_queue) > 1: