Add the Store port with tiered checkpoints and centralize termination (Q1 WP4/WP6/WP7) #25

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

Q1 增量三:Store 端口 + 三档检查点 + Termination 收编(WP4/WP6/WP7)

按 Documents 提案 2026-10-07-agent-stack-n1q1i1-plans.md §3.2 落地 Q1 的 WP4/WP6/WP7。

改动

WP4 Store 端口与三档检查点

  • 新 squad/runstore.go:Store 端口(SaveRun/LoadRun/SaveGate/LoadGate/SaveCheckpoint/LoadLatestCheckpoint),FileStore 收编现状文件态(低层落盘语义逐字不变);runState 与 engineDeps 携带端口(缺省 FileStore),构造与全部加载点改道端口。
  • Checkpoint:superstep 序号 + 图结构指纹(fnv)+ 全量步骤快照,落 checkpoints/NN.json + latest.json。三档(RunOptions.CheckpointMode):sync(默认,边界立即写)、async(单 goroutine 串行写、退出前 flush)、on_exit(只写最终快照)。
  • 图连续性校验(WP1 的图版本裁定落点):Resume 时重编译当前 Steps 比对最新检查点指纹——不一致 = 崩溃期间图形态被改过(动态调整或外力),拒绝恢复并提示重新规划/人工介入;检查点不存在(旧运行)或一致则放行。

WP6 Termination 收编

  • 新 squad/termination.go:Termination(leader 轮次/修复预算/唤醒次数/步骤超时集中,DefaultTermination 与现网取值一致,terminationOf 让引擎选项覆盖)+ And/Or 组合原语(含 MaxTurns/RepairBudget/Wakeups/Deadline 条件)。
  • 关账:Q23 leader 达上限从裸 leaderFail 改为按现有产出走 finalize 降级收口(质检/汇总路径与正常收口一致);Q26 人工 retry 累计追加有界(RepairBudgetGranted 落盘,上限=预算×2,超限拒绝而不是永动);唤醒上限与步骤超时改引注册点。

WP7 interrupt/resume 形态对齐 + Q6

  • SweepExpired(此前是死代码)接进 serve 的周期扫描循环,与 SweepWakeups 并列——事件唤醒与过期合成是同一对 interrupt/resume 原语的两条恢复路径。

验证

  • 全套件绿,新测:边界快照与 latest 一致性、async/on_exit 两档、结构变化拒绝恢复(指纹分支)、And/Or 真值表、人工追加达上限被拒且不追加;TestLeaderModeTurnCapGuard 按 Q23 语义改述(不再是裸失败);既有恢复/leader/engine 套件原样通过。

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

# Q1 增量三:Store 端口 + 三档检查点 + Termination 收编(WP4/WP6/WP7) 按 Documents 提案 `2026-10-07-agent-stack-n1q1i1-plans.md` §3.2 落地 Q1 的 WP4/WP6/WP7。 ## 改动 **WP4 Store 端口与三档检查点** - 新 `squad/runstore.go`:`Store` 端口(SaveRun/LoadRun/SaveGate/LoadGate/SaveCheckpoint/LoadLatestCheckpoint),`FileStore` 收编现状文件态(低层落盘语义逐字不变);runState 与 engineDeps 携带端口(缺省 FileStore),构造与全部加载点改道端口。 - `Checkpoint`:superstep 序号 + 图结构指纹(fnv)+ 全量步骤快照,落 `checkpoints/NN.json` + `latest.json`。三档(`RunOptions.CheckpointMode`):sync(默认,边界立即写)、async(单 goroutine 串行写、退出前 flush)、on_exit(只写最终快照)。 - **图连续性校验(WP1 的图版本裁定落点)**:Resume 时重编译当前 Steps 比对最新检查点指纹——不一致 = 崩溃期间图形态被改过(动态调整或外力),**拒绝恢复并提示重新规划/人工介入**;检查点不存在(旧运行)或一致则放行。 **WP6 Termination 收编** - 新 `squad/termination.go`:`Termination`(leader 轮次/修复预算/唤醒次数/步骤超时集中,`DefaultTermination` 与现网取值一致,`terminationOf` 让引擎选项覆盖)+ And/Or 组合原语(含 MaxTurns/RepairBudget/Wakeups/Deadline 条件)。 - 关账:**Q23** leader 达上限从裸 `leaderFail` 改为按现有产出走 finalize 降级收口(质检/汇总路径与正常收口一致);**Q26** 人工 retry 累计追加有界(`RepairBudgetGranted` 落盘,上限=预算×2,超限拒绝而不是永动);唤醒上限与步骤超时改引注册点。 **WP7 interrupt/resume 形态对齐 + Q6** - `SweepExpired`(此前是死代码)接进 serve 的周期扫描循环,与 `SweepWakeups` 并列——事件唤醒与过期合成是同一对 interrupt/resume 原语的两条恢复路径。 ## 验证 - 全套件绿,新测:边界快照与 latest 一致性、async/on_exit 两档、结构变化拒绝恢复(指纹分支)、And/Or 真值表、人工追加达上限被拒且不追加;`TestLeaderModeTurnCapGuard` 按 Q23 语义改述(不再是裸失败);既有恢复/leader/engine 套件原样通过。 主任务:Dev 仓 `feature/agent-stack-q1`。
weichen added 1 commit 2026-10-07 10:01:00 +00:00
Add the Store port with tiered checkpoints and centralize termination
ci / vet-and-test (pull_request) Successful in 24s
ci / docker-checkout-hostgateway (pull_request) Successful in 0s
626b2a3f34
Why: Q1 WP4/WP6/WP7 - run persistence goes through a Store port
(FileStore carries the current layout), superstep boundaries write
tiered snapshots with a graph fingerprint for recovery continuity,
and the four hardcoded stop conditions move behind one Termination
registry with And/Or composition.

Evidence: go vet clean; full suite ok including new checkpoint,
continuity-rejection, termination-primitive, grant-cap and the
Q23-updated leader closeout tests; cmd module green with
SweepExpired wired into the sweeper loop.

Impact: runState saves via Store (FileStore unchanged by default);
advance writes sync/async/on_exit checkpoints and Resume rejects
graph-shape changes from the crash window; leader turn cap now
degrades through finalize instead of a bare failure (Q23); manual
repair grants are bounded (Q26); wakeup cap and step timeout read
from the same registry; the dead SweepExpired is now called (Q6).

Refs: Documents proposal 2026-10-07-agent-stack-n1q1i1-plans.md Q1 WP4/WP6/WP7
weichen merged commit 1c3995beaa into main 2026-10-07 10:02:01 +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#25