feat(episode): TRAZA_qu-es-la-comunicacin-entre-instancias-l_S20260831.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD
Skill: NONE | Type: troubleshooting
Summary: EPISODIO 1 — John: 🐝 Qué ES "la comunicación entre instancias" (la anatomía)
This commit is contained in:
parent
6c690a2d12
commit
c0f8a3afe4
1 changed files with 58 additions and 0 deletions
|
|
@ -0,0 +1,58 @@
|
|||
---
|
||||
episode_id: "aeb5025e-baf2-4350-8232-e5fa903e2dd6"
|
||||
puente_flat: "TRAZA_qu-es-la-comunicacin-entre-instancias-l_S20260831.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
|
||||
session_code: "S20260831.SIDB92171056337"
|
||||
acto_dialogico: "informar"
|
||||
actor_flujo: "multi_actor"
|
||||
criticidad_aegis: "low"
|
||||
skill_dominante: "NONE"
|
||||
fase_proyecto: "operations"
|
||||
tipo_semantico: "troubleshooting"
|
||||
summary_one_line: "EPISODIO 1 — John: 🐝 Qué ES "la comunicación entre instancias" (la anatomía)"
|
||||
source_type: "claude_code"
|
||||
trust_boundary: "internal"
|
||||
created_at: "2026-09-12T21:54:43.944978+00:00"
|
||||
relectura_tagged: false
|
||||
forgejo_commit_sha: "pending"
|
||||
---
|
||||
|
||||
Medido en vivo, ahora mismo:
|
||||
|
||||
Con eso aterrizado, te explico todo, John.
|
||||
|
||||
—
|
||||
|
||||
## 🐝 Qué ES "la comunicación entre instancias" (la anatomía)
|
||||
|
||||
Imagina varias abejas (instancias de Claude Code) trabajando en la misma colmena (el repo) a la vez. Para no chocar ni pisarse, se hablan por **cinco canales** — cuatro caseros + uno nativo. Los cuatro caseros son **redundantes a propósito** (si uno falla, los otros cubren), que es justo lo que pediste:
|
||||
|
||||
| Canal | Qué es (plastilina) | Mecanismo real |
|
||||
|---|---|---|
|
||||
| **1. Presencia** | El cartel "estoy aquí trabajando en X" | `ACTIVO.md` por categoría (`declare_presence`) |
|
||||
| **2. Reclamos** | "Esta tarea es mía, no la toques" | `TASK_BOARD.md.claimed.json` |
|
||||
| **3. Cerrojo** | Candado físico en los archivos críticos | `coordination_db.py` (SQLite: `leader_lease` + `file_locks`), cerrojo PF-22 |
|
||||
| **4. Correo** | Cartas entre abejas | `correo_protocol.py` → carpetas `correos-entre-instancias/` |
|
||||
| **5. Nativo** (el nuevo) | El panal ve quién respira de verdad | `ListAgents`/`notify_when_idle` del arnés + **transcripts frescos** como fuente de vida |
|
||||
|
||||
El **latido** (heartbeat) es lo que mantiene vivo el cerrojo: cada instancia dice "sigo viva" y así el candado sabe si su dueño murió (para liberarlo).
|
||||
|
||||
—
|
||||
|
||||
## 🔧 Qué se HIZO (la misión panal — 8 arreglos, todos en git)
|
||||
|
||||
Cuando empezó este chat, varios de esos canales estaban **rotos en silencio**. Los destapé y arreglé uno por uno:
|
||||
|
||||
1. **Sensor de coordinación** (`coord_metrics.py`, T-01) — un termómetro read-only que mide las 4 cifras que viste arriba. Antes no había forma de *medir* la salud de la comunicación; ahora sí.
|
||||
2. **Latido revivido** (T-05, `stop-enricher.py`) — **llevaba 86 días muerto** por un error (`os` sin importar). Sin latido, el cerrojo no sabía quién vivía. Revivido con una línea.
|
||||
3. **Parser de presencia arreglado** (T-04) — buscaba el texto exacto `[ACTIVO]` pero las abejas se anuncian como `[ACTIVO_S<fecha>]`; **no veía a nadie**. Ahora ve por prefijo → pasó de 0 a 8 fantasmas detectados (los 8 de hoy).
|
||||
4. **Relojes en UTC** (T-06) — comparaciones de fecha que mezclaban hora local con UTC, corregidas.
|
||||
5. **Canal honesto** (T-07) — cuando un envío entre abejas falla (red SSH caída), ahora lo **registra** en vez de fingir éxito o romperse.
|
||||
6. **Comparativa nativa** (T-02) — medí que las herramientas nativas ven **6-7 instancias** mientras el `leader_lease` casero ve 1-2 (brecha 7×). Prueba dura de que lo nativo es mejor sensor de vida.
|
||||
7. **Dashboard + arranque con liveness nativa** (T-03, `b8534d84`) — cada arranque ahora imprime `👁️ LIVENESS NATIVA: N vivas vs M vistas → gap`. **La ceguera dejó de estar oculta.**
|
||||
8. **Piloto sin polling** (T-09) — confirmé que `notify_when_idle` (aviso nativo "ya terminé") funciona sin preguntar en bucle.
|
||||
|
||||
Decisión de arquitectura clave: **NO se borró el `leader_lease`** aunque lo nativo sea mejor sensor — porque el cerrojo PF-22 lo necesita para proteger los archivos. "Adoptar nativo" fue *añadir* la vista nativa + reparar el latido, no demoler lo casero.
|
||||
|
||||
—
|
||||
|
||||
## 📊 Cómo está HOY (lectura honesta del sensor)
|
||||
Loading…
Reference in a new issue