## 目标 实现生命周期插件的确定性执行链,解决顺序、转换、强制检查、异步取消和重复执行语义;复用已有拦截器链和安全策略,不重写授权或审批系统。 ## 范围与验收 - [ ] 阶段内排序与 before/after 依赖可诊断;循环依赖、重复标识和写入冲突在装配时拒绝,不依赖 Bean 扫描顺序。 - [ ] 观察器只读,转换器返回受限新值;定义包装器嵌套和退出顺序,以及 next 可调用次数。多次调用仅在声明允许的重试阶段有效,每次实际尝试有独立身份与控制检查。 - [ ] 区分观察失败、必要业务门失败和处理器超时;强制策略缺失或失败不能无提示放行,禁止用统一吞异常策略处理所有插件。 - [ ] 工具参数最终变换后复用 Schema/授权/预算/审批检查,实际执行参数与被批准内容绑定;执行后复用结果检查及 #140 补丁提交。缓存命中、替代响应、returnDirect、子结果和重试不得绕过必经检查。 - [ ] 插件继承 deadline/取消/预算;取消阻止后续阶段,在途异步操作按执行能力中止并释放。运行结束回调与清理幂等,清理预算有界,不吞原始终态。 - [ ] 区分运行、attempt、恢复及回放;声明哪些回调会重跑。带外副作用需稳定身份/幂等或明确拒绝自动重放,接入 #125/#126,不承诺任意插件 exactly-once。 - [ ] 流式插件遵守背压、片段/完整响应关联和终态;严格检查必须发生在公开输出前,不宣称已发送内容可撤回。 - [ ] 覆盖顺序冲突、参数变换后拒绝、next 重入、缓存短路、异步取消、插件超时、流失败、恢复重复和清理异常。 ## 边界与约束 扩展点契约由同批契约任务提供;#201 负责策略组合诊断,#120/#134/#135/#140 继续拥有具体检查,#127 继续拥有持久预算。#202 负责插件初始化/注册/撤销与共享资源所有权,本单负责单次运行中的链执行。基础本地行为先交付,持久恢复另行接入原任务。优先复用现有实现,独立 Agent/Workflow 不依赖 Graph/Loop;破坏性变化须论证收益与迁移。 ## Concrete dependencies Contract: #298. Runtime wiring: #301. ## stream-agent 参考:执行边界的竞态验收 - [ ] 工具等待并发准入时撤权,获得执行槽后实际 invoker 调用为零;不能只在排队前鉴权。 - [ ] 缓存命中仍复核当前权限及冻结工具契约;撤权后不能读取旧结果绕过执行门。 - [ ] 插件迟到返回遇到取消/deadline/执行权丢失,不再派发下一操作或提交状态;插件改变最终参数后重新绑定授权/审批。 - [ ] 外部工具效果不确定时,插件重试不能把 UNKNOWN 改为普通失败再盲目重放;复用 #126/#121。 参考 stream-agent 工作区 ToolEngine.checkInvocation/execute;静态分析,不据此认定 ARGI 新漏洞。只补验收,不重写已完成授权组件。
Activity