Commit-time history capture that refuses incomplete writes
Context
History must include writes through jobs and other services as well as ordinary API saves.
Decision
Database triggers capture attributed record and link revisions in the mutation transaction and refuse commit when required history context is absent.
Alternatives Considered
Relying on each application writer to add history: Another writer, job or cross-service function could omit the revision. Building history from asynchronous events: Capture would lag and unsupported event mutations could leave historical gaps.
Consequences
Cross-service deletion and merge changes participate in database capture. Authorized reset and purge suppress capture for their removal work. The copied capture implementation needs coordinated extraction rather than independent divergence.