┌──────────────────────────────────────────────────────────────────┐
│ AI-LAB Runtime — 3 procesos independientes │
│ │
│ ┌──────────────────────┐ ┌──────────────────┐ ┌──────────┐ │
│ │ openai_gateway.py │ │ router_api.py │ │live_api │ │
│ │ :8008 ★ TRAFICO │ │ :8083 SIN TRÁF │ │:8084 │ │
│ │ (único entrypoint) │ │ (API interna) │ │(state) │ │
│ │ │ │ │ │ │ │
│ │ profile_loader │ │ metricas │ │ metricas │ │
│ │ tool_policy │ │ registradas │ │ planas │ │
│ │ memory_injector │ │ pero en 0 │ │ │ │
│ │ classifier │ │ │ │ │ │
│ │ slo_manager │ │ │ │ │ │
│ │ precision_engine │ │ │ │ │ │
│ └──────────┬───────────┘ └────────┬─────────┘ └────┬─────┘ │
│ │ │ │ │
│ genera métricas métricas planas métricas planas│
│ con tráfico real sin tráfico sin tráfico │
└─────────────┬────────────────────────────────────────────────────┘
│ /metrics (Prometheus format)
┌──────────────────────────────────────────────────────────────────┐
│ Prometheus (192.168.1.40:9090) │
│ │
│ scrape_configs (scrape interval entre parentesis): │
│ ai-lab-gateway 192.168.1.30:8008/metrics (15s) ★ │
│ ai-lab-router 192.168.1.30:8083/metrics (15s) │
│ ai-lab-live-api 192.168.1.30:8084/metrics (15s) │
│ ai-lab-node 192.168.1.30:9100/metrics (15s) │
│ ai-lab-cadvisor 192.168.1.30:8081/metrics (30s) │
│ ai-lab-gpu-rx9070 192.168.1.50:9182/metrics (30s) │
│ ai-lab-gpu-metrics 192.168.1.50:9183/metrics (30s) │
│ ai-lab-gpu-rx7900xt 192.168.1.60:9182/metrics (30s) ⚠ DOWN │
│ cloudflare-tunnel 192.168.1.30:2000/metrics (15s) │
│ wifi-exporter .40 — infra adicional │
│ unifi-exporter .40 — infra adicional │
│ smartctl-exporter .40 — infra adicional │
│ windows-exporter .50/.200 — nodos Windows │
│ │
│ rule_files: │
│ /home/albert/docker/monitorizacion/prometheus/ │
│ config/rules/ai-lab-route-family-alerts.yml (19 alertas) │
│ │
└──────────────────────┬───────────────────────────────────────────┘
│ query
┌──────────────────────────────────────────────────────────────────┐
│ Grafana (192.168.1.40:3000) │
│ │
│ Datasource: Prometheus (UID: PBFA97CFB590B2093) │
│ Folder: AI-LAB (15 dashboards, 3 TIERS) │
│ │
│ Provisioning: │
│ /home/albert/docker/monitorizacion/grafana/ │
│ provisioning/dashboards/AI-LAB/*.json │
│ │
│ TIER 1 (operación diaria): │
│ 00 Executive Overview ai-lab-overview │
│ 01 Routing & Models ai-lab-runtime │
│ 02 Cognitive Profiles ai-lab-profiles │
│ 03 Tool Governance ai-lab-tools │
│ 06 GPU / Inference ai-lab-gpus │
│ 09 Runtime Protection (SLO) ai-lab-slo-protection │
│ │
│ TIER 2 (troubleshooting): │
│ 04 Memory Runtime ai-lab-memory │
│ 05 Execution & Safety ai-lab-safety │
│ 07 Infrastructure ai-lab-infra │
│ 08 Incidents & Audit ai-lab-incidents │
│ 10 Streaming Quality ai-lab-streaming │
│ 11 Cold Start Analysis ai-lab-coldstart │
│ │
│ TIER 3 (profiling / avanzado): │
│ 12 Precision & Confidence ai-lab-precision │
│ 13 Cognitive Health ai-lab-cognitive-health │
│ 14 Governance Drift ai-lab-governance-drift │
│ │
└──────────────────────┬───────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────┐
│ 3 Canales de Observabilidad │
│ │
│ 1. stdout → journalctl -u ailab-gateway -f --no-pager │
│ grep "profile=" "family=" "SLO=" "evidence=" │
│ │
│ 2. audit → /opt/ai-lab/runtime/state/ │
│ governance_audit.jsonl │
│ runtime_sensor_fusion.jsonl │
│ │
│ 3. Prometheus → :8008/metrics (gateway — tráfico real) │
│ :8083/metrics (router — métricas planas) │
│ :8084/metrics (live-api — métricas planas) │
│ │
└──────────────────────────────────────────────────────────────────┘

⚠ Regla crítica: 3 procesos, no confundir métricas

Section titled “⚠ Regla crítica: 3 procesos, no confundir métricas”

AI-LAB tiene 3 procesos Python independientes, cada uno con su propio registry Prometheus. Solo el gateway (:8008) recibe tráfico de chat real. El router (:8083) y live-api (:8084) tienen los mismos counters registrados pero nunca los incrementan.

Diagnóstico rápido:

Terminal window
# Verificar qué endpoint tiene datos reales
curl -s http://192.168.1.30:8008/metrics | grep "ailab_route_family_total"
curl -s http://192.168.1.30:8083/metrics | grep "ailab_route_family_total"
curl -s http://192.168.1.30:8084/metrics | grep "ailab_route_family_total"

Regla: Las métricas que solo emite el gateway NO deben ser “primeadas” (inc(0)) en router ni live-api. Esto evita que series con valor 0 contaminen las queries PromQL de Grafana.


JobHost:PortIntervaloEstadoMétricas que contiene
ai-lab-gateway192.168.1.30:800815s★ TRÁFICO REALPerfiles, routing, tools, memoria, SLO, streaming, calidad, precision, report_grounding, sensor_fusion, evidence_guard, cognitive_health, graph, critical_path, hotspot, governance_drift
ai-lab-router192.168.1.30:808315s⚠ Sin tráficoMismas métricas registradas pero siempre en 0
ai-lab-live-api192.168.1.30:808415s⚠ Sin tráficoEstado vivo, métricas planas
ai-lab-node192.168.1.30:910015s✅ ActivoCPU, RAM, disco, red (node_exporter)
ai-lab-cadvisor192.168.1.30:808130s✅ ActivoContenedores Docker (CPU, memoria, IO)
ai-lab-gpu-rx9070192.168.1.50:918230s✅ ActivoVRAM, GPU usage, temperatura (nvidia-smi exporter)
ai-lab-gpu-metrics192.168.1.50:918330s✅ ActivoCompute metrics, tokens/s, power
ai-lab-gpu-rx7900xt192.168.1.60:918230s⛔ DOWNNodo RX7900XT apagado
ai-lab-gpu-metrics192.168.1.60:918330s⛔ DOWNNodo RX7900XT apagado
cloudflare-tunnel192.168.1.30:200015s✅ ActivoTunnel metrics, conexiones Cloudflare
wifi-exporter.40 (adicional)30s✅ ActivoRed WiFi
unifi-exporter.40 (adicional)30s✅ ActivoEstado UniFi
smartctl-exporter.40 (adicional)60s✅ ActivoSMART discos
windows-exporter.50 / .20015s✅ ActivoMétricas hosts Windows

La configuración de scrape targets está en:

/home/albert/docker/monitorizacion/prometheus/prometheus.yml

A continuación se listan todas las familias de métricas ailab_* organizadas por fase/área funcional. Salvo que se indique lo contrario, todas se generan en openai_gateway.py (:8008) con tráfico real.

ailab_greeting_fastpath_total
ailab_qwen_escalation_total
ailab_llama_fastpath_total

Contadores de decisión de ruta: saludos derivados a llama-3.1-8b, escalados a qwen2.5-14b por razón técnica.

ailab_route_family_total{family}
ailab_route_family_latency_ms{family} (histogram)
ailab_route_family_prompt_tokens_total{family}
ailab_route_family_completion_tokens_total{family}
ailab_route_family_errors_total{family}
ailab_route_family_blocked_total{family}
ailab_profile_total{profile, route_family, model}
ailab_tool_call_total{tool_name, result, policy, mode}
ailab_tool_fastpath_total
ailab_tool_fastpath_fallback_total
ailab_tool_calls_malformed_total
ailab_memory_recall_total{policy, hit}
ailab_memory_chars_injected{policy} (histogram)
ailab_memory_items_total{policy, source}
ailab_quality_score (histogram)
ailab_hallucination_risk (histogram)
ailab_stream_chunks_total{model}
ailab_stream_stalls_total{model}
ailab_stream_finish_inconsistent_total{model}
ailab_first_token_latency_ms (histogram — TTFB)
ailab_request_total_latency_ms (histogram)
ailab_completion_stream_duration_ms (histogram)
ailab_prompt_checksum_changes_total
ailab_cold_start_total{model, reason}
ailab_gpu_active_requests{node}
ailab_gpu_estimated_utilization_pct{node}
ailab_governance_blocked_actions_total
ailab_governance_blocked_actions_by_reason_total{reason}
ailab_router_chat_requests_total
ailab_router_hard_facts_hits_total
ailab_embedding_truncations_total
ailab_embedding_input_chars
ailab_recall_query_chars

Familia completa de protección adaptativa del runtime. El RuntimeSLOManager evalúa ventanas deslizantes de TTFB, timeouts, GPU y VRAM. El DegradationManager aplica niveles progresivos con anti-flapping.

ailab_runtime_slo_state{state} GREEN / YELLOW / RED
ailab_runtime_degradation_level{level} NORMAL / LIGHT / HEAVY / EMERGENCY
ailab_runtime_timeout_rate % timeouts en ventana
ailab_runtime_vram_pressure % VRAM utilizada
ailab_runtime_gpu_pressure % GPU utilizada
ailab_runtime_priority_lane_total{lane} Lane 1 (critical) / Lane 2 / Lane 3
ailab_runtime_emergency_mode_total Contador de activaciones EMERGENCY
ailab_runtime_qwen_protection_total Protección qwen activada
ailab_runtime_llama_fastpath_forced_total Forced llama routing por degradación
ailab_runtime_stream_backlog Streams en cola
ailab_circuit_breaker_state{model} OPEN / CLOSED / HALF_OPEN
ailab_slo_violations_total{violation_type} Violación de SLO
ailab_runtime_qwen_parallel Paralelismo qwen actual (1 o 2)
ailab_runtime_concurrent_streams Streams concurrentes activos

Métricas de calidad de los reportes generados. Detecta reportes sin contexto de runtime, campos faltantes, target IP no encontrada, y respuestas no grounded.

ailab_report_grounding_total{result} Reporte grounded / ungrounded
ailab_report_missing_fields_total Campos de runtime ausentes
ailab_report_target_ip_total{found} IP target resuelta / no resuelta
ailab_report_ungrounded_total Contador de reportes sin grounding

Guard de evidencia universal. Previene que el LLM afirme información sin respaldo observable.

ailab_evidence_guard_blocks_total{reason}
ailab_evidence_guard_confidence_downgrade_total
ailab_evidence_guard_degraded_responses_total
ailab_evidence_guard_unknown_state_total

Fusión de sensores del runtime: combina señales de health, topología, GPU, SLO, estado de modelo y watchdog en un snapshot unificado de estado observado.

ailab_sensor_fusion_snapshots_total
ailab_sensor_fusion_sensors_active
ailab_sensor_fusion_sensors_degraded
ailab_observed_runtime_context_size_bytes (histogram)

Precisión operacional extrema: manejo de evidencia parcial, conflictos de autoridad, confianza degradada y señales contradictorias.

ailab_operational_precision_score Score 0.0–1.0 de precisión
ailab_confidence_integrity_score Score 0.0–1.0 de integridad
ailab_authority_conflicts_total Conflictos entre fuentes de autoridad
ailab_partial_state_total Estados parcialmente observados
ailab_discovery_leakage_total Discoverable filtrado como active
ailab_stale_evidence_total Evidencia fuera de ventana
ailab_precision_degraded_responses_total Respuestas con precisión degradada
ailab_confidence_downgrade_total Downgrades de confianza

ailab_cognitive_health_score{layer}

Score compuesto de salud cognitiva por capa (routing, profiles, memory, tools, governance). 0.0–1.0, derivado de métricas observadas.


ailab_graph_routes_mapped_total
ailab_graph_nodes_active_total
ailab_graph_correlation_score

Correlación entre el grafo cognitivo GitNexus y el runtime observado. Score alto = topología real coincide con el análisis estructural.


ailab_critical_path_latency_ms (histogram)
ailab_critical_path_bottleneck_blocks_total
ailab_critical_path_health_score

Análisis de ruta crítica: latencia extrema, cuellos de botella, salud del camino más lento.


ailab_hotspot_requests_total{hotspot}
ailab_hotspot_error_rate{hotspot}
ailab_hotspot_latency_p99_ms{hotspot}

Historial de hotspots: funciones o endpoints que concentran tráfico, errores o latencia.


ailab_governance_drift_detections_total
ailab_governance_drift_severity{severity}
ailab_governance_drift_remediation_total

Detección de drift entre la governance declarada y la observada en runtime. Severidad: LOW / MEDIUM / HIGH / CRITICAL.


ailab_tool_fastpath_total
ailab_tool_fastpath_fallback_total

CategoríaFamilias
Routing (F19)6
Routing tool-specific (F29.3.1)3
Perfiles (F21)1
Tool governance (F22 + F22B)4
Memoria (F23)3
Calidad (F23B)2
Streaming (F24)3
Latencia (F24)3
Checksums (F24)1
Cold starts1
GPU2
Gobernanza2
Router base4
SLO Enforcement (F29.4)14
Report grounding (F29.4.1)4
Evidence guard (F30H)4
Sensor fusion (F30I)4
Precision (F36B)8
Cognitive health (F37A)1
Graph correlation (F37B)3
Critical path (F37C)3
Hotspot history (F37D)3
Governance drift (F37E)3
Legacy2
Total~80+ familias

PanelQuery
Gateway UPup{job="ai-lab-gateway"}
Req/minsum(rate(ailab_route_family_total[5m]))
Avg Latencyavg by (family)(rate(ailab_route_family_latency_ms_sum[5m]) / rate(ailab_route_family_latency_ms_count[5m]))
Profiles Activecount(count by (profile)(rate(ailab_profile_total[5m])))
SLO Stateailab_runtime_slo_state
PanelQuery
Requests by Routesum(rate(ailab_route_family_total[5m])) by (family)
Latency by Routeavg by (family)(rate(ailab_route_family_latency_ms_sum[5m]) / rate(ailab_route_family_latency_ms_count[5m]))
Prompt Tokensrate(ailab_route_family_prompt_tokens_total[5m])
Errors by Routerate(ailab_route_family_errors_total[5m])
Greeting FastPathrate(ailab_greeting_fastpath_total[5m])
PanelQuery
Requests by Profilesum(rate(ailab_profile_total[5m])) by (profile)
Profile vs Routesum(rate(ailab_profile_total[5m])) by (profile, route_family)
Model by Profilesum(rate(ailab_profile_total[5m])) by (profile, model)
PanelQuery
Tool Calls by Namesum(rate(ailab_tool_call_total[5m])) by (tool_name)
Allowed vs Blockedsum(rate(ailab_tool_call_total[5m])) by (result)
By Policy Modesum(rate(ailab_tool_call_total[5m])) by (policy, mode)
Blocked by Reasonrate(ailab_governance_blocked_actions_by_reason_total[5m])
PanelQuery
GPU Active Requestsailab_gpu_active_requests
GPU Utilizationailab_gpu_estimated_utilization_pct
GPU by Nodeailab_gpu_estimated_utilization_pct{node="rx9070"}
PanelQuery
SLO Stateailab_runtime_slo_state
Degradation Levelailab_runtime_degradation_level
Timeout Rateailab_runtime_timeout_rate
VRAM Pressureailab_runtime_vram_pressure
GPU Pressureailab_runtime_gpu_pressure
Priority Lane Usagerate(ailab_runtime_priority_lane_total[5m])
Circuit Breakersailab_circuit_breaker_state
SLO Violationsrate(ailab_slo_violations_total[5m])
Concurrent Streamsailab_runtime_concurrent_streams
Qwen Parallelailab_runtime_qwen_parallel
PanelQuery
Recall by Policysum(rate(ailab_memory_recall_total[5m])) by (policy, hit)
Hit Ratiosum(rate(ailab_memory_recall_total{hit="true"}[5m])) / sum(rate(ailab_memory_recall_total[5m]))
Chars Injected p95histogram_quantile(0.95, sum(rate(ailab_memory_chars_injected_bucket[5m])) by (le, policy))
Items by Sourcesum(rate(ailab_memory_items_total[5m])) by (source)
PanelQuery
Governance Blockedrate(ailab_governance_blocked_actions_total[5m])
Blocked by Routerate(ailab_route_family_blocked_total[5m])
Tool Malformedrate(ailab_tool_calls_malformed_total[5m])
Fastpath Fallbackrate(ailab_tool_fastpath_fallback_total[5m])
Evidence Guard Blocksrate(ailab_evidence_guard_blocks_total[5m])
PanelQuery
Node CPU100 - avg by (instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100
Node Memory(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100
Container CPUsum(rate(container_cpu_usage_seconds_total[5m])) by (name)
PanelQuery
Route Family Blockedrate(ailab_route_family_blocked_total[5m])
Governance by Reasonrate(ailab_governance_blocked_actions_by_reason_total[5m])
Tool Recall Fallbackrate(ailab_tool_fastpath_fallback_total[5m])
Hotspot Error Raterate(ailab_hotspot_error_rate[5m])
PanelQuery
Chunks per Streamrate(ailab_stream_chunks_total[5m])
Stream Stallsrate(ailab_stream_stalls_total[5m])
Finish Inconsistencyrate(ailab_stream_finish_inconsistent_total[5m])
TTFB p50/p95histogram_quantile(0.5, rate(ailab_first_token_latency_ms_bucket[5m]))
PanelQuery
Cold Starts by Modelrate(ailab_cold_start_total[5m])
Cold Start Reasonrate(ailab_cold_start_total[5m]) by (reason)
PanelQuery
Precision Scoreailab_operational_precision_score
Confidence Integrityailab_confidence_integrity_score
Authority Conflictsrate(ailab_authority_conflicts_total[5m])
Discovery Leakagerate(ailab_discovery_leakage_total[5m])
Stale Evidencerate(ailab_stale_evidence_total[5m])
PanelQuery
Health Score by Layerailab_cognitive_health_score
Graph Correlationailab_graph_correlation_score
Critical Path Healthailab_critical_path_health_score
Critical Path Latencyhistogram_quantile(0.95, rate(ailab_critical_path_latency_ms_bucket[5m]))
PanelQuery
Drift Detectionsrate(ailab_governance_drift_detections_total[5m])
Drift Severityailab_governance_drift_severity
Remediationsrate(ailab_governance_drift_remediation_total[5m])

19 reglas activas en /home/albert/docker/monitorizacion/prometheus/config/rules/ai-lab-route-family-alerts.yml.

🔴 ROJO — STOP burn-in (detención inmediata si se activan)

Section titled “🔴 ROJO — STOP burn-in (detención inmediata si se activan)”
AlertaExpresiónSeveridadDetecta
ToolFastpathLeakageincrease(ailab_tool_fastpath_total{tool_fastpath="true"}[5m]) > 0criticalTool fastpath activo en ruta que no debería
GovernanceUnexpectedBlocksincrease(ailab_governance_blocked_actions_total[5m]) > 0criticalBloqueos de gobernanza inesperados
EmptyResponsesSustainedrate(ailab_route_family_errors_total{error="empty_response"}[5m]) > 0.1criticalRespuestas vacías sostenidas
HardFactsAccidentalincrease(ailab_router_hard_facts_hits_total[5m]) > 0criticalHARD_FACTS inyectado accidentalmente
MemoryRecallMinimalincrease(ailab_memory_recall_total{policy="minimal"}[5m]) > 0criticalMemory recall en ruta minimal (contaminación)
PromptInflationRunawayrate(ailab_route_family_prompt_tokens_total[5m]) > 50000criticalInflation runaway de tokens de prompt
FinishInconsistencyHighrate(ailab_stream_finish_inconsistent_total[5m]) > 1criticalInconsistencia alta de finalización stream
StreamStallsRepeatedrate(ailab_stream_stalls_total[5m]) > 3criticalStream stalls repetidos
AlertaExpresiónSeveridadDetecta
MinimalRouteRegressionincrease(ailab_route_family_prompt_tokens_total{family="minimal"}[10m]) > 500warningContexto pesado en ruta ligera
ToolFastpathLatencySpikeavg by (tool_name)(rate(ailab_tool_call_total[5m])) > 8warningFastpath lento o backend degradado
CognitiveRouteExplosionincrease(ailab_route_family_prompt_tokens_total{family="cognitive"}[10m]) > 12000warningRecall runaway en ruta cognitiva
RouteFamilyErrorRateincrease(ailab_route_family_errors_total[5m]) > 0warningErrores recientes en cualquier ruta
GovernanceBlocksSpikeincrease(ailab_route_family_blocked_total[10m]) > 10warningBloqueos masivos de governance
SLOViolationRateHighrate(ailab_slo_violations_total[5m]) > 0warningViolaciones de SLO recientes
GPUVRAMPressureHighailab_runtime_vram_pressure > 85warningPresión de VRAM > 85%
CircuitBreakerTrippedailab_circuit_breaker_state{state="OPEN"} > 0warningCircuit breaker abierto en algún modelo
ProfileUnknownincrease(ailab_profile_total{profile="unknown"}[5m]) > 0warningPerfil no clasificado
ToolBudgetExceededsum(rate(ailab_tool_call_total{result="blocked_by_policy"}[5m])) > 0warningTools bloqueadas por política
MemoryFallbacksum(rate(ailab_memory_recall_total{policy="fallback"}[5m])) > 0warningMemory injector fallando a legacy

ServicioURL
Grafanahttp://192.168.1.40:3000
Prometheushttp://192.168.1.40:9090
Gateway métricashttp://192.168.1.30:8008/metrics ★ tráfico real
Router métricashttp://192.168.1.30:8083/metrics ⚠ sin tráfico
Live API métricashttp://192.168.1.30:8084/metrics ⚠ sin tráfico

⚠ NOTA: 192.168.1.30:3001 es Grafana v12.0.2, NO AnythingLLM. AnythingLLM está en 192.168.1.50:3001 (LAN).


Los dashboards se cargan automáticamente desde:

/home/albert/docker/monitorizacion/grafana/provisioning/dashboards/AI-LAB/

Los archivos *.json se importan en caliente. Recarga sin reiniciar:

Terminal window
docker exec grafana kill -HUP 1

Las reglas de alerta están en:

/home/albert/docker/monitorizacion/prometheus/config/rules/ai-lab-route-family-alerts.yml

Recarga de reglas:

Terminal window
docker exec prometheus kill -HUP 1

Cuando un panel Grafana muestra “Sin datos”, seguir este orden:

  1. Verificar que la métrica existe en el endpoint correcto:

    Terminal window
    curl -s http://192.168.1.30:8008/metrics | grep "NOMBRE_METRICA"
  2. Si existe pero con valor 0, verificar que el code path se ejecuta:

    • Feature flags activos (AI_LAB_ENABLE_MEMORY_INJECTOR, AI_LAB_ENABLE_PROFILES, etc.)
    • Import errors silenciosos
    • Que el perfil/ruta correcta esté recibiendo tráfico
  3. Si no existe en :8008 pero sí en :8083 o :8084, el tráfico va al proceso equivocado. El gateway (:8008) es el único que recibe tráfico de chat real.

  4. Si la métrica existe con datos en :8008 pero Grafana no la ve, verificar la query PromQL directamente:

    Terminal window
    curl -s "http://192.168.1.40:9090/api/v1/query?query=METRICA" | jq .
  5. Las métricas rate() requieren ≥5 min de tráfico continuo para devolver datos.

  6. Métricas que dependen de feature flags:

    • AI_LAB_ENABLE_MEMORY_INJECTOR=falseailab_memory_* = 0
    • AI_LAB_ENABLE_PROFILES=falseailab_profile_total = 0
    • AI_LAB_SLO_DRY_RUN=true → SLO enforcement observado pero no activo
SíntomaCausa probable
Todas las ailab_* en 0Gateway caído o scrape target mal configurado
Solo ailab_route_family_* en 0Zero traffic window o classifier no ejecutándose
ailab_memory_* en 0AI_LAB_ENABLE_MEMORY_INJECTOR=false
ailab_slo_* planasAI_LAB_SLO_DRY_RUN=true o SLO disabled
ailab_precision_* planasprecision_engine no inicializado o import falló
ailab_graph_* planasGitNexus index no disponible o no se consultó
ailab_* solo en :8083Router recibiendo tráfico que debería ir al gateway

Además de Prometheus y stdout, el runtime emite eventos de auditoría en JSONL:

/opt/ai-lab/runtime/state/governance_audit.jsonl
/opt/ai-lab/runtime/state/runtime_sensor_fusion.jsonl

Eventos clave de gobernanza:

EventoDescripción
profile_appliedPerfil cognitivo aplicado a una request
tool_call_allowedTool aceptada por política
tool_call_blocked_by_policyTool bloqueada por política activa
tool_call_blocked_by_denylistTool bloqueada por denylist
memory_injector_failedFallo del memory injector
route_family_selectedRuta clasificada (family + variant)
slo_state_changeCambio de estado SLO
degradation_level_changeCambio de nivel de degradación
circuit_breaker_state_changeCambio de estado de circuit breaker
evidence_guard_blockBloqueo por evidence guard
governance_drift_detectedDrift entre governance declarada y observada

Snapshots periódicos del estado observado del runtime:

CampoDescripción
timestampISO 8601
gateway_healthSalud del gateway
inference_nodesEstado de nodos de inferencia
active_modelsModelos activos
slo_stateEstado SLO actual
degradation_levelNivel de degradación
topologyTopología observada
evidence_confidenceConfianza de evidencia

Ver en vivo:

Terminal window
tail -f /opt/ai-lab/runtime/state/governance_audit.jsonl | jq .

Filtrar por evento:

Terminal window
grep '"profile_applied"' /opt/ai-lab/runtime/state/governance_audit.jsonl | tail -20 | jq .