SergioandClaude Opus 4.8 a8a39a67f6 T11c: fencing por época + detección de clon (frontera §D) — cierra T11
T11 §D: una celda con dos escritores vivos que no se comunican es IMPOSIBLE
de resolver coordination-free (CAP dentro de la celda). El fencing es lo mejor
posible: bounded + detect, no prevent.

- fencing::FencedCell: spent indexado por (device_id, epoch); epoch monótona
  DEVICE-LOCAL (evita consenso), persistida al arrancar (boot). merge une por
  máximo por época y devuelve MergeOutcome::CloneDetected{device_id,
  stale_epoch, live_epoch} cuando halla dos linajes. overspend acotado a una
  celda; reconciled_spent = solo el linaje vivo (aísla el obsoleto).

Tests §G.3 (clon detectado, acotado a una celda, delatado; el linaje vivo no
propaga el doble gasto) y §G.4 (fuente monótona una época = Ok; el clon nunca
pasa como Ok silencioso). proptest: daño de clon siempre ≤ una celda.

BOUNDARY.md: el teorema de imposibilidad, la garantía real (bounded+detect vs
el fencing token linealizable de Kleppmann), y por qué epochs device-local.
STRONG_RESULT.md: el terminus honesto §E (seguridad coord-free módulo un
supuesto físico nombrado) + el contrato de M4 §H listo para escribir.

73 tests, clippy limpio. Hito T11 cerrado.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 22:50:57 +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%