Functional domain-logic pattern Mateusz Nowak uses to implement Event-Modeled systems. Three pure functions compose the domain: decide(command, state) → events (guards invariants and produces business events), evolve(state, event) → state (applies an event to the state, used for aggregates and read models), and react(event) → command (glue between modules reacting to one event with one or more commands, optionally holding internal state or delegating to a saga for long-running processes). Persistence-agnostic: with 'events → evolve → state → decide → events' you get event sourcing; with 'state → decide → events → evolve → state' you get snapshot/CRUD-style storage. Pairs naturally with given/when/then specifications that translate one-to-one to tests — boilerplate easy to delegate to LLMs.