loyalty y sus invariantes no se pueden
revisar barato después.
Una columna de saldo mutable está PROHIBIDA en todo el módulo. La razón es la misma por la que la
contabilidad nunca funcionó de otra forma: en cuanto el número y su historia pueden discrepar, no hay
manera de saber cuál manda.
La única actualización permitida es pending → available, y el tombstone de anonimización.
Clave primaria
Atributos específicos
Claves foráneas
Atributos base
Restricciones e índices
Prohibido en toda la tabla y en todo el módulo: una columna de saldo mutable.
RLS y particionamiento
RLS activa portenant_id. Candidata a partición RANGE mensual sobre occurred_at; no
designada en v1 (standards/data.md §4). El disparador para revisarlo está escrito: crecimiento
sostenido hasta que el mantenimiento de índices aparezca en la latencia de escritura.
Una transacción, siempre (ADR-017): la escritura del ledger, sus efectos sobre lotes, el evento
del outbox y la fila de core.audit_log commitean juntos o no commitea ninguno.
Referencias entrantes
point_lot — apunta a la transacción earn que lo originó