Skill: NONE | Type: troubleshooting
Summary: EPISODIO 1 — John: 🐝 Qué ES "la comunicación entre instancias" (la anatomía)
3.8 KiB
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:
- 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í. - Latido revivido (T-05,
stop-enricher.py) — llevaba 86 días muerto por un error (ossin importar). Sin latido, el cerrojo no sabía quién vivía. Revivido con una línea. - 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). - Relojes en UTC (T-06) — comparaciones de fecha que mezclaban hora local con UTC, corregidas.
- 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.
- Comparativa nativa (T-02) — medí que las herramientas nativas ven 6-7 instancias mientras el
leader_leasecasero ve 1-2 (brecha 7×). Prueba dura de que lo nativo es mejor sensor de vida. - 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. - 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.
—