   "Reset the dependency system. Uses an agent so it's safe to call this
    from within a transaction."
   []
-  (send dep-state* (fn [& args]
+  (send dep-state* (fn [dep-state]
                      {:satisfied #{}
                       :todo      []
-                      :done      []})))
+                      :done      []
+                      :history   (conj (:history dep-state)
+                                       {:ts (now)
+                                        :action :reset})})))
 
 (defn unsatisfy-all-dependencies
   "Unsatisfy all deps and reset completed tasks as todo tasks. Uses an

           (do
             (task)
             [:done (conj (:done dep-state)
                          [key deps task])])

           [:todo (conj (:todo dep-state)
                        [key deps task])])))

(defn- replace-handler
  "Replace all occurances of handers with the given key with the new

    (process-handler dep-state key deps task)))

(defn- satisfy*
  [{:keys [satisfied todo done] :as dep-state} new-deps]
  (let [satisfied       (set/union satisfied new-deps)
        execute-tasks   (fn [[final-done final-todo new-history] [key deps task]]
                          (if (set/superset? satisfied deps)
                            (do
                              (log/info "Running dep handler: " key)
