The only question left for me is if we want to allow reverts of changes or not. If yes, we need some additional mechanics to actually make Changes revertable. However, I am not sure if thats required.
In my opinion, reverting a change should be treated as another change. We could think of this a bit like git revert commits, where we log all changes in sequence.
- User A suggests a change to Album A
- Admin A approves the suggestion and the change is applied to Album A
- User B takes issue to the change and submits a new change that reverts the change made to Album A
- Admin A looks at the change and decides to apply it, thereby returning Album A to the point it was at before
In this workflow, all history is kept in a simple append-only format that can be easily followed, and reasons can be left for each approval.