# Checklist de salida a producción SUNAT

Este checklist separa lo que ya valida el motor de lo que debe completar cada empresa peruana antes de emitir documentos con efectos tributarios.

## Evidencia técnica disponible

- Suite automatizada: 70 pruebas aprobadas.
- Auditoría de dependencias de producción: `npm audit --omit=dev` sin vulnerabilidades conocidas.
- Los errores internos HTTP 500 no exponen mensajes de infraestructura; los errores SUNAT/Zod mantienen su contrato estructurado.
- Pipeline MOCK completo: JSON, Zod, Decimal, UBL, XMLDSig, XSD, ZIP, SOAP y CDR simulada.
- SUNAT BETA: factura, boleta, notas de crédito/débito, Resumen Diario y Comunicación de Baja aceptados con CDR `0`.
- PDF A4 verificado visualmente, con QR SUNAT y `DigestValue`.
- Portal privado por token, revocación y vigencia predeterminada de 366 días.
- Recuperación durable de tickets RC/RA con lease y backoff.

## Requisitos externos por tenant

- [ ] RUC real activo, habido y habilitado para la operación correspondiente.
- [ ] Calidad de emisor electrónico en SEE - Sistemas del Contribuyente.
- [ ] Usuario y Clave SOL reales; nunca `MODDATOS`.
- [ ] Certificado X.509 vigente, con clave privada correspondiente e identificación del RUC.
- [ ] Certificado comunicado/registrado según el procedimiento vigente de SUNAT.
- [ ] Correo y demás datos exigidos por SUNAT actualizados.
- [ ] Series reales definidas para factura, boleta, nota de crédito y nota de débito.
- [ ] Confirmación del alcance tributario: IGV común, exoneradas, inafectas y gratuitas están cubiertas; habilitar casos avanzados sólo cuando estén implementados y probados.

## Infraestructura obligatoria

- [ ] `NODE_ENV=production` y `SUNAT_RUNTIME_MODE=production`.
- [ ] MongoDB replicado, respaldos verificados e índices creados.
- [ ] Bucket S3 o `ArtifactStorage` durable con cifrado, versionado y política de retención.
- [ ] AWS Secrets Manager o `SecretProvider` equivalente; referencias por tenant, sin secretos en MongoDB.
- [ ] `SUNAT_AUTH_HMAC_SECRET` de al menos 32 caracteres o `identityResolver` integrado con la autenticación de Bheed.
- [ ] `SUNAT_PORTAL_TOKEN_SECRET` distinto del secreto de autenticación.
- [ ] TLS, rate limiting y límites de red aplicados en el gateway de Bheed.
- [ ] Worker asíncrono habilitado en al menos una instancia.
- [ ] Alertas para certificado próximo a vencer, `UNKNOWN`, `PROCESSING`, rechazos y errores de transporte.

## Configuración de seguridad

- [ ] `SUNAT_ALLOW_INSECURE_TENANT_HEADERS=false`.
- [ ] `SUNAT_ALLOW_ENDPOINT_OVERRIDES=false`.
- [ ] `SUNAT_ALLOW_PRODUCTION_CERTIFICATE_FILES=false`, salvo excepción operativa documentada.
- [ ] `SUNAT_PORTAL_EXPOSE_CDR=false`, salvo decisión funcional explícita.
- [ ] Los JWT validan `iss`, `aud`, `exp`, `nbf`, `tenantId` y `sub`.
- [ ] Las API keys permanentes son sólo servidor-a-servidor, se guardan hasheadas y tienen responsable y procedimiento de revocación.
- [ ] Cada tenant sólo puede usar sus series autorizadas.

## Go-live controlado

1. Desplegar con `SUNAT_ALLOW_REAL_EMISSION=false` y comprobar health, MongoDB, S3, secrets, certificado y autenticación.
2. Validar una vez más la versión vigente de reglas, XSD/XSL, endpoints y comunicados SUNAT.
3. Habilitar `SUNAT_ALLOW_REAL_EMISSION=true` sólo en el despliegue autorizado.
4. Emitir una única factura real de bajo riesgo y previamente aprobada por contabilidad.
5. Confirmar CDR, XML firmado, PDF/QR, portal del receptor, registro contable y consulta/reconciliación.
6. Probar una boleta y su Resumen Diario sin agrupar tráfico masivo.
7. Observar al menos un ciclo operativo antes de habilitar todos los tenants y series.

Si cualquiera de los puntos anteriores falla, desactivar `SUNAT_ALLOW_REAL_EMISSION` y reconciliar los documentos ambiguos antes de intentar otra emisión. Nunca generar otro correlativo como respuesta automática a un timeout.
