
Financial Workflows Need Versioned History, Not One Percentage Field
Published August 24, 2026
Commission correctness depends on participants, policy versions, lifecycle states, locking, and preserved unresolved allocation.
Money needs explainability
A commission amount is the result of participants, roles, weights, policy, timing, approvals, and prior events. Storing only the final number removes the explanation.
Snapshot the rule that produced the amount
If policy changes next month, an already accepted calculation should still be reconstructable under the policy that was active when it happened.
Never make missing allocation disappear
If a bucket cannot be assigned, preserve it as unresolved. Financial software should expose uncertainty rather than silently lose value or invent a recipient.
Concurrency belongs in the design
Duplicate prevention and row locking protect the invariant when two triggers try to calculate or approve the same business event.