BMAD-METHOD/bmad-agent/quality-tasks/technical-decision-validati...

5.6 KiB

Technical Decision Validation Task

Purpose

Systematically validate technical decisions through rigorous analysis, evidence-based evaluation, and comprehensive impact assessment. Ensure all technical choices align with quality standards and long-term sustainability.

Integration with Memory System

  • What patterns to search for: Technology adoption outcomes, similar technical decisions, performance benchmarks, maintenance burden patterns
  • What outcomes to track: Decision stability over time, performance metrics achievement, maintenance costs, team satisfaction
  • What learnings to capture: Effective evaluation criteria, decision reversal patterns, technology maturity insights, integration complexity lessons

Technical Decision Categories

Technology Stack Decisions

  • Framework Selection: Primary frameworks and libraries
  • Database Choice: Data storage solutions and patterns
  • Infrastructure Platform: Cloud providers, deployment targets
  • Tool Selection: Development tools, CI/CD, monitoring
  • Service Architecture: Monolith vs microservices vs serverless

Implementation Approach Decisions

  • Design Patterns: Architectural and code patterns
  • API Design: REST vs GraphQL vs gRPC
  • State Management: Client and server state strategies
  • Security Approach: Authentication, authorization, encryption
  • Testing Strategy: Unit, integration, E2E approaches

Validation Process

Step 1: Decision Context Analysis

def analyze_decision_context(decision):
    context_factors = {
        "requirements": extract_driving_requirements(decision),
        "constraints": identify_constraints(decision),
        "stakeholders": list_affected_stakeholders(decision),
        "timeline": assess_timeline_impact(decision),
        "budget": evaluate_cost_implications(decision)
    }
    return context_factors

Step 2: Evidence Gathering

  • Benchmark Data: Performance comparisons, load testing results
  • Case Studies: Similar implementations, success/failure stories
  • Expert Opinions: Team experience, community consensus
  • Proof of Concepts: Hands-on validation results
  • Cost Analysis: License fees, operational costs, training needs

Step 3: Trade-off Analysis

Factor Option A Option B Option C Weight
Performance {score} {score} {score} {weight}
Scalability {score} {score} {score} {weight}
Maintainability {score} {score} {score} {weight}
Team Experience {score} {score} {score} {weight}
Cost {score} {score} {score} {weight}
Risk {score} {score} {score} {weight}

Step 4: Risk Assessment

## Technical Risk Analysis
### Option: {technology_choice}

**Risks Identified**:
1. **{Risk Name}**: {description}
   - Probability: {high/medium/low}
   - Impact: {high/medium/low}
   - Mitigation: {strategy}

**Risk Score**: {calculated_risk_score}

Quality Gates

Pre-Decision Gate

  • Problem clearly defined
  • Success criteria established
  • Constraints documented
  • Stakeholders identified

Evaluation Gate

  • Minimum 3 options evaluated
  • Quantitative comparison completed
  • POC results documented
  • Team capability assessed

Decision Gate

  • Trade-off analysis reviewed
  • Risk assessment completed
  • Reversibility plan defined
  • Success metrics established

Success Criteria

  • Decision backed by quantitative evidence
  • Trade-offs explicitly documented
  • Risks identified with mitigation strategies
  • Team consensus achieved
  • Reversibility strategy defined
  • Confidence level >90%

Memory Integration

# Technical decision memory structure
tech_decision_memory = {
    "type": "technical_decision",
    "decision": {
        "category": decision_category,
        "choice": selected_option,
        "alternatives": rejected_options
    },
    "evaluation": {
        "criteria": evaluation_criteria,
        "scores": comparison_scores,
        "evidence": supporting_evidence
    },
    "rationale": {
        "driving_factors": key_decision_drivers,
        "trade_offs": accepted_trade_offs,
        "risks": identified_risks
    },
    "outcome": {
        "implementation_time": actual_time,
        "performance_met": performance_results,
        "team_satisfaction": satisfaction_score,
        "stability": change_frequency
    },
    "lessons": key_learnings,
    "confidence": decision_confidence
}

Output Template

# Technical Decision Validation: {Decision Title}
**Date**: {timestamp}
**Decision Maker**: {name/team}
**Category**: {technology/implementation/architecture}
**Confidence**: {percentage}%

## Decision Summary
**Selected**: {chosen_option}
**Rationale**: {brief_rationale}

## Evaluation Results
### Quantitative Analysis
{comparison_table}

### Evidence Summary
- **Benchmarks**: {key_performance_data}
- **Case Studies**: {relevant_examples}
- **POC Results**: {validation_outcomes}

### Trade-off Analysis
**Accepted Trade-offs**:
- {trade_off_1}: {justification}
- {trade_off_2}: {justification}

## Risk Mitigation Plan
{risk_mitigation_strategies}

## Success Metrics
- {metric_1}: {target_value}
- {metric_2}: {target_value}

## Reversibility Strategy
{how_to_reverse_if_needed}

## Recommendation
{final_recommendation_with_confidence}

Brotherhood Collaboration

  • Technical review with senior developers
  • Architecture alignment with architect team
  • Operational review with DevOps team
  • Security review with security team