diff --git a/apps/ai-game-creator-shell/src-tauri/src/process_session/lifecycle.rs b/apps/ai-game-creator-shell/src-tauri/src/process_session/lifecycle.rs index 8f259dad5..d5e5f166d 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/process_session/lifecycle.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/process_session/lifecycle.rs @@ -1435,11 +1435,13 @@ fn finalize_live_process_session( output.needs_reconciliation = true; } let needs_reconciliation = output.needs_reconciliation; - live.output_changed.notify_all(); - drop(output); + // 只有 live registry 已收束后才能发布可信终态。等待 `output_changed` 的调用方 + // 可能立即执行 run 级取消清理,而 registry 中的任何 live 条目都会被视为未完成会话。 if record_persisted && !needs_reconciliation { if let Ok(mut registry) = process_session_registry().lock() { registry.sessions.remove(&live.process_id); } } + live.output_changed.notify_all(); + drop(output); }