Saltar a contenido

Invariantes

Reglas que ningún ADR, especificación ni implementación puede violar. Una violación es BLOCKER, no un trade-off a discutir. Vienen de CONSTITUTION.md en el repositorio del sistema.

Dominio

Id Regla
INV-D01 La respuesta de resolución contiene a lo sumo un beneficio por tipo de cliente.
INV-D02 Los beneficios nunca se acumulan ni se suman.
INV-D03 El tipo de factura, CUIT/CUIL y el id extra son filtros de entrada; nunca son dimensión de la respuesta.
INV-D04 Cada tipo de cliente tiene un paymentMethodId único y obligatorio.
INV-D05 La fecha y hora que decide es la enviada por el gateway, en America/Argentina/Cordoba.

Operación

Id Regla
INV-O01 La respuesta al gateway jamás espera a la base de datos (ADR-002).
INV-O02 Toda consulta se intenta auditar; una auditoría perdida se cuenta y se alerta, nunca se oculta.
INV-O03 Un cambio de configuración rige sin reinicio ni despliegue.
INV-O04 La configuración operativa vive fuera del jar; sin ella el proceso no arranca (fail-fast).

Seguridad

Id Regla CWE
INV-S01 La API de resolución exige API key válida; sin ella responde 401 sin evaluar nada. CWE-306
INV-S02 Las contraseñas se guardan solo como hash con algoritmo adaptativo (BCrypt o Argon2). CWE-256, CWE-916
INV-S03 Secretos (API keys, contraseñas, cadenas de conexión) nunca se escriben en logs ni en la auditoría. CWE-532
INV-S04 El rol OPERADOR no puede ejecutar ninguna operación de escritura; se verifica en el servidor, no solo en la consola. CWE-285
INV-S05 TLS y exposición pública son responsabilidad del reverse proxy; el jar nunca escucha directamente en Internet.

Dónde sigue