dependency_graph: design_version: 2 workflow_version: v003 generated_at: '2025-12-18T17:43:33.701270' generator: validate_design.py stats: total_entities: 21 total_layers: 4 max_parallelism: 9 critical_path_length: 4 layers: - layer: 1 name: Data Layer description: Database models - no external dependencies items: - id: api_get_label_stats type: api name: Get label statistics depends_on: [] task_id: task_create_api_get_label_stats agent: backend complexity: medium - id: api_remove_artist_from_label type: api name: Remove artist from label depends_on: [] task_id: task_create_api_remove_artist_from_label agent: backend complexity: medium - id: api_update_label type: api name: Update label profile depends_on: [] task_id: task_create_api_update_label agent: backend complexity: medium - id: component_artist_roster type: component name: ArtistRoster depends_on: [] task_id: task_create_component_artist_roster agent: frontend complexity: medium - id: component_invitation_card type: component name: InvitationCard depends_on: [] task_id: task_create_component_invitation_card agent: frontend complexity: medium - id: component_label_card type: component name: LabelCard depends_on: [] task_id: task_create_component_label_card agent: frontend complexity: medium - id: component_label_header type: component name: LabelHeader depends_on: [] task_id: task_create_component_label_header agent: frontend complexity: medium - id: component_label_stats type: component name: LabelStats depends_on: [] task_id: task_create_component_label_stats agent: frontend complexity: medium - id: model_label_invitation type: model name: LabelInvitation depends_on: [] task_id: task_create_model_label_invitation agent: backend complexity: medium requires_layers: [] parallel_count: 9 - layer: 2 name: API Layer description: REST endpoints - depend on models items: - id: api_create_label_invitation type: api name: Create artist invitation depends_on: - model_label_invitation task_id: task_create_api_create_label_invitation agent: backend complexity: medium - id: api_delete_label_invitation type: api name: Cancel invitation depends_on: - model_label_invitation task_id: task_create_api_delete_label_invitation agent: backend complexity: medium - id: api_get_label type: api name: Get label details depends_on: - model_label_invitation task_id: task_create_api_get_label agent: backend complexity: medium - id: api_list_artist_invitations type: api name: List artist invitations depends_on: - model_label_invitation task_id: task_create_api_list_artist_invitations agent: backend complexity: medium - id: api_list_label_invitations type: api name: List label invitations depends_on: - model_label_invitation task_id: task_create_api_list_label_invitations agent: backend complexity: medium - id: api_respond_to_invitation type: api name: Respond to invitation depends_on: - model_label_invitation task_id: task_create_api_respond_to_invitation agent: backend complexity: medium - id: component_label_profile_form type: component name: LabelProfileForm depends_on: - api_update_label task_id: task_create_component_label_profile_form agent: frontend complexity: medium requires_layers: - 1 parallel_count: 7 - layer: 3 name: UI Layer description: Pages and components - depend on APIs items: - id: component_invite_artist_modal type: component name: InviteArtistModal depends_on: - api_create_label_invitation task_id: task_create_component_invite_artist_modal agent: frontend complexity: medium - id: page_label_profile type: page name: Label Profile depends_on: - api_get_label - component_label_stats - component_label_header - api_get_label_stats - component_artist_roster task_id: task_create_page_label_profile agent: frontend complexity: medium - id: page_label_settings type: page name: Label Settings depends_on: - component_label_profile_form - api_get_label task_id: task_create_page_label_settings agent: frontend complexity: medium requires_layers: - 1 - 2 parallel_count: 3 - layer: 4 name: Layer 4 description: Entities with 3 levels of dependencies items: - id: page_label_dashboard type: page name: Label Dashboard depends_on: - api_get_label - component_invitation_card - component_label_stats - api_list_label_invitations - component_invite_artist_modal - api_get_label_stats - component_artist_roster task_id: task_create_page_label_dashboard agent: frontend complexity: medium - id: page_label_invitations type: page name: Label Invitations depends_on: - component_invitation_card - api_list_label_invitations - component_invite_artist_modal task_id: task_create_page_label_invitations agent: frontend complexity: medium requires_layers: - 1 - 2 - 3 parallel_count: 2 dependency_map: model_label_invitation: type: model layer: 1 depends_on: [] depended_by: - api_get_label - api_create_label_invitation - api_delete_label_invitation - api_respond_to_invitation - api_list_artist_invitations - api_list_label_invitations api_get_label: type: api layer: 2 depends_on: - model_label_invitation depended_by: - page_label_profile - page_label_settings - page_label_dashboard api_update_label: type: api layer: 1 depends_on: [] depended_by: - component_label_profile_form api_get_label_stats: type: api layer: 1 depends_on: [] depended_by: - page_label_profile - page_label_dashboard api_list_label_invitations: type: api layer: 2 depends_on: - model_label_invitation depended_by: - page_label_invitations - page_label_dashboard api_create_label_invitation: type: api layer: 2 depends_on: - model_label_invitation depended_by: - component_invite_artist_modal api_delete_label_invitation: type: api layer: 2 depends_on: - model_label_invitation depended_by: [] api_list_artist_invitations: type: api layer: 2 depends_on: - model_label_invitation depended_by: [] api_respond_to_invitation: type: api layer: 2 depends_on: - model_label_invitation depended_by: [] api_remove_artist_from_label: type: api layer: 1 depends_on: [] depended_by: [] page_label_profile: type: page layer: 3 depends_on: - api_get_label - component_label_stats - component_label_header - api_get_label_stats - component_artist_roster depended_by: [] page_label_dashboard: type: page layer: 4 depends_on: - api_get_label - component_invitation_card - component_label_stats - api_list_label_invitations - component_invite_artist_modal - api_get_label_stats - component_artist_roster depended_by: [] page_label_settings: type: page layer: 3 depends_on: - component_label_profile_form - api_get_label depended_by: [] page_label_invitations: type: page layer: 4 depends_on: - component_invitation_card - api_list_label_invitations - component_invite_artist_modal depended_by: [] component_label_card: type: component layer: 1 depends_on: [] depended_by: [] component_label_header: type: component layer: 1 depends_on: [] depended_by: - page_label_profile component_label_stats: type: component layer: 1 depends_on: [] depended_by: - page_label_profile - page_label_dashboard component_artist_roster: type: component layer: 1 depends_on: [] depended_by: - page_label_profile - page_label_dashboard component_invitation_card: type: component layer: 1 depends_on: [] depended_by: - page_label_invitations - page_label_dashboard component_invite_artist_modal: type: component layer: 3 depends_on: - api_create_label_invitation depended_by: - page_label_invitations - page_label_dashboard component_label_profile_form: type: component layer: 2 depends_on: - api_update_label depended_by: - page_label_settings task_map: []