Architecture Decision Records
Numbered, dated, and append-only. Each ADR captures one load-bearing
Numbered, dated, and append-only. Each ADR captures one load-bearing decision and the reasoning that landed it. When a decision changes, write a new ADR that supersedes the old one — never edit the historical record in place.
| # | Title | Status |
|---|---|---|
| 0001 | No slash commands, buttons only | Accepted |
| 0002 | Parameters registry & scope hierarchy | Accepted |
| 0003 | Stealth runtime guard + CI whitelist | Accepted |
| 0004 | Userbot resilience taxonomy | Accepted |
| 0005 | Anti-detection chat-join policy | Accepted |
| 0006 | Business Bot — one bot, two roles | Accepted |
| 0007 | Web portal via Telegram Login OIDC | Accepted |
| 0008 | Frontend design system, fullscreen, pnpm | Accepted |
| 0009 | Media compression strategy | Accepted |
| 0010 | Hybrid analytics tiers | Accepted |
| 0011 | Callback data signing & validation hygiene | Accepted |
| 0012 | Documentation platform — mkdocs-material now, Fumadocs later | Accepted |
| 0013 | Design system strategy — shared tokens, bot emoji pack, Fumadocs target | Accepted |
Template
When adding an ADR:
# NNNN — Title
* Status: Accepted | Proposed | Superseded by NNNN
* Date: YYYY-MM-DD
## Context
What problem are we solving? What constraints apply?
## Decision
The decision itself, in one or two short sentences.
## Consequences
Positive, negative, and follow-on work. Be honest about the trade-offs.
## Alternatives considered
What else did we look at? Why didn't we pick those?
Keep ADRs short. Three pages is plenty; a one-pager is often enough.