Why Soft Deletes and AI Both Fail at the Same Boundary
Hatched by Jaeyeol Lee
Apr 29, 2026
10 min read
4 views
87%
The most dangerous system is the one that looks consistent until it suddenly is not
What if the real failure mode in software and in AI is not ignorance, but false uniformity? We like systems because they promise predictable behavior. A deleted row is supposed to be gone. A smart model is supposed to be smart. Yet the most expensive mistakes happen when a system behaves beautifully in some cases and embarrassingly in others, while still appearing coherent from the outside.
That is the shared problem behind soft deletes and the modern AI frontier: both create an illusion of smoothness where reality is jagged. In one case, data that should be dead keeps lingering in the shadows, quietly distorting the logic of a system. In the other, capabilities that seem adjacent can differ dramatically, so a model that succeeds on one task may fail on a nearly identical one. The deeper lesson is unsettling but useful: the world is not organized by averages, only by boundaries.
When we miss that, we build systems that are technically functional, operationally fragile, and cognitively misleading.
The seduction of the reversible deletion
Soft delete exists because it feels humane. Instead of removing a record, we mark it as deleted. The database remains tidy, audit trails are easier, and recovery seems simple. At first glance, it looks like an elegant compromise between safety and convenience.
But soft delete often becomes a form of organizational amnesia with perfect recall. The record is not really gone, which means every query, join, count, permission check, export, and dashboard must remember to exclude it. The burden shifts from the deletion operation to the entire system. One forgotten filter, one analytics job, one cache invalidation, and the supposedly dead object starts influencing live behavior again.
That is the core anti pattern: the system is forced to understand a state that should not exist. A deleted user is no longer a user in any practical sense, but the database says otherwise. So engineers invent a second reality, then spend years maintaining the boundary between the two realities.
This is not just a storage problem. It is a semantic problem. Software works best when its states correspond to real, stable categories. Soft delete creates an undead state, a category that is neither fully present nor fully absent. Anything that needs to reason about it must add special cases, and special cases are where complexity breeds.
A customer support system is a good example. Suppose a user is deleted but their email still exists in a soft deleted table. Maybe the signup flow checks only active users and allows re registration. Maybe a billing reconciliation job still counts them in historical revenue. Maybe a moderation screen surfaces deleted content because the query path forgot a condition. None of these are catastrophic alone. Together, they create a system that is always almost correct, which is one of the most dangerous states a product can inhabit.
The problem is not merely that soft delete can be misused. It is that it invites a design philosophy in which the system carries around dead weight and expects every future decision to remain vigilant.
A deletion that is not a deletion becomes a long term tax on every future query.
AI capability is not a slope, it is a cliff with random footholds
Now consider AI. A common mistake is to think capability increases smoothly, as if the model gets a little better at everything each time it improves. In practice, AI behaves more like a jagged technological frontier. It can do one task with striking competence, stumble on another that appears almost identical, then recover on a third with ease.
This is deeply counterintuitive because humans naturally map similarity across tasks by surface features. If a model can summarize a document, why not summarize a contract? If it can write code in one language, why not in another? If it can answer a customer question, why not a slightly more nuanced version of the same question? The answer is often: because the frontier is jagged, not smooth.
This matters because teams extrapolate from success too quickly. A model that works in one workflow can fail in a neighboring workflow for reasons that are not obvious until production. The “nearby” task may require a hidden subskill, better grounding, precise arithmetic, cross document consistency, or a different tolerance for ambiguity. The similarity of inputs does not guarantee the similarity of competence.
A practical example: an AI assistant may draft excellent internal summaries from meeting notes, yet fail at extracting exact obligations from a legal clause. The tasks both involve text understanding, but one rewards pattern synthesis while the other punishes even small errors. Another example: a model may write usable Python but stumble on dependency management, data schemas, or the edge cases in a migration script. The output looks close enough to tempt deployment, but the difference between “mostly right” and “reliably right” is everything.
The frontier is jagged because capability is not a single dimension. It is a landscape of micro skills, each with its own peaks and valleys. The more a system impresses us in one place, the more likely we are to assume continuity where none exists.
The common error: treating exceptions as implementation details
Soft delete and jagged AI capability appear to live in different worlds, one in backend architecture, the other in machine intelligence. But they share a deeper failure mode: treating boundary conditions as exceptions rather than as the core design problem.
With soft delete, the boundary is life versus death, active versus inactive, present versus absent. The design mistake is to preserve the boundary in name only, then expect the rest of the system to intuit the difference. With AI, the boundary is competence versus failure, confidence versus hallucination, task types that the model can handle versus those that require human oversight. The mistake is to assume that because the model is good in one region, it generalizes smoothly across the next.
Both failures arise from a craving for continuity. Continuity feels elegant. It reduces the number of models in our heads. It lets teams say things like, “It is basically the same,” or, “We can just filter it out later,” or, “The model is strong enough for this adjacent use case.” But reality is rarely polite enough to honor our abstractions.
A useful mental model here is the difference between state and capability.
- Soft delete muddies state: the object remains in the system while pretending not to be there.
- Jagged AI capability muddies capability: the model appears broadly competent while hiding sharp failures in neighboring tasks.
In both cases, the system becomes harder to reason about because the boundary is no longer explicit. Once the boundary is implicit, every consumer has to rediscover it independently. That is expensive in code, expensive in operations, and expensive in trust.
This is why mature systems often prefer hard commitments over ambiguous ones. A record is deleted. A feature is supported or not supported. A model is approved for a narrow workflow, not a vague class of “similar” tasks. Clarity is not inflexibility. It is a way of respecting the structure of reality.
A better design principle: make the edge visible, then make it govern the system
If the frontier is jagged and deletion is not a reversible mood but a categorical change, then what should designers do differently? The answer is not to become paranoid. It is to become boundary literate.
Boundary literate systems do three things well.
1. They make the edge explicit
If data is truly gone, remove it from active paths. If it must be retained for audit or legal reasons, separate retention from operational presence. That means archival tables, append only logs, or dedicated compliance stores rather than a live dataset full of haunted records.
For AI, this means classifying tasks by failure sensitivity. Do not ask whether a model is “good enough” in general. Ask: where is the edge? What exact subtask must never fail? What can be probabilistic, and what must be deterministic? The system should know where human review begins and where automation ends.
2. They localize ambiguity instead of distributing it
Soft delete spreads ambiguity across every query. A better approach is to confine ambiguity to the smallest possible subsystem. Archival logic can be weird. Active logic should be clean.
Likewise, AI should be used where uncertainty can be contained. If a model drafts customer replies, perhaps a human approves high stakes messages. If it classifies support tickets, maybe it can route only low risk cases automatically, while ambiguous ones escalate. The point is not to eliminate uncertainty. It is to keep uncertainty from becoming a universal property of the workflow.
3. They define failure as a first class condition
In fragile systems, failure is accidental. In robust systems, failure is modeled in advance.
A soft delete system should specify what happens when a deleted record collides with uniqueness constraints, analytics pipelines, or permission checks. An AI system should specify what happens when the model is uncertain, unsupported, or encounters out of distribution input. If these pathways are not designed, they will be improvised under pressure, which is when mistakes become incidents.
Robustness is not the absence of edge cases. It is the deliberate ownership of them.
The real frontier is human judgment
There is a deeper irony here. We often adopt soft delete because we do not trust ourselves to delete correctly. We adopt AI because we hope it will reduce the burden of judgment. In both cases, we are trying to outsource complexity. Yet complexity never disappears. It just migrates.
If you soft delete aggressively, you move complexity from storage to semantics. If you over trust AI, you move complexity from explicit logic to hidden capability boundaries. In both scenarios, the system becomes less transparent precisely where transparency matters most.
This suggests a broader principle for modern technical work: do not automate ambiguity before you have named it.
That sounds obvious, but many systems violate it. Teams ship a soft delete field without a retention policy. They deploy a model because it performs well on a benchmark without mapping the task frontier. They assume that operational convenience equals conceptual clarity. It does not.
Human judgment is still required, but its role changes. It should not be spent repeatedly rediscovering hidden boundaries. It should be spent deciding where the boundaries belong in the first place. The best engineers and product teams are not those who remove judgment from the system. They are those who design systems where judgment is concentrated at the right moments, not smeared across every routine action.
A deleted order should not haunt fulfillment logic. A capable model should not be presumed capable in adjacent domains. In both cases, the disciplined move is to separate what is active from what is merely available, what is supported from what is adjacent, what is real from what is only recoverable.
Key Takeaways
-
Do not confuse reversibility with simplicity. A reversible action like soft delete often creates more long term complexity than a clean, irreversible one.
-
Treat task boundaries as first class design objects. For AI, do not generalize from one successful use case to a neighboring one without testing the exact edge.
-
Localize ambiguity. Keep archival states, compliance states, and probabilistic outputs separate from the clean paths your system depends on.
-
Model failure explicitly. Define what happens when a deleted record appears in a query or when an AI model is uncertain, out of scope, or wrong.
-
Prefer explicit states over haunted states. If something is inactive, archived, or unsupported, name it clearly and keep it out of the live system path.
Conclusion: the best systems are honest about where they stop working
The deepest connection between soft delete and jagged AI capability is not technical, it is philosophical. Both remind us that reality resists smooth abstractions. There are things that are gone, and things that are only retained. There are tasks a model can do, and tasks that merely resemble them. The danger begins when we pretend those distinctions are minor implementation details.
The strongest systems are not the ones that blur boundaries most gracefully. They are the ones that respect boundaries so thoroughly that the rest of the system can remain simple. That is a higher standard than convenience, but it is also the source of reliability.
In the end, good design is not about making everything feel continuous. It is about knowing exactly where continuity breaks, and building as if that break matters.
Sources
Hatch New Ideas with Glasp AI 🐣
Glasp AI allows you to hatch new ideas based on your curated content. Let's curate and create with Glasp AI :)
Start Hatching 🐣