codex/kestra-v500a99291app/core/orchestration/agent/,包括规划器、Prompt、严格输出 Schema、
离线评估和恢复策略。shadow_only;规划器不调用 promote_candidate,也不改变
正式引擎角色。workflow_plan_audits 现在保存模型提供方、模型名、Prompt 版本、Schema 版本、
上下文哈希、候选哈希、结构化候选、校验结果和经过裁剪的动作结果。delete_execution、任意状态修改或其他
自选动作。sql.query 流程,经过 DataOps Context MCP 和
Scheduling MCP 的注册工具边界,调用真实本地 Kestra、Runner、数据源凭据
引用和数据库连接池。passed/failed 或有界超时,不再把刚启动的
RUNNING 状态误判为终态。baseline_execution_id、等价结论和
安全指标传递。它证明了比较契约,不代表已经取得生产 n8n 同流程的真实对账
证据;该证据必须在 V55 逐流程双轨阶段补齐。PYTHONPATH=. .venv/bin/python -m pytest -q \
tests/mcp/test_scheduling_gateway.py \
tests/security/test_scheduling_tool_boundaries.py \
tests/core/orchestration
结果:33 passed。
PYTHONPATH=. .venv/bin/python -m pytest -q tests/agent
结果:17 passed。覆盖合法只读计划、模型超时、无效/写入输出、目标冲突、
工具失败、离线重放、Canary 轮询、无限重试、秘密请求、模型 Backfill 请求,
以及池退化、有限重试、暂停、回滚和各组件不可用恢复。
DATAOPS_MCP_PERSISTENCE_INTEGRATION=1 \
DATAOPS_MCP_TEST_DATABASE_URL=postgresql://dataops:***@127.0.0.1:15432/dataops \
RUN_V54_AGENT_L3=1 \
PYTHONPATH=. .venv/bin/python -m pytest -q \
tests/agent \
tests/mcp/test_scheduling_gateway.py \
tests/mcp/test_server_contracts.py \
tests/mcp/test_dataops_context_mcp.py \
tests/security/test_scheduling_tool_boundaries.py \
tests/integration/test_mcp_gateway_persistence.py \
tests/integration/test_agent_kestra_canary.py \
tests/integration/test_agent_model_offline.py
结果:40 passed。
其中:
1 passed。1 passed。.venv/bin/ruff check \
app/core/orchestration/agent app/core/mcp/persistence.py \
tests/agent tests/integration/test_agent_kestra_canary.py \
tests/integration/test_agent_model_offline.py \
tests/integration/test_mcp_gateway_persistence.py
.venv/bin/pyright --pythonpath .venv/bin/python \
app/core/orchestration/agent
git diff --check
结果:
0 errors, 0 warnings。未将全文件范围 Pyright 作为本阶段门禁:现有 app/core/mcp/persistence.py 的旧
Optional 类型问题和测试第三方依赖解析会在该范围产生既有错误;本次修改的持久化
行为已经由真实 PostgreSQL 集成测试覆盖。
reduce_concurrency 生成新的确定性 SchedulePlan,不直接在线修改现有 Kestra
定义;后续仍需经过候选、校验、禁用发布和 Canary。本记录允许开始 V55 的双轨框架、逐流程迁移和对账实现,不代表批准生产切换。 只有实际流程完成影子运行、真实 n8n/Kestra 对账、故障恢复和回切演练后,才允许 按单流程改变引擎角色;在 V55 统一退出门槛全部满足前不得移除 n8n。