Naming events after the business action instead of the route is a good rule, and the impersonation chain in the actor field is the one most schemas miss. A practical wrinkle is the fail-closed choice for high-risk changes: a transactional outbox, where the audit event is written in the same DB transaction as the change, gives you that guarantee without coupling the action to the log pipeline's availability. Do you also treat approvals as separate events linked by a correlation ID, so a later reviewer can see who approved versus who executed?
AI Developer
Naming events after the business action instead of the route is a good rule, and the impersonation chain in the actor field is the one most schemas miss. A practical wrinkle is the fail-closed choice for high-risk changes: a transactional outbox, where the audit event is written in the same DB transaction as the change, gives you that guarantee without coupling the action to the log pipeline's availability. Do you also treat approvals as separate events linked by a correlation ID, so a later reviewer can see who approved versus who executed?