# redup/duplication | 3 groups | 155f 20217L | 2026-03-23

SUMMARY:
  files_scanned: 155
  total_lines:   20217
  dup_groups:    3
  dup_fragments: 14
  saved_lines:   176
  scan_ms:       988

DUPLICATES[3] (ranked by impact):
  [126702f8052dd811] ! EXAC  validate_jsx_component  L=20 N=6 saved=100 sim=1.00
      validate_human_task_refactoring.py:7-26  (validate_jsx_component)
      validate_tasks_panel_refactoring.py:7-26  (validate_jsx_component)
      validate_ticket_detail_refactoring.py:7-26  (validate_jsx_component)
      validate_dispatch_table_refactoring.py:7-26  (validate_jsx_component)
      validate_tool_health_refactoring.py:7-26  (validate_jsx_component)
      validate_tools_panel_refactoring.py:7-26  (validate_jsx_component)
  [3a969d20e867f6b8] ! EXAC  count_complexity  L=13 N=6 saved=65 sim=1.00
      validate_human_task_refactoring.py:28-40  (count_complexity)
      validate_tasks_panel_refactoring.py:28-40  (count_complexity)
      validate_ticket_detail_refactoring.py:28-40  (count_complexity)
      validate_dispatch_table_refactoring.py:28-40  (count_complexity)
      validate_tool_health_refactoring.py:28-40  (count_complexity)
      validate_tools_panel_refactoring.py:28-40  (count_complexity)
  [fc931fe75897eb75]   STRU  cmd_sessions_list  L=11 N=2 saved=11 sim=1.00
      src/proxym/cli/context.py:74-84  (cmd_sessions_list)
      src/proxym/cli/context.py:87-97  (cmd_mcp_servers)

REFACTOR[3] (ranked by priority):
  [1] ○ extract_function   → utils/validate_jsx_component.py
      WHY: 6 occurrences of 20-line block across 6 files — saves 100 lines
      FILES: validate_dispatch_table_refactoring.py, validate_human_task_refactoring.py, validate_tasks_panel_refactoring.py, validate_ticket_detail_refactoring.py, validate_tool_health_refactoring.py +1 more
  [2] ○ extract_function   → utils/count_complexity.py
      WHY: 6 occurrences of 13-line block across 6 files — saves 65 lines
      FILES: validate_dispatch_table_refactoring.py, validate_human_task_refactoring.py, validate_tasks_panel_refactoring.py, validate_ticket_detail_refactoring.py, validate_tool_health_refactoring.py +1 more
  [3] ○ extract_function   → src/proxym/cli/utils/cmd_sessions_list.py
      WHY: 2 occurrences of 11-line block across 1 files — saves 11 lines
      FILES: src/proxym/cli/context.py

METRICS-TARGET:
  dup_groups:  3 → 0
  saved_lines: 176 lines recoverable
