6ad82167bb
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4.0 KiB
4.0 KiB
name, id, status, created, updated, priority, risk, related_issues, apps, trigger, schedule, expected_runtime_s, tags
| name | id | status | created | updated | priority | risk | related_issues | apps | trigger | schedule | expected_runtime_s | tags | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| matrix-telemetry-bot | 0007 | pending | 2026-05-16 | 2026-05-16 | high | low |
|
|
webhook | 1 |
|
Goal
Probar agents_and_robots como sink universal de telemetria. Cada falla critica en cualquier app dispara un mensaje a sala Matrix #fn-registry-ops. Cierra el bucle observability del stack.
Pre-requisitos
- Bot Matrix activo, joineado a
#fn-registry-ops. agents_and_robotscon accionmatrix_send_messageoperativa.- Variables expuestas como funcion del registry:
matrix_send_message_py_infrao equivalente.
Flow
Tres triggers distintos, mismo sink.
Trigger 1: data_factory run failed
- En
data_factory_record_run_py_pipelines, sistatus == 'failed'-> tambien llamamatrix_send_message. - Formato:
:rotating_light: <node_id> FAILED in <duration_ms>ms error: <error[:200]>
Trigger 2: dag_engine DAG final status
- En executor de dag_engine, handler
on_failureinvocamatrix_send_message. - Formato:
:x: DAG <dag_name> run <run_id> FAILED step <step_name> exit <code>
Trigger 3: call_monitor anomaly
- Cron 1h analiza
call_monitor.violations_24h. Si > threshold (default 50)::warning: violations_24h = <N> (threshold <T>) — top rules: <rule_ids> - Si
error_rate_7d > 0.1para alguna funcion top -> alert.
Acceptance
matrix_send_message_py_infraexiste en el registry (crear si no — usa agents_and_robots backend).- Trigger 1 dispara mensaje cuando un node de data_factory falla deliberadamente.
- Trigger 2 dispara mensaje cuando un DAG falla (test con DAG que falla a proposito).
- Trigger 3 dispara mensaje cuando se inyectan violations sinteticas.
- Mensajes llegan en <3 segundos del evento.
Telemetria esperada
function_stats.matrix_send_message_*: calls dependientes de eventos reales.- Sala Matrix recibe mensajes de los 3 origenes.
Definition of Done
Ver README.md seccion DoD + user-facing.
Generico
- Repetibilidad: 3 triggers (node fail / DAG fail / violations) disparan mensaje cada uno, 100x sin perdida.
- Observabilidad: cada envio en
call_monitor.calls; cola persistente registra envios pendientes si Matrix down. - Error-path: Matrix down → cola en operations.db; al reconectar drena en orden.
- Idempotencia: dedup: misma alerta 10x en 1min → 1 mensaje agregado, no flood.
- Secrets: bot token en
pass matrix/bot-token. - Docs:
## Notascon onboarding + comandos para provocar trigger de prueba. - Registry-first:
matrix_send_message_py_infraregistrado + reusado. - INDEX + status:
status: done+ INDEX + movido.
User-facing
- User-facing: usuario lee alerta en sala Matrix
#fn-registry-opscon prefix emoji severidad + nombre app + link al dashboard de la app fallida. - User-facing repeat: cada fallo real dispara mensaje en la sala; sala es el feed de salud diario del stack.
- User-facing onboarding: parrafo en
## Notas: "Para enterarse de fallos: unirse a#fn-registry-ops(creds Matrix enpass matrix/user). Heartbeat 09:00 confirma bot vivo. Probar trigger:./fn run inject_synthetic_violation." - User-facing latencia: evento → mensaje en <3s p95 (medido sobre 100 envios).
Custom
- Severity routing:
critical→#fn-registry-ops;warning→#fn-registry-dev. - Self-test diario 09:00: bot envia heartbeat si vivo; ausencia heartbeat = alerta meta.
- Mensaje formateado con link al dashboard (no solo texto plano).
Notas
- Throttling: max 1 mensaje/minuto por origen para evitar spam.
- Severidad: prefix emoji indica nivel.
- Mejora futura: comandos en sala (
!status,!ack <run_id>) para responder desde Matrix. - Pre-condicion:
agents_and_robotsnecesita estar deployado + bot autenticado.