Files
Genarrative/apps
lhk229 a40080d525 P1:窄投影恢复失败不再掐掉整轮 resume,plan_gdd blocker 改类型化判别
A. reconcile_plan_gdd_approval_projections_at 挂在 resume 的第一行却用 `?` 强传播,
一次 Fast GDD 投影失败会掐掉全项目所有 Agent 的恢复;而它本身正是 receipt 投影失败
后的重试入口,掐掉它等于连兜底一起废掉。改成把 fail-closed 收敛到策划根 Supervisor
这个 run,其余 Agent 照常恢复;无法归属时才退回全局上抛。

B. main_loop 原来用 contains("approvalPending=awaiting_decision") 区分 plan_gdd
blocker 的子状态,而三个 blocked 里只有一个含这个子串——尚未提交(下一步是
agent.delegate)和 receipt 锚点收尾都会掉进 else 被打成 needs-reconciliation,把最
正常的推进态当成故障停掉。改由构造方给出 PlanGddCompletionBlockerKind,消费方穷尽
match,判不出 kind 时保持 fail-closed。这两个推进态不再产生等待态,和
runtime.plan_update 一样让本轮循环继续。

映射抽成纯函数并建起 main_loop 至今没有的 mod tests:四个 kind × 两条映射全覆盖。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 04:02:54 +00:00
..
2026-07-17 16:56:46 +08:00