Módulo XV — integraciones de salida y notificaciones
El módulo XV es el enrutador de notificaciones del control plane: cuando cualquier módulo convierte una alerta en un finding en el bus de eventos, este módulo decide a qué ruta del tenant corresponde, construye una notificación expurgada, suprime duplicados y avalanchas, y la despacha en vivo a los canales que la empresa ya tiene en marcha. Es el dueño del decide qué/quién/cuándo; los conectores de salida son los dueños del cómo de la entrega — consume ese transporte, nunca lo reimplementa.
Cada módulo del producto reporta una alerta como un finding de datos mínimos en el bus
(finding.reported) con un Kind con espacio de nombres — fiabilidad
(health_subject_down), gasto (finops_budget), seguridad (security_guardrail),
regresión de eval (eval_regression), residencia (compliance_residency_violation),
cadencia de orquestación, voz y más. El módulo XV se suscribe únicamente a ese
canal de alertas a nivel de todo el producto y enruta por Kind, severidad, módulo de origen y
sujeto. Deliberadamente no se suscribe a telemetría en crudo como
cost.sampled o edge.observed: una alerta de gasto llega como un finding finops_budget,
no como una muestra de coste. Este es el seam que convierte los findings de todo el producto
en notificaciones accionables.
Contrato y entidades
Sección titulada «Contrato y entidades»El módulo declara dos entidades con ámbito de tenant en el modelo de datos compartido:
| Entidad | Modo | Qué contiene |
|---|---|---|
| route | mutable, auditada | Una regla de enrutamiento: un predicado sobre tipos de evento, globs de finding-kind (p. ej. health_*), severidad mínima, módulos de origen y tipos de sujeto → un destino con nombre, con ventanas de dedup y throttle por ruta y una prioridad. No contiene ninguna credencial de destino — solo un nombre de destino no secreto. |
| delivery | append-only | El audit ledger de cada intento de entrega: ruta, destino, finding kind, severidad, referencia de sujeto, título breve, un hash de correlación y una clase de resultado (delivered, failed, no_dispatcher, unknown_destination). |
En cada finding el módulo evalúa las rutas habilitadas del tenant por orden de prioridad;
toda dimensión de predicado dejada vacía significa cualquiera, y la coincidencia por glob admite formas exactas o
prefix*. La coincidencia ocurre dentro de una vista de lectura, la entrega por red se ejecuta estrictamente
fuera de cualquier transacción de almacén, y el resultado se escribe entonces en el ledger append-only.
Crear, cambiar o borrar una ruta, y enviar una notificación de prueba, son
acciones privilegiadas y autoauditadas atribuidas al principal real. Las rutas route y
delivery se publican en la referencia de rutas de módulo beta (referencia de rutas de módulo),
no en el contrato estable del núcleo; sus formas a nivel de campo viven en las interfaces tipadas del producto.
Qué consume y produce
Sección titulada «Qué consume y produce»- Consume
finding.reported— el único canal de alertas a nivel de todo el producto. Es un enrutador, no una sonda ni un medidor: nunca sondea infraestructura y nunca mide. - Produce notificaciones salientes a través de un seam de despacho, respaldado por los conectores
de salida (Slack/Teams, PagerDuty/Opsgenie, webhook firmado y un destino SIEM
que cubre Splunk/Elastic vía CEF/LEEF/syslog/OTLP). Community incluye destinos Slack, Teams,
correo, SMS y webhook firmado; los destinos SIEM, ITSM y PagerDuty/Opsgenie requieren Business, y un
servidor Community se niega a abrir uno e indica Business. Una notificación lleva solo
los campos de presentación ya seguros del finding — título, kind, severidad, referencia de sujeto y
un hash de correlación — nunca un payload, prompt, secreto o PII. Los datos mínimos son una
propiedad del cable, no un filtro a posteriori. El secreto del destino vive
solo en la configuración del conector, referenciado aquí por un
nombre no secreto. Un administrador añade destinos Slack y Microsoft Teams en la consola
(Alertas → Destinos): la URL del webhook se sella en el almacén de secretos, se muestra
solo como su host y se prueba con un mensaje real antes de guardarse. Cada otro tipo lo aprovisiona
el operador en el archivo indicado por
OLIVARES_NOTIFY_CONFIG.
Relacionado
Sección titulada «Relacionado»- Catálogo de módulos — dónde encaja el módulo XV y la separación Govern/Actuate.
- Hacer push a tu SIEM — el driver de push S2S
(
modules/siemforward) que re-da forma a los findings y al audit ledger sellado al dialecto nativo de una torre (OCSF/CEF/LEEF/syslog/OTLP) y monta sobre la entrega durable de la plataforma de eventing — el complemento de push a los destinos de arriba. - Referencia del bus de eventos — el evento
finding.reportedy su payloadFindingReport. - Mapa de acceso y recursos — una referencia hermana de Core/Intelligence.
- Reenviar auditoría a Splunk — cableado de un destino SIEM.
- Gobernar y aprobar — actuar sobre los findings que enruta este módulo.
- Honestidad y límites — la postura deny-closed por defecto a lo largo del producto.