|
@@ -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` 最终开闸。
|
|
|
|
|
+
|