DATA_RULE_M5_ACCEPTANCE_20260724.md 4.9 KB

数据规则 M5 验收记录(2026-07-24)

1. 验收范围

M5 对 M3A–M4 已交付的自然语言编写、封闭规则契约、SQL/Polars 执行、证据持久化、 数据标准/数据流程产品面和数据工厂生命周期做最终收口。完成声明以可重算证据和 自动化测试为准,不以页面存在或接口可调用代替。

2. 真实模型验收

  • Provider:本机 loopback OpenAI-compatible 服务。
  • 模型:Qwen/Qwen3-1.7B,Transformers + PyTorch CPU;当前沙箱无 Metal, 因此不能把它描述为 MLX 测试。
  • 输入:中文手机号标准化、11 位断言/隔离、按客户和更新时间去重。
  • 控制:温度 0、封闭嵌套 JSON Schema、最多两次确定性修复、无语义 fixture、 无模型输出直接执行。
  • 证据:docs/acceptance/data-rule/real-qwen-authoring-evidence.json

真实模型门槛是:模型生成版本、候选类型和完整 rule_spec;候选通过确定性校验; 包含 normalize/assert+quarantine/deduplicate 三步语义;歧义为空;置信度不低于 本地 canary 阈值 0.5;保留模型、Prompt、上下文和候选四类 Hash。生产默认自动化 阈值仍为 0.85,M5 测试不降低生产策略。

candidate_type=rule 时省略 standard_spec 只做确定性规范化为 null。显式 null 与省略后的 canonical candidate Hash 完全一致;版本、类型和规则正文仍必须 由模型产生。

3. 容量验收

可重算证据:

  • docs/validation/data-rule-m5-capacity-targets.json
  • docs/validation/data-rule-m5-capacity-evidence.json
后端 行数 总耗时 吞吐(行/秒) 峰值内存 连接池峰值 制品大小
SQL pushdown 100,000 0.165s 606,851 3.53 MiB 1 0
SQL pushdown 1,000,000 1.380s 724,725 10.06 MiB 1 0
SQL pushdown 10,000,000 14.812s 675,136 10.06 MiB 1 0
Polars batch 100,000 0.033s 3,020,635 62.55 MiB RSS 0 0.18 MiB
Polars batch 1,000,000 0.058s 17,233,518 243.92 MiB RSS 0 1.51 MiB
Polars batch 10,000,000 0.448s 22,308,913 1.176 GiB RSS 0 14.73 MiB

预算为 Runner 2 GiB、数据源池 2、单制品 512 MiB。10M Polars RSS 为 1.176 GiB, 低于 2 GiB;14.73 MiB Parquet 制品低于 512 MiB。SQL 内存是 PostgreSQL EXPLAIN ANALYZE 报告的峰值算子内存,Polars 是进程 RSS,两者口径已写入证据。

4. 失败与安全验收矩阵

场景 可执行证据
计划正文/Hash 篡改、撤销计划 tests/runner/test_rules.pytests/integration/test_data_rule_sql_execution.py
发布后 Schema drift tests/core/data_rules/test_deployment.pytests/core/data_rules/test_schema_resolver.py
过期/损坏/超限制品 tests/runner/test_artifacts.py
缺失或轮换数据源凭据 tests/core/data_rules/test_execution_contracts.pytests/integration/test_runner_datasource_pool.py
重复/过期/篡改任务令牌 tests/runner/test_task_tokens.pytests/runner/test_replay_store.py
Runner 重启/lease 丢失 tests/runner/test_rule_evidence.py
Kestra 重启前后及定义漂移 tests/core/data_rules/test_deployment.pytests/integration/test_kestra_runner_execution.py
写失败和 known/unknown commit tests/runner/test_rule_evidence.py
未授权发布/部署/激活/回滚 tests/test_permission_matrix.pytests/test_data_rule_api.py
违规样本脱敏和 TTL 删除 tests/runner/test_rule_evidence.pytests/runner/test_artifacts.py
激活/回滚原子性与恢复旧 active tests/integration/test_data_factory_postgres_lifecycle.py

5. 数据产品完整链

完整链的分层证据是:

  1. 作者代理把数据标准/数据流程的自然语言转换成封闭 RuleSpec 并保留四类 Hash。
  2. PostgreSQL 集成测试发布不可变 RuleVersion/StandardVersion,解析并发布 DataFlowVersion,固定规则、标准、Schema 与计划 Hash。
  3. SQL 和 Polars 集成测试使用真实 PostgreSQL/MySQL/MinIO 数据和制品执行规则。
  4. 数据工厂生命周期测试以 disabled → canary → active → rollback 运转, 回滚后验证旧 active 精确恢复;操作具备幂等、lease 和 unknown reconcile。
  5. Kestra/Runner 合同测试证明调度层只传不可变引用、Hash 和短期令牌。

6. 发布判定

满足以下所有条件后,目标环境才可显式打开 DATA_FACTORY_ACTIVATION_ENABLED=true

  • 真实模型、容量、SQL、Polars、生命周期、安全矩阵测试通过;
  • 完整 Python 测试、前端生产构建和 release-copy/OpenAPI parity 通过;
  • Docker 中 PostgreSQL、Neo4j、MinIO、Kestra、Runner、Backend、Frontend 健康;
  • 浏览器验收确认数据标准、数据流程和数据工厂三处没有回退到旧的自由文本代码路径。

任一条件未满足时能力继续失败关闭,不能把局部链路通过报告为完整投产。