Resumen
Este documento es el plan operacional de traspaso del proyecto Pedido Sugerido. Articula la transición desde el modelo "Tuxpas opera · AJE observa" hacia "AJE opera de forma autónoma · Tuxpas acompaña ante incidentes". Es el complemento natural del Catálogo de Monitoring ([[DOC-AF-08-monitoring]]): este define quién responde y aquél define a qué responde.
El traspaso se materializa en cinco bloques:
- Sesiones de capacitación (6 sesiones de 2h, distribuidas en sem 9 y 10)
- Runbooks operacionales (6 runbooks en formato Markdown, versionados en el repo)
- Documentación entregada (15 artefactos · diagramas · matrices · políticas)
- Criterios "AJE autónomo" (6 pruebas concretas que validan la autonomía)
- Acompañamiento post-entrega (2 semanas de garantía + plan de comunicación)
El cierre formal del traspaso lo certifica la Acta de Conformidad ([[DOC-AF-10-acta-conformidad]]).
Filosofía del traspaso
Tres principios
-
Documentación como producto · no como subproducto · Los runbooks no son notas internas; son artefactos versionados, revisados y testeados con AJE en escenarios reales. Si AJE no puede ejecutar un runbook sin asistencia, el runbook no está terminado.
-
Capacitación dialogada · no expositiva · Cada sesión combina 30% explicación, 50% hands-on con el ambiente productivo (en una corrida controlada) y 20% Q&A. AJE conduce los últimos 20 minutos del ejercicio sin Tuxpas guiando.
-
Autonomía progresiva · no instantánea · Durante las 2 semanas de acompañamiento post-entrega, AJE responde primero y Tuxpas valida; no al revés. Tuxpas interviene únicamente si AJE escala o si una alerta Critical no es atendida en SLA.
Riesgo principal y mitigación
El riesgo recurrente en traspasos MLOps es la dependencia residual: AJE acepta el traspaso formal pero, ante el primer incidente real, escala a Tuxpas porque no tiene el contexto profundo del pipeline. Mitigación:
- Sesiones 3 y 4 son conducidas en parte por AJE (Tuxpas observa)
- Durante el acompañamiento, las primeras 2 alertas Critical reales son tratadas por AJE con Tuxpas en modo "silent pair"
- Cada runbook tiene un dry-run obligatorio en la sesión correspondiente
Sesiones de capacitación
Cronograma resumen
| # | Sesión | Sem | Día propuesto | Duración | Facilitador | Asistentes obligatorios |
|---|---|---|---|---|---|---|
| 1 | Operación diaria del pipeline | 9 | Lun 20 jul | 2h | Tuxpas Dev Sr (Joseph) | AJE oncall + AJE analyst |
| 2 | Monitoreo y respuesta a alertas | 9 | Mié 22 jul | 2h | Tuxpas SL (Adrian) | AJE oncall |
| 3 | Agregar países nuevos al pipeline | 9 | Vie 24 jul | 2h | Tuxpas Dev Sr | AJE analyst |
| 4 | Promoción de modelos en Registry | 10 | Lun 27 jul | 2h | Tuxpas SL | AJE analyst + AJE gov |
| 5 | Reentrenamiento y manejo de drift | 10 | Mié 29 jul | 2h | Tuxpas SL + Dev Sr | AJE analyst + AJE oncall |
| 6 | Troubleshooting y recorrido de runbooks | 10 | Vie 31 jul | 2h | Tuxpas Dev Sr | AJE oncall |
Total: 12 horas de capacitación distribuidas en 2 semanas. Sesiones grabadas y almacenadas en S3 (bucket aje-dev-analytics-artifacts-s3, prefix pedido_sugerido/handover/recordings/) con retención de 1 año.
Sesión 1 · Operación diaria del pipeline
Objetivo: AJE entiende qué pasa cada día sin que alguien lo gatille y qué herramienta usar para inspeccionar resultados.
Agenda (2h):
| Min | Bloque | Contenido |
|---|---|---|
| 0–10 | Apertura | Recordar el objetivo de la sesión, qué saldrá del ejercicio |
| 10–35 | Arquitectura recap | Diagrama de flujo (EventBridge → Lambda → SM Pipeline → Outputs) · revisar [[DOC-AF-05-arquitectura]] |
| 35–60 | Tour de la consola | Console walkthrough · SageMaker Studio · CloudWatch Logs · S3 outputs · DynamoDB config |
| 60–90 | Hands-on · ejercicio 1 | AJE conduce: localizar la última corrida de Ecuador en SM Studio, identificar duración, verificar que los outputs llegaron a S3 |
| 90–110 | Hands-on · ejercicio 2 | AJE conduce: leer la configuración de Ecuador en DynamoDB y entender qué pasa si cambia min_qty |
| 110–120 | Q&A · cierre | Pendientes · próxima sesión |
Material entregado:
- Slides PDF de la sesión
- [[RB-01-operacion-diaria]] · runbook
- Diagrama de arquitectura (parte de DOC-AF-05)
- Cheat sheet de comandos (AWS CLI · SM Studio shortcuts)
Criterio de éxito: AJE oncall completa ambos ejercicios sin asistencia en una corrida del día siguiente (martes 21 jul).
Sesión 2 · Monitoreo y respuesta a alertas
Objetivo: AJE distingue Critical / Warning / Info, interpreta correctamente cada alarma del catálogo y ejecuta la mitigación inicial.
Agenda:
| Min | Bloque | Contenido |
|---|---|---|
| 0–15 | Recap | Repasar el modelo de severidades · SLA por nivel (DOC-AF-08) |
| 15–45 | Tour del catálogo | Recorrer las 21 alarmas · explicar qué dispara cada una y cómo se diferencia de las cercanas |
| 45–75 | Hands-on · alerta simulada | Tuxpas dispara una falla controlada en el step Limpieza · AJE oncall recibe la alerta, identifica causa, ejecuta runbook de troubleshooting |
| 75–105 | Hands-on · alerta de drift | Tuxpas inyecta una distribución alterada en datos de validación · AJE interpreta el reporte de Model Monitor |
| 105–120 | Q&A | Casos extremos · alertas duplicadas |
Material entregado:
- Slides PDF
- [[RB-02-respuesta-alertas]] · runbook
- Catálogo de alarmas (DOC-AF-08) impreso/encuadernado para referencia
- Plantillas de comunicación al cliente interno (para Warning · Critical)
Criterio de éxito: AJE oncall responde correctamente a una alerta inyectada por Tuxpas en una ventana de 1h posterior a la sesión (sin asistencia).
Sesión 3 · Agregar países nuevos al pipeline
Objetivo: AJE puede onboardar un país nuevo (p. ej. Bolivia · Argentina) sin involucrar a Tuxpas.
Agenda:
| Min | Bloque | Contenido |
|---|---|---|
| 0–15 | Recap | Modelo de configuración multi-país en DynamoDB · estructura del prefix en S3 |
| 15–45 | Checklist conceptual | Recorrer el checklist de [[RB-03-agregar-pais]]: validación de schemas · creación de config · trigger inicial |
| 45–90 | Hands-on · onboarding ficticio | AJE conduce: agregar un país ficticio "Sandbox" usando datos sintéticos · ejecutar pipeline · validar outputs |
| 90–110 | Hands-on · troubleshooting | Tuxpas inyecta 2 errores típicos (schema mal · prefix mal nombrado) · AJE diagnostica |
| 110–120 | Q&A | Casos especiales · países con schema divergente |
Material entregado:
- [[RB-03-agregar-pais]] · runbook (35+ pasos)
- Plantillas de configuración DynamoDB (JSON)
- Checklist impreso (pre-flight · in-flight · post-flight)
Criterio de éxito: AJE analyst onboarda un país sandbox sin asistencia, antes del final de sem 10.
Sesión 4 · Promoción de modelos en el Registry
Objetivo: AJE entiende el flujo Register → Pending → Approved/Rejected y conduce una aprobación real.
Agenda:
| Min | Bloque | Contenido |
|---|---|---|
| 0–20 | Recap conceptual | Modelo de Stages en SageMaker Model Registry · qué significa Approved en este proyecto (DOC-AF-04) |
| 20–50 | Tour del Registry | Recorrer un Model Package real · revisar métricas · ver Model Card · ver historial de aprobaciones |
| 50–80 | Hands-on · aprobación | AJE analyst aprueba un modelo nuevo (con métricas mejores que baseline) desde Studio · firma con su usuario · documenta razón |
| 80–105 | Hands-on · rechazo | AJE rechaza un modelo "trampa" (métricas peores) · documenta razón |
| 105–120 | Q&A | Reversibilidad · qué hacer si se aprueba por error |
Material entregado:
- [[RB-04-promocion-modelos]] · runbook
- Plantilla de "razón de aprobación" (usada en el campo Description del Model Package)
- Tabla de gates (DOC-AF-04 · sección de criterios)
Criterio de éxito: AJE analyst aprueba y rechaza, respectivamente, dos modelos en una ventana de 24h post-sesión.
Sesión 5 · Reentrenamiento y manejo de drift
Objetivo: AJE sabe cuándo el sistema reentrenará solo (Nivel 3), cuándo debe intervenir y qué hacer ante drift recurrente.
Agenda:
| Min | Bloque | Contenido |
|---|---|---|
| 0–25 | Marco conceptual | Tres tipos de drift (Schema · Data · Concept) · árboles de decisión de respuesta |
| 25–60 | Tour del retrain loop | Revisar la Lambda de retrain · cooldown · disparadores · DynamoDB de retrain history |
| 60–95 | Hands-on · drift simulado | Tuxpas inyecta drift de datos en un país · AJE observa cómo el sistema reacciona (Nivel 3 activado) · AJE valida el modelo nuevo |
| 95–115 | Cuándo intervenir manualmente | Casos en los que el retrain automático no debería correr · cómo pausarlo desde Studio |
| 115–120 | Q&A |
Material entregado:
- [[RB-05-drift-retraining]] · runbook
- Diagrama de árbol de decisión (qué tipo de drift · qué respuesta)
- Lista de feature flags para deshabilitar el retrain (rollback button)
Criterio de éxito: AJE pausa exitosamente un retrain en curso y lo reactiva luego.
Sesión 6 · Troubleshooting y recorrido de runbooks
Objetivo: AJE recorre cada runbook entregado, los ubica en el repo, valida que están comprensibles y los aprueba formalmente.
Agenda:
| Min | Bloque | Contenido |
|---|---|---|
| 0–15 | Repo tour | Estructura del repo de docs · cómo se versionan los runbooks · quién aprueba un cambio |
| 15–95 | Recorrido por runbook | Para cada uno de los 6 runbooks: AJE lo lee, identifica un paso ambiguo o débil, sugiere mejora · Tuxpas ajusta in situ |
| 95–115 | Sandbox de incidentes | Tuxpas plantea 3 incidentes ficticios · AJE elige y ejecuta el runbook correcto |
| 115–120 | Cierre | Firma de aprobación de runbooks |
Material entregado:
- Compilado PDF de los 6 runbooks (versión "as-delivered")
- Acta interna de aprobación de runbooks (firmada por AJE oncall y AJE analyst)
Criterio de éxito: AJE firma el acta interna confirmando que los 6 runbooks están listos para uso productivo.
Runbooks entregados
Todos los runbooks viven en aje-analytics-model-pedido-sugerido/docs/runbooks/ versionados con el código. Cada uno sigue una plantilla común:
# RB-XX · Título
## Cuándo ejecutar
## Pre-requisitos · accesos · credenciales
## Pasos numerados (1, 2, 3...)
## Validación post-ejecución
## Rollback (si aplica)
## Escalamiento (a quién y cuándo)
## Anexos · comandos · queries
RB-01 · Operación diaria del pipeline
Cuándo: Cada mañana, antes de las 10:00 hora Perú, AJE oncall revisa la salud del pipeline del día anterior.
Pasos (resumen, 12 en total):
- Abrir SageMaker Studio · revisar la lista de ejecuciones del último día (esperadas: 7 países)
- Confirmar que todas terminaron con estado
Succeeded - Para cualquier
FailedoStopped· ir a CloudWatch Logs y leer el último log group - Validar que los outputs llegaron a
s3://aje-dev-analytics-artifacts-s3/pedido_sugerido/output/{pais}/ - (...)
RB-02 · Respuesta a alertas
Cuándo: Apenas llega una alerta del SNS topic.
Lógica del runbook:
- Critical (SLA <30 min) · responder de inmediato, escalar si no se resuelve en 60 min
- Warning (SLA <4h) · documentar en DynamoDB de incidentes
- Info (sin SLA) · log only
Anexo importante: tabla de mapping alarma → runbook específico (p. ej. alarma 11 schemadrift → RB-03 sección "schemas divergentes").
RB-03 · Agregar país nuevo
Cuándo: Negocio AJE solicita incluir un nuevo país en el pipeline.
Pasos: 35+, agrupados en 5 fases:
| Fase | Acción |
|---|---|
| 1 · Preparación | Validar formato del schema · acordar prefix en S3 · acordar config |
| 2 · Configuración | Crear item en DynamoDB · cargar archivo de mapeo de productos |
| 3 · Smoke test | Ejecutar pipeline manualmente · validar outputs |
| 4 · Habilitación | Agregar el país al EventBridge schedule |
| 5 · Validación post-go-live | Monitorear las primeras 3 corridas |
RB-04 · Promoción de modelos
Cuándo: Llega notificación de "Model Package registered as Pending".
Pasos: 15, agrupados en 3 fases:
| Fase | Acción |
|---|---|
| 1 · Inspección | Revisar métricas vs baseline · revisar Model Card |
| 2 · Decisión | Aprobar / Rechazar según gates definidos en [[DOC-AF-04-metricas-criterios]] |
| 3 · Documentación | Llenar campo Description con razón de la decisión · log en DynamoDB |
RB-05 · Drift y retraining
Cuándo: Llega alerta de tipo datadrift, schemadrift o ndcgdrop.
Pasos: 20+, con árbol de decisión inicial:
¿Qué tipo de drift?
├─ Schema · halt pipeline · investigar fuente · escalar a AJE analyst
├─ Data · PSI > 0.25 · validar features · permitir retrain automático en Nivel 3
└─ Concept · NDCG dropped 5%+ por 2 semanas · revisar lógica de negocio · forzar retrain
RB-06 · Troubleshooting general
Cuándo: Cualquier escenario no cubierto por los runbooks anteriores.
Es el "manual de bolsillo": índice de los 30 errores más comunes identificados durante el desarrollo Nivel 1 y 2, cada uno con su causa raíz típica y los primeros 3 pasos de diagnóstico.
Documentación entregada
Inventario completo de artefactos entregados al cierre del proyecto. Todos en el repo aje-analytics-model-pedido-sugerido y publicados en https://aje-mlops-docs.tuxpas.com/.
| # | Artefacto | Tipo | Ubicación | Owner |
|---|---|---|---|---|
| 1 | DOC-AF-01 · Inventario de scripts | MD + HTML | docs/analisis-funcional/ |
Tuxpas |
| 2 | DOC-AF-02 · Schema de datos | MD + HTML | docs/analisis-funcional/ |
Tuxpas |
| 3 | DOC-AF-03 · Convenciones de nombrado | MD + HTML | docs/analisis-funcional/ |
Tuxpas |
| 4 | DOC-AF-04 · Métricas y criterios | MD + HTML | docs/analisis-funcional/ |
Tuxpas |
| 5 | DOC-AF-05 · Arquitectura | MD + HTML + diagrama PNG | docs/analisis-funcional/ |
Tuxpas |
| 6 | DOC-AF-06 · Estimación de esfuerzo | MD + HTML | docs/analisis-funcional/ |
Tuxpas |
| 7 | DOC-AF-07 · RTM y DoD | MD + HTML | docs/analisis-funcional/ |
Tuxpas |
| 8 | DOC-AF-08 · Catálogo de monitoring | MD + HTML | docs/analisis-funcional/ |
Tuxpas |
| 9 | DOC-AF-09 · Plan de traspaso (este doc) | MD + HTML | docs/analisis-funcional/ |
Tuxpas |
| 10 | DOC-AF-10 · Acta de conformidad | MD + PDF firmado | docs/analisis-funcional/ |
AJE + Tuxpas |
| 11 | Runbooks RB-01 .. RB-06 | MD | docs/runbooks/ |
Tuxpas + revisado AJE |
| 12 | Diagramas C4 (L1 contexto, L2 contenedores) | PNG + draw.io fuente | docs/diagramas/ |
Tuxpas |
| 13 | Política de IAM · roles y trust policies | JSON | infra/policies/ |
Tuxpas |
| 14 | Reporte final de pruebas (regression suite) | HTML + JSON | docs/test-reports/ |
Tuxpas |
| 15 | Backlog priorizado de mejoras (Nivel 4+) | MD | docs/roadmap-futuro.md |
Tuxpas + AJE |
Persistencia post-cierre: todos los artefactos quedan en el repo bajo control de AJE. El dominio aje-mlops-docs.tuxpas.com se traslada a un bucket de AJE en la sem 10, con un redirect activo desde el bucket de Tuxpas por 3 meses.
Criterios "AJE autónomo"
Pruebas concretas que validan que AJE puede operar sin Tuxpas. Estos criterios deben cumplirse antes de firmar la [[DOC-AF-10-acta-conformidad]].
| # | Criterio | Validación | Responsable | Estado |
|---|---|---|---|---|
| 1 | AJE ejecuta una corrida manual del pipeline desde Studio sin asistencia | Logs muestran ejecución completa exitosa · timestamp registrado | AJE oncall | ⏳ |
| 2 | AJE responde a una alerta Critical inyectada por Tuxpas en SLA (<30 min) | Captura de Slack/correo con timestamp de respuesta · acción correcta ejecutada | AJE oncall | ⏳ |
| 3 | AJE aprueba un modelo en Registry usando criterios de DOC-AF-04 sin asistencia | Model Package aprobado · campo Description completo · log en DynamoDB | AJE analyst | ⏳ |
| 4 | AJE onboarda un país sandbox completo (config + smoke test + habilitación) sin asistencia | Pipeline del país sandbox corre exitosamente · output en S3 | AJE analyst | ⏳ |
| 5 | AJE pausa y reanuda un retrain en curso sin asistencia | Estado del retrain Lambda muestra pause/resume · DynamoDB lo registra | AJE oncall | ⏳ |
| 6 | AJE diagnostica un incidente ficticio del RB-06 en <15 min sin asistencia | Comentario en ticket interno con causa raíz correcta · pasos de mitigación | AJE oncall | ⏳ |
Regla: si al cierre de la sem 10 alguno de los 6 criterios no se cumple, se extiende el acompañamiento post-entrega 1 semana sin costo adicional para AJE. Si al final de esa extensión persiste, se acuerda una propuesta de soporte extendido formal.
Acompañamiento post-entrega
Plan de 2 semanas de garantía
Tras la firma de la Acta de Conformidad y el go-live a producción, Tuxpas acompaña durante 2 semanas calendario (sem 11 y 12) bajo el siguiente modelo:
| Aspecto | Detalle |
|---|---|
| Horario de respuesta | L–V · 09:00 a 18:00 hora Perú |
| Canal primario | Slack channel compartido #aje-pedido-sugerido-warranty |
| Canal secundario | Correo tuxpasdevs@gmail.com con copia al SL |
| SLA Critical | <2h en respuesta · <8h en mitigación (no resolución definitiva) |
| SLA Warning | <8h en respuesta · <48h en mitigación |
| Modo operación | Silent pair · AJE responde primero · Tuxpas observa y valida |
| Reuniones | 2 por semana · martes y jueves · 30 min · revisión de incidentes |
| Costo | Incluido en el precio del proyecto · sin facturación adicional |
Qué cubre
- Sí cubre: Bugs en código entregado por Tuxpas · errores de despliegue · alarmas falsas positivas debidas a configuración entregada · documentación con errores
- Sí cubre: Asistencia conceptual ante interpretación de runbooks · interpretación de métricas
- No cubre: Cambios funcionales nuevos (features adicionales)
- No cubre: Bugs causados por modificaciones realizadas por AJE post-entrega
- No cubre: Incidentes derivados de cambios en infraestructura AWS fuera del scope del proyecto
Mecanismo de cierre del acompañamiento
Al final de la sem 12, se realiza una reunión de cierre formal (60 min) con:
- Revisión de los criterios "AJE autónomo" (deben estar todos en verde)
- Inventario de incidentes atendidos durante el warranty con su causa raíz
- Lista de mejoras sugeridas (input para una eventual fase Nivel 4)
- Firma de Acta de Cierre del Acompañamiento (formato corto · 1 página)
Si al cierre quedan issues abiertos, se documentan en el acta con responsable y fecha-objetivo. Tuxpas mantiene best-effort por 30 días adicionales para esos issues específicos.
Plan de comunicación
Canales activos durante el warranty
| Canal | Propósito | Frecuencia | Owner |
|---|---|---|---|
Slack #aje-pedido-sugerido-warranty |
Operación diaria · alertas · Q&A | Continuo | Compartido |
| Correo a AJE (stakeholders) | Reporte semanal de status | Viernes 17:00 | Tuxpas SL |
| Reunión status warranty | Revisión sincrónica de incidentes | Martes y jueves 10:00 | Tuxpas SL |
Slack #aje-pedido-sugerido-incidentes |
Tracking individual de incidentes Critical | Por incidente | AJE oncall |
| Reunión de cierre | Cierre formal de warranty | Una vez · viernes sem 12 | Tuxpas SL + AJE PM |
Reporte semanal de warranty
Plantilla del reporte que Tuxpas envía cada viernes durante las 2 semanas de warranty:
== AJE Pedido Sugerido · Warranty Status · Semana N ==
Incidentes esta semana:
- Critical: X (Y resueltos · Z en curso)
- Warning: X
- Info: X
Tiempo total de Tuxpas en warranty esta semana: X horas
Issues abiertos:
- ID-001 · descripción · responsable · fecha objetivo
- (...)
Próxima semana · foco:
- (...)
Próximos pasos
Acciones inmediatas (durante semana del AF · 18–22 may)
- Validar este plan con AJE (Sesión 2 · jueves 21 may) · puntos de discusión: cantidad de sesiones, fechas tentativas, modelo de warranty
- Confirmar disponibilidad de los responsables AJE para las 6 sesiones de capacitación
- Acordar los canales de comunicación (qué Slack workspace usaremos · creación del channel)
- Reservar las fechas en calendario AJE ya en el AF, incluso si las agendas detalladas se ajustan después
Acciones durante el proyecto (sem 2–8)
- Escribir los 6 runbooks en paralelo al desarrollo (cada uno se completa cuando el feature correspondiente está operativo)
- Validar drafts de cada runbook con AJE en una reunión informal mensual de 30 min
- Grabar versiones tentativas de las sesiones 1 y 2 a mediados del proyecto, para que AJE las pueda pre-visualizar
Acciones inmediatas pre-traspaso (sem 9 · semana antes de las sesiones)
- Compilar PDF de los 6 runbooks · entregar como pre-lectura 5 días antes de la primera sesión
- Confirmar accesos AWS de AJE (SageMaker Studio · CloudWatch · DynamoDB · S3)
- Smoke test de los 6 ejercicios hands-on en un ambiente espejo
Acción de cierre (viernes sem 10)
- Firma de la [[DOC-AF-10-acta-conformidad]] · habilitación del warranty