From 8a4ebe4e6c9ebf8198f60b5ee9f9d8be18d8c3d9 Mon Sep 17 00:00:00 2001 From: weichen Date: Tue, 20 Oct 2026 01:58:50 +0000 Subject: [PATCH] Add the W3 remainder stage 6 review package Why: W3 remainder is implemented on RDM draft PR #451 and needs the user's stage 6 review before merging into the initiative. Evidence: RDM f3fa0c0 target tests and domain/rdmapp packages pass locally (SELF); fresh-session review PASS-with-fixes with no blocking findings. Impact: task cards and review docs only; placement checks recorded as a W4 write-entry prerequisite. Refs: feature/rdm-two-trees-followup-w3-rest, RDM PR #451 Co-authored-by: Cursor --- .../feature-rdm-two-trees-followup-w3-rest.md | 8 ++-- .task/feature-rdm-two-trees-followup.md | 4 +- ...-10-19-rdm-two-trees-followup-w3-review.md | 42 +++++++++++++++++++ 3 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 docs/superpowers/specs/2026-10-19-rdm-two-trees-followup-w3-review.md diff --git a/.task/feature-rdm-two-trees-followup-w3-rest.md b/.task/feature-rdm-two-trees-followup-w3-rest.md index a63eac3e..963f50f1 100644 --- a/.task/feature-rdm-two-trees-followup-w3-rest.md +++ b/.task/feature-rdm-two-trees-followup-w3-rest.md @@ -41,13 +41,13 @@ ## 结果与验证(完成后填写) -- 结果: -- 验证:<结论摘要 PASS/FAIL/SKIP/NOT_RUN 逐项;逐条证据由 make evidence 写入上方证据表> -- 影响与剩余项: +- 结果:W3 余项在 RDM 分支 `feature/rdm-two-trees-followup-w3-rest`(`013b8b1`、`96d53f6`、`f3fa0c0`,草稿 PR [#451](https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-RDM/pulls/451))与本分支 `80ac3fa` 交付;阶段 6 评审包 docs/superpowers/specs/2026-10-19-rdm-two-trees-followup-w3-review.md。 +- 验证:RDM 目标测试 20 项与 `./internal/domain/... ./internal/rdmapp` 全量 PASS(SELF,@f3fa0c0);CI(GATE)见下方 CI 记录;Dev `py_compile` PASS(SELF)。 +- 影响与剩余项:仅 RDM 领域原语与测试(无新写入口)及 Dev 测试一行;剩余见评审包第 3 节与 Review 非阻塞项(W4 写入口前补节点放置检查)。 ## 合入与清理 -- Review 记录:NOT_RUN(审阅智能体/平台身份、base/head、结论、问题闭合及重放依据) +- Review 记录:全新会话 code-reviewer(只接收需求、base/head、diff),RDM `5a27d78..f3fa0c0`:PASS-with-fixes,无阻塞项;4 条非阻塞项记入评审包第 2 节(放置检查列为 W4 写入口前置条件)。 - 冲突记录:NOT_RUN(最新目标同步、冲突处置、组合兼容核验及复审/补测) - CI 记录:NOT_RUN(当前 HEAD 完整 SHA、全部必需检查、运行链接、执行身份及 GATE 结果) - 合入记录:NOT_RUN(交付授权范围、PR、被核验 HEAD、合入 SHA、目标分支及内容核验) diff --git a/.task/feature-rdm-two-trees-followup.md b/.task/feature-rdm-two-trees-followup.md index 207b02fe..20c063c0 100644 --- a/.task/feature-rdm-two-trees-followup.md +++ b/.task/feature-rdm-two-trees-followup.md @@ -14,7 +14,7 @@ - 实施执行:agent-per-unit(配置:AGENT-EXECUTION.md) - 合入执行:agent(已授权交付范围内,Review 通过、冲突解决且当前 HEAD 的 CI 通过后合入) - 人工决策点:仅限目标/范围/验收变更、重大取舍、高后果操作或无法自动判定的业务验收 -- 当前阶段:A1 已通过阶段 6(保留在本 initiative 分支);下一增量:W3 余项子任务(待启动) +- 当前阶段:A1 已通过阶段 6(保留在本 initiative 分支);W3 余项子任务待用户阶段 6 人审 - 流程依据:仓库根目录 policy/delivery.md(归档后仍按仓库根目录定位) ## 目标与非目标 @@ -36,7 +36,7 @@ | 子任务分支 | 必需 | 状态 | PR | |---|---|---|---| | A1:W0 守护 + svc 动态端口 + W3 差距核对(本分支内增量) | 是 | 已合入(本分支 000a2d2;用户 2026-10-19 阶段 6 通过) | 本分支 PR #635(草稿,initiative 收口时合入 main) | -| feature/rdm-two-trees-followup-w3-rest | 是 | 已登记,待启动(W3 余项:迁移两次同值、图形不透明块、移动/改名引用、旧批准版回取、重复表格复核;见 A1 评审包第 2 节;RDM 仓实施) | — | +| feature/rdm-two-trees-followup-w3-rest | 是 | 实施完成,待用户阶段 6 人审(W3 余项:迁移两次同值、图形不透明块、移动/改名引用、旧批准版回取、重复表格复核;评审包 docs/superpowers/specs/2026-10-19-rdm-two-trees-followup-w3-review.md) | RDM 草稿 PR [#451](https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-RDM/pulls/451);本子任务 PR 见卡 | | B:W5/W7 | 是 | 待登记 | — | | C:W8/W10 | 是 | 待登记 | — | | D:W11/W12/W13 | 是 | 待登记(需资源方案) | — | diff --git a/docs/superpowers/specs/2026-10-19-rdm-two-trees-followup-w3-review.md b/docs/superpowers/specs/2026-10-19-rdm-two-trees-followup-w3-review.md new file mode 100644 index 00000000..c45ab288 --- /dev/null +++ b/docs/superpowers/specs/2026-10-19-rdm-two-trees-followup-w3-review.md @@ -0,0 +1,42 @@ +# 两棵树后续 W3 余项:阶段 6 评审包 + +- 状态:**待用户阶段 6 人审**。manual 模式:人审通过前不合入 initiative 分支;RDM 改动以草稿 PR [#451](https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-RDM/pulls/451) 形式待审。 +- 日期:2026-10-19;作者:host;子任务分支:Dev `feature/rdm-two-trees-followup-w3-rest`(父 `feature/rdm-two-trees-followup`)、RDM `feature/rdm-two-trees-followup-w3-rest`(base RDM main `5a27d78`)。 +- 依据:[阶段 5 计划 W3](../../../modules/documents/docs/records/2026-10-14-rdm-two-trees-latest-templates/rdm-two-trees-stage5-implementation-test-plan-r1.md)(已批准);[A1 评审包第 2 节差距核对](2026-10-19-rdm-two-trees-followup-a1-review.md)。 + +## 1. 本增量交付 + +| 差距项(A1 第 2 节) | 交付 | RDM 提交 | 目标测试 | +|---|---|---|---| +| 图形不透明块 | `ContentBlock.Kind` 新增 `figure`:不透明叶子,禁子块/重复/跨格,必须引用带 SHA-256 的附件或 Word 槽位;实例化、重放、`NodesOf` 逐字节保持 | `013b8b1` | `TestRecursiveBlockFigure*` | +| 重复表格(待复核) | 补精确用例:重复行与 v2 重复章节通过校验、实例节点 ID 各异、保留 `Repeat` 与 `RowSpan/ColSpan`、可重放;非法位置拒绝 | `013b8b1` | `TestRecursiveBlockRepeat*` | +| 移动/改名保持引用 | 领域原语 `MoveNode`/`RenameNode`,新事件 `doc.node.move`/`doc.node.rename`:节点 ID、模板块、内容不变;兄弟序连续重排;文档结构修订 +1,乐观并发;拒绝环、陈旧修订、旧章节节点、空标题、只读日志;live 与 replay 共用同一算法;前缀重放可取回更早结构 | `96d53f6` | `TestRecursiveBlockMove*`、`TestRecursiveBlockRename*`、`TestRecursiveBlockMoveRenameNodeRefsSurviveStoreRestart` | +| 旧库备份迁移两次同值;已批准版与旧下载可回取 | 新增 `TestLegacyDocMigration*`:旧形态库(文档/章节/版本/批准)复制为备份副本后两次独立打开与重放,事件行、序号、迁移版本与 `NodesOf` 一致,第二次不写入;未知未来事件类型在启动时写前拒绝;迁移后已批准版与审批提交下载字节/哈希不变(只增测试,未改生产代码) | `f3fa0c0` | `TestLegacyDocMigration*` | +| Dev:删除无效 `SVC_RCFWEB_ADDR` | `tests/test_svc_realcombo.py` 删除 `svc.sh` 从不读取的 `SVC_RCFWEB_ADDR` | Dev `80ac3fa` | `py_compile` | + +## 2. 验证 + +- host 本地验证(SELF)@RDM `f3fa0c0`:`gofmt`、`go vet ./internal/domain/... ./internal/rdmapp`、`git diff --check` 通过;目标选择器 `GOWORK=off go test ./internal/domain ./internal/rdmapp -run 'TestRecursiveBlock|TestLegacyDocMigration|TestTemplateBinding' -count=1` 20 项 PASS;`./internal/domain/... ./internal/rdmapp` 全量 PASS。 +- CI(GATE):RDM 草稿 PR [#451](https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-RDM/pulls/451) 与本子任务 PR 当前 HEAD 检查(见 PR)。 +- 独立 Review(全新会话 code-reviewer,只接收需求、base/head 与 diff;评审者自跑为 SELF):`5a27d78..f3fa0c0` **PASS-with-fixes,无阻塞项**。确认:克隆与摘除无共享切片、校验全过才写入;live 与 replay 共用算法;伪造节点 ID/旧章节/未知 op 被拒;`validateDocNodes` 对既有调用方等价;无新增写入口;测试断言非空。非阻塞项(建议 W4 开放写入口前修): + 1. 移动不检查节点种类放置关系(row 可移出 table、cell 可移出 row),`rendererNodeKind` 会照常渲染为表格行;应在 `movedDocNodes` 加放置检查并把相应测试改为预期拒绝——**列为 W4 写入口的前置条件**。 + 2. `TestLegacyDocMigration` 在 WAL 模式下计算哈希可能漏掉 `-wal` 中的写入。 + 3. Postgres 用例的“第二次不写库”写入次数硬编码为 0。 + 4. `figure` 在渲染时退化为空段落(超出本增量需求,导出前须映射或显式报错)。 + 另:移动/改名事件 `Target` 与载荷 `DocID` 未做一致性校验;重放查找不过滤已删除文档(当前无删除路径)。 + +## 3. 风险与需人审确认 + +1. **与 W4 的边界**:移动/改名只提供领域原语,没有 HTTP 路由、插件命令或 rdmapp 写入口;按阶段 5 计划,结构变更须经 W4 结构提案与人工确认后才能调用。W4 开放写入口前须先补节点种类放置检查(独立 Review 非阻塞项 1)。请确认这一切分。 +2. **合入冲突**:`internal/domain/template_asset.go`(figure 校验)同时被在途的 project-access-lifecycle 任务修改;本增量只新增一个 case 和一个函数,后合入的一方需要按最新 main 解决冲突。 +3. **事件契约新增**:两种新事件对旧二进制属于未知未来事件,旧版本读到时会拒绝启动写入(符合计划的“未知未来事件拒绝”);部署顺序须先升级再产生新事件。 +4. **完成条件中的业务项**:“真实项目实例表达新项目建议书及用户需求 12 组要求”依赖 W11 DHF 资产 published,本增量只验证实例机制,不宣称正式标准模板可用。 + +## 4. 执行记录 + +| 单元 | CLI/候选 | 终态 | 收据(源码外) | +|---|---|---|---| +| w3-rest-u1-figure-opaque-repeat-table | Cursor attempt 1 | success | /tmp/leftover-20261019b/w3-u1-receipt.json | +| w3-rest-u2-node-move-rename-refs | Cursor attempt 1 | success | /tmp/leftover-20261019b/w3-u2-receipt.json | +| w3-rest-u3-legacy-migration-approved-retrieval | Cursor run 1 `failed-unknown`(host 在其运行期间集成 u1,HEAD 变化);用户授权全新 run 2 | run 2 `blocked`(隔离区缺 `pins/` 无法编译 rdmapp);修正单元包后经用户授权 run 3 success | /tmp/leftover-20261019b/w3-u3-receipt*.json | +| w3-rest-dev-drop-svc-rcfweb-addr | Cursor run 1 `invalid-config`(单元包未就绪)、run 2 `failed-unknown`(Cursor 连接反复失败);用户授权全新 run 3 | success | /tmp/leftover-20261019b/w3-dev-receipt*.json |