- Reject an empty selection and dedupe ids before locking rows in pk order - Return deleted 0 when every requested row is already gone, without hooks - Roll back mixed, hook, and cancelled batches so no partial delete commits