## 上下文缺失推翻（Kill Mandate）

> 你的目标是推翻缺陷报告。只有找到确凿的代码证据才能推翻。
> 核心问题：detection 在有限上下文中报出了缺陷，但如果看到更多上下文，缺陷可能不成立。

### 适用场景

- 缺陷涉及"符号未定义"或"方法不存在"，但可能通过隐式途径引入
- 缺陷涉及"类型不匹配"，但可能存在合法的类型关系
- 缺陷涉及"资源未释放"，但可能存在隐式的资源管理
- 缺陷基于 Diff 片段而非完整函数/类得出结论

### 推翻流程

1. **读取完整上下文**：`Read` 获取问题代码所在的完整函数或类（不仅是 Diff 片段）
2. **搜索遗漏的上下文**：使用工具搜索 detection 可能遗漏的隐式来源
3. **判定**：找到遗漏的上下文 → Kill；全面搜索后仍未找到 → 未推翻

### 推翻模式

#### 符号隐式定义

detection 报告"符号未定义"，但符号通过以下途径隐式引入：

| 隐式途径 | 搜索命令 | 判定 |
|---------|---------|------|
| 继承链 | `Read` 当前类声明 → `Grep` 父类/接口中搜索符号 | 父类中定义 → Kill |
| Mixin/Trait | `Grep` 搜索 `include`/`extends`/`mixins`/`with` → 在 Mixin 中搜索符号 | Mixin 中定义 → Kill |
| 依赖注入 | `Grep` 搜索 `@Autowired`/`@Inject`/`@Injectable()`/`@Component`/`@Service` | DI 容器管理且配置中存在 → Kill |
| 动态特性 | `Grep` 搜索 `eval()`/`Proxy`/`Object.defineProperty()`/`__getattr__`/`method_missing` | 通过动态特性提供 → 标记"动态注入，需人工确认" |

**工具链**：
- 优先使用 `find_definition` 查找符号定义
- `find_definition` 无结果时，依次搜索继承链 → Mixin → DI → 动态特性

#### 类型隐式兼容

detection 报告"类型不匹配"，但存在合法的类型关系：

| 兼容方式 | 验证方法 | 判定 |
|---------|---------|------|
| 子类型多态 | `Read` 获取声明类型和实际类型 → `find_definition` 查找定义 → 检查继承/实现关系 | 赋值类型是子类型 → Kill |
| 隐式转换 | 检查语言内置转换：JS `==`/`+`、Python `__int__()`/`__str__()`、Java 自动装箱 | 存在合法隐式转换 → Kill |
| 类型收窄 | `Read` 检查 `typeof`/`instanceof`/`in` 等类型守卫 | 收窄后类型匹配 → Kill |
| 泛型协变 | 检查泛型参数的协变/逆变关系（TypeScript `readonly`、Java `? extends`） | 合法协变 → Kill |

#### 作用域外定义

detection 仅分析了局部代码，但符号在更广作用域中定义：

| 定义位置 | 搜索方法 | 判定 |
|---------|---------|------|
| 全局/模块级定义 | `Grep` 在文件顶部或模块级别搜索符号赋值 | 找到全局定义 → Kill |
| 配置驱动行为 | `Read` 配置文件（`application.yml`/`.env`/`config.json`） | 配置中定义了该行为 → Kill |
| 运行时注入 | `Grep` 搜索 `window.`/`global.`/`process.env` 注入点 | 运行时动态注入 → Kill |

#### 资源隐式管理

detection 报告"资源未释放"，但存在隐式资源管理：

| 隐式管理方式 | 搜索命令 | 判定 |
|-------------|---------|------|
| finally 块释放 | `Read` 获取完整函数 → 搜索 `finally` 块中的释放逻辑 | finally 中有释放 → Kill |
| defer 延迟释放 | `Grep` 搜索 `defer file.Close()`/`defer conn.Close()` 等 | defer 声明了释放 → Kill |
| try-with-resources | `Grep` 搜索 `try (`/`using (`/`with ` 开头的资源声明 | 自动管理模式 → Kill |
| 框架资源池 | `Read` 检查连接池/ORM session 配置 | 框架管理生命周期 → Kill |

### 推翻判定规则

- **Kill 条件**：通过工具搜索找到 detection 遗漏的有效上下文，且该上下文使缺陷不成立
- **未推翻条件**：全面搜索所有隐式途径后仍未找到使缺陷不成立的上下文
- **部分推翻**：找到的上下文仅部分缓解缺陷 → 不 Kill，但在结果中注明缓解程度

### 降级策略

- `find_definition` 不可用 → 降级为 `Grep` 搜索符号定义（`def`/`function`/`class` + 符号名）
- `find_references` 不可用 → 降级为 `Grep` 搜索调用点
- LSP 工具整体不可用 → 全部使用 `Grep` + `Read` 替代
- 工具超时或返回错误 → 记录"上下文未完全验证"，该策略判定为"未推翻"
