feat(episode): TRAZA_1-el-sensor-t-01-81a7e306-antes-de_S20260831.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD
Skill: NONE | Type: troubleshooting Summary: EPISODIO 2 — MNEMO_PRE_DIGEST: 1. El sensor (T-01, 81a7e306 ). Antes de...
This commit is contained in:
parent
309fcf5962
commit
9e2b6d079a
1 changed files with 25 additions and 0 deletions
|
|
@ -0,0 +1,25 @@
|
||||||
|
---
|
||||||
|
episode_id: "a60228f2-0c00-48b5-b388-c6e9c08c44f6"
|
||||||
|
puente_flat: "TRAZA_1-el-sensor-t-01-81a7e306-antes-de_S20260831.R2_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 2 — MNEMO_PRE_DIGEST: 1. El sensor (T-01, 81a7e306 ). Antes de..."
|
||||||
|
source_type: "claude_code"
|
||||||
|
trust_boundary: "internal"
|
||||||
|
created_at: "2026-09-06T15:21:52.868311+00:00"
|
||||||
|
relectura_tagged: false
|
||||||
|
forgejo_commit_sha: "pending"
|
||||||
|
---
|
||||||
|
|
||||||
|
**1. El sensor (T-01, `81a7e306`).** Antes de arreglar nada fabriqué un termómetro: `scripts/coord_metrics.py`. Solo lee, nunca escribe (abre la base de datos en modo *read-only* para no poder romper nada). Mide 4 cosas: cuántas instancias están de verdad vivas vs. cuántas cree el sistema que hay (*liveness gap*), reclamos duplicados, commits "anchos" del día, y presencias fantasma. Vino con **10 tests con control positivo y negativo** — es decir, comprobé que el sensor detecta cuando SÍ hay problema y también que NO da falsa alarma cuando no lo hay. Línea base medida: gap=4, fantasmas=8, duplicados=1.
|
||||||
|
|
||||||
|
**2. El parser fantasma (T-04, `72d4bbb5`).** Este es bonito. El código que detecta qué instancias están presentes buscaba el texto exacto `"[ACTIVO]"`, pero las instancias reales se anuncian como `"[ACTIVO_S20260905...]"` — con la fecha pegada. Resultado: el sistema **no veía** a instancias que estaban gritando "¡aquí estoy!". Cambié la búsqueda de "texto exacto" a "empieza por" (`"[ACTIVO"`). Lo arreglé en los 3 sitios que lo usaban. Al probarlo, el limpiador pasó de detectar **0 fantasmas a 8**. Regresión: 12/12 verde.
|
||||||
|
|
||||||
|
**3. El latido muerto (T-05/T-03, `97d13283`).** El más grave. Había un bloque de código en `stop-enricher.py` que debía mandar el "latido" (heartbeat) que registra que la instancia está viva — pero usaba `os.environ` **sin haber importado `os`**, lo que lanzaba un error (`NameError`) que mataba el bloque entero. Ese latido llevaba **86 días muerto**. Lo reviví con una línea (`import os`). De paso, retiré un "bus de checkpoints" que no tenía ningún lector (código muerto, 0 consumidores) — pero **preservé el `leader_lease`**, que es esencial (ver la decisión de abajo).
|
||||||
|
|
||||||
|
**4. Los relojes desalineados (T-06).** Arreglé una comparación de fechas que mezclaba hora local con UTC en `correo_protocol.py`. *(Honestidad: este arreglo lo absorbió el commit de otra instancia mientras yo peleaba con un candado de git — el contenido quedó en el árbol, pero la autoría se la llevó otro commit. Es exactamente el fenómeno de "absorción" que el diagnóstico predijo, pasando en vivo.)*
|
||||||
Loading…
Reference in a new issue