# proxy/flow | 2183 func | 12 pipelines | 15 hub-types | 2026-03-24

PIPELINES[12] (Core:10, IO:1, NLP:1):
  Src [IO]: Path | None → bool
              → sync_from_git_log(repo_path:Path | None) → list[User] CC=6    pure ▶
              → _sync_git_users_from_repo(cwd:Path, git_dir:Path) → list[User] CC=2    pure
              → _collect_git_authors_from_objects(git_dir:Path) → list[tuple[str, str]] CC=7    mutation
              → _iter_git_starting_shas(git_dir:Path) → list[str] CC=2    pure
              → _read_git_ref(git_dir:Path, ref_name:str) → str | None CC=2    pure
              → _read_packed_git_ref(git_dir:Path, ref_name:str) → str | None CC=5    IO
              → _parse_packed_git_ref_line(line:str, ref_name:str) → str | None CC=7    pure
              → _is_git_sha(value:str) → bool           CC=3    pure ■
              PURITY: 6/8 pure  BOTTLENECK: _collect_git_authors_from_objects(CC=7)

  Src [Core]: str → T
              → update_ticket(ticket_id:str, task:str | None, title:str | None, project_id:str | None, description:str | None, status:str | None, priority:str | None, type:str | None, sprint_id:str | None, milestone_id:str | None, tags:list[str] | None, files:list[str] | None, context_files:list[str] | None, depends_on:list[str] | None, estimated_hours:float | None, actual_hours:float | None) CC=8    pure ▶
              → _maybe_auto_dispatch_ticket(ticket_id:str) → bool CC=11   pure
              → _enqueue_ticket_job(ticket:Ticket, tool_def, mode:str, model:str, instance:str, project_dir:str) → tuple[object, JobExecution] CC=7    pure
              → _default_project_dir(project_id:str | None) → str CC=6    pure
              → _get_registry()                         CC=4    mutation
              → _seed_workspace_project(registry) → None CC=8    mutation
              → get_settings() → Settings               CC=1    mutation
              → get_singleton(instance_var:T | None, instance_class:Type[T]) → T CC=2    pure ■
              PURITY: 5/8 pure  BOTTLENECK: _maybe_auto_dispatch_ticket(CC=11)

  Src [Core]: str → T
              → assign_ticket_tool(ticket_id:str, tool:str, agent_mode:str, model:str, instance:str) CC=4    pure ▶
              → _maybe_auto_dispatch_ticket(ticket_id:str) → bool CC=11   pure
              → _enqueue_ticket_job(ticket:Ticket, tool_def, mode:str, model:str, instance:str, project_dir:str) → tuple[object, JobExecution] CC=7    pure
              → _default_project_dir(project_id:str | None) → str CC=6    pure
              → _get_registry()                         CC=4    mutation
              → _seed_workspace_project(registry) → None CC=8    mutation
              → get_settings() → Settings               CC=1    mutation
              → get_singleton(instance_var:T | None, instance_class:Type[T]) → T CC=2    pure ■
              PURITY: 5/8 pure  BOTTLENECK: _maybe_auto_dispatch_ticket(CC=11)

  Src [Core]: Request → T
              → receive_delta(request:Request)          CC=9    pure ▶
              → update_project(project_id:str, req:UpdateProjectReq) → dict[str, Any] CC=2    pure
              → _cmd_bus()                              CC=1    pure
              → get_command_bus() → CommandBus          CC=2    mutation
              → _get_registry()                         CC=4    mutation
              → _seed_workspace_project(registry) → None CC=8    mutation
              → get_settings() → Settings               CC=1    mutation
              → get_singleton(instance_var:T | None, instance_class:Type[T]) → T CC=2    pure ■
              PURITY: 4/8 pure  BOTTLENECK: receive_delta(CC=9)

  Src [Core]: ? → T
              → get_setup_state() → dict[str, Any]      CC=1    pure ▶
              → _qry_bus()                              CC=1    pure
              → get_query_bus() → QueryBus              CC=2    mutation
              → _get_registry()                         CC=4    mutation
              → _seed_workspace_project(registry) → None CC=8    mutation
              → get_settings() → Settings               CC=1    mutation
              → get_singleton(instance_var:T | None, instance_class:Type[T]) → T CC=2    pure ■
              PURITY: 3/7 pure  BOTTLENECK: _seed_workspace_project(CC=8)

  Src [Core]: str → T
              → toggle_setup_step(step_id:str, req:ToggleSetupStepReq | None) → dict[str, Any] CC=3    pure ▶
              → _cmd_bus()                              CC=1    pure
              → get_command_bus() → CommandBus          CC=2    mutation
              → _get_registry()                         CC=4    mutation
              → _seed_workspace_project(registry) → None CC=8    mutation
              → get_settings() → Settings               CC=1    mutation
              → get_singleton(instance_var:T | None, instance_class:Type[T]) → T CC=2    pure ■
              PURITY: 3/7 pure  BOTTLENECK: _seed_workspace_project(CC=8)

  Src [Core]: ? → T
              → reset_setup() → dict[str, Any]          CC=2    pure ▶
              → _cmd_bus()                              CC=1    pure
              → get_command_bus() → CommandBus          CC=2    mutation
              → _get_registry()                         CC=4    mutation
              → _seed_workspace_project(registry) → None CC=8    mutation
              → get_settings() → Settings               CC=1    mutation
              → get_singleton(instance_var:T | None, instance_class:Type[T]) → T CC=2    pure ■
              PURITY: 3/7 pure  BOTTLENECK: _seed_workspace_project(CC=8)

  Src [NLP]: Path | None → bool
              → __init__(persist_path:Path | None)      CC=6    mutation ▶
              → _discover_git_user() → User | None      CC=4    pure
              → _read_git_identity() → tuple[str, str]  CC=3    pure
              → _read_git_identity_from_repo() → tuple[str, str] CC=3    pure
              → _resolve_git_repo_root() → Path | None  CC=3    pure
              → _resolve_git_root_candidate(candidate:Path) → Path | None CC=6    pure
              → _git_binary_available() → bool          CC=1    pure ■
              PURITY: 6/7 pure  BOTTLENECK: __init__(CC=6)

  Src [Core]: str | None → T
              → list_projects(status:str | None, source_type:str | None) → list[dict[str, Any]] CC=1    pure ▶
              → _qry_bus()                              CC=1    pure
              → get_query_bus() → QueryBus              CC=2    mutation
              → _get_registry()                         CC=4    mutation
              → _seed_workspace_project(registry) → None CC=8    mutation
              → get_settings() → Settings               CC=1    mutation
              → get_singleton(instance_var:T | None, instance_class:Type[T]) → T CC=2    pure ■
              PURITY: 3/7 pure  BOTTLENECK: _seed_workspace_project(CC=8)

  Src [Core]: str → T
              → get_project(project_id:str) → dict[str, Any] CC=2    pure ▶
              → _qry_bus()                              CC=1    pure
              → get_query_bus() → QueryBus              CC=2    mutation
              → _get_registry()                         CC=4    mutation
              → _seed_workspace_project(registry) → None CC=8    mutation
              → get_settings() → Settings               CC=1    mutation
              → get_singleton(instance_var:T | None, instance_class:Type[T]) → T CC=2    pure ■
              PURITY: 3/7 pure  BOTTLENECK: _seed_workspace_project(CC=8)

  Src [Core]: AddProjectReq → T
              → add_project(req:AddProjectReq) → dict[str, Any] CC=2    pure ▶
              → _cmd_bus()                              CC=1    pure
              → get_command_bus() → CommandBus          CC=2    mutation
              → _get_registry()                         CC=4    mutation
              → _seed_workspace_project(registry) → None CC=8    mutation
              → get_settings() → Settings               CC=1    mutation
              → get_singleton(instance_var:T | None, instance_class:Type[T]) → T CC=2    pure ■
              PURITY: 3/7 pure  BOTTLENECK: _seed_workspace_project(CC=8)

  Src [Core]: str → T
              → remove_project(project_id:str) → dict[str, str] CC=2    pure ▶
              → _cmd_bus()                              CC=1    pure
              → get_command_bus() → CommandBus          CC=2    mutation
              → _get_registry()                         CC=4    mutation
              → _seed_workspace_project(registry) → None CC=8    mutation
              → get_settings() → Settings               CC=1    mutation
              → get_singleton(instance_var:T | None, instance_class:Type[T]) → T CC=2    pure ■
              PURITY: 3/7 pure  BOTTLENECK: _seed_workspace_project(CC=8)


TRANSFORMS (fan-out ≥10):
  TicketsPanel()                                          fan=56   !! mutation-heavy
  TasksPanel()                                            fan=46   !! mutation-heavy
  useDashboardData()                                      fan=44   !! mutation-heavy
  EnvironmentsPanel()                                     fan=42   !! mutation-heavy
  SetupPanel()                                            fan=36   !! mutation-heavy
  create_ticket(task:str, title:str, project_id:str | None, description:str, status:str, priority:str, type:str, sprint_id:str, milestone_id:str, tags:list[str], files:list[str], context_files:list[str], depends_on:list[str], estimated_hours:float, tool:str | None) fan=31   !! mutation-heavy
  VoiceChat()                                             fan=31   !! mutation-heavy
  ProjectFormUnified() → AnalysisResult                   fan=31   !! mutation-heavy
  DiagnosticsPanel()                                      fan=30   !! mutation-heavy
  run_all_tests(request:Request)                          fan=28   !! side-effects
  chat_completions(request:Request, x_task_tier:str | None) fan=27   !! side-effects
  QuickTaskCreator()                                      fan=27   !! side-effects
  TicketDispatchTable()                                   fan=27   !! side-effects
  ToolHealthPanelRefactored()                             fan=27   !! side-effects
  ToolHealthPanel()                                       fan=26   !! side-effects

CONTRACTS:
  Pipeline: Src
    sync_from_git_log(repo_path:Path | None) → list[User]
      IN:  repo_path:Path | None
      OUT: list[User]

    _sync_git_users_from_repo(cwd:Path, git_dir:Path) → list[User]
      IN:  cwd:Path, git_dir:Path
      OUT: list[User]

    _collect_git_authors_from_objects(git_dir:Path) → list[tuple[str, str]]
      IN:  git_dir:Path
      OUT: list[tuple[str, str]]
      SIDE-EFFECT: pure

    _iter_git_starting_shas(git_dir:Path) → list[str]
      IN:  git_dir:Path
      OUT: list[str]

    _read_git_ref(git_dir:Path, ref_name:str) → str | None
      IN:  git_dir:Path, ref_name:str
      OUT: str | None

    _read_packed_git_ref(git_dir:Path, ref_name:str) → str | None
      IN:  git_dir:Path, ref_name:str
      OUT: str | None
      SIDE-EFFECT: IO(read_text)

    _parse_packed_git_ref_line(line:str, ref_name:str) → str | None
      IN:  line:str, ref_name:str
      OUT: str | None

    _is_git_sha(value:str) → bool
      IN:  value:str
      OUT: bool

  Pipeline: Src
    update_ticket(ticket_id:str, task:str | None, title:str | None, project_id:str | None, description:str | None, status:str | None, priority:str | None, type:str | None, sprint_id:str | None, milestone_id:str | None, tags:list[str] | None, files:list[str] | None, context_files:list[str] | None, depends_on:list[str] | None, estimated_hours:float | None, actual_hours:float | None)
      IN:  ticket_id:str, task:str | None, title:str | None, project_id:str | None, description:str | None, status:str | None, priority:str | None, type:str | None, sprint_id:str | None, milestone_id:str | None, tags:list[str] | None, files:list[str] | None, context_files:list[str] | None, depends_on:list[str] | None, estimated_hours:float | None, actual_hours:float | None
      OUT: None

    _maybe_auto_dispatch_ticket(ticket_id:str) → bool
      IN:  ticket_id:str
      OUT: bool

    _enqueue_ticket_job(ticket:Ticket, tool_def, mode:str, model:str, instance:str, project_dir:str) → tuple[object, JobExecution]
      IN:  ticket:Ticket, tool_def, mode:str, model:str, instance:str, project_dir:str
      OUT: tuple[object, JobExecution]

    _default_project_dir(project_id:str | None) → str
      IN:  project_id:str | None
      OUT: str

    _get_registry()
      IN:  ()
      OUT: None
      SIDE-EFFECT: global(_registry)

    _seed_workspace_project(registry) → None
      IN:  registry
      OUT: None
      SIDE-EFFECT: pure

    get_settings() → Settings
      IN:  ()
      OUT: Settings
      SIDE-EFFECT: global(_settings)

    get_singleton(instance_var:T | None, instance_class:Type[T]) → T
      IN:  instance_var:T | None, instance_class:Type[T]
      OUT: T

  Pipeline: Src
    assign_ticket_tool(ticket_id:str, tool:str, agent_mode:str, model:str, instance:str)
      IN:  ticket_id:str, tool:str, agent_mode:str, model:str, instance:str
      OUT: None

    _maybe_auto_dispatch_ticket(ticket_id:str) → bool
      IN:  ticket_id:str
      OUT: bool

    _enqueue_ticket_job(ticket:Ticket, tool_def, mode:str, model:str, instance:str, project_dir:str) → tuple[object, JobExecution]
      IN:  ticket:Ticket, tool_def, mode:str, model:str, instance:str, project_dir:str
      OUT: tuple[object, JobExecution]

    _default_project_dir(project_id:str | None) → str
      IN:  project_id:str | None
      OUT: str

    _get_registry()
      IN:  ()
      OUT: None
      SIDE-EFFECT: global(_registry)

    _seed_workspace_project(registry) → None
      IN:  registry
      OUT: None
      SIDE-EFFECT: pure

    get_settings() → Settings
      IN:  ()
      OUT: Settings
      SIDE-EFFECT: global(_settings)

    get_singleton(instance_var:T | None, instance_class:Type[T]) → T
      IN:  instance_var:T | None, instance_class:Type[T]
      OUT: T

  Pipeline: Src
    receive_delta(request:Request)
      IN:  request:Request
      OUT: None

    update_project(project_id:str, req:UpdateProjectReq) → dict[str, Any]
      IN:  project_id:str, req:UpdateProjectReq
      OUT: dict[str, Any]

    _cmd_bus()
      IN:  ()
      OUT: None

    get_command_bus() → CommandBus
      IN:  ()
      OUT: CommandBus
      SIDE-EFFECT: global(_command_bus)

    _get_registry()
      IN:  ()
      OUT: None
      SIDE-EFFECT: global(_registry)

    _seed_workspace_project(registry) → None
      IN:  registry
      OUT: None
      SIDE-EFFECT: pure

    get_settings() → Settings
      IN:  ()
      OUT: Settings
      SIDE-EFFECT: global(_settings)

    get_singleton(instance_var:T | None, instance_class:Type[T]) → T
      IN:  instance_var:T | None, instance_class:Type[T]
      OUT: T

  Pipeline: Src
    get_setup_state() → dict[str, Any]
      IN:  ()
      OUT: dict[str, Any]

    _qry_bus()
      IN:  ()
      OUT: None

    get_query_bus() → QueryBus
      IN:  ()
      OUT: QueryBus
      SIDE-EFFECT: global(_query_bus)

    _get_registry()
      IN:  ()
      OUT: None
      SIDE-EFFECT: global(_registry)

    _seed_workspace_project(registry) → None
      IN:  registry
      OUT: None
      SIDE-EFFECT: pure

    get_settings() → Settings
      IN:  ()
      OUT: Settings
      SIDE-EFFECT: global(_settings)

    get_singleton(instance_var:T | None, instance_class:Type[T]) → T
      IN:  instance_var:T | None, instance_class:Type[T]
      OUT: T

  Pipeline: Src
    toggle_setup_step(step_id:str, req:ToggleSetupStepReq | None) → dict[str, Any]
      IN:  step_id:str, req:ToggleSetupStepReq | None
      OUT: dict[str, Any]

    _cmd_bus()
      IN:  ()
      OUT: None

    get_command_bus() → CommandBus
      IN:  ()
      OUT: CommandBus
      SIDE-EFFECT: global(_command_bus)

    _get_registry()
      IN:  ()
      OUT: None
      SIDE-EFFECT: global(_registry)

    _seed_workspace_project(registry) → None
      IN:  registry
      OUT: None
      SIDE-EFFECT: pure

    get_settings() → Settings
      IN:  ()
      OUT: Settings
      SIDE-EFFECT: global(_settings)

    get_singleton(instance_var:T | None, instance_class:Type[T]) → T
      IN:  instance_var:T | None, instance_class:Type[T]
      OUT: T

  Pipeline: Src
    reset_setup() → dict[str, Any]
      IN:  ()
      OUT: dict[str, Any]

    _cmd_bus()
      IN:  ()
      OUT: None

    get_command_bus() → CommandBus
      IN:  ()
      OUT: CommandBus
      SIDE-EFFECT: global(_command_bus)

    _get_registry()
      IN:  ()
      OUT: None
      SIDE-EFFECT: global(_registry)

    _seed_workspace_project(registry) → None
      IN:  registry
      OUT: None
      SIDE-EFFECT: pure

    get_settings() → Settings
      IN:  ()
      OUT: Settings
      SIDE-EFFECT: global(_settings)

    get_singleton(instance_var:T | None, instance_class:Type[T]) → T
      IN:  instance_var:T | None, instance_class:Type[T]
      OUT: T

  Pipeline: Src
    __init__(persist_path:Path | None)
      IN:  persist_path:Path | None
      OUT: None
      SIDE-EFFECT: mutates self.users, self._git_sync_meta, self._persist_path

    _discover_git_user() → User | None
      IN:  ()
      OUT: User | None

    _read_git_identity() → tuple[str, str]
      IN:  ()
      OUT: tuple[str, str]

    _read_git_identity_from_repo() → tuple[str, str]
      IN:  ()
      OUT: tuple[str, str]

    _resolve_git_repo_root() → Path | None
      IN:  ()
      OUT: Path | None
      INVARIANT: all entities exist in analysis

    _resolve_git_root_candidate(candidate:Path) → Path | None
      IN:  candidate:Path
      OUT: Path | None
      INVARIANT: all entities exist in analysis

    _git_binary_available() → bool
      IN:  ()
      OUT: bool

  Pipeline: Src
    list_projects(status:str | None, source_type:str | None) → list[dict[str, Any]]
      IN:  status:str | None, source_type:str | None
      OUT: list[dict[str, Any]]

    _qry_bus()
      IN:  ()
      OUT: None

    get_query_bus() → QueryBus
      IN:  ()
      OUT: QueryBus
      SIDE-EFFECT: global(_query_bus)

    _get_registry()
      IN:  ()
      OUT: None
      SIDE-EFFECT: global(_registry)

    _seed_workspace_project(registry) → None
      IN:  registry
      OUT: None
      SIDE-EFFECT: pure

    get_settings() → Settings
      IN:  ()
      OUT: Settings
      SIDE-EFFECT: global(_settings)

    get_singleton(instance_var:T | None, instance_class:Type[T]) → T
      IN:  instance_var:T | None, instance_class:Type[T]
      OUT: T

  Pipeline: Src
    get_project(project_id:str) → dict[str, Any]
      IN:  project_id:str
      OUT: dict[str, Any]

    _qry_bus()
      IN:  ()
      OUT: None

    get_query_bus() → QueryBus
      IN:  ()
      OUT: QueryBus
      SIDE-EFFECT: global(_query_bus)

    _get_registry()
      IN:  ()
      OUT: None
      SIDE-EFFECT: global(_registry)

    _seed_workspace_project(registry) → None
      IN:  registry
      OUT: None
      SIDE-EFFECT: pure

    get_settings() → Settings
      IN:  ()
      OUT: Settings
      SIDE-EFFECT: global(_settings)

    get_singleton(instance_var:T | None, instance_class:Type[T]) → T
      IN:  instance_var:T | None, instance_class:Type[T]
      OUT: T

  Pipeline: Src
    add_project(req:AddProjectReq) → dict[str, Any]
      IN:  req:AddProjectReq
      OUT: dict[str, Any]

    _cmd_bus()
      IN:  ()
      OUT: None

    get_command_bus() → CommandBus
      IN:  ()
      OUT: CommandBus
      SIDE-EFFECT: global(_command_bus)

    _get_registry()
      IN:  ()
      OUT: None
      SIDE-EFFECT: global(_registry)

    _seed_workspace_project(registry) → None
      IN:  registry
      OUT: None
      SIDE-EFFECT: pure

    get_settings() → Settings
      IN:  ()
      OUT: Settings
      SIDE-EFFECT: global(_settings)

    get_singleton(instance_var:T | None, instance_class:Type[T]) → T
      IN:  instance_var:T | None, instance_class:Type[T]
      OUT: T

  Pipeline: Src
    remove_project(project_id:str) → dict[str, str]
      IN:  project_id:str
      OUT: dict[str, str]

    _cmd_bus()
      IN:  ()
      OUT: None

    get_command_bus() → CommandBus
      IN:  ()
      OUT: CommandBus
      SIDE-EFFECT: global(_command_bus)

    _get_registry()
      IN:  ()
      OUT: None
      SIDE-EFFECT: global(_registry)

    _seed_workspace_project(registry) → None
      IN:  registry
      OUT: None
      SIDE-EFFECT: pure

    get_settings() → Settings
      IN:  ()
      OUT: Settings
      SIDE-EFFECT: global(_settings)

    get_singleton(instance_var:T | None, instance_class:Type[T]) → T
      IN:  instance_var:T | None, instance_class:Type[T]
      OUT: T


DATA_TYPES (by cross-function usage) [888 annotated, 68 inferred / 2183 functions]:
  str                  consumed:461 produced:75   !! HUB-TYPE → split interface
  dict[str, Any]       consumed:40  produced:157  !! HUB-TYPE → split interface
  str | None           consumed:121 produced:14   !! HUB-TYPE → split interface
  bool                 consumed:21  produced:46   !! HUB-TYPE → split interface
  int                  consumed:55  produced:5    !! HUB-TYPE → split interface
  AnalysisResult       consumed:5   produced:50 
  click.Context        consumed:54  produced:0    !! HUB-TYPE → split interface
  list[str]            consumed:24  produced:22   !! HUB-TYPE → split interface
  dict                 consumed:27  produced:16   !! HUB-TYPE → split interface
  Path                 consumed:30  produced:1    !! HUB-TYPE → split interface
  float                consumed:28  produced:3    !! HUB-TYPE → split interface
  list[Ticket]         consumed:10  produced:14   !! HUB-TYPE → split interface
  Path | None          consumed:10  produced:8    !! HUB-TYPE → split interface
  VMConfig             consumed:16  produced:1    !! HUB-TYPE → split interface
  list[dict]           consumed:8   produced:9  
  list[str] | None     consumed:15  produced:0    !! HUB-TYPE → split interface
  dict[str, Any] | None consumed:4   produced:10 
  Ticket               consumed:9   produced:3  
  dict[str, str]       consumed:6   produced:6  
  Request              consumed:12  produced:0    !! HUB-TYPE → split interface

  HUB TYPES (consumed ≥10):
    str → 461 consumers → split into:
      - (analyze consumers to suggest sub-interfaces)
    dict[str, Any] → 40 consumers → split into:
      - (analyze consumers to suggest sub-interfaces)
    str | None → 121 consumers → split into:
      - (analyze consumers to suggest sub-interfaces)
    bool → 21 consumers → split into:
      - (analyze consumers to suggest sub-interfaces)
    int → 55 consumers → split into:
      - (analyze consumers to suggest sub-interfaces)
    click.Context → 54 consumers → split into:
      - (analyze consumers to suggest sub-interfaces)
    list[str] → 24 consumers → split into:
      - (analyze consumers to suggest sub-interfaces)
    dict → 27 consumers → split into:
      - replace with typed alternatives (dataclass/TypedDict)
    Path → 30 consumers → split into:
      - (analyze consumers to suggest sub-interfaces)
    float → 28 consumers → split into:
      - (analyze consumers to suggest sub-interfaces)
    list[Ticket] → 10 consumers → split into:
      - (analyze consumers to suggest sub-interfaces)
    Path | None → 10 consumers → split into:
      - (analyze consumers to suggest sub-interfaces)
    VMConfig → 16 consumers → split into:
      - (analyze consumers to suggest sub-interfaces)
    list[str] | None → 15 consumers → split into:
      - (analyze consumers to suggest sub-interfaces)
    Request → 12 consumers → split into:
      - (analyze consumers to suggest sub-interfaces)

SIDE_EFFECTS:
  IO:        install_voice_deps, main, main, web_cmd, config_set, config_get, is_sqlite_database, SQLiteNamespaceStore._open, SQLiteNamespaceStore.load_namespace, SQLiteNamespaceStore.save_namespace
  Cache:     ct, get, post, put, del, stored_list, r, apiCall, r, _callLLM
  Mutation:  _make_args, SQLiteNamespaceStore.__init__, get_settings, UserManager._append_git_sha, UserManager._remember_git_author, UserManager._enqueue_git_object_children, UserManager._apply_pack_delta, UserManager._parse_git_commit_parents, UserManager._collect_git_authors_from_objects, UserManager.__init__
  Pure:      check_voice_deps, cli, serve, status, models, chat, logs_cmd, providers_cmd, routing_test_cmd, projects_cmd

  PIPELINE PURITY:
    Src             ███░ 75% pure
    Src             ██░░ 62% pure
    Src             ██░░ 62% pure
    Src             ██░░ 50% pure
    Src             █░░░ 42% pure
    Src             █░░░ 42% pure
    Src             █░░░ 42% pure
    Src             ███░ 85% pure
    Src             █░░░ 42% pure
    Src             █░░░ 42% pure
    Src             █░░░ 42% pure
    Src             █░░░ 42% pure
