¿Qué hace detector-de-silencio?
Detecta el fallo que el monitoreo basado en errores no puede ver: un proceso que simplemente se queda en silencio. Sin excepción, sin caída — simplemente deja de emitir, y te enteras días después.
Cuándo usarlo
- Tienes un flujo de marcas de tiempo de emisión (un logger, heartbeat, cron job, bucle de agente, feed de datos) y una cadencia esperada, y quieres saber si se ha detenido.
- Quieres una verificación determinista y reproducible que puedas conectar en un barrido de integridad diario.
Cómo funciona (un solo parámetro)
SILENCIOSO cuando la señal más reciente es más antigua que expected_interval_sec * multiplier (por defecto multiplier = 3.0 → aproximadamente tres latidos perdidos). Un flujo vacío es SILENCIOSO. El multiplicador intercambia latencia de detección (más bajo = detectar una muerte real más rápido) contra falsas alarmas en cadencias irregulares (más alto = más tolerante). Establece expected_interval_sec en la brecha típica del flujo; si la cadencia es irregular, ajústalo cerca de la brecha p95 y menciona esa decisión.
Ejecutarlo
echo '{"now": 1750000000, "expected_interval_sec": 60,
"timestamps": [1749999940, 1749999990]}' > input.json
python3 detector.py input.json # exit 0 = saludable, exit 1 = silencioso (alertable)
O importarlo: from detector import detect; detect(now, timestamps, expected_interval_sec, multiplier=3.0).
Salida
{ "status": "silent", "reason": "last signal 19880s old vs threshold 180s",
"last_age_sec": 19880, "threshold_sec": 180.0 }
Limitaciones conocidas (medidas, no afirmadas — ver BENCHMARK.md)
En un conjunto etiquetado de 105 casos obtiene una precisión del 83.8% (TPR 81.8% / TNR 86.0%). Cada error está en la 'zona gris' de 2–4× cerca del umbral; los casos claros son 100% correctos. Dos modos de fallo honestos: (1) falsas alarmas en flujos vivos pero actualmente lentos que cruzaron el 3× por casualidad; (2) una latencia de detección de una ventana en un flujo que acaba de morir. Ajusta el multiplier según tu preferencia de latencia/falsa alarma. La evaluación es reproducible — vuelve a ejecutarla y verifica los números tú mismo.