# STRONG_RESULT — ¿el haz supera a CALM, o lo espeja? (T8c) **Conclusión: VERSIÓN FUERTE PROBADA.** El haz da un veredicto estrictamente más fino que el CALM **sintáctico por-programa**, y lo hace por un camino honesto, sensible a la instancia y consciente de la topología. Con la salvedad de §F: ese veredicto booleano **es** I-confluence (Bailis et al. VLDB 2014) — no algo más allá de CALM, sino su refinamiento por-instancia, calculado sobre el grafo real. ## El testigo Reproducible en `invariant::tests::discrepancia_buena_existe`. | | Instancia A (el premio) | |---|---| | Programa | dos réplicas retiran de una cuenta con saldo ≥ 0 | | Saldo inicial | `bound = 100` | | Retiros | `[10, 10]` (concurrentes) | | Grafo | `0 — 1` (comparten) | | Merge | `Σ retiros = 20 ≤ 100` ⟹ el invariante sobrevive | | **Haz (difusión + `∈ V`)** | **corre libre** | | **CALM sintáctico** | **coordina** (el retiro es no monótono en valor) | | I-confluence (oráculo indep.) | corre libre | `haz = libre` mientras `CALM-sintáctico = coordina`, con `I` preservado. Eso es la discrepancia buena de §D. Y no es una casualidad: el barrido `la_caza_encuentra_muchas_discrepancias` halla >100 testigos solo con dos réplicas sobre una cuenta de 100. ## Por qué NO es circular (a diferencia de T5–T7) 1. **El orden sale del merge, no de la etiqueta** (T8a): `a ≤ b := merge(a,b)==b`. El haz nunca lee monótono/reset. 2. **La coordinación sale del invariante, no del tipo de dato** (T8c): sin `I` todo CRDT corre libre (T8a/b); la obstrucción aparece solo cuando el merge empuja fuera de `V = {s : I(s)}`. 3. **Dos caminos independientes coinciden** (`haz_iguala_i_confluence`): la difusión de merges y la suma aritmética por componente dan el mismo booleano en toda instancia. Corrección, no definición circular. 4. **Soundness verificada** (`soundness_el_haz_nunca_miente`): el haz jamás dice "libre" con el invariante violado. ## Qué es novedad y qué no (honestidad §F) - **NO es novedad el sí/no.** El veredicto booleano de la versión fuerte **es** I-confluence (Bailis 2014). Hay incluso una línea "Complete CALM" que muestra `I-confluente ⟺ monótono` bajo el orden dado por la validez del invariante: CALM, I-confluence y esta difusión son la misma moneda con tres órdenes distintos. Reclamar "más preciso que CALM" a secas sería medio cierto: somos más precisos que **CALM sintáctico por-programa**, que es justo lo que I-confluence ya hace. - **SÍ es el pitch defendible el *cómo* y la *propina*:** I-confluence sobre el **grafo de comunicación real** (topología-consciente, no un par de estados abstractos: ver `el_mismo_valor_depende_del_grafo` — los mismos retiros 60/60 corren libres particionados y coordinan conectados), vía **difusión a punto fijo** que además entrega (a) el **estado reconciliado** y (b) la **localización** de las réplicas/aristas culpables. Un test de I-confluence estándar da un booleano; aquí te llevas el booleano, el merge y el nudo. ## Riesgo aceptado (R-T8b) El predicado `p ∈ V` es un chequeo **añadido** sobre el punto fijo, no algo intrínseco al Laplaciano. No vendemos "la cohomología detecta la violación del invariante": la difusión calcula el *merge*; I-confluence es *merge + predicado de validez*. Y (R-T8c) el veredicto es por-configuración, no precomputable por programa — es la fuente de la precisión y un costo a reevaluar por estado en M4. ## Veredicto final del proyecto - El MVP lineal medía **topología** (`H¹ = β₁`); útil como detector barato, pero falso-positivo en ciclos. - T5–T7 (retículos + Tarski) parecía cerrar la brecha, pero era **circular**: leía la etiqueta (`FLIPS.md`). - T8 rederiva todo del merge y ancla la coordinación en un **invariante**. El resultado honesto es un **test de I-confluence constructivo, localizado y consciente de la topología**. Esa es la contribución real y defendible; el camino a M4 (adaptador a sistemas soberanos) queda desbloqueado sobre esta base.