修复: BUG-260619-06 L0 clear致冷启动审批丢失(方案A retain)

- lib.rs:62 clear → retain(!recovered): 仅清非recovered(本次会话/HMR死pending),保留restore重建(recovered=true audit.rs:331)
- cr06-review跨版本git diff核验: clear批2已有(B-260616-01 d2cb38c),batch8仅合并位置非新增 → 批2+跨批遗留,非batch8回归(CR-06 PASS)
- 问题真实(冷启动restore填充后clear清空→审批丢失),方案A修复对齐switchConversation retain保护意图
主代兜底: cargo check --workspace 0 + test 98
This commit is contained in:
2026-06-19 02:42:28 +08:00
parent 7c708a6e01
commit 2b40f65ef2

View File

@@ -59,7 +59,10 @@ pub fn run() {
}
// 顶层双写复位(批2 桥接:IPC ai_is_generating 等仍读顶层,须同步)。
session.generating = false;
session.pending_approvals.clear();
// BUG-260619-06 修复: clear 致冷启动 restore 重建审批丢失(restore 填充后 clear 无条件清空,
// 重启后待审批工具全丢)。改 retain 仅清非 recovered(本次会话/HMR 死 pending),
// 保留 restore 重建(recovered=true,audit.rs:331),对齐 switchConversation retain 保护意图。
session.pending_approvals.retain(|_, a| !a.recovered);
// active_conversation_id 兜底入 dirty_convs:批2 双写期顶层 generating=true 但
// per_conv 为空(理论上不会发生,防御性保证 active conv 至少收一个 AiCompleted
// 复位前端 streaming/generatingConvId)。