Every document filename now mirrors its lifecycle state with a status suffix (e.g., .draft.md, .wip.md, .accepted.md). No more bare .md for tracked document types. Also renamed all from_str methods to parse to avoid FromStr trait confusion, introduced StagingDeploymentParams struct, and fixed all 19 clippy warnings across the codebase. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
54 lines
1.3 KiB
Markdown
54 lines
1.3 KiB
Markdown
# ADR 0009: Courage
|
|
|
|
| | |
|
|
|---|---|
|
|
| **Status** | Accepted |
|
|
| **Date** | 2026-01-20 |
|
|
|
|
---
|
|
|
|
## Context
|
|
|
|
What do we do when we're afraid?
|
|
|
|
## Decision
|
|
|
|
**Act rightly, even when afraid.**
|
|
|
|
Courage isn't the absence of fear. It's action despite fear.
|
|
|
|
In engineering, we fear:
|
|
- Breaking production
|
|
- Deleting code someone might need
|
|
- Challenging senior engineers
|
|
- Admitting we don't understand
|
|
- Shipping before we're certain
|
|
- Changing what has always worked
|
|
- Being wrong in public
|
|
|
|
These fears are reasonable. But fear has costs too. Unbroken production that never improves. Code that grows forever. Bad ideas that survive because no one challenged them.
|
|
|
|
Courage is acting when action is right, even when fear says wait.
|
|
|
|
## What This Means
|
|
|
|
- **Delete boldly.** If it's unused, remove it. Git remembers.
|
|
- **Challenge respectfully.** The worst outcome of challenge is being wrong. The worst outcome of silence is bad ideas surviving.
|
|
- **Ship scared.** If you're not a little afraid when you deploy, you're not shipping anything interesting.
|
|
- **Admit ignorance quickly.** "I don't understand" is the beginning of understanding.
|
|
|
|
## Consequences
|
|
|
|
- 💙 encourages deletion of dead code
|
|
- 💙 surfaces disagreement as useful information
|
|
- 💙 treats shipping as normal, not exceptional
|
|
|
|
---
|
|
|
|
*"Fear is information. It's not instructions."*
|
|
|
|
— Blue
|
|
|
|
---
|
|
|
|
🧁
|