ADR-040 — In-process events

Architecture decision record — status: Accepted.

Source: docs/adr/ADR-040-event-driven.md

ADR-040: In-process events

Estado

Accepted — 2026-08-23

Contexto

ADR-014 (seed) pide eventos entre módulos. DOC-004 lista los de V1. IVPrior tiene un ADR largo de EDA. IVPrior no necesita bus cloud el día 1.

Decisión

  1. Eventos de dominio in-process (Nest EventBus o equivalente) para sincronía en el mismo request cuando el consumidor es liviano.
  2. Outbox → Redis/worker (ADR-022) cuando el consumidor es I/O (email, AI, terceros).
  3. Nombre = pasado (InvoiceBecameOverdue), payload mínimo (DOC-004).
  4. Un módulo no importa el repositorio de otro; oye el evento o llama un use case público.
  5. No Kafka, EventBridge ni outbox distribuido multi-servicio en V1.

Consecuencias

  • Tests: publisher con bus fake; outbox con publishedAt nulo = pendiente.
  • Extraer a microservicio exigiría ADR-042 + este amendment.