Split by role, not domain
Lens, brain, guard, ledger. Four roles, no domain modules.
BLU has no customers module and no marketing module. It has four kinds of unit, each defined by its role in the loop. Because those roles are orthogonal to subject, the same machinery points at ERP or forecasting without a rewrite.
I stopped naming things after the business and named them after the job.
READ DECIDE
Lens and brain
A lens reads one source faithfully. It must never decide, interpret, or hold an opinion. A brain notices, decides and orchestrates, and it never holds source credentials or knows source internals.
CHECK REMEMBER
Guard and ledger
A guard verifies a figure against an independent count, and never produces the figure it checks. When a check reports that working code is broken, suspect the check first. A ledger remembers what fired, what resolved, and what could not be evaluated. It never judges.
HONEST CAVEAT
Composition is not configuration
The parts compose across domains is true. A new domain is a config change is not. The machinery composes for free; the thresholds and reconciliations are the work.