     @params = {}
     { @verbose, @flush } = opts
     @as = {}
+    @done = {}
     @listeners = {}
     @triggers = {}
     @task_intervals = []

    # resume that key. It will then grab its dependency values from
    # the database and resume work.
    ready: (key, dirty) ->
      (@_done ||= {})[key] = true # XXX
      return unless keys = @listeners[key]
      delete @listeners[key]
      for key in keys

    @triggers[key] = deps.length
    for dep in deps
      (@listeners[dep] ||= []).push key
      @handle.ready.apply @, [dep] if @done[dep]

  # A worker has finished with the given value, so use `finish.lua` to
  # attempt to wrap up the worker.
