Architectural Decision Records (ADRs) for Teller's Solidity smart contracts.
These records capture the why behind our smart-contract engineering decisions — mainly the security and code-quality standards every Teller contract is expected to follow. The format and process follow the AWS Prescriptive Guidance ADR process.
- Each significant decision is one markdown file in
docs/adr/, namedNNNN-short-title.md. - Accepted ADRs are immutable. To change a decision, add a new ADR that supersedes the old one — don't edit the old record.
- To propose one, copy
docs/adr/adr-template.mdto the next number and open a PR with statusProposed.
Statuses: Proposed → Accepted / Rejected → Superseded / Deprecated.
| ADR | Title | Status |
|---|---|---|
| 0000 | Record architecture decisions | Accepted |
| 0001 | Follow the checks-effects-interactions pattern | Accepted |
| 0002 | Initializers must run exactly once | Accepted |
| 0003 | Avoid the reinitializer pattern |
Accepted |
| 0004 | Prefer custom errors over require strings |
Accepted |
| 0005 | Use SafeERC20 and credit actual received balance | Accepted |
| 0006 | Append-only upgradeable storage with reserved gaps | Accepted |
| 0007 | Use manipulation-resistant TWAP pricing, never spot prices | Accepted |
See docs/adr/ for the full index.