Event handlers that subscribe to published events and project them into read-optimized storage (ActiveRecord, Elasticsearch, Cassandra, etc.). When new fields are needed the view model can be wiped and rebuilt from past events. Queries wrap read models similarly to repositories.