2026-05-23
Cómo AI-LAB Correlaciona Incidentes del Runtime con el Código Fuente
AI-LAB puentea incidentes del runtime con la estructura del código fuente — mapeando fallos operacionales a módulos, blast radius y dominios de ownership.
Cuando se dispara un incidente del runtime — por ejemplo, INC-AUTHORITY-AUTHORITY-FRESHNESS-... — el operador necesita saber dos cosas:
- ¿Qué lo causó?
- ¿Qué más va a afectar?
Antes de DEV-36X, AI-LAB podía responder la primera pregunta mediante su motor de incident intelligence (FASE 36A). Pero la segunda requería inspección manual del código.
Ahora, los reportes de incidentes incluyen contexto de la codebase automáticamente.
La Correlación
Los reportes de incident intelligence (build_incident_intelligence_summary()) ahora incluyen un bloque codebase:
{ "contract_version": "36A", "incidents": { "active_incidents_total": 3, "highest_severity": "high", "affected_domains": ["authority", "governance", "validation"] }, "codebase": { "structural_health_score": 45.0, "structural_health_level": "critical", "modules_total": 62, "ownership_domains": 24, "hotspots": ["gateway(15)", "governance(12)", "authority(9)"] }}Esto permite al operador ver: “El módulo authority está fallando, y es un hotspot estructural con 9 reverse dependencies — los cambios aquí impactarán governance, validation y reporting.”
Cómo Funciona
Paso 1: Detección de Incidentes en la Codebase
detect_codebase_incidents() en incident_intelligence.py monitoriza el structural health score:
if shs < 50: # Disparar INC-CODEBASE-CODEBASE-HEALTH-LOW # severity: critical si < 30, high si < 50
if high_risks > 3: # Disparar INC-CODEBASE-CODEBASE-HIGH-RISKS # severity: high
# Wide blast radius entriesfor r in risks_list: if r["risk_type"] == "wide_blast_radius": # Disparar INC-CODEBASE-CODEBASE-WIDE-BLAST-RADIUS # severity: mediumEstos incidentes se fusionan con otros incidentes de dominio a través del motor de correlación.
Paso 2: Correlación Cross-Domain
Si la codebase tiene un wide blast radius en governance, y un INC-GOVERNANCE-GOVERNANCE-SCORE-LOW está activo, el motor de correlación los enlaza:
correlation_results.append({ "primary_domain": "codebase", "correlated_domain": "governance", "primary_signals_total": 2, "correlated_signals_total": 1, "worst_severity": "high", "correlation_type": "domain_dependency",})Paso 3: Reporting Enriquecido
El motor de reporting (build_incident_intelligence_summary()) enriquece los datos de incidentes con ownership de codebase y hotspots:
codebase_enrichment = { "structural_health_score": ..., "structural_health_level": ..., "ownership_domains": ..., "hotspots": ...,}Escenario Real
Un operador ve esto en un reporte:
INCIDENTS: 1 activo (highest=high) - INC-GOVERNANCE-GOVERNANCE-SCORE-LOW (score: 32/100) - BLAST RADIUS: validation, authority, codebase
CODEBASE: - structural_health: 45/100 (critical) - ownership domains: 24 - hotspots: gateway(15), governance(12), authority(9)El operador puede inferir inmediatamente:
- La caída del governance score no está aislada — el structural health de la codebase ya es crítico
governancees un hotspot con 12 reverse dependencies: arreglar governance también arreglará validation- El módulo
gateway(15 reverse deps) es el módulo de mayor riesgo en general
Integración con Cognitive Compression
El motor de cognitive compression muestra el codebase health en cada resumen del runtime:
codebase: health=45/100 (critical), 62 modules, 274 edges, 4 high risks, 3 hotspotsSi existe un wide blast radius:
wide blast radius: module runtime/governance impacts 12 modules on changePor Qué Esto Importa
Sin correlación de codebase, los incidentes son eventos aislados. Con ella, cada incidente lleva contexto estructural:
- La severidad es contextual: un fallo de governance en un módulo con 12 dependientes es peor que el mismo fallo en un módulo aislado
- La remediación está guiada: el blast radius te dice qué probar después de un fix
- El ownership está claro: el domain mapping te dice a quién notificar
Esto no es documentación estática. Es cognición estructural en vivo — actualizada cada 30 segundos mediante escaneo AST determinista.