# 证据协议

**功能 / 项目**:
**最后更新**:
**负责人**:

## 必需证据

- 执行过的命令
- 退出码 / 结论
- 适用时的截图或日志路径
- 关联的 Requirement ID
- 关联的测试文件

## 测试证据包

每个 P0/P1 测试用例或高风险回归至少应能回溯到下面证据:

| 证据 | 适用场景 | 说明 |
| --- | --- | --- |
| natural_language_test_case | PRD 完成后、实现前 | 每条 P0/P1 需求的自然语言测试用例，包含 Requirement ID、PRD 来源、步骤、Oracle、数据、证据路径和 TDD RED 预期失败 |
| tdd_red_log | `feature_impl`、bugfix、重构 | 测试先写且按预期失败；失败原因必须是目标行为缺失，而不是语法、导入、环境或测试数据错误 |
| tdd_green_log | `feature_impl`、bugfix、重构 | 最小实现后复跑同一 focused test 并通过 |
| tdd_refactor_log | `feature_impl`、bugfix、重构 | 重构后 affected tests、coverage、lint、类型检查或等价 guard 仍通过 |
| request_response | API、E2E | 请求、响应、状态码、错误码、Trace ID |
| db_snapshot_before_after | 写接口、状态流转、批处理 | 操作前后关键表 diff 和 unexpected diff 检查 |
| cache_observation | 缓存、权限、多租户 | key、TTL、hit/miss、失效结果 |
| state_source_snapshot | URL、store、form、本地状态 | 证明同一业务条件只有一个主状态来源 |
| event_log | 队列、事件、Webhook | 事件类型、payload、消费次数、失败重试 |
| audit_log | 权限、删除、资金、审批 | actor、action、object、result |
| request_trace_sample | API、服务、网关 | 请求 ID、用户 ID、接口路径、耗时、错误原因 |
| alert_evidence | 监控、告警、失败态 | 告警规则、阈值、通知通道、触发结果 |
| validation_failure_sample | 输入校验、文件上传、非法枚举 | 无效输入、错误码、错误字段、无副作用结果 |
| redaction_check | 响应、日志、trace、审计 | 敏感字段已脱敏或未落盘 |
| rate_limit_observation | 登录、注册、验证码、支付、上传、搜索 | 限流命中、验证码、幂等、告警或拒绝结果 |
| screenshot_video_har | UI、E2E、视觉 | 截图、视频、HAR 或 Playwright trace |
| coverage_or_trace | 白盒、集成、跨服务 | coverage 命中、日志命中或链路 trace |
| failure_repro | 失败用例 | seed、账号、curl、初始状态、实际结果、疑似位置 |

## 无副作用证据

权限拒绝、非法状态流转、校验失败和重放攻击类用例必须证明没有产生业务副作用:

- 目标业务数据未变化。
- 不产生成功事件或重复事件。
- 不写入错误缓存。
- 不泄露目标资源敏感字段。
- 必要时记录拒绝审计。

## 新鲜度规则

- 证据必须来自当前变更集。
- 如复用了过期截图或日志，必须明确说明。
- 最终 verify 只应汇总能够回溯到当前任务的证据。
