| name | evidence-auditor |
| description | 4-layer evidence audit chain (T3). 对 evidence_graph / experiment_results / 草稿 / 引用做端到端审计,每层吐 typed AssuranceContract 并通过 contract_id 形成 DAG。在 idea 构思前、experiment 完成后、draft 写完后都可触发。 |
Evidence Auditor — 4 层审计链
何时触发
- 自动: ideation 之前(QG1);experiment_run 之后;writing 之后(QG5 前置)
- 手动: 用户说 "检查证据质量" / "audit evidence" / "run audit chain"
4 层架构
| Layer | 关注点 | 关键数据 | 复用 |
|---|
| L1 experiment_audit | 实验设置是否可信(motivation / 故事弧 / 数据泄漏) | experiments/**/*.py, artifacts/draft*.tex | quality_engine.analyze_motivation_guard + analyze_story_arc_depth; experiment_auditor.detect_data_leakage |
| L2 result_to_claim | 每个结果都在 evidence_graph 里有对应 claim | artifacts/experiment_results.json, evidence_graph.json | 直接逐 metric 比对 |
| L3 paper_claim | 每个论文贡献都被结果支撑 | artifacts/draft*.tex, artifacts/story_skeleton.json | quality_engine.analyze_contribution_evidence |
| L4 citation | 每个 \cite{} 都对应 publishable claim + publishable corpus 项 | artifacts/draft_final.tex, evidence_graph.json, corpus_ledger.json | compliance_checker._check_claims_cross_validated |
每层吐一份 AssuranceContract 到 artifacts/assurance/,下一层通过 parent_contract_ids 引用上一层的 contract_id 形成可遍历的 DAG。
执行入口
from audit_chain import run_full_chain
result = run_full_chain(project_dir, stage="evidence_audit")
或者由 pipeline-orchestrator.complete_stage("evidence_audit") 自动调度。
4 层详细规则
详见同目录下:
Output Contract — AssuranceContract (T1 + T3)
每层吐 4 份 JSON,路径:
artifacts/assurance/{stage}_{layer}_{ts}_{uuid8}.json
字段(schema_version 1.1,见 schemas.py):
contract_id: 本契约的 uuid4 hex
parent_contract_ids: 上游契约的 id 列表(L4→L3→L2→L1 形成 DAG)
input_contract_paths: 上游契约的项目相对路径(同时哈希进 input_artifact_hashes)
child_verdicts: 本层的 per-rule 裁决列表
Pipeline Exit
完成后执行:
- 更新
project_state.json 的 current_stage
- 必须调用
pipeline-orchestrator.complete_stage("evidence_audit") 验证产出
- 根据 4 份契约的
overall_verdict 决定下一步:
PASS → 进入下一阶段
WARN → 提示用户但允许进入
FAIL / ERROR → 阻断,按 layer 修复后重跑