Record CLI renderer Task 9 implementation
Why: Task 9 now has a reproducible Renderer dependency, CLI implementation, independent review, one corrective pass and exact local/isolated-PostgreSQL evidence that require human assessment. Evidence: The report fixes RDM 019d60d4 and Renderer 732e7e7, records all review findings and repairs, focused race, vet, make test/build and disposable PostgreSQL verification. Impact: Documents the local RDM rendering transaction candidate without publishing profiles, migrating a real database, starting Task 10, pushing, merging or deploying. Refs: Unified document renderer Task 9
This commit is contained in:
+131
@@ -0,0 +1,131 @@
|
||||
# 统一文档渲染器第四批 Task 9 实施评审 r1
|
||||
|
||||
日期:2026-10-15。状态:**待人工评审**。用户已确认 Task 8 安全派生结果并批准继续 Task 9,同时要求后续实施由 CLI 工作单元完成,主智能体只负责依赖编排、独立 Review、验证与记录。
|
||||
|
||||
固定对象:
|
||||
|
||||
- Renderer 私有远端:`weichen/Agent-Document-Renderer`;
|
||||
- Renderer pin:`732e7e7fc44e4871c7e1f6ba7aff2fc25173a10f`;
|
||||
- RDM 依赖准备:`e40d08e5f80e5c8051cdc4b27fe13a8556a9c5ab`;
|
||||
- RDM Task 9 初始实现:`d68110c95714c95788363ba56c17fe19ba13dbaf`;
|
||||
- RDM Task 9 Review 修复:`019d60d4b003fea060eba04c2455ea7ee1c269f3`;
|
||||
- CLI 实施线程:`01a1402a-6cc8-7cc2-8c68-bf35354aae1a`;
|
||||
- 独立 CLI Review 线程:`01a14056-f149-7250-b43c-11a85ce28bea`。
|
||||
|
||||
## 1. 依赖门禁
|
||||
|
||||
Task 9 首次 CLI 启动在写入前发现 Renderer 只有本地历史、没有远端,RDM 无法从干净克隆取得依赖,因此以零改动、零提交停止。主编排器随后:
|
||||
|
||||
1. 创建私有 `weichen/Agent-Document-Renderer` 仓库;
|
||||
2. 将已评审历史发布到远端 `main`,精确指向 `732e7e7`;
|
||||
3. 在 RDM 添加 `pins/agent-document-renderer` gitlink 和 `agent-document-renderer v0.0.0` 本地 pin;
|
||||
4. 通过 no-local 临时 RDM clone 从远端初始化该子模块,得到相同 SHA 且工作树干净;
|
||||
5. 通过 Renderer 全套测试、RDM `GOWORK=off go test ./...` 后提交 `e40d08e`。
|
||||
|
||||
依赖准备没有修改 Renderer 源码、发布 profile、迁移业务数据或部署服务。
|
||||
|
||||
## 2. Task 9 最终能力
|
||||
|
||||
### 2.1 schema v9 与不可变输入
|
||||
|
||||
schema v9 持久化:
|
||||
|
||||
- 完整递归 Markdown/canonical source 版本及稳定节点 ID;
|
||||
- profile snapshot、选择来源、项目/文档绑定及全部资产身份和哈希;
|
||||
- submission 冻结的正文、职责、来源披露和完整 Renderer `ReviewSnapshot`;
|
||||
- durable render job、输入摘要、状态、失败/取消原因和重试身份;
|
||||
- delivery、所有 blob、manifest、diagnostics、完整 node anchor map;
|
||||
- source/profile/review/delivery trace events 和 edges;
|
||||
- schema 指纹和确切唯一约束/索引定义。
|
||||
|
||||
提交审阅时冻结完整事实;正式 review/approved export 只读取 submission snapshot,不能用当前内容、调用方规则或调用方身份替换既有审签对象。旧 submission 缺少可信人物、时间、批注或修订事实时 fail-closed,不合成人物或时间。
|
||||
|
||||
### 2.2 内容与来源
|
||||
|
||||
- 正常编制的 `正文` 通过显式 `sectionId → canonical nodeId` 绑定进入确切模板槽位,不按名称或遍历顺序猜测;缺失、重复或目标不属于 profile 时拒绝。
|
||||
- Markdown 递归保存全部子节点和稳定 ID;子节点变化形成新 source identity。
|
||||
- 测试对 canonical JSON、Markdown、preview/review/approved DOCX 回读精确正文,而非只断言文件非空。
|
||||
- 来源逐项授权:允许披露的引用进入 canonical/Markdown/manifest/trace;受限来源只保留受控标记,私人正文不会进入 DOCX、manifest、diagnostics、anchors 或 trace。
|
||||
|
||||
### 2.3 原子事务、幂等与恢复
|
||||
|
||||
- 渲染前持久化 frozen job,再进入 running;失败和取消形成 durable 状态。
|
||||
- 渲染后、提交前重新核验成员、职责、动作权限、项目 revision、正文、profile/assets、review state 和来源披露。
|
||||
- delivery、blobs、manifest、anchors、trace events/edges 和 receipt 在一个事务提交;七个故障点逐项验证零残留。
|
||||
- 幂等摘要覆盖完整 source/profile/assets/binding/review/mode/Renderer identity;同 operationId 同输入返回确切旧回执,任何隐式输入变化都拒绝。
|
||||
- 取消在渲染前和提交前轮询;失败只允许对同一 frozen snapshot 重试。
|
||||
- 历史交付直接返回冻结 blob;profile/Renderer 升级和服务重启不会重渲染或覆盖旧字节。
|
||||
|
||||
### 2.4 权限、审签与下载
|
||||
|
||||
- validate、submit 和 delivery commit 均在提交时权限/项目 revision 栅栏内重验。
|
||||
- download/status 重新检查当前项目、文档读取权和当前职责;`audit.read` 本身不授予正文或制品。
|
||||
- 审阅/批准人物、显示名、时间、原因、批注、回复和修订来自受项目/文档范围约束的可信账户与审签记录。
|
||||
- 命令入口拒绝 `approvedBy`、`confirmed`、签名等调用方冒充字段。
|
||||
- profile 未发布时允许受权维护者 validate/preview,但 review/approved 正式交付拒绝;受控文档永不回退公司默认规则。
|
||||
|
||||
### 2.5 资源和可复核清单
|
||||
|
||||
- 限制节点数、深度、文本、Markdown/JSON、profile/assets、单 blob、任务数和项目保留字节;在产生大副本前尽量拒绝。
|
||||
- 命令下载使用有界响应,避免无限 base64 扩张。
|
||||
- 要求 renderer 返回的 anchors 与所有期望节点完全一致,只允许明确的 renderer-owned 合成锚点。
|
||||
- manifest 固定 Renderer pin/adapter identity、source/profile/review hashes、所有资产,以及每个交付 blob 的名称、SHA256 和大小。
|
||||
|
||||
## 3. 命令面
|
||||
|
||||
新增并注册七个受控命令:
|
||||
|
||||
1. `rdm.render.validate`;
|
||||
2. `rdm.render.preview`;
|
||||
3. `rdm.render.submit`;
|
||||
4. `rdm.render.review`;
|
||||
5. `rdm.render.approved`;
|
||||
6. `rdm.render.status`;
|
||||
7. `rdm.render.download`。
|
||||
|
||||
命令 schema 为闭集;身份、审签和签署事实不从请求参数读取。现有 44 份 profile 继续保持 `draft`、`publicationAllowed=false`,因此当前正式 review/approved 命令会按发布门禁拒绝,未绕过 Task 7–8 的人工发布决定。
|
||||
|
||||
## 4. 独立 CLI Review
|
||||
|
||||
独立只读 Review 对 `e40d08e..d68110c` 给出 **Ready to merge: No**:
|
||||
|
||||
- 2 Critical:旧批准可授权新内容/新 profile;正常受控正文被 canonical 转换过滤。
|
||||
- 9 Important:递归 Markdown 丢子节点、幂等摘要漏隐式输入、失败/取消 job 不持久、人物时间与批注修订为合成/缺失、来源追溯被整体删除、anchor 只检查非空、validate/submit 缺提交时栅栏、v9 接受残缺 schema、内存/数据库增长无界。
|
||||
- 1 Minor:manifest 缺 Renderer/资产/全部 blob 身份。
|
||||
|
||||
CLI 在 `019d60d4` 完成一次 Review 修复批次。所有 finding 均加入能区分错误实现的 RED 测试并修复;没有 amend 或重写 `d68110c`。按一次 Review + 一次修复批次流程,没有把作者自检升级为第二次独立 Review。
|
||||
|
||||
## 5. SELF 与隔离 PostgreSQL 验证
|
||||
|
||||
CLI 在最终 HEAD `019d60d4` 执行:
|
||||
|
||||
- Task 9 聚焦功能、迁移、命令、并发、重启、回滚、来源和安全测试:PASS;
|
||||
- `GOWORK=off go test -race ./internal/domain/store ./plugins/rdm ./internal/rdmapp -run 'Render|Renderer|Version9' -count=1`:PASS;
|
||||
- `GOWORK=off go vet ./...`:PASS;
|
||||
- `GOWORK=off make test`:PASS;
|
||||
- `GOWORK=off make build`:PASS;
|
||||
- 临时 PostgreSQL:schema v8/v9、重启、同/异 operationId 并发、权限栅栏、错误唯一索引定义和残缺 v9 rollback:PASS;临时服务停止、数据库与数据目录删除。
|
||||
|
||||
主编排器在同一最终 HEAD 重放:
|
||||
|
||||
- focused store/RDM/plugin 测试:PASS;
|
||||
- Task 9 精确 race:PASS;
|
||||
- `go vet ./...`:PASS;
|
||||
- `make test && make build`:PASS;
|
||||
- Renderer gitlink 精确为 `732e7e7` 且工作树干净。
|
||||
|
||||
全仓 `go test -race ./...` 另发现既有 slow-lane `ledgerUpdate` 与 `TestUnknownSchemaVersionStopsReplay` 中 `Reset` 的竞争;Task 9 精确 race 范围通过。该既有 race 未在本批扩大修复范围,需单独任务处理,不能把本批 SELF 升级为全仓 race 通过。
|
||||
|
||||
以上均为本地 **SELF** 与独立 CLI Review 记录,不是远端 CI/GATE、合入、部署或用户运行验收。
|
||||
|
||||
## 6. 未执行和下一阶段边界
|
||||
|
||||
NOT_RUN:profile 人工发布;公司默认视觉值;桌面 Word/LibreOffice 完整内容和分页验收;真实运行库 schema v9 迁移;现有数据备份/恢复演练;远端 CI/GATE;推送 RDM 分支、PR、合入、部署和发布;Task 10 Backend 路径替换;Task 11 UI。
|
||||
|
||||
人工评审重点:
|
||||
|
||||
1. submission 冻结事实和旧 submission fail-closed 边界;
|
||||
2. 显式正文节点绑定与来源披露裁剪;
|
||||
3. durable failed/cancelled job、幂等摘要和历史下载;
|
||||
4. schema v9 严格指纹、资源配额与迁移门禁;
|
||||
5. 是否接受该 Task 9 本地候选进入后续交付/Task 10 评审。
|
||||
Reference in New Issue
Block a user