Arquitectura

Cuando una operación deja de caber en un archivo, la primera reacción suele ser repartirla. El problema no es repartirla; el problema aparece cuando cada fragmento recibe un nombre distinto y la regla original desaparece entre ellos.

DFE propone conservar una dirección de lectura sencilla:

api/
 │  traduce la petición y abre la transacción
 ▼
flows/
 │  consulta y aplica las reglas, sin guardar
 ├── domain/     decide si el estado nuevo es válido
 └── fx/db/      consulta datos
 │
 ▼
api/
    escribe mediante fx/db, hace commit
    y después coordina las consecuencias externas
Lugar Naturaleza Puede invocar
domain/ Puro Nada
flows/ Consulta y reglas Solo consultas de fx/db/
fx/db/ Primitiva El driver
fx/cache/, fx/events/, otros clientes Primitiva El sistema externo
api/ Orquestación flows/ y el resto de fx/

El flow devuelve el resultado; API lo guarda. Cuando la operación requiere una transacción, API la mantiene abierta desde las consultas del flow hasta la escritura y el commit.

api/actions/ aparece cuando el handler ya no se lee de un vistazo. Ahí viven el aviso, el cobro o la publicación, después de que el flow terminó. No es una quinta capa genérica. Es el guion que ya no cabía en el handler.

El mismo flow puede llamarse desde HTTP y desde gRPC. La puerta cambia; la operación, no. Esto permite que el transporte sea una decisión de entrada sin convertirlo en una segunda versión del negocio.