Skipping Command Execution

Sometimes the commands in a job do not need to be performed.  As an extreme example, if you don't use your Mac for an entire day, you don't have any new or changed bookmarks, and therefore there is no need for any of the commands in a job to execute.  

Timestamps Used

Browfiles (the things that New Application remembers about external stores) store the following NSDate attributes:

   lastInternalized
   lastExternalized

Browfiles also compute dynamically, but do not store, a lastTouched NSDate value.

Bookmarks Books store the following NSDate attributes:

   lastUnordered
   lastOrdered
   lastUnfoundDupes  (dupes can go away too, if bookmarks deleted, so we don't say 'lastMadeDupes')
   lastFoundDupes
   lastUnverified
   lastVerified
   lastTouched

Comparison to see if needDo

With the above timestamps available, the following comparisons are used before executing a command, to calculate a boolean needDo.

Sync In.  This command is executed as sub-command(s) called Internalize.  Each extore in the Sync In list creates one Internalize command.  For each Internalize, needDo if lastTouched > lastInternalized for the extore's browfile.

Orderize.  needDo if lastUnordered > lastOrdered for the bmxBk.

Find Duplicates.  needDo if lastUnfoundDupes > lastFoundDupes for the bmxBk.

Verify.  needDo always.

Sync Out.  This command is executed as sub-command(s) called Externalize.  Each extore in the Sync Out list creates one Externalize command.  For each Externalize, needDo if lastTouched for the bmxBk > lastExternalized for the extore's browfile.  A file conflict occurs if the browfile's lastTouched > lastInternalized.

Execution

Finally, of course, the command is executed only if needDo.