Record unified renderer batch one implementation

Why: Give the first implementation batch a fixed human-review object with exact outputs, risks, review findings, fixes, evidence, and remaining boundaries.

Evidence: SELF relative-link and diff checks pass; the record cites exact RDM and renderer candidate SHAs and their fresh verification commands.

Impact: Adds an implementation review record only; no runtime, migration, deployment, or publication behavior changes.

Refs: unified-document-renderer Tasks 1-3
This commit is contained in:
2026-10-15 10:10:52 +00:00
parent 647da98577
commit fb18726132
@@ -0,0 +1,93 @@
# 统一文档渲染器第一批实施评审 r1
日期:2026-10-15。状态:**待人工评审**。批准来源:用户在本聊天确认“批准,按方案开始实施吧”。批准对象为[统一文档渲染器方案文档集](../2026-10-15-unified-document-renderer/README.md),本批严格限制为实施计划 Task 1–3。
## 1. 本批范围
| 任务 | 结果 | 固定对象 |
|---|---|---|
| Task 1 公司 Word 样式普查 | 44 份已发布 DHF 模板生成确定性 JSON/Markdown 普查;有界读取 ZIP/XML,不访问外部关系 | RDM `c188df36fbb77671048d6a40607bd14bf21c23a4` |
| Task 2 统一文档与审阅模型 | 稳定节点、来源范围/置信度/可见性、审阅主体、严格校验、深拷贝、规范 JSON 与 SHA256 | Renderer `0d1f4d0bbe06d32b7a742dff0c0c53efeaa054cd` |
| Task 3 RenderProfile | 严格 YAML/JSON、受控资产、继承展开、不可变快照、生命周期、四级选择与适用性校验 | Renderer `7c089a91f8ce8869ea4334e1d4ed15f07c61a5bb` |
Renderer 是独立本地 Git 仓 `/home/weichen/projects/Agent-Document-Renderer`,分支 `codex/unified-document-renderer`。本批没有创建远端仓库、加入 Dev gitlink 或接入 RDM/Backend 运行路径。
## 2. Task 1 普查结果
机器记录:`Agent-System-RDM/docs/records/renderer/corporate-style-inventory.json`,SHA256 `027b0a67a6592e8668229b9cc0d51ed8b5d874c2ff3a4b53b934e3241b245580`。人类摘要:`corporate-style-inventory.md`。
| 指标 | 结果 |
|---|---:|
| 已发布模板 | 44/44 |
| 原生 DOCX / 旧 DOC 转换 | 30 / 14 |
| 规范化件含页眉或页脚 | 44 |
| 含图片 | 8 |
| 含合并表格 | 41 |
| `family-rule` / `template-exception` / `unverified` | 151 / 112 / 1 |
`dhf.33c2e9fe0c42fa0d` 的规范化件存在 21 条外部关系。普查只保存关系所在部件、类型和目标 SHA256,不保存或访问目标。该项标记 `unverified`;后续 RenderProfile 发布与 Word 输出仍禁止外部关系。
字体、Logo 规则、色板和标题体系仍是 `unverifiedCorporateValues`。本批没有把出现频率自动升格为公司设计标准。
## 3. Task 2 模型合同
- `CanonicalDocument` 固定项目、文档类型、语言、标题和递归节点。
- `Node` 支持章节、标题、段落、列表、表格、图片、提示、附件和签署节点。
- `SourceRef` 保存来源类型、定位、摘录、置信度、私域/项目/公开范围和有效文本区间。
- 校验拒绝重复节点 ID、祖先循环、越界来源区间、未知节点/来源/可见范围和未知 schema。
- `ReviewSnapshot` 分离批注、修订、审阅决定和批准决定;缺少可信人物快照时拒绝。
- `Clone` 深拷贝节点、来源和审阅集合;规范 JSON 与 SHA256 在相同输入下确定。
- `render.Request/Result/Manifest/Diagnostic/Renderer` 提供后续格式适配器的最小公共合同。
## 4. Task 3 规则合同
- 规则只能使用已知 YAML/JSON 字段;`script`、任意 XML 等未知字段拒绝。
- 资产由 manifest 中的 `assetId@version + path + SHA256` 绑定;远程 URL、父路径、未登记资产和字节漂移拒绝。
- 受控规则配置 `allowDefaultFallback=true` 时拒绝编译。
- 未知渲染原语、重复锚点、空选择器、不安全目标和超限递归拒绝。
- 继承在编译时展开;快照不保留运行时父指针,返回规则、规范 JSON 和能力集合均为副本。
- 生命周期仅允许 `draft → validated → published → retired`;发布或退役版本不能被同 ID/版本新内容替换,历史发布哈希仍可取。
- 选择顺序固定为文档显式、文档类型、项目默认、公司默认。高优先级绑定不存在、未发布或不适用于当前文档类型、项目、阶段时直接失败,不继续回退。
- 页眉页脚的 `fixed/field/slot/asset` 逐项校验;资产只能引用已经验证的资产角色。
## 5. 独立 Review 与修复
独立审阅者检查 RDM `6a5b6a0` 和 Renderer `c54822e`,首次结论为 **No**,没有 Critical,发现三项 Important:
1. 规则选择未校验文档类型、项目和阶段。
2. 页眉页脚资产引用绕过 manifest 校验。
3. UTF-16 XML 的 DTD/实体可绕过 ASCII 字节检测并被解析展开。
三项均先加入复现测试并观察 RED,再实施修复:Renderer `7c089a9`、RDM `c188df3`。修复后的完整套件重新通过。按 inline 执行流程没有再派第二位审阅者;最终结论由复现测试、修复和完整套件固定。
审阅另有一项 Minor:普查器模块注释仍写“拒绝外部关系”,实际策略是“记录哈希元数据且不访问”。该项不影响执行行为,本批按流程登记为 deferred,后续文档整理时修正。
## 6. SELF 验证
RDM 最终对象 `c188df36fbb77671048d6a40607bd14bf21c23a4`:
- `python3 -m unittest tests.test_render_profile_inventory -v`:6 项通过。
- `python3 scripts/render-profile-inventory.py --check`:44 份已提交输出逐字节一致。
- `git diff --check`:通过。
- `make test`:退出码 0;产品组合构建、29 项 Node 测试、4 项任务钩子测试及 Go 全仓测试通过。
Renderer 最终对象 `7c089a91f8ce8869ea4334e1d4ed15f07c61a5bb`:
- `go test ./... -count=1`:通过。
- `go test -race ./... -count=1`:通过。
- `go vet ./...`:通过。
- `git diff --check`:通过。
以上均为本地 **SELF**,不是 CI/GATE、合入或部署证据。
## 7. 未实施边界
- Task 4 Markdown 解析器及稳定节点标记。
- Task 5 WordAdapter、OPC 写入和输出安全验证。
- Task 6 Word 修订、批注、回复、批准稿与留痕稿。
- 公司默认规则、44 份 RenderProfile、字典迁移、RDM/Backend/Frontend 接入。
- 真实 PostgreSQL 迁移、真实 Word 视觉验收、浏览器验收、远端仓库、PR、CI、合入、部署和发布。
## 8. 下一批建议
按已批准的追踪清单,本批需要人工评审后再进入 Task 4–6。下一批应先实现 Markdown→CanonicalDocument,再实现 WordAdapter,最后实现修订/批注和批准/留痕双 Word;每项继续 RED→GREEN,并保持本批规则快照与资产边界不变。