# Kestra V51 验证记录

- 代码分支：`codex/kestra-v50`
- 验证日期：2026-07-19
- 变更范围：Kestra/MCP 本地部署、统一工作流引擎接口、n8n/Kestra
  适配器、WorkflowSpec 到 Kestra YAML 的确定性编译

## 实现结果

- Kestra 固定为 `kestra/kestra:v1.3.20`，管理端口仅绑定
  `127.0.0.1:18080`，使用独立 `kestra` PostgreSQL 数据库和独立存储卷。
- 本地 standalone Worker 固定为 16 个线程，不挂载 Docker Socket，不持有平台
  业务数据源账号或连接串，并关闭匿名使用报告和教程流程自动初始化。
- Kestra MCP 固定为官方镜像摘要
  `sha256:1fd62028f60914af31e244ddb0086ed5017420313e2c8547ea9c01b8d24dfc1d`。
  MCP 只通过 stdio 按需启动，没有发布端口，并关闭 `ee`、`files`、`kv` 和
  `namespace` 工具组。
- 新增统一引擎生命周期：校验、禁用发布、启停、执行、暂停、终止、重放、回填、
  执行查询和日志查询。
- n8n 适配器复用现有客户端。n8n 不具备的暂停、终止、重放、回填和独立日志能力
  会明确返回“不支持”，不会伪装成功。
- Kestra 适配器映射官方流程、执行、触发器和日志 API。禁用发布会同时要求流程级
  `disabled: true` 和定时触发器 `disabled: true`。
- 编译器使用 Kestra DAG 表达节点依赖，每个业务节点只调用内部
  `dataops-runner` 契约；编译产物包含 DataFlow UID、数据源 UID、版本和执行
  关联信息，但不包含数据库连接串或凭据。

## TDD 与定向验证

### V51 L1

测试均先确认缺失实现或安全约束导致失败，再实现转绿：

- Kestra/MCP Compose 与隔离契约：4 项。
- 引擎接口与两个适配器：5 项。
- 确定性编译、安全默认值和不等价语义拒绝：6 项。

真实 Kestra 校验首次发现空参数列表被 YAML 渲染为 `null`，补充空集合渲染后
重新验证通过。

### V51 L2/L3

- Docker Compose 展开配置通过，确认镜像版本/摘要、网络、端口、环境变量和
  独立数据库符合契约。
- PostgreSQL `kestra` 数据库创建成功，Kestra 完成 52 项内部迁移并达到健康状态。
- 日志确认 Kestra 版本为 `1.3.20`、Worker 为 16 线程、Scheduler 已启动。
- 编译出的真实 YAML 通过 Kestra API 校验。
- 测试流程完成真实禁用发布；API 回读确认流程与 Schedule Trigger 均为禁用，
  随后完成测试流程清理。
- 官方 Kestra MCP 容器完成 JSON-RPC initialize 和 tools/list stdio 握手；
  Flow、Execution 等调度能力可见，被禁用的文件、KV、命名空间和企业能力未暴露。
- 首次启动时由 Kestra 默认生成的 6 个教程流程已清理；关闭教程初始化后当前
  本地实例流程总数为 0。

最终定向回归：

```text
51 passed, 1 skipped, 1 warning
```

跳过项是需要 `TEST_POSTGRES_ADMIN_URL` 的通用数据库迁移测试；V51 没有新增
DataOps 数据库迁移，且 V50 已单独完成真实 PostgreSQL 升级、重复升级和降级验证。
警告来自本机 Python/LibreSSL 组合，与 V51 逻辑无关。

## 未执行的验证

- 未运行全仓库测试、前端构建或全量容器验收；本次只运行 V50/V51 相关定向集合。
- 未执行编译后的业务节点；`dataops-runner` 属于 V52，本阶段流程保持禁用。
- 未通过平台 MCP Gateway 做策略、审批和审计验收；该治理层属于 V53。本次只验证
  官方 MCP stdio 服务和最小工具面。

## 已知限制

- V51 编译器支持 Manual 和 Cron。`at`、`event`、条件边以及
  `cancel_previous` 因当前阶段无法保证语义等价而失败关闭，待 V52/V53 按受治理
  Runner 和策略模型实现。
- 当前为本地 standalone 拓扑。生产部署需要独立密钥注入、资源限制、高可用
  PostgreSQL，以及按容量拆分 Kestra 组件。
- Kestra 启动日志存在 Prometheus meter tag 与 PostgreSQL/jOOQ 支持矩阵警告；
  当前健康检查、API、数据库迁移和调度器均正常，后续升级镜像时应复核。

## 结论

V51 的部署、引擎抽象、编译器、真实 Kestra API 和官方 MCP stdio 验收通过，
当前 **允许进入 V52**。V52 应实现 DataOps Runner、数据源资源池受控执行、
幂等/超时/取消和任务日志回传，不扩大本阶段 Kestra 对业务数据库的访问权限。
