Contract-Driven Development: An Armchair Manifesto
I. The Problem
We've been staring at the wrong thing.
For decades, software development has been about code. Write it. Review it. Test it. Refactor it. Debate it in pull requests. Argue about tabs vs spaces.
Meanwhile, the actual question—does this thing deliver value?—gets answered months later. Maybe never.
We trust code. We should trust outcomes.
II. The Inversion
Imagine Maslow's hierarchy, but upside down.
At the top: Value. Does it make money? Does it scale? Does it matter?
At the bottom: Resources. Servers. Databases. Pods. The metal.
In between: layers of abstraction. Each layer depends on the one below it. Each layer makes promises to the one above it.
These promises are contracts.
III. The Hierarchy
Layer 5: Value
- Is it profitable?
- Is it scalable?
- Is it sustainable?
- Does it matter?
Layer 4: Capability
- Can users do the thing?
- Can they pay?
- Can they leave with their data?
Layer 3: Behavior
- When X happens, does Y follow?
- Is it fast enough?
- Does it break?
Layer 2: Components
- Are the services alive?
- Do they talk to each other?
- Do they keep their promises?
Layer 1: Resources
- Is the server running?
- Is the database reachable?
- Is DNS resolving?
IV. The Contract
A contract is not a test.
A test asks: "Does this code work?"
A contract asks: "What does 'work' mean at this level of abstraction?"
Tests verify implementation. Contracts define reality.
V. The Cascade
Trust flows upward.
If Layer 1 contracts pass → trust the infrastructure. If Layer 2 contracts pass → trust the components. If Layer 3 contracts pass → trust the behavior. If Layer 4 contracts pass → trust the capabilities. If Layer 5 contracts pass → trust the value.
If all layers pass, you've proven the system delivers value.
Without reading a single line of implementation code.
VI. The Two Kinds of Truth
Some contracts are facts. Code can check them.
revenue > costslatency.p99 < 200mshealthCheck(endpoint) === true
Some contracts are vibes. Only humans can judge them.
- "Is this intuitive?"
- "Does this feel trustworthy?"
- "Is this copy compelling?"
For decades, vibes couldn't be contracted. They stayed in the realm of opinions, design reviews, gut feelings.
Not anymore.
VII. LLM-as-Judge
An LLM can judge vibes. And return a boolean.
"Is this UI intuitive?" → yes/no "Does this copy build trust?" → yes/no "Is this experience delightful?" → yes/no
The judge is probabilistic, not deterministic. It has confidence, not certainty.
But it can be calibrated.
50 labeled examples. Run the judge. Measure accuracy. Tweak until 90%+.
A calibrated judge is good enough to ship on.
VIII. The Expanded Contract Space
Before LLMs: contracts could only encode what computers could measure.
After LLMs: contracts can encode what humans can judge.
Brand consistency. Emotional resonance. Ethical compliance. Accessibility. Tone.
All contractable now.
The space of "things you can formally verify" just exploded.
IX. The Implication
If contracts define reality, and all contracts pass, then reality is correct.
By definition.
Implementation becomes irrelevant.
- Ralph writes it? Fine.
- A human writes it? Fine.
- GPT-7 writes it? Fine.
Same contracts. Different shadows on the cave wall.
You don't review implementation. You validate contracts.
X. The Development Loop
Old way:
Idea → Code → Test → Deploy → Hope
CDD:
Value Contract → Capability Contract → Behavior Contract → Component Contract → Resource Contract
↓
Implementation
(whatever)
↓
Validate Cascade
↓
All pass? Ship.
You iterate on contracts, not code.
If value isn't being delivered, you don't debug implementation. You ask: which layer's contract is failing? Fix that contract. Regenerate implementation.
XI. The Axioms
At the foundation, you need things you trust without proof.
- Network reachability implies existence.
- Arithmetic is valid.
- Money in the bank is real.
- Retention correlates with value.
CDD doesn't eliminate trust. It makes trust explicit.
Name your axioms. Derive everything else.
XII. The Promise
If you adopt CDD:
- No more code review. Contracts are the review.
- No more implementation debates. If it passes, it's correct.
- No more "does it work?" anxiety. The cascade answers that.
- No more hoping value gets delivered. Value is contracted.
The implementation becomes disposable. Generate it. Throw it away. Generate again.
The contracts are the product.
XIII. The Risk
LLM judges can be wrong.
Deterministic checks can have bugs.
Contracts can be poorly specified.
CDD doesn't guarantee correctness. It guarantees explicitness.
When something fails, you know exactly where. Which layer. Which contract. Which field.
That's worth everything.
XIV. The Bet
We bet that:
- Outcomes can be contracted.
- Contracts can be validated.
- Validation can be trusted.
- Implementation can be ignored.
If true, we've just made 90% of software development—the implementation part—a commodity.
The remaining 10%? Defining what "value" means.
That's the hard part.
That's the human part.
That's the only part that matters.
Contracts are the product. Implementation is a shadow.
