History/Audit DB

My concern from immediate-glance is that if some sort of concurrent change occurs, then the audit log, as written out, might be even more inconsistent (especially since updates turn into two rows); this would be especially bad since different DB implementations might handle consistency around triggers differently. I’m guessing that it would take some specific tweaking in the database layer to make it work for each DB backend.

Of course, if there’s a human in the loop, they can probably disentangle the audit log based on context.