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 namesSTAGE_DESCRIPTIONS: Descriptions for LLM classificationSTAGE_COLORS: Color mapping for visualizationDEFAULT_LIFECYCLE_STAGE: Default stage for new tasks
Configuration Override¶
- Optional Override:
.beads/integrations/clickup/config.yaml - Can optionally override
lifecycle_stagesin thevisualizationsection - 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.pyinstead
Current Lifecycle Stages¶
- Use Case Definition - Defining requirements, use cases, user stories, project scope
- Dataset Gathering - Collecting and preparing initial datasets
- High-Level Design - Architecture and design decisions
- Metrics Selection - Choosing KPIs and success criteria
- Baseline Setting - Establishing baseline measurements
- Core Functionality - Building main features and MVP
- Data Gathering - Ongoing data collection and pipelines
- Security - Security implementation and fixes
- Complete Functionality - Polishing features and edge cases
- Integration Implementation - Building integrations and APIs
- Integration - Testing integrations and system integration
- Shadow Testing - Production-like testing and A/B tests
- Handover - Documentation, deployment, and delivery
- 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¶
- Consistency: All components use the same stage definitions
- Maintainability: Update stages in one place, changes propagate everywhere
- Type Safety: Centralized validation and constants
- Flexibility: Optional config override for project-specific workflows
- DRY: No duplication of stage lists across the codebase
Related Files¶
beads_clickup/lifecycle_stages.py- Single source of truthbeads_clickup/stage_classifier.py- LLM-based classificationbeads_clickup/mcp_server.py- MCP server and graph generationbeads_clickup/lifecycle_graph.py- Graph builder.beads/integrations/clickup/config.yaml- Optional override