                             cb("already archived")
                         else
                             project_id = x.project_id
+                            last_active = x.last_active
                             cb()
             (cb) =>
+                if last_active? and last_active >= cutoff
+                    cb(); return
                 dbg("get patches")
                 @_query
                     query : "SELECT extract(epoch from time) as epoch, * FROM patches"

                    level      : opts.level
                    cb         : cb
            (cb) =>
                dbg("update syncstring to indicate patches have been archived in a blob")
                @_query
                    query : "UPDATE syncstrings"

                            delete p.epoch
                        cb(err)
            (cb) =>
                if last_active? and last_active >= cutoff
                    cb(); return
                dbg("create blob from patches")
                try
                    blob = new Buffer(JSON.stringify(patches))
                catch err
                    # TODO: This *will* happen if the total length of all patches is too big.
                    cb(err)
                    return
                dbg('save blob')
                blob_uuid = misc_node.uuidsha1(blob)
                @save_blob
