Objetivo
Section titled “Objetivo”FASE 29.4.1 resolvió el grounding — los reportes ya usan OBSERVED_RUNTIME real y no responden “no tengo información”. Pero la presentación seguía siendo genérica, sin clasificación técnica:
- qwen3.6-27b aparecía como nodo disponible en lugar de DESACTIVADO
- RX7900XT aparecía como nodo offline ambiguo en lugar de INVENTARIADO
- El informe mezclaba datos observados, inferidos y no disponibles
- El tono era demasiado chatbot genérico
Cambios
Section titled “Cambios”Modificado: runtime/context/report_runtime_context.py
Section titled “Modificado: runtime/context/report_runtime_context.py”Reestructuración completa del contexto OBSERVED_RUNTIME:
- Modelos separados en tres categorías:
models.active: llama-3.1-8b, qwen2.5-coder-14b, nomic-embedmodels.disabled: qwen/qwen3.6-27b condisabled_reasonmodels.discovered: lmstudio-community/qwen2.5-coder-14b
- Nodos separados en dos categorías:
inference_nodes.active: RX9070 (online, primary runtime)inference_nodes.inventory: RX7900XT (offline, future backend,active_runtime: false)
- Servicios separados en tres categorías:
services.core: gateway, router, live-apiservices.support: docs, heartbeat, metrics, runnerservices.observability: prometheus, grafana
- Data quality: nueva sección
data_qualityconobserved_fields,inferred_fields,missing_fields - Report metadata:
_report_type,_runtime_generation,_grounded_runtime,_grounding_confidence
Modificado: runtime/prompts/report_prompt.md
Section titled “Modificado: runtime/prompts/report_prompt.md”Reescritura completa del system prompt para reportes:
- Tono: TÉCNICO / OPERACIONAL / PRECISO / OBSERVACIONAL
- Estructura obligatoria de 12 secciones fijas
- Clasificación explícita: OBSERVADO / INFERIDO / NO DISPONIBLE
- Reglas: qwen3.6 es DESACTIVADO, RX7900XT es INVENTARIADO
- Prohibido: secciones dinámicas, texto redundante, HARD_FACTS, inventar datos
Modificado: runtime/telemetry/prometheus_metrics.py
Section titled “Modificado: runtime/telemetry/prometheus_metrics.py”+3 métricas Prometheus:
ailab_report_model_classification_total(labels: status)ailab_report_node_classification_total(labels: status)ailab_report_data_quality_total(labels: quality)
Nuevo: tests/test_report_presentation_29_4_2.py
Section titled “Nuevo: tests/test_report_presentation_29_4_2.py”35+ assertions cubriendo:
- Clasificación correcta de modelos (active/disabled/discovered)
- qwen3.6 nunca en active
- Nodos activos vs inventario
- Servicios por categoría
- Data quality fields
- Report metadata
- Legacy
gpu_nodeseliminado report_prompt.mdcon 12 secciones, tono correctoextract_target_ipregression
Validación
Section titled “Validación”# Testspython3 tests/test_report_presentation_29_4_2.py
# Build Astrocd /opt/ai-lab/apps/ialab-docs && npx astro build --log-level=infoCheckpoint
Section titled “Checkpoint”CP-29.4.2-REPORT-PRESENTATION-STABLE