# guardrails.yaml — 安全红线配置（PRD §10.1）
# 六条红线：任何触发都必须暂停并通知人工

rules:
  - id: live_trading
    name: 实盘交易拦截
    description: 任何涉及真实资金的操作必须人工确认
    severity: critical
    triggers:
      - pattern: "实盘|live|真实资金|real.money|真金白银"
        in: [task_title, task_description, must_haves]
      - task_type: live_trade
    action: block_and_notify
    message: "⚠️ 安全红线：检测到实盘交易操作，需要人工确认后才能执行"

  - id: data_deletion
    name: 数据删除拦截
    description: 删除历史数据、回测结果必须人工确认
    severity: critical
    triggers:
      - pattern: "删除|delete|remove|drop|清空|truncate"
        in: [task_title, task_description]
      - task_type: data_delete
    action: block_and_notify
    message: "⚠️ 安全红线：检测到数据删除操作，需要人工确认后才能执行"

  - id: config_change
    name: 系统配置变更拦截
    description: 修改 daemon/API/Agent 配置必须人工确认
    severity: critical
    triggers:
      - pattern: "修改配置|change.config|daemon.*config|api.*config|agent.*config"
        in: [task_title, task_description]
      - task_type: config_change
    action: block_and_notify
    message: "⚠️ 安全红线：检测到系统配置变更，需要人工确认后才能执行"

  - id: high_token_usage
    name: 大额Token消耗
    description: 单步超过阈值时自动暂停并通知
    severity: warning
    triggers:
      - token_threshold: 100000
    action: pause_and_notify
    message: "⚠️ 安全红线：单步Token消耗超过100K，已自动暂停"

  - id: agent_uncontrolled
    name: Agent不受控行为
    description: Agent执行超出步骤范围时自动终止并升级
    severity: critical
    triggers:
      - step_exceeded: true
    action: terminate_and_escalate
    message: "⚠️ 安全红线：Agent行为超出步骤范围，已自动终止"
    # TODO: 需在 Spawner/Ticker monitor 中集成 step 超限检查后调用

  - id: consecutive_failure
    name: 连续失败
    description: 同一任务连续3个步骤失败时暂停并人工介入
    severity: warning
    triggers:
      - consecutive_failures: 3
    action: pause_and_escalate
    message: "⚠️ 安全红线：任务连续失败3次，需要人工介入"

# 全局设置
settings:
  # 是否启用安全红线（生产环境必须为 true）
  enabled: true
  # 通知方式（当前仅记录日志+黑板事件，mail通知待后续集成）
  notify_via: log
  # 通知目标（发给谁）
  notify_to: main
