                                     dbg("it opened")
                                     state = 'opened'
                                     cb()
+                                    # also fire off this, which will check if project hasn't yet
+                                    # been migrated successfully, and if so run one safe
+                                    # rsync --update (so it won't overwrite newer files)
+                                    @migrate_update_if_never_before()
                 else
                     cb("bug -- state=#{state} should be stable but isn't known")
         ], (err) => opts.cb(err, state))

                    # the time the project was assigned to this node, which is the first
                    # argument to open.  We then remove that argument.
                    assigned = opts.args[0]
                    opts.args = []
                state_info = STATES[state]
                if not state_info?
                    err = "bug / internal error -- unknown state '#{misc.to_json(state)}'"

    # open project files on some node
    open: (opts) =>
        opts = defaults opts,
            ignore_recv_errors : false
            cb     : required
        @dbg("open")()
        args = [@assigned]
        if opts.ignore_recv_errors
            args.push('--ignore_recv_errors')
        @_action
            action : "open"
            args   : args
            cb     : opts.cb

    # start local_hub daemon running (must be opened somewhere)
