# Concept for tracking changes - Create new commit (if possible) - If force is unset: Diff system's files against current state by copying them into the current state branch - Then, diff the package state against the state branch by dumping it - Else, or if no diff, continue - Copy normal config files into correct directories - Render and copy renderables - Retrieve explicitly installed packages and remove those that are not present in goal and install those that are not present in current state