Skip to content

Decision Criteria

This reference provides detailed criteria for determining when architectural decisions warrant formal documentation in an ADR.

CriteriaDescriptionExamples
IrreversibilityChanges that are costly or impossible to undoDatabase schema design, API contracts, data model
Cross-cuttingAffects multiple components or teamsAuthentication strategy, logging framework, error handling
ComplianceRequired for regulatory or legal reasonsData retention, encryption, audit logging
Cost implicationsSignificant financial impactCloud provider, licensing, infrastructure
Team precedentSets patterns others will followCoding standards, architectural patterns

Medium-Impact Decisions (Usually Document)

Section titled “Medium-Impact Decisions (Usually Document)”
CriteriaDescriptionExamples
Technology adoptionNew tools or frameworksAdding a new library, upgrading major versions
PerformanceAffects system performance significantlyCaching strategy, query optimization approach
IntegrationExternal system integrationsThird-party API integration, message broker
SecuritySecurity-related choicesToken format, session management

Low-Impact Decisions (Document If Contentious)

Section titled “Low-Impact Decisions (Document If Contentious)”
CriteriaDescriptionExamples
Local scopeAffects single componentInternal module structure
Easily reversibleCan be changed with minimal effortUI component choice, utility function approach
Obvious choiceIndustry standard or best practiceUsing HTTPS, UTF-8 encoding

Rate each criterion 0-3:

ScoreMeaning
0Not applicable
1Minor consideration
2Moderate impact
3Major impact
  1. Reversibility Cost (0-3)

    • 0: Trivially reversible
    • 1: Hours to reverse
    • 2: Days/weeks to reverse
    • 3: Months or prohibitively expensive
  2. Scope of Impact (0-3)

    • 0: Single function/class
    • 1: Single module/service
    • 2: Multiple modules/services
    • 3: Entire system or multiple systems
  3. Stakeholder Interest (0-3)

    • 0: No external interest
    • 1: Team interest
    • 2: Department/org interest
    • 3: Executive/customer interest
  4. Future Implications (0-3)

    • 0: No future constraints
    • 1: Minor future constraints
    • 2: Moderate path dependencies
    • 3: Major architectural constraints
Total ScoreRecommendation
0-3Skip ADR
4-6Consider ADR
7-9ADR recommended
10-12ADR required

Document decisions about:

  • Database selection and schema design
  • API design and versioning
  • Authentication and authorization
  • Caching strategies
  • Message queue selection
  • Microservice boundaries
  • Service discovery
  • Configuration management

Document decisions about:

  • Framework selection
  • State management approach
  • Build and bundling strategy
  • Component library choice
  • Internationalization approach
  • Accessibility standards
  • Performance optimization strategies

Document decisions about:

  • Data model design
  • ETL pipeline architecture
  • Data warehouse schema
  • Real-time vs batch processing
  • Data retention policies
  • Privacy and compliance measures

Document decisions about:

  • Cloud provider selection
  • Container orchestration
  • CI/CD pipeline design
  • Monitoring and alerting strategy
  • Disaster recovery approach
  • Scaling strategy
  • Network topology

Create ADRs when:

  • Technology stack selection
  • Architecture patterns
  • Development workflow
  • Testing strategy
  • Pre-production architecture review
  • Post-incident architectural changes
  • Major version upgrades
  • Significant refactoring
  • New team members asking “why?”
  • Knowledge transfer needs
  • Onboarding documentation gaps

Create an ADR if:

  • The decision took more than one meeting to make
  • Multiple people had strong opinions
  • Someone said “we should document this”
  • The decision contradicts industry norms
  • Future developers will wonder “why?”
  • Similar questions keep coming up
  • The decision involves trade-offs with no clear winner

Skip formal ADR if:

  • Industry best practice with no alternatives
  • Team has full consensus in minutes
  • Decision is easily reversible
  • Scope is limited to single module
  • No impact on other teams or systems
  • Standard pattern everyone understands