Преглед изворни кода

docs: record M4 rule assembly acceptance

马小龙 пре 4 недеља
родитељ
комит
27b846e640
1 измењених фајлова са 131 додато и 0 уклоњено
  1. 131 0
      docs/validation/DATA_RULE_M4_ACCEPTANCE_20260724.md

+ 131 - 0
docs/validation/DATA_RULE_M4_ACCEPTANCE_20260724.md

@@ -0,0 +1,131 @@
+# 数据规则完整执行 M4 阶段验收记录
+
+日期:2026-07-24  
+分支:`codex/data-rule-execution-m3a-m5`  
+验收范围:可信发布、数据标准/数据规则组装、数据生产线收敛
+
+## 1. 验收结论
+
+M4 通过验收,可以进入 M5 数据工厂投产阶段。
+
+本阶段已把自然语言规则形成的候选结果收敛为不可变、可证明、可组装的
+`RuleVersion` / `DataStandardVersion` / `DataFlowVersion` 边界。数据流程只能
+组装服务端证明已发布且编译、测试、Schema 哈希证据一致的固定版本;发布前
+Schema 漂移、证据不一致、版本失效或请求篡改都会失败关闭。
+
+生产线草稿创建采用 PostgreSQL/Neo4j 可恢复 Saga,具备请求摘要绑定、响应丢失
+重放、租约围栏、无客户端回执对账、UID/名称数据库唯一性和原子标签关系。旧
+code/task/Python/n8n 字段不能再成为新受治理流程的执行语义。
+
+## 2. 交付能力
+
+### 2.1 可信规则发布
+
+- 发布只接受已验证的自然语言候选和不可变 `RuleVersion`。
+- 发布逻辑计划固定 compiler、capabilities、plan hash 和 input/output
+  Schema snapshot hashes。
+- compile evidence 与 test evidence 必须成功且与同一逻辑计划、编译器版本、
+  plan hash、capabilities 和 Schema hashes 完整一致。
+- golden-row 对比、Schema 漂移、证据篡改、失效版本和越权发布均失败关闭。
+
+Task 7 最终提交:`8e42704 test: exercise golden row comparison boundary`。
+
+### 2.2 数据标准与数据流程组装
+
+- 数据标准自然语言录入强制生成规则候选,再发布并绑定固定 `RuleVersion`;
+  标准本身不保存可执行代码。
+- 数据流程组装支持 `rule.apply`、`standard.enforce` 和 `quality.check` 三类
+  工位,并固定标准、规则、数据集和 Schema 版本。
+- 目录兼容性由服务端 `SchemaResolver` 解析当前快照,与发布逻辑计划中的
+  Schema hashes 比较;Standard 会展开全部固定规则逐条验证。
+- exact-version hydration、请求序列防旧响应覆盖、未知/不兼容阻断和
+  Release-ready 状态均已落实。
+- context-aware catalog GET 对新快照采用显式事务提交;返回的 snapshot ID
+  跨请求稳定且可从独立数据库会话查询。
+
+### 2.3 可恢复生产线创建
+
+- 迁移 `20260723_210` 建立 actor-bound、短期、单次草稿 reservation。
+- 前向迁移 `20260724_220` 建立 `reserved/creating/completed/failed` Saga、
+  lease、attempt、图节点引用、结果及 SHA-256 摘要。
+- 前向迁移 `20260724_230` 固化 canonical request、server-owned intent 和
+  request digest;claim、replay、finalize 全程校验。
+- Neo4j 创建使用 UID `MERGE`,并安装 `DataFlow.uid` 与
+  `DataFlow.name_zh` 数据库唯一约束。
+- 对账器默认 dry-run;apply 模式逐条 claim、语义验证后续租、再执行图副作用,
+  complete/fail 均使用 lease token 围栏。
+- 畸形、超限或摘要不一致记录逐条终止隔离;基础设施故障保留可重试状态。
+- 标签关系使用严格原子 `MERGE`;失败不会把 Saga 错误标记为 completed。
+- 前端保存 reservation expiry,在到期前 60 秒续订;仅
+  `draft_reservation_refresh_required` 才换 UID 并安全重试一次。
+
+Task 8 最终提交链:
+
+- `f31cc2e feat: assemble production lines from published rule assets`
+- `90b16af fix: close governed rule assembly cutover gaps`
+- `e4a64a3 fix: secure governed dataflow assembly boundary`
+- `6decbe9 fix: make governed dataflow creation recoverable`
+- `99411f3 fix: bind and reconcile governed dataflow creates`
+- `21c4f89 fix: fence dataflow create reconciliation`
+- `29c6746 fix: enforce unique governed dataflow names`
+
+详细实现报告:`.superpowers/sdd/task-8-report.md`。
+
+## 3. 验收证据
+
+### 3.1 自动化测试
+
+- Task 7 完成态全量:`632 passed, 29 skipped, 59 subtests passed`。
+- M4 最终提交态全量:`682 passed, 34 skipped, 59 subtests passed`。
+- 第七轮独立复审聚焦测试:`40 passed, 4 skipped`。
+- `git diff --check`:通过。
+- Ruff 选择性 `F`、`I`、`B`:通过。
+
+最终全量中的 skip 是需要显式外部连接或可选运行环境的测试,不代表静默降级;
+关键 PostgreSQL、Neo4j 和 API 场景已在配置真实连接的独立命令中执行。
+
+### 3.2 真实基础设施
+
+- PostgreSQL/API/Neo4j 验证覆盖:
+  - 两会话并发 reservation/lease 抢占;
+  - completed 响应重放和请求摘要冲突;
+  - 相同 Schema 引用发生 hash 漂移;
+  - catalog snapshot ID 跨请求稳定并可查询;
+  - 图成功、PG 未 finalize、客户端回执丢失后的无 nonce 对账;
+  - 两个 reconciler 仅一个取得所有权;
+  - 原子标签 MERGE 重试后关系仍唯一;
+  - 两个不同 UUIDv7 使用同一 `name_zh` 时一成功、一
+    `dataflow_uid_conflict`,最终节点数为 1。
+- Docker backend/frontend 已由最终源码重建并为 healthy。
+- 容器 Alembic:`20260724_230 (head)`。
+- 应用健康接口:HTTP 200,数据库与 Neo4j healthy。
+- 前端:HTTP 200。
+- 前端生产构建:0 errors;保留 20 个既有 console warnings。
+
+### 3.3 独立审查
+
+Task 8 经七轮独立审查。前六轮发现的跨库非原子双写、Schema 字符串伪兼容、
+租约续订、请求摘要重放、无客户端对账、快照幽灵 ID、批量租约过期、毒记录
+阻塞、标签非原子以及名称 TOCTOU 问题均已逐项修复并补回归测试。
+
+第七轮结论:`APPROVE`,新增代码未发现 P1/P2。
+
+## 4. M5 入口条件
+
+以下条件已满足:
+
+- 已发布规则和标准可作为不可变生产线资产;
+- DataFlow 组装不接受 inline SQL/Python/凭据或未发布版本;
+- Schema、编译、测试和版本证据可由服务端验证;
+- 生产线创建可恢复、可重放、可对账;
+- Docker 控制面已在最终代码和迁移上健康运行。
+
+以下属于 M5,不作为 M4 残余缺陷:
+
+- `DataFlowDeployment` 的 disabled deploy、canary、activate、supersede 和
+  rollback 状态机;
+- Data Factory 独立权限和操作界面;
+- Kestra 稳定性修复、真实试生产、重启恢复和有界 soak;
+- 完整 AI 规则到数据产品 E2E、容量门槛、运行手册及
+  `data_factory_activation=true` 最终开闸。
+