Skip to content

Lifecycle Stages - Single Source of Truth

Overview

All lifecycle stage definitions are centralized in beads_clickup/lifecycle_stages.py to maintain consistency across the codebase.

Architecture

Single Source of Truth

  • Primary Definition: beads_clickup/lifecycle_stages.py
  • LIFECYCLE_STAGES: Canonical list of all stage names
  • STAGE_DESCRIPTIONS: Descriptions for LLM classification
  • STAGE_COLORS: Color mapping for visualization
  • DEFAULT_LIFECYCLE_STAGE: Default stage for new tasks

Configuration Override

  • Optional Override: .beads/integrations/clickup/config.yaml
  • Can optionally override lifecycle_stages in the visualization section
  • If not specified, uses defaults from lifecycle_stages.py
  • Use get_lifecycle_stages_from_config(config) to retrieve stages with fallback

Deprecated References

  • Legacy Enum: beads_clickup/constants.py - LifecycleStage
  • Kept for backward compatibility only
  • Import from lifecycle_stages.py instead

Current Lifecycle Stages

  1. Use Case Definition - Defining requirements, use cases, user stories, project scope
  2. Dataset Gathering - Collecting and preparing initial datasets
  3. High-Level Design - Architecture and design decisions
  4. Metrics Selection - Choosing KPIs and success criteria
  5. Baseline Setting - Establishing baseline measurements
  6. Core Functionality - Building main features and MVP
  7. Data Gathering - Ongoing data collection and pipelines
  8. Security - Security implementation and fixes
  9. Complete Functionality - Polishing features and edge cases
  10. Integration Implementation - Building integrations and APIs
  11. Integration - Testing integrations and system integration
  12. Shadow Testing - Production-like testing and A/B tests
  13. Handover - Documentation, deployment, and delivery
  14. Monitoring & Evaluation - Post-deployment monitoring

Usage

Python Code

from beads_clickup.lifecycle_stages import (
    LIFECYCLE_STAGES,
    STAGE_DESCRIPTIONS,
    STAGE_COLORS,
    get_stage_color,
    get_stage_description,
    get_lifecycle_stages_from_config,
)

# Get default stages
stages = LIFECYCLE_STAGES

# Get stages from config (with fallback to defaults)
config = yaml.safe_load(open("config.yaml"))
stages = get_lifecycle_stages_from_config(config)

# Get color for a stage
color = get_stage_color("High-Level Design")  # Returns "#4A90D9"

# Get description for a stage
desc = get_stage_description("Core Functionality")

Configuration

# .beads/integrations/clickup/config.yaml
visualization:
  # Optional: Override default stages (uncomment to customize)
  # lifecycle_stages:
  #   - "Custom Stage 1"
  #   - "Custom Stage 2"

  # If not specified, uses defaults from lifecycle_stages.py

Benefits

  1. Consistency: All components use the same stage definitions
  2. Maintainability: Update stages in one place, changes propagate everywhere
  3. Type Safety: Centralized validation and constants
  4. Flexibility: Optional config override for project-specific workflows
  5. DRY: No duplication of stage lists across the codebase
  • beads_clickup/lifecycle_stages.py - Single source of truth
  • beads_clickup/stage_classifier.py - LLM-based classification
  • beads_clickup/mcp_server.py - MCP server and graph generation
  • beads_clickup/lifecycle_graph.py - Graph builder
  • .beads/integrations/clickup/config.yaml - Optional override