# 跨边界排障参考

仅在缺陷涉及**跨进程/跨服务、异步队列或流、路由目标错误、缓存/状态不一致、时序偶现**时读取。普通可复现缺陷继续按 `cm-fix` 七步闭环，不补这份表。

## 边界

- 这是定位与观测方法，不是新的修复入口、状态文件或完成标准。
- 只使用本地、最小且已脱敏的日志、断言、指标或测试夹具；不自动联网、不外发日志、不安装依赖、不重启服务、不清理缓存。
- 不记录 token、Cookie、密码、个人数据、完整请求体、生产数据库记录或内部端点；需要关联时只保留安全的请求/关联 ID 和必要字段摘要。
- 观测证据只用于定位；仍须遵守 `cm-fix` 的失败证据、红灯测试、独立审查、回归和档案要求。

## 1. 画出调用链并定义证据

先用一行描述从触发到结果的路径：

```text
触发 → 生产者 → 传输/状态 → 消费者 → 结果
```

再在修改行为前定义每条边的最小证据：

| 边 | 预期证据 | 实际证据 | 结论 |
| --- | --- | --- | --- |
| E1：触发 → 生产者 | 安全关联 ID 与关键状态一致 | {待观测} | {待判断} |
| E2：生产者 → 传输/状态 | 事件/状态写入成功 | {待观测} | {待判断} |
| E3：传输/状态 → 消费者 | 消费到同一关联 ID 与版本 | {待观测} | {待判断} |
| E4：消费者 → 结果 | 用户可观察结果符合契约 | {待观测} | {待判断} |

复现后标明：**最后一个正常边**、**第一个失败边**，以及根因所在的最小区间。没有实际证据不得填写“已确认”。

## 2. 逐个检验可证伪假设

| 假设 | 支持证据 | 反证试验 | 结果 |
| --- | --- | --- | --- |
| {具体且可证伪的根因} | {来自哪条边的最小证据} | {一次只改变一个变量的本地试验} | 支持 / 排除 / 待证据 |

- 一次只检验一个假设；失败时回到链路和证据，不叠加猜测式补丁。
- 确认的根因必须能解释首个失败边；开始修复前仍按 `cm-fix` 第 3 步建立红灯测试。仅 `cm-fix` 已明确的纯视觉形态可用修前截图/录屏作为该步骤的证据。
- 多轮修复/回归仍无法解释证据时，按 `$cm-fix` 升级出口交 `$cm-prd --change`，不继续扩大补丁。

## 3. 落档

触发本参考时，把调用链、边证据、最后正常边、首个失败边与假设表写入既有
`{SPECS_DIR}/fixes/{YYYYMMDD}-{slug}.md` 的“证据链与假设”小节；没有 specs 目录的裸项目使用 `docs/fixes/{YYYYMMDD}-{slug}.md`。观测中档案只记录已观察到的事实和等待条件；证据到手后按原 slug 续跑既有闭环。
