# Triage scoring weights and thresholds
# Used by: triage_score.py, deep_triage.sh

version: "1.0.0"

# Scoring thresholds
thresholds:
  ready: 5  # Minimum score to be considered "ready" for work
  excellent: 8  # Score indicating well-scoped, actionable issue

# Scope scoring (0-3)
scope:
  file_patterns:
    - pattern: '(?:src/|tests/|scripts/|\.py|\.html|\.js|\.yaml|\.toml|\.sh)'
      weight: 1
      description: "Mentions specific files"
  function_patterns:
    - pattern: '(?:def |class |function |method |`\w+\(\)`)'
      weight: 1
      description: "Mentions specific functions/classes"
  title_length:
    max_chars: 80
    weight: 1
    description: "Short, focused title"
  meta_penalty: -2  # Penalty for philosophy/meta issues

# Acceptance criteria scoring (0-3)
acceptance:
  language_patterns:
    - pattern: '(?:should|must|expect|verify|assert|test.?case|acceptance|criteria|pass(?:es|ing)|fail(?:s|ing)|return(?:s)?|raise(?:s)?)'
      weight: 2
      min_matches: 3
      description: "Has acceptance-related language"
  test_patterns:
    - pattern: '(?:tox|pytest|test_\w+|\.test\.|assert\s)'
      weight: 1
      description: "Mentions specific tests"
  structure_patterns:
    - pattern: '##\s*(problem|solution|expected|actual|steps)'
      weight: 1
      description: "Has structured sections"

# Alignment scoring (0-3)
alignment:
  bug_tags:
    - bug
    - broken
    - crash
    - error
    - fix
    - regression
    - hotfix
  bug_score: 3  # Bugs on main = highest priority
  
  refactor_tags:
    - refactor
    - cleanup
    - tech-debt
    - optimization
    - perf
  refactor_score: 2
  
  feature_tags:
    - feature
    - feat
    - enhancement
    - capability
    - timmy-capability
  feature_score: 2
  
  loop_generated_bonus: 1  # Boost for loop-generated issues
  
  meta_tags:
    - philosophy
    - soul-gap
    - discussion
    - question
    - rfc
  meta_score: 0  # Philosophy issues are valid but lowest priority

# Quarantine rules
quarantine:
  failure_threshold: 2  # Failures before quarantine
  lookback_cycles: 20  # How many cycles to look back

# Issue type classification
types:
  bug:
    tags: [bug, broken, crash, error, fix, regression, hotfix]
    priority_bonus: 0  # Handled by alignment scoring
  feature:
    tags: [feature, feat, enhancement, capability, timmy-capability]
  refactor:
    tags: [refactor, cleanup, tech-debt, optimization, perf]
  philosophy:
    tags: [philosophy, soul-gap, discussion, question, rfc]
    dev_actionable: false
  unknown:
    default: true
