Architecture Decision Records (ADR)

Overview

Architecture Decision Records (ADRs) were the primary mechanism used by the Cosmos SDK team to document significant architectural decisions from 2019 to 2023. While the ADR process is no longer actively used for new decisions, these historical documents remain valuable references for understanding the design rationale behind many core SDK features. An ADR captured a single architectural decision, addressing functional or non-functional requirements that were architecturally significant. These records formed the project’s decision log and served as a form of Architectural Knowledge Management.

What Were ADRs?

ADRs documented implementation and design decisions that had already been discussed and agreed upon by the team. Unlike RFCs (Request for Comments) which facilitated discussion, ADRs recorded decisions that had already reached consensus through either:
  • Prior RFC discussions
  • Synchronous team meetings
  • Working group sessions
Each ADR provided:
  • Context on the relevant goals and current state
  • Proposed changes to achieve those goals
  • Analysis of pros and cons
  • References to related work
  • Implementation status and changelog

The ADR Lifecycle

The ADR process followed a defined lifecycle:
  1. Consensus Building: Every ADR started with either an RFC or discussion where consensus was reached
  2. Documentation: A pull request was created using the ADR template
  3. Review: Project stakeholders reviewed the proposed architecture
  4. Acceptance: ADRs were merged regardless of outcome (accepted, rejected, or abandoned) to maintain historical record
  5. Supersession: ADRs could be superseded by newer decisions as the project evolved

Status Classifications

ADRs used a two-component status system:
  • Consensus Status: Draft → Proposed → Last Call → Accepted/Rejected → Superseded
  • Implementation Status: Implemented or Not Implemented

Historical ADR Index

The complete collection of ADRs can be found in the Cosmos SDK repository. Below are some of the most significant ADRs that shaped the current SDK architecture:

Core Architecture

State Management

Protocol & Encoding

Module System

Consensus & ABCI

Developer Experience

Why ADRs Matter

Although the formal ADR process is no longer active, these documents remain valuable because they:
  1. Preserve Design Rationale: They explain not just what was built, but why specific design choices were made
  2. Document Trade-offs: They capture the pros and cons considered for each decision
  3. Show Evolution: They demonstrate how the SDK architecture evolved over time
  4. Provide Context: They help developers understand the historical context of current features

Current Decision Process

The Cosmos SDK team has transitioned to more agile decision-making processes, utilizing:
  • GitHub Discussions for community input
  • Pull requests for implementation proposals
  • Working groups for synchronous collaboration
  • Direct implementation with iterative refinement
For developers interested in understanding specific SDK components, the historical ADRs remain an excellent resource for diving deep into the architectural reasoning behind the current implementation.

Additional Resources