REV — Document Verification Record {runid}-{resp}
本模板两部分:§0 是必产物的证据信封(激活后第一件事就复制落盘——每个字段带一行"填什么",写骨架的过程就是读懂自己要交什么);§1 起是条件产物——只有出现 finding 才写的审查报告。双 PASS 不写报告(没有人读"都挺好")。
0. 证据信封(必产物——document_review_record)
落盘到 docs/reports/review/REV-{runid}-{resp}.json,11 个字段(10 个机器校验;created_at 仅归档):
{
"schema_version": "1.0.0",
"evidence_id": "填写 REV-{runid}-{resp}(与文件名一致,机器互证)",
"kind": "document_review",
"runtime_id": "填写当前 runtime id(从 .claude/loop-state.json 顶部复制)",
"baseline_generation": "填写当前 baseline generation(同上)",
"producer_agent_id": "填写你的 agent id(你是谁就写谁——独立性机器核对两条证据互异)",
"producer_responsibility": "填写 DV-SPEC-CONSISTENCY 或 DV-TASK-EXECUTABILITY(激活信封指定的职责,错值 gate 直接 Unknown)",
"subject_refs": [
"手动从 .claude/loop-state.json 的 documents[] 逐条复制 {path, version, sha256}——多一少一都拒。故意没有自动命令:逐条抄写就是'我签的是哪一版'的对峙,这一步的笨拙是审查的锚"
],
"conclusion": "审查完成后回填,三选一:pass / fix_required / req_change_required(与 gate 同词,全流程没有第二套枚举)",
"requested_event": "仅 fix_required 时填 document_fix_required(触发 TR-004 回 planning);pass 与 req_change_required 都留空(后者走人闸,见注 4)",
"created_at": "填写 ISO 时间戳"
}
注 1:review_round 字段不写——S5 是轮 0,缺省即正确;误填反而静默失配。
注 2(登记——教学链此前漏了这步):信封写盘后必须登记进 runtime 才被 gate 看到。docs/reports/review 遵循 file_sources 的根目录 git_tree 来源;登记后先将信封提交并集成到当前 REQ 绑定的开发分支,再由 Hook/Gate 消费。未提交或仅 staged 的文件不会成为正式 Gate 输入:
.claude/bin/loop-harness runtime evidence add --id REV-{runid}-{resp} --kind document_review --path docs/reports/review/REV-{runid}-{resp}.json --produced-by <你的 agent id> --responsibility <你的职责>
--kind 必须与信封内的 kind 同词(都用 document_review)。这是 evidence 命令,不是 transition 命令——"不调 transition"的纪律不禁止它。
重签规则(fix 回路第二轮起):runtime evidence add 拒绝重复 ID(旧条目即使已 invalid 也占 ID)——重签时给 ID 加轮次后缀:REV-{runid}-{resp}-r2、-r3…(信封 evidence_id 与文件名同步改),旧信封文件保留作历史。
注 3:字段口径 = 11 个字段(10 个机器校验;created_at 仅归档)+ 1 个故意不写的 review_round。
注 4:req_change_required 分支的 requested_event 留空——TR-005 是人闸路径(runtime → paused),由人提交,不走 requested_event 自动路由;只有 fix_required 填 document_fix_required。词汇映射:信封结论词 req_change_required(gate 词汇)在人闸处对应 protocol 的 req_amendment(= req amend 命令路径,S1-S4 同名)——两个命名空间,一处映射,别造第三个词。
1. Fingerprinted Inputs(以下仅在有 finding 时随报告填写)
| Kind | ID | Path | Version | SHA-256 |
|---|---|---|---|---|
| REQ | REQ-{id} | docs/requirements/REQ-{id}.md |
{version} | {sha256} |
| architecture | ARCHITECTURE-{id} | docs/architecture/ARCHITECTURE-{id}.md |
{version} | {sha256} |
| contract | {id} | docs/dev/contracts/{id}.md |
{version} | {sha256} |
| TASK | TASK-{id} | docs/dev/tasks/TASK-{id}.md |
{version} | {sha256} |
| module current truth | {module} | docs/design/prototypes/{module}/ (scenario four-pack + stories/flows/index/*.html) |
current | {sha256} |
2. Assigned Conclusion
| Scope | Expected behavior / criterion | Result | Evidence |
|---|---|---|---|
| {module/clause/path} | {criterion} | pass / fail / n/a(须记理由与证据) | {command/path/sample} |
N/A requires a recorded rationale and evidence.
3. Findings
| Finding ID | Severity | Location | Expected | Observed | Evidence | Canonical BUG |
|---|---|---|---|---|---|---|
| REV-F001 | P0/P1/P2/P3 | {path:line} |
{contract/REQ} | {fact} | {evidence} | BUG-{id} / pending / n/a |
缺失型 finding(如 NFR 未落地)的 Location 填"应出现处"(如 docs/dev/contracts/CONTRACTS-<id>.md §索引),Observed 记 absent。Findings 随信封 conclusion=fix_required 走 TR-004 回 planning 修复——本 assignment 不修、也不进 BUG 生命周期(那是 S7 起的事)。
4. Checks
| Check | Command / Method | Result | Evidence ref |
|---|---|---|---|
| tasks check | loop-harness tasks check(覆盖/DAG 机器已判,消费其结论不重算) |
pass / fail / blocked / not_run | {ref} |
| {check} | {command} |
pass / fail / blocked / not_run | {ref} |
5. Result
Conclusion: pass | fix_required | req_change_required
Requested lifecycle event: (none) | document_fix_required