So after the first invocation of run() we freeze the commit timestamp and never update it again?  We should document that behavior in the class docs, or at least in the run method.  Its not clear that you are doing that.