Hard deletes are a foot-gun. Soft deletes plus a `.active()` query helper give you reversibility without polluting every query.
Why every model in the ClearedMind backend carries `archived_at` and `deleted_at` — and why `findOneAndDelete` is banned.
Nothing in the ClearedMind backend is ever hard-deleted. Every Mongoose model carries two timestamps:
{ archived_at: { type: Date, default: null }, deleted_at: { type: Date, default: null }, }
A "delete" is just:
user.deleted_at = new Date(); await user.save();
schema.query.active = function () { return this.where({ deleted_at: null, archived_at: null }); }; const users = await User.find().active();
Calling Model.findOneAndDelete() in this codebase is a code-review failure.