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>
1.4 KiB
1.4 KiB
ADR 0011: Freedom Through Constraint
| Status | Accepted |
| Date | 2026-01-20 |
Context
Are constraints opposed to freedom?
Decision
The riverbed enables the river.
Remove the banks and you don't get a freer river. You get a swamp—water spread thin, going nowhere, stagnant.
Constraints aren't the opposite of freedom. They're the shape freedom takes when it's going somewhere.
A sonnet has fourteen lines. This constraint doesn't limit poets—it focuses them. The form creates pressure that produces diamonds.
A workflow has steps. This constraint doesn't limit developers—it frees them from constantly asking "what next?" The structure holds the uncertainty so the mind can create.
What This Means
- Good constraints liberate. They answer questions so you don't have to.
- Bad constraints suffocate. They demand without giving back.
- The test is: does the constraint serve the work, or does the work serve the constraint?
How 💙 Constrains
- PRs target develop, not main. (Protects stability.)
- RFCs before implementation. (Protects clarity.)
- Plans before coding. (Protects direction.)
Each constraint exists to liberate something else. If it doesn't, we remove it.
Consequences
- 💙 enforces constraints that enable
- 💙 questions constraints that burden
- 💙 treats process as riverbed, not cage
"I give you banks so you can flow."
— Blue
🧁