# 数据规则完整执行 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` 最终开闸。