# 熵治理配置
# 控制 entropy-scanner 的扫描频率、分级规则和白名单

## 扫描基线
scan:
  last_scan_commit: null   # 由 entropy-scanner 自动维护，首次扫描时初始化
  max_commits_per_scan: 20 # 单次最多扫描的提交数（防止历史过大时失控）

## 触发策略
triggers:
  post_commit:
    enabled: true
    level: L0           # PostCommit 只做 L0 确定性修复（< 1 秒，不拖慢 commit）
    quiet: true         # 无输出（只在 entropy-report.json 中记录）

  post_ship:
    enabled: true
    level: L1           # /ship 完成后做 L0 + L1（10-30 秒，不阻塞 commit 流程）
    update_health_score: true

  manual:
    level: L2           # 手动触发时做全量扫描（包含 L2 rule_drifts）

## 分级规则
levels:
  L0:
    description: "确定性修复，零 token，完全自动"
    auto_fix: true
    requires_approval: false
    examples:
      - "context-index.json 中存在已删除模块的条目"
      - "task-progress.md 活跃表中存在已归档任务"

  L1:
    description: "AI 辅助检测，自动标记，不自动更新 reference 内容"
    auto_fix: false       # 只标记，内容更新由 /update-refs 处理
    requires_approval: false
    report_to: entropy-report.json
    examples:
      - "reference 覆盖的模块路径有文件变更（stale）"
      - "新增目录不在任何 reference 覆盖范围（missing）"

  L2:
    description: "架构级偏差，只标记，需人工确认"
    auto_fix: false
    requires_approval: true
    report_to: briefing   # 在 /briefing 中展示待审项
    examples:
      - "tech-stack.md 声明的框架与 package.json 实际依赖不一致"
      - "rules/ 中的架构约束与代码实际模式有重大偏差"

  L3:
    description: "可忽略变更"
    auto_fix: false
    report: false
    examples:
      - "仅注释或格式修改"
      - "测试文件变更（不影响 reference 准确性）"

## 白名单（不触发扫描的路径）
ignore_paths:
  - ".agent/**"           # .agent 目录本身的变更不触发
  - "*.md"                # 纯文档变更（非 reference 文件）忽略
  - "*.test.*"            # 测试文件
  - "*.spec.*"
  - ".gitignore"
  - "package-lock.json"
  - "yarn.lock"
  - "pnpm-lock.yaml"

## 健康度评分权重
health_score:
  base: 100
  penalties:
    stale_ref: -3         # 每个过时 reference
    missing_ref: -3       # 每个缺失 reference
    rule_drift: -5        # 每个架构规则偏差
  bonuses:
    auto_fix: 2           # 每次 L0 自动修复（上限 +10）
  alert_threshold: 70     # 健康度低于此值时在 /briefing 中发出警告
