Decisions
Architecture Decision Records for Nah?. Each ADR captures one decision: why the question came up, what we picked, what we considered and rejected, and what would prove us wrong.
ADRs are not specs. They’re the why behind the spec. Future contributors (or future-Casey) can read these to understand the reasoning even when the code no longer reflects the original tradeoff.
Index
| # | Decision | Status |
|---|---|---|
| 0001 | Flutter over PWA for the mobile client | Accepted (2026-04-26) |
| 0002 | Mastodon as the backend foundation | Superseded by 0010 |
| 0003 | Invitation is connection, no slot economy | Superseded by 0009 |
| 0004 | No counts anywhere as the MVP headline | Accepted (2026-04-26) |
| 0005 | Ritual onboarding (slow beat, one question, felt arrival, quiet space) | Accepted (2026-04-26) |
| 0006 | Three moment types (text, voice, photo) | Accepted (2026-04-26) |
| 0007 | Notifications default to most respectful | Accepted (2026-04-26) |
| 0008 | MVP scope: 5-10 friends, real usage, explicit not-in-MVP list | Amended by 0009 and 0018 |
| 0009 | Circles, not one circle | Superseded by 0017 |
| 0010 | A small server of our own, not Mastodon | Accepted (2026-09-13) |
| 0011 | Plain Go, and one database per circle | Accepted (2026-09-13), amended for one database per person (2026-09-14) |
| 0012 | Content encrypted on the device, and we hold no keys | Accepted (2026-09-14), restated for one key per person |
| 0013 | No aggregated feed, a circle is a room you enter | Superseded by 0017 |
| 0014 | The Go setup, and how it ships | Accepted (2026-09-13) |
| 0015 | No passwords, a key on the device | Accepted (2026-09-13) |
| 0016 | The moment envelope, and why it is not HTML | Accepted (2026-09-14) |
| 0017 | One network of a hundred and fifty, not circles | Accepted (2026-09-13) |
| 0018 | Reactions the poster sees, and nobody counts | Accepted (2026-09-15) |
How to read these
Each ADR is short (one page). Sections in order: status, context, decision, considered alternatives with rejection reasons, consequences (positive and negative), what would prove this wrong.
The “what would prove this wrong” section is the most important and the easiest to skip. We keep it because decisions made in confident moods can be wrong in concrete circumstances, and the trigger that would force a revisit is worth writing down while we still remember it.
How to add a new ADR
- Copy
_template.mdtoNNNN-short-slug.mdwhere NNNN is the next number. - Fill in the front matter (
title,permalink: /decisions/NNNN-short-slug/,status,date). - Write the decision. Keep it to one page.
- Add a row to the index above.
- Commit.
If a new ADR supersedes an existing one, update the older ADR’s status to “Superseded by ADR-NNNN” and add a link.