## 证据不足推翻（Kill Mandate）

> 你的目标是推翻缺陷报告。只有找到确凿的代码证据才能推翻。
> 核心问题：detection 的推理链存在断裂——从代码证据到缺陷结论缺乏完整的逻辑链。

### 适用场景

- 缺陷报告依赖推测而非代码证据
- 缺陷报告中包含"可能"、"也许"、"理论上"等推测性表述
- 缺陷的因果链不完整，无法从代码证据推导出结论
- detection 基于模式匹配而非数据流分析得出结论

### 推翻流程

1. **审查推理链**：检查缺陷报告的每个推理步骤是否有代码证据支持
2. **识别断裂点**：找出推理中的断裂点（推测、假设、跳跃）
3. **尝试补充证据**：用工具搜索代码，尝试补充断裂的证据
4. **判定**：证据补充成功 → 未推翻（缺陷成立）；无法补充 → Kill（证据不足）

### 推翻模式

#### 触发路径缺失

报告说"可能存在X问题"但无法构造具体触发路径：

| 断裂类型 | 验证方法 | 判定 |
|---------|---------|------|
| 缺少具体触发输入 | 尝试构造触发输入 → `Read` 检查输入验证逻辑 | 无法构造有效触发输入 → Kill |
| 缺少完整调用链 | `find_references` 追踪从入口到问题代码的调用链 | 调用链断裂（中间节点不可达）→ Kill |
| 缺少状态前置条件 | `Read` 检查触发缺陷所需的状态前置条件 | 所需状态不可能达到 → Kill |
| 缺少时序条件 | `Read` 检查触发缺陷所需的时序条件 | 时序条件不可能满足 → Kill |

**工具链**：
- `find_references` 从入口追踪到问题代码
- `Read` 获取完整上下文，构造具体触发场景
- `Grep` 搜索相关状态变量和条件

#### 数据流断裂

报告说"数据可能为X"但无法追踪到数据来源：

| 断裂类型 | 验证方法 | 判定 |
|---------|---------|------|
| null/undefined 来源缺失 | `find_references` 追踪变量的所有赋值点 | 所有赋值路径都有非null保证 → Kill |
| 污染数据来源缺失 | `Grep` 追踪 Source → Sink 传播路径 | Source 不可控或路径中断 → Kill |
| 异常值来源缺失 | `Read` 检查值的生成逻辑，判断是否可能产生异常值 | 值域约束保证不可能异常 → Kill |
| 类型不匹配来源缺失 | `find_definition` 追踪类型定义和转换链 | 所有转换都是安全的 → Kill |

#### 影响路径缺失

报告说"可能导致X"但无法展示从缺陷到影响的完整路径：

| 断裂类型 | 验证方法 | 判定 |
|---------|---------|------|
| 缺陷到影响断裂 | `find_references` 追踪缺陷结果如何传播到下游 | 下游有防御性检查或不会导致实际影响 → Kill |
| 影响范围不明确 | `Read` 检查影响的实际范围 | 影响范围极小或可忽略 → Kill |
| 影响可自动恢复 | `Grep` 搜索自动恢复机制：重试、补偿、回滚 | 有自动恢复 → Kill |
| 影响被框架吸收 | `Read` 检查框架是否自动处理该类影响 | 框架自动处理 → Kill |

#### 假设验证失败

报告基于某个假设但无法验证该假设：

| 假设类型 | 验证方法 | 判定 |
|---------|---------|------|
| 假设用户会传恶意输入 | `Read` 检查接口调用方和输入来源 | 输入来自可信来源（配置常量、服务端生成、内部 RPC）→ Kill |
| 假设外部 API 输入不可信 | `Grep` 检查调用方：微服务内部调用、消息队列消费 | 内部服务调用可信 → Kill |
| 假设文件输入不可信 | `Read` 检查文件来源：应用打包文件、管理员上传、自动生成 | 受控文件源可信 → Kill |
| 假设网络传输被篡改 | `Grep` 检查通信协议：HTTPS、内部服务网格、VPN | 加密内网传输 → Kill |
| 假设特定值会导致问题 | `Grep` 搜索值的约束条件（枚举、校验、范围限制） | 值域约束排除了问题值 → Kill |
| 假设异常会发生 | `Read` 检查异常发生的条件 | 条件不可能满足 → Kill |
| 假设资源会耗尽 | `Grep` 搜索资源限制配置（连接池大小、超时、限流） | 有资源限制保护 → Kill |
| 假设并发竞争存在 | `Read` 检查并发模型（单线程事件循环、消息队列串行化） | 无并发竞争可能 → Kill |

### 推翻判定规则

- **Kill 条件**：尝试补充证据后仍无法补全推理链，存在无法弥补的断裂点
- **未推翻条件**：成功用工具补充了断裂的证据，推理链完整
- **部分 Kill**：推理链部分断裂但主要逻辑成立 → 不 Kill，在结果中注明证据薄弱点

### 降级策略

- 工具不可用时，仅基于已读取的代码上下文判断推理链完整性
- 无法追踪完整调用链时，基于已有上下文推断，标记"证据链未完全验证"
- 推理链部分可验证时，对可验证部分做判断，不可验证部分标记为"未验证"
