SergioandClaude Opus 4.8 89c62aa711 T9a: invariante global + certificado de escrow
T9 §A/§B: corrige los dos errores de T8c. (1) el veredicto de T8 era
DETECCIÓN reactiva por-estado, no evitación; (2) trataba un invariante
GLOBAL como edge-local, de ahí el falso-verde particionado.

- invariant::GlobalInvariant (restricción global valor≥floor, no edge-local;
  slack = initial - floor).
- escrow::Budget/SpendResult: reparto con Σ b_i ≤ slack (is_valid_split,
  split proporcional por división entera), gasto local try_spend (Local |
  NeedsRebalance{deficit}), certificado value_after.
- verdict::Verdict::via_escrow: Local→RunsFree (cero coord, correcto incluso
  particionado), NeedsRebalance→NeedsCoordination localizado. Nunca 'libre
  global' a ciegas.

Tests: EL CERTIFICADO (proptest) — para todo reparto válido y todo gasto
spent_i ≤ b_i (particiones y máximos incluidos), valor = inicial - Σspent ≥
piso, por construcción. El caso 60/60 con [50,50]: particionado recibe
NeedsRebalance (bloqueado), no Local — muere el falso-verde. El detector de
T8 se conserva pero su 'topología importa' se reetiqueta como PUNTO CIEGO.

Honestidad §B: escrow no vence a CALM, transforma la operación para que sea
I-confluente. 49 tests, clippy limpio.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 20:27:06 +00:00
2026-07-01 18:02:43 +00:00
2026-07-01 18:02:43 +00:00
2026-07-01 18:02:43 +00:00
2026-07-01 18:02:43 +00:00
S
Description
No description provided
MIT
290 KiB
Languages
Rust 100%