Drive workflow execution as supersteps over a compiled dependency graph (Q1 WP1/WP2) #23

Merged
weichen merged 1 commits from feature/agent-stack-q1 into main 2026-10-07 09:08:21 +00:00
Owner

Q1 增量一:superstep 推进与 Needs 调度(WP1/WP2)

按 Documents 提案 2026-10-07-agent-stack-n1q1i1-plans.md §3.2 落地 Q1 的前两个工作包。

改动

  • 新 squad/graph.go:compileGraph(每轮从权威 Steps 现场编译——Steps 仍是唯一真相源,动态调整改 Steps 后下一轮自然生效)+ nextLayer(当前可执行层)+ 写集冲突检测。规则:
    • 声明 Needs 的步骤:依赖即其 Needs;未知引用/自引用/环 fail-closed。
    • 未声明的:保持现状语义——相邻 Parallel 同层(依赖组外前一步),非 Parallel 依赖紧邻前一步(整组完成后才轮到,与旧线性扫描一致)。
    • 依赖满足 = completed/skipped/failed(与「非关键失败降级继续」一致;关键失败时运行已终止)。
    • 空 status 等同 pending(蓝图登记不带 status,旧扫描的 fallthrough 语义)。
  • StepSpec.Writes:写集(调度依据)。同一 superstep 内写集相交 → 强制串行(按声明序);不相交 → 并行。
  • advance 重写为 superstep 推进:并行段复用 runParallel(审批/权限/挂起/cancel 传播不变),串行段逐个 runOneStep;单成员并行组实际是顺序执行,其后照常动态调整(多成员组不做——与旧「仅顺序步骤后」一致);图编译失败/依赖死锁 → fail-closed 运行失败。层边界发 EvPhase superstep 事件。
  • leader 循环不受影响(成员步仍经 runOneStep)。

验证

  • 五个模块 go vet 通过、go test 全 ok。
  • 兼容网全绿:engine_test(happy path、gap HITL 重启、澄清、权限、并行与事件、Respond 幂等)、leader_test、recovery_test(批准重启存活、中断挂起、双引擎互斥、决策回滚)、r2_regression、intent、evaluator 套件原样通过。
  • 新测 graph 7 例:线性与相邻 Parallel 分层、Needs 剪枝混合、未知引用/环/重复/自引用拒绝、写集冲突串行化、failed 依赖仍调度。
  • 过程中发现并修复的四处语义陷阱(均已在代码注释写明):空 status、Parallel 组后锚点、单成员组动态调整、failed 依赖满足。

验收映射(提案 Q1 验收三条的当前进度)

  • 「两个写同一工件的步骤不会并行」:本增量已落地(图层断言 + 写集字段)。
  • 「superstep 边界杀进程副作用次数=1」「文件 run 与 SQLite 不再双记」:属增量二(attempt id + Store/检查点)与增量四(SQLite 收编)。

主任务:Dev 仓 feature/agent-stack-q1。

# Q1 增量一:superstep 推进与 Needs 调度(WP1/WP2) 按 Documents 提案 `2026-10-07-agent-stack-n1q1i1-plans.md` §3.2 落地 Q1 的前两个工作包。 ## 改动 - **新 `squad/graph.go`**:`compileGraph`(每轮从权威 Steps 现场编译——Steps 仍是唯一真相源,动态调整改 Steps 后下一轮自然生效)+ `nextLayer`(当前可执行层)+ 写集冲突检测。规则: - 声明 Needs 的步骤:依赖即其 Needs;未知引用/自引用/环 fail-closed。 - 未声明的:保持现状语义——相邻 Parallel 同层(依赖组外前一步),非 Parallel 依赖**紧邻前一步**(整组完成后才轮到,与旧线性扫描一致)。 - 依赖满足 = completed/skipped/**failed**(与「非关键失败降级继续」一致;关键失败时运行已终止)。 - 空 status 等同 pending(蓝图登记不带 status,旧扫描的 fallthrough 语义)。 - **`StepSpec.Writes`**:写集(调度依据)。同一 superstep 内写集相交 → 强制串行(按声明序);不相交 → 并行。 - **`advance` 重写为 superstep 推进**:并行段复用 `runParallel`(审批/权限/挂起/cancel 传播不变),串行段逐个 `runOneStep`;**单成员并行组实际是顺序执行,其后照常动态调整**(多成员组不做——与旧「仅顺序步骤后」一致);图编译失败/依赖死锁 → fail-closed 运行失败。层边界发 `EvPhase` superstep 事件。 - leader 循环不受影响(成员步仍经 `runOneStep`)。 ## 验证 - 五个模块 `go vet` 通过、`go test` 全 ok。 - **兼容网全绿**:engine_test(happy path、gap HITL 重启、澄清、权限、并行与事件、Respond 幂等)、leader_test、recovery_test(批准重启存活、中断挂起、双引擎互斥、决策回滚)、r2_regression、intent、evaluator 套件原样通过。 - 新测 graph 7 例:线性与相邻 Parallel 分层、Needs 剪枝混合、未知引用/环/重复/自引用拒绝、写集冲突串行化、failed 依赖仍调度。 - 过程中发现并修复的四处语义陷阱(均已在代码注释写明):空 status、Parallel 组后锚点、单成员组动态调整、failed 依赖满足。 ## 验收映射(提案 Q1 验收三条的当前进度) - 「两个写同一工件的步骤不会并行」:本增量已落地(图层断言 + 写集字段)。 - 「superstep 边界杀进程副作用次数=1」「文件 run 与 SQLite 不再双记」:属增量二(attempt id + Store/检查点)与增量四(SQLite 收编)。 主任务:Dev 仓 `feature/agent-stack-q1`。
weichen added 1 commit 2026-10-07 09:07:21 +00:00
Drive workflow execution as supersteps over a compiled dependency graph
ci / vet-and-test (pull_request) Successful in 24s
ci / docker-checkout-hostgateway (pull_request) Successful in 1s
f90abafe79
Why: Q1 WP1/WP2 - replace the linear step scan with per-round graph
compilation and layer advancement so Needs drives scheduling and
write-conflicting steps never run concurrently.

Evidence: go vet clean in all five modules; go test ok everywhere,
including the full compatibility net (engine, leader, recovery, r2
regression, intent, evaluator suites) and new graph tests.

Impact: new squad/graph.go (compile/layer/conflict); StepSpec gains
Writes; advance advances by superstep (parallel run of
conflict-free members, serial for write-conflicts, single-member
groups keep dynamic adjustment). Legacy semantics preserved:
adjacent-Parallel mapping, degraded-continue on non-critical
failure (failed counts as satisfied), empty status = pending,
cycle/unknown/dup needs fail-closed.

Refs: Documents proposal 2026-10-07-agent-stack-n1q1i1-plans.md Q1 WP1/WP2
weichen merged commit 3870489614 into main 2026-10-07 09:08:21 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: weichen/Agent-Squad#23