# Fase 25 — SIHO Core Event Engine

## Objetivo
Separar gradualmente los efectos secundarios de la lógica operativa sin romper el flujo estable del PMS.

## Principios
- La operación crítica se confirma primero dentro de su transacción.
- El evento se persiste después de confirmar la operación.
- Un fallo de listener no revierte una venta ya válida.
- Todos los eventos tienen UUID, instalación, usuario, payload y estado.
- La migración es gradual; la lógica financiera e inventario existente sigue siendo la autoridad durante RC3.

## Eventos incorporados
- `sales.sale_completed`
- `sales.room_charge_completed`

## Tabla
`siho_domain_events` funciona como bitácora técnica y outbox local para una futura sincronización con SIHO Central.

## Compatibilidad
La interfaz clásica y SIHO POS siguen usando `SalesEngine`; los reportes, caja e inventario conservan las tablas actuales.

## Próxima migración controlada
1. Eventos de reserva y check-in/check-out.
2. Eventos de caja.
3. Kardex transaccional escuchando ventas confirmadas.
4. Publicador hacia SIHO Central con reintentos.
