Files
Artemis-Plugins/plugins/artemis-device-test/skill/references/evidence.md
T

39 lines
2.6 KiB
Markdown

# 联合证据报告
用 `python scripts/evidence.py bundle --manifest RUN/input.json --out RUN/result` 生成独立报告。输出目录必须不存在,防止覆盖历史。`evidence_root` 相对输入文件目录,可是绝对目录;每条 evidence 必须是其中的相对文件,不能越界或通过符号链接逃逸。
输入示例(实验虚构值,不代表已执行):
```json
{
"schema_version": 1,
"run_id": "LAB-20261016-001",
"evidence_root": ".",
"context": {
"execution_mode": "simulation",
"real_device_test_executed": false,
"case": {"sheet": "9系统设置", "row": 96, "case_id": "9.132"},
"tool_versions": {"ffprobe": "实际版本"},
"artemis": {"session_id": "实际返回的 session"}
},
"assertions": [
{
"id": "encoded-format",
"required": true,
"expected": "原始流 codec_name 为 hevc",
"actual": "无法取得原始流",
"verdict": "blocked",
"evidence": []
}
]
}
```
`verdict` 只能是 `passed/failed/blocked/inconclusive`。`passed` 和 `failed` 必须引用真实观测文件;缺证据或提供的 SHA-256 不符时降为 `inconclusive`,保留 `requested_verdict`、`requested_evidence` 及原因。摘要不符的原文件仍收进归档但标记 `integrity=mismatch`,不能作为通过依据。引用支持字符串路径或 `{"path":"probe.json","sha256":"实际64位哈希"}`。
汇总仅针对 `required=true` 的必需断言,顺序为有明确失败→failed,否则有阻塞→blocked,否则有未验证→inconclusive,全部有证据且通过→passed。没有必需断言不能通过。可选断言仍逐条展示,不能用可选断言绕过原用例要求。`context.execution_mode` 使用 `live/offline/simulation`,未标注显示 `unspecified`;模拟/离线不能声明实际执行过真机。人类可读报告顶栏会显示运行性质;真机操作也不意味着所有用例已完成真机验收。
脚本校验文件完整性,并不理解截图、JSON、PCAP 的业务含义。断言的作者必须核对原始预期和实际观测。一个无关但存在的文件不构成有效证据;不把运行脚本成功写为业务通过。用例未执行、只是架构联调时,context 中写明框架场景而非原 Excel 完整覆盖。
输出 `manifest.json` 保存上下文、断言和文件哈希,`report.md` 供阅读,`bundle.zip` 收入两者与文件副本。该脚本不向外发送资料。归档保留原始证据,不自动去除 PCAP、截图、日志中的全部敏感信息;归档前选择/处理允许交付的文件,原始资料按内部测试权限保管。分发 Skill 的 ZIP 不包含现场证据。