Volver a la wiki

ADR: ACK y APPLIED escriben resolved_at; EXPIRE no (decisión Edu 14-08-2026)

Decisión

Reconocer (ACK) y aplicar un fix con éxito escriben resolved_at; la expiración por timeout NO.

Decidido con Edu el 14-08-2026 durante la sesión de cierre de task #222.


Problema que resolvía

El campo AIInsight.resolved_at existía desde la Fase 1 (junio 2026) pero ningún código lo escribía (0 de 8.663 insights en PROD). Consecuencias:

  1. MTTR = 0 estructuralmente → las tarjetas de “tiempo medio de resolución” mentían.
  2. Tasa de resolución = 0% → aunque miles de insights llevaban meses reconocidos o arreglados.
  3. SLA Compliance rojo perpetuo → 8.515 de 8.663 insights marcados como “incumplimiento” automáticamente porque el sistema nunca veía un cierre real.

Semántica elegida

El producto no tiene un acto de cierre independiente. La apertura ocurre con el diagnóstico; el cierre ocurre con:

EventoEscribe resolved_atRazonamiento
ACK (reconocimiento manual)✅Intervención humana → resolución iniciada. El ticket está cerrado para el usuario.
Auto-resolución (conectividad recuperada)✅Sistema detecta recuperación → equivalente a ACK automático.
Fix aplicado con éxito✅Cambio confirmado como funcional → issue resuelto.
Fix aplicado y FALLA❌Intento fallido. Queda abierto hasta ACK o nueva tentativa.
Expiración (timeout)❌Abandono, no resolución. Nadie lo atendió.

Implicación para métricas

Con esta semántica:


Por qué no caducar

Caducar = “pasó el tiempo de espera, nadie lo miró, se marca como expirado”. No es intervención.

Si contáramos expiración como resolución:

Conclusión: expiración es observabilidad (cuántos se ignoran) pero no resolución.


Nota: revierte sa4 M13

El criterio anterior (sa4 del Milestone 13, agosto) decía “acknowledgement ≠ resolution”. Esto se revierte: en el contexto de un producto SaaS sin segunda capa de “cierre administrativo”, reconocer = cerrar el ticket para el usuario. Eso sí cuenta.


Implementación

Véase [[feature—monitoring—itsm-ciclo-cierre]] para detalles de cómo se escribe resolved_at en cada caso.


Véase también

Subir