send 失败无兜底:发送抛异常时模型既不知情、Delta 缓冲也不写 #95
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
ADR-0012「决策 → 7. 基础设施(既定后果)」断言:
实际:
runtime_loop.py::_flush的循环里_send_pending是裸调用,runtime_loop.py全文只有两处except且都是PoolExhausted、都不在发送路径。后果比 ADR 描述的更重:
_append_delta在_flush之后才调用,所以发送抛异常时——也就是说一次平台侧发送失败,会让这一轮对话在智能体的记忆里彻底不存在。
为什么 ADR-0013 不覆盖它:ADR-0013 管的是进程崩溃(丢弃在途请求不重放),不覆盖「平台 API 返回错误但进程活着」。所以这条断言没有被后续 ADR 取代,仍然现行有效。
Acceptance criteria
_send_pending包 try/except;单条失败不得中断整个 flush 序列(同批其余消息该发还是发)。m7 发送失败。_append_delta的调用位置要一并复核:当前它在_flush之后,发送失败即整轮不写 Delta。修完必须保证「发送失败但对话内容仍进 Delta 缓冲」。这条是本票真正的价值所在,比「模型知情」那半更重要。Not in scope