Load events fold them, decide new events, save events. Compute projections synchronously. 4/8
load state, get new events using the decide function and the command, compute new state with evolve, save state.
Save events for trace and maybe state rebuild. 5/8
Your domain is in the functions. As long as it provides the right signature, the domain complexity doesn't leak to the infra code. A change in the domain code, doesn't change the signature 6/8
Whatever Event, Command, State, decide or evolve mean. 7/8
You can evolve the infra code for non functional needs without touching the domain.
This is less friction as your system is evolving over time. 8/8
projection: State -> Event -> State
translation: Event list -> Event list
reaction: State -> Event -> Command or Event -> State -> Command