Skip to content

feat(workflows): loop/loopExit、aggregator 与 iteration 全链路 - #177

Merged
EricWvi merged 28 commits into
ora-space:mainfrom
wanglongan587:feat/644-iteration
Oct 26, 2026
Merged

EricWvi merged 28 commits into
ora-space:mainfrom
wanglongan587:feat/644-iteration

Conversation

@wanglongan587

@wanglongan587 wanglongan587 commented Oct 25, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Condition IF / ELIF / ELSE ports → persisted branch handle → selected execution path
Output named bindings → visible variable picker → atomic named result
Aggregator / Loop / Iteration → Cloud admission, execution and editor configuration

补齐 condition 的多分支连线,以及 Output 的命名绑定编辑和执行。不同分支可汇入同一节点,同端口重复连接被拒绝;删除分支清除对应边,撤销恢复,保存重载保留 case id。旧图省略或写空端口时仍按 ELSE 解释。

Output 可增删命名绑定并选择上游变量,保存 data.outputs。服务端从同一个已提交快照解析所有绑定,保留 null/false/0/空串;未赋值或无效路径使节点失败,不输出部分成功结果。无绑定保留空对象;发布门禁定位非法结构、空名、重名、无效选择器与未声明根。

本 PR 继续包含此前的 aggregator、loop/loopExit、iteration 实现。另补迭代状态的保存/恢复/取消接线与回归测试;消除较大状态值的隐式拷贝和原分支的 Go lint 问题。

Evidence

  • Before: condition 卡片只有一个输出端口,创建边丢失 sourceHandle,端点级去重阻止多分支合流;Output 无配置面板且运行总是写 {}。
  • After: 真实 React Flow 端口测试、分支合流/去重/删除/撤销/保存重载测试,以及 Output 目录选择/命名/删除/重载测试通过。前端 npm run check:156 文件 / 1309 测试,含类型、覆盖率、模块文档、重复代码与构建检查。
  • PostgreSQL 调度器测试验证 IF/ELSE 选边后汇入同一命名输出,结果可进入 Issue 成果摘要。纯执行与发布矩阵覆盖嵌套值、空值、缺值、错误路径及无部分输出;迭代状态回归覆盖 JSON 持久化往返及取消保留账本。
  • 后端格式、lint、proto lint/生成漂移检查通过。对 head 64158659f4250d0261318c64db6dd7793b61f63e 的独立 Linux 源码副本执行 REQUIRE_POSTGRES=1 CGO_ENABLED=1 go test -race -count=1 -timeout 20m ./...,全仓通过;真实 PostgreSQL 的 core 套件 98.218s、integration 套件 292.848s,未报告竞态。
  • Windows 整仓检查遇到既有 POSIX 权限/目录同步与 Unix 路径假设;未修改的基线可复现。Linux 验证使用独立副本,避免 Windows worktree 的 gitdir 绝对路径影响 Git 子进程;没有修改凭据模块或降低检查规则。
  • head 6415865 的远端 CI 7 项全部通过:frontend、packages、integration-0/1/2/3、最终 check。

ADR 状态与剩余交付

以下 ADR 候选为 approved,对应 PR 尚未合并,本实现仍按预开发约束推进:

ADR 规格 PR 本 PR 的实现边界
decisions/cloud/workflow/20261025-variable-aggregator-execution.md ora-space/specs#225 first-assigned、候选编辑和基本门禁已实现;仍缺最终契约要求的传递前驱候选校验
decisions/cloud/workflow/20261025-loop-and-loop-exit-execution.md ora-space/specs#224 轮次、feedback/until/outputs/早退与检查器已实现;仍缺完整容器画布、按轮成员视图及 8 MiB 总状态预算等容量保护
decisions/cloud/workflow/20261025-iteration-foreach-execution.md ora-space/specs#226 foreach、账本、策略、取消与状态编解码已实现;仍缺最终区域/前驱规则、100 项硬上限、字节预算与完整轮次视图

上述剩余项继续由实现运行承接;body 内真实 agent、正常项目创建、浏览器与 @ 入口的完整验收仍待完成。既有人工准备项目后的 HTTP 演练只证明局部执行链路。

产品 review 通过、最终契约全部实现后,另开独立落地运行和 specs PR,把相应 ADR 同步到 implemented;产品 PR 合并后再合并落地 PR。

Merge Danger

Door: two-way

Blast Radius: workflow

新增可执行节点与持久状态,不改数据库迁移或 OpenAPI。规格 PR 合并及剩余实现/验收完成前保留预开发边界。

Refs ora-space/circus#646

@wanglongan587 wanglongan587 changed the title feat(core): 执行 iteration(foreach)节点 feat(workflows): loop/loopExit、aggregator 与 iteration 全链路 Oct 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants