# Harness 组件退化清单
# 每个组件诞生时即定义退场条件，框架随模型进步自然瘦身
# 设计原则：减少保护需人工确认（主动承担风险），恢复保护自动执行（降低风险无需等人批准）

harness_manifest:
  version: 1
  last_evaluated: 2026-03-27

  components:

    context_budget:
      status: active
      introduced: 2026-03-27
      purpose: "防止上下文溢出（>40%）导致 AI 性能下降"
      retirement_condition:
        description: "模型上下文窗口 > 2M tokens 且自管理上下文成功率 > 95%"
      degradation_path:
        advisory:
          action: "将 40% 硬上限改为 60% 软建议，允许 AI 自行判断是否超出"
          trigger: "连续 30 天 overflow_prevented_rate > 90%"
        passive:
          action: "停止预算注入，仅后台监控 utilization 指标"
          trigger: "advisory 状态下 overflow_rate < 2% 连续 30 天"
        retired:
          action: "移除 context-budget skill，归档到 .agent/archive/retired/"
          trigger: "passive 90 天零质量问题"
      rollback:
        trigger: "7 天窗口内 overflow_rate > 10%"
        action: "自动恢复上一级状态，无需人工确认"

    reasoning_sandwich:
      status: active
      introduced: 2026-03-27
      purpose: "确保规划层（sonnet/opus）推理强度 ≥ 执行层，防止弱模型规划导致的任务拆解粗糙"
      retirement_condition:
        description: "单模型全链路（规划→执行→验证）首次通过率 > 95% 连续 30 天"
      degradation_path:
        advisory:
          action: "三模型配置降为双模型（planning=sonnet, execution=haiku, verification=sonnet）"
          trigger: "first_pass_rate > 90% 连续 30 天"
        passive:
          action: "单模型直通，仅保留 phase-gate 状态机检查"
          trigger: "advisory 下 first_pass_rate > 95% 连续 30 天"
        retired:
          action: "移除 reasoning-config.yml，phase-gate 独立保留（不退化）"
          trigger: "passive 90 天首次通过率持续 > 98%"
      rollback:
        trigger: "7 天窗口内 first_pass_rate < 70%"
        action: "自动恢复上一级模型配置"

    agent_firewall:
      status: active
      introduced: 2026-03-27
      purpose: "隔离 sub-agent 输出，防止上下文污染（~8K tokens 噪音）和 reviewer 确认偏误"
      retirement_condition:
        description: "模型原生支持多推理链隔离和选择性遗忘，contamination_rate 自然降到 0%"
      degradation_path:
        advisory:
          action: "从严格 JSON 契约改为半结构化输出（允许更多自由格式）"
          trigger: "input_contamination_rate = 0% 连续 30 天"
        passive:
          action: "完整输出传递，仅保留 review_verdict 的 PASS/FAIL 解析"
          trigger: "advisory 下 contamination_rate = 0% 连续 30 天"
        retired:
          action: "移除输出契约要求，单 agent 多角色模式"
          trigger: "passive 90 天零质量下降"
      rollback:
        trigger: "7 天窗口内 contamination_rate > 5%"
        action: "自动恢复严格 JSON 契约要求"

    entropy_scanner:
      status: active
      introduced: 2026-03-27
      purpose: "自动维护 .agent/ 知识库准确性，防止 reference 过时导致 AI 上下文失真"
      retirement_condition:
        description: "模型在任务结束时自动维护知识库准确率 > 98% 持续 30 天"
      degradation_path:
        advisory:
          action: "移除独立 entropy-scanner，改为 /ship 内置的轻量检查步骤"
          trigger: "health_score > 95 连续 30 天（L1 修复数量趋近于 0）"
        passive:
          action: "仅保留 L0 确定性修复（PostCommit hook），移除 L1 AI 检测"
          trigger: "advisory 下 stale_refs_rate < 2% 连续 30 天"
        retired:
          action: "信任模型自维护，移除 entropy-scanner，保留 context-index.json 结构"
          trigger: "passive 90 天知识库健康度 > 98% 持续"
      rollback:
        trigger: "7 天窗口内 health_score < 80"
        action: "自动恢复上一级扫描级别"

    phase_gate:
      status: active
      introduced: 2026-03-27
      purpose: "确定性状态机检查，防止跳步和死循环，max_retry=2 硬性限制"
      retirement_condition:
        description: "极低概率退化——确定性工具本质上比概率性判断更可靠，这不是'模型不够强'的补偿"
      degradation_path:
        advisory: null     # 不预期降级
        passive: null
        retired: null
      notes: "确定性工具永久保留。即使模型能力大幅提升，机械化检查的成本极低（几乎为零），移除它没有收益。"
      rollback: null

    deterministic_hooks:
      status: active
      introduced: 2026-03-27
      purpose: "linter/formatter/compiler 先于 AI 运行，零 token 捕获机械化错误"
      retirement_condition:
        description: "AI 原生代码生成零 lint 错误率 > 99.5% 持续 90 天（理论值，实际极难达到）"
      degradation_path:
        advisory:
          action: "改为软提示（不阻断），让 AI 自行修复 lint 错误"
          trigger: "lint_error_rate < 0.1% 连续 90 天"
        passive: null
        retired: null
      notes: "与 phase_gate 同理，确定性工具长期保留价值极高。"
      rollback:
        trigger: "7 天窗口内 lint_error_rate > 1%"
        action: "恢复阻断模式"

# 成熟度状态定义
maturity_levels:
  active:
    description: "完全启用，不可跳过"
    context_cost: "正常注入上下文"

  advisory:
    description: "建议性启用，可被覆盖"
    context_cost: "轻量上下文（只注入摘要）"

  passive:
    description: "仅后台监控，不注入上下文"
    context_cost: "零注入，仅收集指标"

  retired:
    description: "完全移除，归档保留"
    context_cost: "零成本"

# 退化操作规则（非对称安全设计）
degradation_rules:
  downgrade:
    requires: "开发者手动修改 harness-manifest.yml 中对应组件的 status 字段并提交"
    rationale: "减少保护是主动承担风险，必须有意识地选择"
  upgrade_rollback:
    requires: "自动执行，无需人工确认"
    rationale: "恢复保护不应等待人批准，降低风险优先级最高"
