## Brief overview Mandatory use of Rich Choice Objects system instead of Django tuple-based choices for all choice fields in ThrillWiki project. ## Rich Choice Objects enforcement - NEVER use Django tuple-based choices (e.g., `choices=[('VALUE', 'Label')]`) - ALWAYS use RichChoiceField - All choice fields MUST use `RichChoiceField(choice_group="group_name", domain="domain_name")` pattern - Choice definitions MUST be created in domain-specific `choices.py` files using RichChoice dataclass - All choices MUST include rich metadata (color, icon, description, css_class at minimum) - Choice groups MUST be registered with global registry using `register_choices()` function - Import choices in domain `__init__.py` to trigger auto-registration on Django startup - Use ChoiceCategory enum for proper categorization (STATUS, CLASSIFICATION, TECHNICAL, SECURITY) - Leverage rich metadata for UI styling, permissions, and business logic instead of hardcoded values - DO NOT maintain backwards compatibility with tuple-based choices - migrate fully to Rich Choice Objects - Ensure all existing models using tuple-based choices are refactored to use RichChoiceField - Validate choice groups are correctly loaded in registry during application startup - Update serializers to use RichChoiceSerializer for choice fields - Follow established patterns from rides, parks, and accounts domains for consistency