Files
Agent-System-Documents/docs/records/2026-10-15-unified-document-renderer-implementation/batch1-tasks1-3-review-r1.md
T

6.6 KiB
Raw Blame History

统一文档渲染器第一批实施评审 r1

日期:2026-10-15。状态:待人工评审。批准来源:用户在本聊天确认“批准,按方案开始实施吧”。批准对象为统一文档渲染器方案文档集,本批严格限制为实施计划 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 a08ae7ac81d4c648b350d890da97c91e64950769

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 提供后续格式适配器的最小公共合同;Request.Profile 只能接收确切的不可变 profile.Snapshot,不能由调用方伪造只有 ID/哈希的替代对象。

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 执行流程没有再派第二位审阅者;最终结论由复现测试、修复和完整套件固定。

提交后合同核对又发现 Task 2 的临时 ProfileSnapshot 接口在 Task 3 已有具体快照后不应继续保留;该接口可能接受调用方伪造对象,也不能向后续 WordAdapter 提供完整规则。TestRequestRequiresConcreteProfileSnapshot 先复现 RED,Renderer a08ae7a 将请求收紧为具体 profile.Snapshot,完整测试、race 和 vet 再次通过。

审阅另有一项 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 最终对象 a08ae7ac81d4c648b350d890da97c91e64950769:

  • 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,并保持本批规则快照与资产边界不变。