Survival by Design
Principle IV: Survival by Design
Failures are inevitable; design for survival, not prevention.
Here is a fact about distributed systems that should be obvious but apparently needs restating every eighteen months: everything fails. Networks partition. Disks corrupt. Models hallucinate. The agent you were counting on to finish a critical subtask will, at some point, simply not.
The conventional response to this reality is to build prevention systems — redundant checks, validation layers, increasingly baroque error-handling chains that attempt to anticipate every possible failure mode. This approach has a name in the reliability engineering literature: wishful thinking.
Graceful Degradation, Not Graceful Denial
Obsidian takes a different position. Rather than pretending failures can be prevented, it assumes they will happen and designs every subsystem to survive them. An agent crashes mid-task? The task pipeline knows. The work is recoverable. The system continues at reduced capacity rather than collapsing entirely.
This is graceful degradation — the architectural decision to reduce functionality rather than lose it. Your system should limp, not fall. A three-legged table is unstable; a three-legged stool is a design choice.
Recovery as a First-Class Operation
Automatic recovery is not a feature bolted onto Obsidian after the fact. It is structural. Every task state is persisted. Every agent can be reconstituted from its last checkpoint. The Warden monitors system health not because it is paranoid but because monitoring is how you know the difference between “degraded” and “dead.”
Human intervention should be the escalation of last resort, not the standard recovery procedure. If your system requires a human to restart it every time something goes wrong, you have not built a system — you have built a very expensive notification service.
Implications
This principle shapes every architectural decision in Obsidian. State must be externalized, because in-memory-only state dies with the process. Communication must be asynchronous, because synchronous calls create cascading failure chains. Timeouts must be explicit, because “wait forever” is not a strategy.
Relationship to Other Principles
Survival by design works in concert with Sovereign Autonomy — agents that can make independent decisions can also make independent recovery decisions. It depends on Observable by Default (Principle V), because you cannot recover from failures you cannot see. And it enables Fractal Delegation , because delegation trees must handle the failure of any node without losing the entire tree.