The scheduler is fairly simple, but schedulers are always confusing
When you create the backup, and set a time to run, Duplicati records the “next time” it should run.
Once that time comes, it will send the backup into the queue of tasks to run, and update the “next time” it will run.
If the scheduler is restarted (e.g. by a reboot) it will look at all the “next time” values and send items into the queue.
When sending an item into the queue, Duplicati will first check if it is already in the queue, and if so, just not put it in there (otherwise there could be a case where the queue contains millions of repeated entries).
Once a task completes, the “next time” is comitted to the database. This ensures that if a task is in the queue, but did not run, the “next time” will automatically revert on restart and the items will be queued again.
Hope that makes it more clear .