# Cierre de Fase A — Matriz de aceptación ## Backend | Criterio | Evidencia | |---|---| | Migraciones controladas | TypeORM con `synchronize: false` y `migration:show` sin pendientes | | Tablas, índices y seeds | Migraciones A1/A2 aplicadas y 26 índices verificados en producción | | Bootstrap seguro | CLI interactiva, contraseña oculta y bloqueo si ya existe admin | | Auth completa | login, refresh, logout, me y change-password | | Sesiones | hash del refresh, rotación, revocación y detección de reutilización | | Autorización | guard global y permisos resueltos desde base | | Usuarios y roles | endpoints administrativos protegidos y auditados | | Auditoría | filtros, paginación, detalle, request ID y sanitización | | Dashboard | resumen protegido por `dashboard.read` | | Rate limiting | throttling global y límites reforzados en autenticación | | Usuario DB runtime | API configurada con `DB_APP_USER`, separada del owner | ## Frontend | Criterio | Evidencia | |---|---| | Login y sesión | AuthContext con cookies y renovación controlada | | Tokens | ningún JWT en `localStorage` o `sessionStorage` | | Rutas | protección por sesión y redirección al login | | Contraseña temporal | bloqueo de módulos hasta completar el cambio | | Permisos visibles | navegación y acciones mediante `PermissionGate` | | Administración | dashboard, usuarios, roles y auditoría | | Cierre de sesión | revocación backend y limpieza local | | Identificación | footer visible `v0.7.0 · Fase A7` | ## Seguridad e infraestructura | Criterio | Evidencia | |---|---| | HTTPS | login y API externa accesibles únicamente mediante el proxy configurado | | Cookies | `HttpOnly` para acceso/refresh; `Secure` y `SameSite=Strict` | | CSRF | escritura con cookie rechazada sin `x-csrf-token` | | Acceso anónimo | sólo `/api/v3/health` es público | | Secretos | sanitización de auditoría y ninguna credencial en artefactos fuente | | Docker | DB saludable, API y web en ejecución | | Backup | fuentes, base, `.env`, Nginx, manifiesto y checksums | | Recuperación | dump y TAR verificables sin modificar producción | ## Resultado Cuando el deploy A7, la aceptación autenticada y la verificación del backup finalizan sin errores, la Fase A queda formalmente cerrada y puede comenzar la Fase B — Maestro de Activos.